Skip to content

Commit 7b45b90

Browse files
Add test cases for functional indexes (stripe#146)
* Add test cases for functional indexes * add partitioned test
1 parent e5eafa8 commit 7b45b90

2 files changed

Lines changed: 76 additions & 17 deletions

File tree

internal/migration_acceptance_tests/index_cases_test.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,31 @@ var indexAcceptanceTestCases = []acceptanceTestCase{
105105
diff.MigrationHazardTypeIndexBuild,
106106
},
107107
},
108+
{
109+
name: "Add a functional index",
110+
oldSchemaDDL: []string{
111+
`
112+
CREATE SCHEMA schema_1;
113+
CREATE TABLE schema_1.foobar(
114+
id INT PRIMARY KEY,
115+
foo VARCHAR(255)
116+
);
117+
`,
118+
},
119+
newSchemaDDL: []string{
120+
`
121+
CREATE SCHEMA schema_1;
122+
CREATE TABLE schema_1.foobar(
123+
id INT PRIMARY KEY,
124+
foo VARCHAR(255)
125+
);
126+
CREATE INDEX some_idx ON schema_1.foobar(lower(foo));
127+
`,
128+
},
129+
expectedHazardTypes: []diff.MigrationHazardType{
130+
diff.MigrationHazardTypeIndexBuild,
131+
},
132+
},
108133
{
109134
name: "Add a unique index",
110135
oldSchemaDDL: []string{
@@ -478,7 +503,7 @@ var indexAcceptanceTestCases = []acceptanceTestCase{
478503
foo VARCHAR(255) NOT NULL
479504
);
480505
CREATE INDEX some_idx ON schema_1.foobar(id, foo);
481-
506+
482507
CREATE SCHEMA schema_2;
483508
CREATE TABLE schema_2.foobar(
484509
id INT PRIMARY KEY,
@@ -493,7 +518,7 @@ var indexAcceptanceTestCases = []acceptanceTestCase{
493518
id INT PRIMARY KEY,
494519
foo VARCHAR(255) NOT NULL
495520
);
496-
521+
497522
CREATE SCHEMA schema_2;
498523
CREATE TABLE schema_2.foobar(
499524
id INT PRIMARY KEY,

internal/migration_acceptance_tests/partitioned_index_cases_test.go

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,40 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
166166
diff.MigrationHazardTypeIndexBuild,
167167
},
168168
},
169+
{
170+
name: "Add a functional partitioned index",
171+
oldSchemaDDL: []string{
172+
`
173+
CREATE SCHEMA schema_1;
174+
CREATE TABLE schema_1.foobar(
175+
id INT,
176+
foo VARCHAR(255)
177+
) PARTITION BY LIST (foo);
178+
CREATE schema schema_2;
179+
CREATE TABLE schema_2.foobar_1 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_1');
180+
CREATE TABLE schema_2.foobar_2 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_2');
181+
CREATE TABLE schema_2.foobar_3 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_3');
182+
`,
183+
},
184+
newSchemaDDL: []string{
185+
`
186+
CREATE SCHEMA schema_1;
187+
CREATE TABLE schema_1.foobar(
188+
id INT,
189+
foo VARCHAR(255)
190+
) PARTITION BY LIST (foo);
191+
CREATE schema schema_2;
192+
CREATE TABLE schema_2.foobar_1 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_1');
193+
CREATE TABLE schema_2.foobar_2 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_2');
194+
CREATE TABLE schema_2.foobar_3 PARTITION OF schema_1.foobar FOR VALUES IN ('foo_3');
195+
196+
CREATE INDEX some_idx ON schema_1.foobar(lower(foo));
197+
`,
198+
},
199+
expectedHazardTypes: []diff.MigrationHazardType{
200+
diff.MigrationHazardTypeIndexBuild,
201+
},
202+
},
169203
{
170204
name: "Add a primary key",
171205
oldSchemaDDL: []string{
@@ -330,11 +364,11 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
330364
CREATE TABLE schema_2.foobar(
331365
id INT,
332366
foo VARCHAR(255)
333-
);
367+
);
334368
CREATE TABLE schema_2.foobar_1(
335369
id INT,
336370
foo VARCHAR(255)
337-
);
371+
);
338372
`,
339373
},
340374
expectedHazardTypes: []diff.MigrationHazardType{
@@ -376,11 +410,11 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
376410
CREATE TABLE schema_2.foobar(
377411
id INT,
378412
foo VARCHAR(255)
379-
);
413+
);
380414
CREATE TABLE schema_2.foobar_1(
381415
id INT,
382416
foo VARCHAR(255)
383-
);
417+
);
384418
`,
385419
},
386420
expectedHazardTypes: []diff.MigrationHazardType{
@@ -423,11 +457,11 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
423457
CREATE TABLE schema_2.foobar(
424458
id INT,
425459
foo VARCHAR(255)
426-
);
460+
);
427461
CREATE TABLE schema_2.foobar_1(
428462
id INT,
429463
foo VARCHAR(255)
430-
);
464+
);
431465
`,
432466
},
433467
expectedHazardTypes: []diff.MigrationHazardType{
@@ -570,12 +604,12 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
570604
bar INT,
571605
foo VARCHAR(255)
572606
) PARTITION BY LIST (foo);
573-
607+
574608
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
575609
576610
CREATE INDEX some_idx ON foobar(foo, id);
577611
CREATE INDEX foobar_1_some_local_idx ON foobar_1(foo, bar, id);
578-
612+
579613
-- Create a table in a different schema to ensure that dependencies are correctly set
580614
CREATE schema schema_1;
581615
CREATE TABLE schema_1.foobar(
@@ -590,7 +624,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
590624
bar INT,
591625
foo VARCHAR(255)
592626
) PARTITION BY LIST (foo);
593-
627+
594628
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
595629
`},
596630
expectedHazardTypes: []diff.MigrationHazardType{
@@ -614,7 +648,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
614648
bar INT,
615649
foo VARCHAR(255)
616650
) PARTITION BY LIST (foo);
617-
651+
618652
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
619653
CREATE TABLE foobar_2 PARTITION OF foobar FOR VALUES IN ('foo_2');
620654
@@ -629,7 +663,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
629663
bar INT,
630664
foo VARCHAR(255)
631665
) PARTITION BY LIST (foo);
632-
666+
633667
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
634668
CREATE TABLE foobar_2 PARTITION OF foobar FOR VALUES IN ('foo_2');
635669
@@ -675,7 +709,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
675709
bar INT,
676710
foo VARCHAR(255)
677711
) PARTITION BY LIST (foo);
678-
712+
679713
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
680714
CREATE TABLE foobar_2 PARTITION OF foobar FOR VALUES IN ('foo_2');
681715
@@ -691,7 +725,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
691725
bar VARCHAR(255),
692726
foo INT
693727
) PARTITION BY LIST (foo);
694-
728+
695729
CREATE TABLE schema_1.foobar_1 PARTITION OF schema_1.foobar FOR VALUES IN (1);
696730
CREATE TABLE schema_1.foobar_2 PARTITION OF schema_1.foobar FOR VALUES IN (2);
697731
@@ -706,7 +740,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
706740
bar INT,
707741
foo VARCHAR(255)
708742
) PARTITION BY LIST (foo);
709-
743+
710744
CREATE TABLE foobar_1 PARTITION OF foobar FOR VALUES IN ('foo_1');
711745
CREATE TABLE foobar_2 PARTITION OF foobar FOR VALUES IN ('foo_2');
712746
@@ -721,7 +755,7 @@ var partitionedIndexAcceptanceTestCases = []acceptanceTestCase{
721755
bar VARCHAR(255),
722756
foo INT
723757
) PARTITION BY LIST (foo);
724-
758+
725759
CREATE TABLE schema_1.foobar_1 PARTITION OF schema_1.foobar FOR VALUES IN (1);
726760
CREATE TABLE schema_1.foobar_2 PARTITION OF schema_1.foobar FOR VALUES IN (2);
727761

0 commit comments

Comments
 (0)