storage/db: ListUploads shouldn't return empty uploads

The Uploads table gets an entry when a user or the server aborts an
upload in mid-upload. The Records table is cleaned up by the
transaction, but the Uploads entry is left behind.

The optimized query that is used for the perf.golang.org homepage did
not properly exclude these uploads that have no records.

Change-Id: I8322af5946c233e5cb4b15bf57d9487bcd1e6423
Reviewed-on: https://go-review.googlesource.com/39051
Run-TryBot: Quentin Smith <quentin@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2 files changed
tree: 49e5b736fdcbbb1add895fb9d64ed2adc6c8f78f
  1. analysis/
  2. benchstat/
  3. cmd/
  4. internal/
  5. storage/
  6. vendor/
  7. AUTHORS
  8. CONTRIBUTING.md
  9. CONTRIBUTORS
  10. LICENSE
  11. PATENTS
  12. README.md
README.md

Go performance measurement, storage, and analysis tools

This subrepository holds the source for various packages and tools related to performance measurement, storage, and analysis.

cmd/benchstat contains a command-line tool that computes and compares statistics about benchmarks.

cmd/benchsave contains a command-line tool for publishing benchmark results.

storage contains the https://perfdata.golang.org/ benchmark result storage system.

analysis contains the https://perf.golang.org/ benchmark result analysis system.

Both storage and analysis can be run locally; the following commands will run the complete stack on your machine with an in-memory datastore.

go get -u golang.org/x/perf/storage/localperfdata
go get -u golang.org/x/perf/analysis/localperf
localperfdata -addr=:8081 -view_url_base=http://localhost:8080/search?q=upload: &
localperf -addr=:8080 -storage=localhost:8081

The storage system is designed to have a standardized API, and we encourage additional analysis tools to be written against the API. A client can be found in the storage package.


Contributions to Go are appreciated. See http://golang.org/doc/contribute.html.