@@ -471,9 +471,9 @@ public void AlterColumnOperation_to_identity()
471471 } ) ;
472472
473473 Assert . Equal (
474- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" ADD GENERATED ALWAYS AS IDENTITY;" + EOL +
475474 @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" TYPE integer;" + EOL +
476- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL ,
475+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL +
476+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" ADD GENERATED ALWAYS AS IDENTITY;" + EOL ,
477477 Sql ) ;
478478 }
479479
@@ -491,10 +491,10 @@ public void AlterColumnOperation_int_to_serial()
491491 } ) ;
492492
493493 Assert . Equal (
494- @"CREATE SEQUENCE ""People_IntKey_seq"" AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL +
495- @"GO" + EOL + EOL + // Note that GO here is just a delimiter introduced in the tests to indicate a batch boundary
496494 @"ALTER TABLE ""People"" ALTER COLUMN ""IntKey"" TYPE integer;" + EOL +
497495 @"ALTER TABLE ""People"" ALTER COLUMN ""IntKey"" SET NOT NULL;" + EOL +
496+ @"CREATE SEQUENCE ""People_IntKey_seq"" AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL +
497+ @"GO" + EOL + EOL + // Note that GO here is just a delimiter introduced in the tests to indicate a batch boundary
498498 @"ALTER TABLE ""People"" ALTER COLUMN ""IntKey"" SET DEFAULT (nextval('""People_IntKey_seq""'));" + EOL +
499499 @"ALTER SEQUENCE ""People_IntKey_seq"" OWNED BY ""People"".""IntKey"";" + EOL ,
500500 Sql ) ;
@@ -514,10 +514,10 @@ public void AlterColumnOperation_long_to_bigserial()
514514 } ) ;
515515
516516 Assert . Equal (
517- @"CREATE SEQUENCE ""People_LongKey_seq"" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL +
518- @"GO" + EOL + EOL + // Note that GO here is just a delimiter introduced in the tests to indicate a batch boundary
519517 @"ALTER TABLE ""People"" ALTER COLUMN ""LongKey"" TYPE bigint;" + EOL +
520518 @"ALTER TABLE ""People"" ALTER COLUMN ""LongKey"" SET NOT NULL;" + EOL +
519+ @"CREATE SEQUENCE ""People_LongKey_seq"" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL +
520+ @"GO" + EOL + EOL + // Note that GO here is just a delimiter introduced in the tests to indicate a batch boundary
521521 @"ALTER TABLE ""People"" ALTER COLUMN ""LongKey"" SET DEFAULT (nextval('""People_LongKey_seq""'));" + EOL +
522522 @"ALTER SEQUENCE ""People_LongKey_seq"" OWNED BY ""People"".""LongKey"";" + EOL ,
523523 Sql ) ;
@@ -540,9 +540,9 @@ public void AlterColumnOperation_identity_to_identity()
540540 } ) ;
541541
542542 Assert . Equal (
543- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET GENERATED ALWAYS;" + EOL +
544543 @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" TYPE integer;" + EOL +
545- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL ,
544+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL +
545+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET GENERATED ALWAYS;" + EOL ,
546546 Sql ) ;
547547 }
548548
@@ -562,13 +562,36 @@ public void AlterColumnOperation_serial_to_identity()
562562 [ NpgsqlAnnotationNames . ValueGenerationStrategy ] = NpgsqlValueGenerationStrategy . IdentityAlwaysColumn
563563 } ) ;
564564
565- Assert . Equal ( @"ALTER SEQUENCE ""People_Id_seq"" RENAME TO ""People_Id_old_seq"";" + EOL +
565+ Assert . Equal (
566+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" TYPE integer;" + EOL +
567+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL +
568+ @"ALTER SEQUENCE ""People_Id_seq"" RENAME TO ""People_Id_old_seq"";" + EOL +
566569 @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" DROP DEFAULT;" + EOL +
567570 @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" ADD GENERATED ALWAYS AS IDENTITY;" + EOL +
568571 @"SELECT * FROM setval('""People_Id_seq""', nextval('""People_Id_old_seq""'), false);" + EOL +
569- @"DROP SEQUENCE ""People_Id_old_seq"";" + EOL +
570- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" TYPE integer;" + EOL +
571- @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL ,
572+ @"DROP SEQUENCE ""People_Id_old_seq"";" + EOL ,
573+ Sql ) ;
574+ }
575+
576+ [ Fact ]
577+ public void AlterColumnOperation_serial_change_type ( )
578+ {
579+ Generate (
580+ new AlterColumnOperation
581+ {
582+ Table = "People" ,
583+ Name = "Id" ,
584+ ClrType = typeof ( long ) ,
585+ OldColumn = new ColumnOperation
586+ {
587+ ClrType = typeof ( int ) ,
588+ [ NpgsqlAnnotationNames . ValueGenerationStrategy ] = NpgsqlValueGenerationStrategy . SerialColumn
589+ } ,
590+ [ NpgsqlAnnotationNames . ValueGenerationStrategy ] = NpgsqlValueGenerationStrategy . SerialColumn
591+ } ) ;
592+
593+ Assert . Equal ( @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" TYPE bigint;" + EOL +
594+ @"ALTER TABLE ""People"" ALTER COLUMN ""Id"" SET NOT NULL;" + EOL ,
572595 Sql ) ;
573596 }
574597
0 commit comments