diff --git a/src/test/regress/expected/multi_metadata_sync.out b/src/test/regress/expected/multi_metadata_sync.out index f560dd59a..da3a75c98 100644 --- a/src/test/regress/expected/multi_metadata_sync.out +++ b/src/test/regress/expected/multi_metadata_sync.out @@ -1927,11 +1927,13 @@ ERROR: cannot execute ADD COLUMN commands involving serial pseudotypes when met List of relations Schema | Name | Type | Owner --------------------------------------------------------------------- - public | mx_test_sequence_0 | sequence | postgres - public | mx_test_sequence_1 | sequence | postgres - public | mx_test_table_col_3_seq | sequence | postgres - public | user_defined_seq | sequence | postgres -(4 rows) + public | mx_test_sequence_0 | sequence | postgres + public | mx_test_sequence_1 | sequence | postgres + public | mx_test_table_col_3_seq | sequence | postgres + public | sequence_rollback | sequence | postgres + public | sequence_rollback(citus_backup_0) | sequence | postgres + public | user_defined_seq | sequence | postgres +(6 rows) \c - - - :master_port CREATE SEQUENCE local_sequence; @@ -1946,9 +1948,11 @@ drop cascades to default value for column id of table test_table List of relations Schema | Name | Type | Owner --------------------------------------------------------------------- - public | mx_test_table_col_3_seq | sequence | postgres - public | user_defined_seq | sequence | postgres -(2 rows) + public | mx_test_table_col_3_seq | sequence | postgres + public | sequence_rollback | sequence | postgres + public | sequence_rollback(citus_backup_0) | sequence | postgres + public | user_defined_seq | sequence | postgres +(4 rows) \c - - - :master_port DROP TABLE test_table CASCADE; diff --git a/src/test/regress/expected/multi_sequence_default.out b/src/test/regress/expected/multi_sequence_default.out index 7f3985631..2026be0ad 100644 --- a/src/test/regress/expected/multi_sequence_default.out +++ b/src/test/regress/expected/multi_sequence_default.out @@ -946,6 +946,49 @@ SELECT pg_identify_object_as_address(classid, objid, objsubid) from citus.pg_dis (schema,{test_schema_for_sequence_default_propagation},{}) (1 row) +-- Show that sequence can stay on the worker node if the transaction is +-- rollbacked after distributing the table +BEGIN; +CREATE SEQUENCE sequence_rollback; +CREATE TABLE sequence_rollback_table(id int, val_1 int default nextval('sequence_rollback')); +SELECT create_distributed_table('sequence_rollback_table', 'id'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +ROLLBACK; +-- Show that there is a sequence on the worker with the sequence type int +\c - - - :worker_1_port +SELECT seqtypid::regtype, seqmax, seqmin FROM pg_sequence WHERE seqrelid::regclass::text = 'sequence_rollback'; + seqtypid | seqmax | seqmin +--------------------------------------------------------------------- + integer | 2147483647 | 1 +(1 row) + +\c - - - :master_port +-- Show that we can create a sequence with the same name and different data type +BEGIN; +CREATE SEQUENCE sequence_rollback; +CREATE TABLE sequence_rollback_table(id int, val_1 bigint default nextval('sequence_rollback')); +SELECT create_distributed_table('sequence_rollback_table', 'id'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +ROLLBACK; +-- Show that existing sequence has been renamed and a new sequence with the same name +-- created for another type +\c - - - :worker_1_port +SELECT seqrelid::regclass, seqtypid::regtype, seqmax, seqmin FROM pg_sequence WHERE seqrelid::regclass::text like '%sequence_rollback%'; + seqrelid | seqtypid | seqmax | seqmin +--------------------------------------------------------------------- + "sequence_rollback(citus_backup_0)" | integer | 2147483647 | 1 + sequence_rollback | bigint | 562949953421313 | 281474976710657 +(2 rows) + +\c - - - :master_port -- clean up DROP SCHEMA test_schema_for_sequence_default_propagation CASCADE; NOTICE: drop cascades to 2 other objects diff --git a/src/test/regress/sql/multi_sequence_default.sql b/src/test/regress/sql/multi_sequence_default.sql index b57080111..273cf4ff6 100644 --- a/src/test/regress/sql/multi_sequence_default.sql +++ b/src/test/regress/sql/multi_sequence_default.sql @@ -454,6 +454,33 @@ SELECT create_distributed_table('test_seq_dist', 'a'); SELECT pg_identify_object_as_address(classid, objid, objsubid) from citus.pg_dist_object WHERE objid IN ('test_schema_for_sequence_default_propagation.seq_10'::regclass); SELECT pg_identify_object_as_address(classid, objid, objsubid) from citus.pg_dist_object WHERE objid IN ('test_schema_for_sequence_default_propagation'::regnamespace); +-- Show that sequence can stay on the worker node if the transaction is +-- rollbacked after distributing the table +BEGIN; +CREATE SEQUENCE sequence_rollback; +CREATE TABLE sequence_rollback_table(id int, val_1 int default nextval('sequence_rollback')); +SELECT create_distributed_table('sequence_rollback_table', 'id'); +ROLLBACK; + +-- Show that there is a sequence on the worker with the sequence type int +\c - - - :worker_1_port +SELECT seqtypid::regtype, seqmax, seqmin FROM pg_sequence WHERE seqrelid::regclass::text = 'sequence_rollback'; + +\c - - - :master_port +-- Show that we can create a sequence with the same name and different data type +BEGIN; +CREATE SEQUENCE sequence_rollback; +CREATE TABLE sequence_rollback_table(id int, val_1 bigint default nextval('sequence_rollback')); +SELECT create_distributed_table('sequence_rollback_table', 'id'); +ROLLBACK; + +-- Show that existing sequence has been renamed and a new sequence with the same name +-- created for another type +\c - - - :worker_1_port +SELECT seqrelid::regclass, seqtypid::regtype, seqmax, seqmin FROM pg_sequence WHERE seqrelid::regclass::text like '%sequence_rollback%'; + +\c - - - :master_port + -- clean up DROP SCHEMA test_schema_for_sequence_default_propagation CASCADE; DROP TABLE test_seq_dist;