@@ -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