aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJonathan Amsterdam <jba@google.com>2021-06-09 13:49:25 -0400
committerJonathan Amsterdam <jba@google.com>2021-06-10 11:02:10 +0000
commitfa03708786f2dce02a5ad581e45e997017f72ddf (patch)
treeba9e1c2da2b190fd60b2c2205a63554f0fe7eff8 /internal
parentbcf7e4ea58a11d8c48c6fb54d67ad16987d46b0c (diff)
downloadgo-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.go2
-rw-r--r--internal/frontend/unit.go3
-rw-r--r--internal/postgres/unit.go11
-rw-r--r--internal/postgres/unit_test.go7
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)
+ })
})
}
}