internal/postgres: filter symbols versions
GetPackageSymbols no longer returns incompatible or non-release
versions.
For golang/go#37102
Change-Id: Ifc906e3bf8236707f0f2d29bd5aa1dc825412297
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/310377
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/postgres/symbol_history.go b/internal/postgres/symbol_history.go
index 99e98e9..b40b388 100644
--- a/internal/postgres/symbol_history.go
+++ b/internal/postgres/symbol_history.go
@@ -18,27 +18,31 @@
) (_ map[string]map[string]*internal.UnitSymbol, err error) {
defer derrors.Wrap(&err, "GetPackageSymbols(ctx, db, %q, %q)", packagePath, modulePath)
query := `
- SELECT
- s1.name AS symbol_name,
- s2.name AS parent_symbol_name,
- ps.section,
- ps.type,
- ps.synopsis,
- m.version,
- d.goos,
- d.goarch
- FROM modules m
- INNER JOIN units u ON u.module_id = m.id
- INNER JOIN new_documentation d ON d.unit_id = u.id
- INNER JOIN documentation_symbols ds ON ds.documentation_id = d.id
- INNER JOIN package_symbols ps ON ps.id = ds.package_symbol_id
- INNER JOIN paths p1 ON u.path_id = p1.id
- INNER JOIN symbol_names s1 ON ps.symbol_name_id = s1.id
- INNER JOIN symbol_names s2 ON ps.parent_symbol_name_id = s2.id
- WHERE p1.path = $1 AND m.module_path = $2
- ORDER BY
- CASE WHEN ps.type='Type' THEN 0 ELSE 1 END,
- symbol_name;`
+ SELECT
+ s1.name AS symbol_name,
+ s2.name AS parent_symbol_name,
+ ps.section,
+ ps.type,
+ ps.synopsis,
+ m.version,
+ d.goos,
+ d.goarch
+ FROM modules m
+ INNER JOIN units u ON u.module_id = m.id
+ INNER JOIN new_documentation d ON d.unit_id = u.id
+ INNER JOIN documentation_symbols ds ON ds.documentation_id = d.id
+ INNER JOIN package_symbols ps ON ps.id = ds.package_symbol_id
+ INNER JOIN paths p1 ON u.path_id = p1.id
+ INNER JOIN symbol_names s1 ON ps.symbol_name_id = s1.id
+ INNER JOIN symbol_names s2 ON ps.parent_symbol_name_id = s2.id
+ WHERE
+ p1.path = $1
+ AND m.module_path = $2
+ AND NOT m.incompatible
+ AND m.version_type = 'release'
+ ORDER BY
+ CASE WHEN ps.type='Type' THEN 0 ELSE 1 END,
+ symbol_name;`
// versionToNameToUnitSymbol contains all of the types for this unit,
// grouped by name and build context. This is used to keep track of the