Skip to content

Commit fb77b7e

Browse files
committed
test: cover migration 41 index recovery
1 parent f5ee749 commit fb77b7e

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package store
2+
3+
import (
4+
"strings"
5+
"testing"
6+
)
7+
8+
func TestMigration41RepairsIndexesBeforeBackfill(t *testing.T) {
9+
var migration *Migration
10+
for i := range Migrations {
11+
if Migrations[i].Version == 41 {
12+
migration = &Migrations[i]
13+
break
14+
}
15+
}
16+
if migration == nil {
17+
t.Fatal("migration 41 not found")
18+
}
19+
20+
statements := splitSQL(migration.SQL)
21+
if len(statements) < 5 {
22+
t.Fatalf("migration 41 has too few statements: %d", len(statements))
23+
}
24+
25+
reindexAt := -1
26+
backfillAt := -1
27+
for i, stmt := range statements {
28+
upper := strings.ToUpper(strings.TrimSpace(stmt))
29+
if upper == "REINDEX" {
30+
reindexAt = i
31+
}
32+
if strings.Contains(upper, `UPDATE "COMICGROUP" SET "SHELFSORTTITLE"`) {
33+
backfillAt = i
34+
}
35+
}
36+
if reindexAt < 0 {
37+
t.Fatal("migration 41 must REINDEX before touching existing ComicGroup rows")
38+
}
39+
if backfillAt < 0 {
40+
t.Fatal("migration 41 backfill statement not found")
41+
}
42+
if reindexAt > backfillAt {
43+
t.Fatalf("REINDEX must run before shelfSortTitle backfill: reindex=%d backfill=%d", reindexAt, backfillAt)
44+
}
45+
}

0 commit comments

Comments
 (0)