diff options
| author | Jonathan Amsterdam <jba@google.com> | 2021-06-09 13:49:25 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2021-06-10 11:02:10 +0000 |
| commit | fa03708786f2dce02a5ad581e45e997017f72ddf (patch) | |
| tree | ba9e1c2da2b190fd60b2c2205a63554f0fe7eff8 /internal | |
| parent | bcf7e4ea58a11d8c48c6fb54d67ad16987d46b0c (diff) | |
| download | go-x-pkgsite-fa03708786f2dce02a5ad581e45e997017f72ddf.tar.xz | |
internal/postgres: read from imports table
Read from the imports table instead of package_imports, under an
experiment.
Change-Id: Id5b61285325f28a168faeb25651839663269feaf
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/326450
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/experiment.go | 2 | ||||
| -rw-r--r-- | internal/frontend/unit.go | 3 | ||||
| -rw-r--r-- | internal/postgres/unit.go | 11 | ||||
| -rw-r--r-- | internal/postgres/unit_test.go | 7 |
4 files changed, 18 insertions, 5 deletions
diff --git a/internal/experiment.go b/internal/experiment.go index df31efbb..27d99b0d 100644 --- a/internal/experiment.go +++ b/internal/experiment.go @@ -10,6 +10,7 @@ const ( ExperimentEnableStdFrontendFetch = "enable-std-frontend-fetch" ExperimentInsertSymbolSearchDocuments = "insert-symbol-search-documents" ExperimentNewUnitLayout = "new-unit-layout" + ExperimentReadImports = "read-imports" ExperimentReadSymbolHistory = "read-symbol-history" ExperimentSearchGrouping = "search-grouping" ExperimentSkipInsertSymbols = "skip-insert-symbols" @@ -26,6 +27,7 @@ var Experiments = map[string]string{ ExperimentEnableStdFrontendFetch: "Enable frontend fetching for module std.", ExperimentInsertSymbolSearchDocuments: "Insert data into symbol_search_documents.", ExperimentNewUnitLayout: "Enable the new layout on the unit page.", + ExperimentReadImports: "Read from imports instead of package_imports.", ExperimentReadSymbolHistory: "Read data from the symbol_history table.", ExperimentSearchGrouping: "Group search results.", ExperimentSkipInsertSymbols: "Don't insert data into symbols tables.", diff --git a/internal/frontend/unit.go b/internal/frontend/unit.go index ececd614..c9f70519 100644 --- a/internal/frontend/unit.go +++ b/internal/frontend/unit.go @@ -90,8 +90,7 @@ type UnitPage struct { Details interface{} } -// serveUnitPage serves a unit page for a path using the paths, -// modules, documentation, readmes, licenses, and package_imports tables. +// serveUnitPage serves a unit page for a path. func (s *Server) serveUnitPage(ctx context.Context, w http.ResponseWriter, r *http.Request, ds internal.DataSource, info *urlPathInfo) (err error) { defer derrors.Wrap(&err, "serveUnitPage(ctx, w, r, ds, %v)", info) diff --git a/internal/postgres/unit.go b/internal/postgres/unit.go index 7c7e9c66..b2528f48 100644 --- a/internal/postgres/unit.go +++ b/internal/postgres/unit.go @@ -316,10 +316,17 @@ func (db *DB) getUnitID(ctx context.Context, fullPath, modulePath, resolvedVersi func (db *DB) getImports(ctx context.Context, unitID int) (_ []string, err error) { defer derrors.WrapStack(&err, "getImports(ctx, %d)", unitID) defer middleware.ElapsedStat(ctx, "getImports")() - return collectStrings(ctx, db.db, ` + query := ` SELECT to_path FROM package_imports - WHERE unit_id = $1`, unitID) + WHERE unit_id = $1` + if experiment.IsActive(ctx, internal.ExperimentReadImports) { + query = ` + SELECT p.path + FROM paths p INNER JOIN imports i ON p.id = i.to_path_id + WHERE i.unit_id = $1` + } + return collectStrings(ctx, db.db, query, unitID) } // getPackagesInUnit returns all of the packages in a unit from a diff --git a/internal/postgres/unit_test.go b/internal/postgres/unit_test.go index 64e0b57f..c60941b7 100644 --- a/internal/postgres/unit_test.go +++ b/internal/postgres/unit_test.go @@ -743,7 +743,12 @@ func TestGetUnit(t *testing.T) { test.want.IsRedistributable, ) test.want.CommitTime = um.CommitTime - checkUnit(ctx, t, testDB, um, test.want) + t.Run("none", func(t *testing.T) { + checkUnit(ctx, t, testDB, um, test.want) + }) + t.Run(internal.ExperimentReadImports, func(t *testing.T) { + checkUnit(ctx, t, testDB, um, test.want, internal.ExperimentReadImports) + }) }) } } |
