From 729468be3000381ae2e570f76b001bc00905895d Mon Sep 17 00:00:00 2001 From: rxwatcher Date: Fri, 19 Jun 2026 06:13:26 +0200 Subject: [PATCH] fix: wrap episodes season index migration block --- migrations/episodes_season_id_index_test.go | 24 +++++++++++++++++++ ...618164519_add_episodes_season_id_index.sql | 6 +++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 migrations/episodes_season_id_index_test.go diff --git a/migrations/episodes_season_id_index_test.go b/migrations/episodes_season_id_index_test.go new file mode 100644 index 00000000..6cc5ff93 --- /dev/null +++ b/migrations/episodes_season_id_index_test.go @@ -0,0 +1,24 @@ +package migrations + +import ( + "strings" + "testing" +) + +func TestEpisodesSeasonIDIndexMigrationWrapsDollarQuotedBlock(t *testing.T) { + migrationBytes, err := FS.ReadFile("sql/20260618164519_add_episodes_season_id_index.sql") + if err != nil { + t.Fatalf("read migration: %v", err) + } + + migration := string(migrationBytes) + for _, want := range []string{ + "-- +goose StatementBegin\nDO $$", + "END;\n$$;\n-- +goose StatementEnd", + "CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_episodes_season_id_episode_number", + } { + if !strings.Contains(migration, want) { + t.Fatalf("migration missing %q", want) + } + } +} diff --git a/migrations/sql/20260618164519_add_episodes_season_id_index.sql b/migrations/sql/20260618164519_add_episodes_season_id_index.sql index 2b0dd476..45054938 100644 --- a/migrations/sql/20260618164519_add_episodes_season_id_index.sql +++ b/migrations/sql/20260618164519_add_episodes_season_id_index.sql @@ -5,6 +5,7 @@ -- episodes.season_id, while the existing episode index is keyed by -- (series_id, season_number, episode_number). On large catalogs this forced a -- parallel scan of the full episodes table for each season page load. +-- +goose StatementBegin DO $$ BEGIN IF EXISTS ( @@ -18,10 +19,11 @@ BEGIN ) THEN DROP INDEX public.idx_episodes_season_id_episode_number; END IF; -END +END; $$; +-- +goose StatementEnd -CREATE INDEX CONCURRENTLY idx_episodes_season_id_episode_number +CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_episodes_season_id_episode_number ON public.episodes USING btree (season_id, episode_number); -- +goose Down