From fbef9da64db31dae662aa4cb857eaaff561ce40e Mon Sep 17 00:00:00 2001 From: Bharath Thiruveedula Date: Fri, 19 Jun 2020 10:35:31 -0400 Subject: internal/postgres: remove module from version_map in DeleteModule postgres.DeleteModule is updated to delete the corresponding module_path and resolved_version row from the version_map table. Fixes #39633 Change-Id: I9de46b08e535bea52c2ea4dbab1c71a8e1c2c2f7 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/238637 Reviewed-by: Julie Qiu --- internal/postgres/insert_module.go | 5 +++++ internal/postgres/insert_module_test.go | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) (limited to 'internal/postgres') diff --git a/internal/postgres/insert_module.go b/internal/postgres/insert_module.go index d2d0a762..7ccc4d7b 100644 --- a/internal/postgres/insert_module.go +++ b/internal/postgres/insert_module.go @@ -697,6 +697,11 @@ func (db *DB) DeleteModule(ctx context.Context, modulePath, version string) (err if _, err := db.db.Exec(ctx, stmt, modulePath, version); err != nil { return err } + + if _, err = db.db.Exec(ctx, `DELETE FROM version_map WHERE module_path = $1 AND resolved_version = $2`, modulePath, version); err != nil { + return err + } + var x int err = db.db.QueryRow(ctx, `SELECT 1 FROM modules WHERE module_path=$1 LIMIT 1`, modulePath).Scan(&x) if err != sql.ErrNoRows || err == nil { diff --git a/internal/postgres/insert_module_test.go b/internal/postgres/insert_module_test.go index 16275a56..4562ac39 100644 --- a/internal/postgres/insert_module_test.go +++ b/internal/postgres/insert_module_test.go @@ -291,25 +291,42 @@ func TestDeleteModule(t *testing.T) { defer ResetTestDB(testDB, t) v := sample.DefaultModule() + if err := testDB.InsertModule(ctx, v); err != nil { t.Fatal(err) } if _, err := testDB.LegacyGetModuleInfo(ctx, v.ModulePath, v.Version); err != nil { t.Fatal(err) } + + vm := sample.DefaultVersionMap() + if err := testDB.UpsertVersionMap(ctx, vm); err != nil { + t.Fatal(err) + } + if _, err := testDB.GetVersionMap(ctx, v.ModulePath, v.Version); err != nil { + t.Fatal(err) + } + if err := testDB.DeleteModule(ctx, v.ModulePath, v.Version); err != nil { t.Fatal(err) } if _, err := testDB.LegacyGetModuleInfo(ctx, v.ModulePath, v.Version); !errors.Is(err, derrors.NotFound) { t.Errorf("got %v, want NotFound", err) } + var x int err := testDB.Underlying().QueryRow(ctx, "SELECT 1 FROM imports_unique WHERE from_module_path = $1", v.ModulePath).Scan(&x) if err != sql.ErrNoRows { t.Errorf("imports_unique: got %v, want ErrNoRows", err) } - // TODO(golang/go#39633): check removal from version_map + err = testDB.Underlying().QueryRow( + ctx, + "SELECT 1 FROM version_map WHERE module_path = $1 AND resolved_version = $2", + v.ModulePath, v.Version).Scan(&x) + if err != sql.ErrNoRows { + t.Errorf("version_map: got %v, want ErrNoRows", err) + } } func TestPostgres_NewerAlternative(t *testing.T) { -- cgit v1.3-5-g9baa