diff --git a/src/test/regress/create_schedule b/src/test/regress/create_schedule index 17fc6559b..4ccecc244 100644 --- a/src/test/regress/create_schedule +++ b/src/test/regress/create_schedule @@ -4,3 +4,4 @@ test: dropped_columns_create_load distributed_planning_create_load test: local_dist_join_load test: partitioned_indexes_create test: connectivity_checks +test: sequences_create diff --git a/src/test/regress/expected/sequences.out b/src/test/regress/expected/sequences.out new file mode 100644 index 000000000..f4bfca50a --- /dev/null +++ b/src/test/regress/expected/sequences.out @@ -0,0 +1,52 @@ +SET search_path TO sequences_schema; +-- see the renamed sequence object +select count(*) from pg_sequence where seqrelid = 'renamed_seq'::regclass; + count +--------------------------------------------------------------------- + 1 +(1 row) + +TRUNCATE seq_test_0; +INSERT INTO seq_test_0 VALUES (1); +-- verify that sequence works properly +select max(z) into maxval_z from seq_test_0; +select max(y) into maxval_y from seq_test_0; +select max+1=nextval('renamed_seq') as check_sanity from maxval_z; + check_sanity +--------------------------------------------------------------------- + t +(1 row) + +select max+1=nextval('seq_1') as check_sanity from maxval_y; + check_sanity +--------------------------------------------------------------------- + t +(1 row) + +TRUNCATE seq_test_0; +INSERT INTO seq_test_0 VALUES (199999, DEFAULT, DEFAULT); +drop table maxval_z; +select max(z) into maxval_z from seq_test_0; +SELECT pg_sequence_last_value('renamed_seq'::regclass) = max FROM maxval_z; + ?column? +--------------------------------------------------------------------- + t +(1 row) + +TRUNCATE seq_test_0; +BEGIN; + INSERT INTO seq_test_0 VALUES (2); + -- verify that sequence works properly + select max(z)+1=nextval('renamed_seq') as check_sanity from seq_test_0 ; + check_sanity +--------------------------------------------------------------------- + t + (1 row) + + select max(y)+1=nextval('seq_1') as check_sanity from seq_test_0 ; + check_sanity +--------------------------------------------------------------------- + t +(1 row) + +COMMIT; diff --git a/src/test/regress/expected/sequences_create.out b/src/test/regress/expected/sequences_create.out new file mode 100644 index 000000000..f1e3e9270 --- /dev/null +++ b/src/test/regress/expected/sequences_create.out @@ -0,0 +1,28 @@ +CREATE SCHEMA sequences_schema; +SET search_path TO sequences_schema; +CREATE SEQUENCE seq_0; +ALTER SEQUENCE seq_0 AS smallint; +CREATE SEQUENCE seq_1; +ALTER SEQUENCE seq_1 AS bigint; +CREATE TABLE seq_test_0 (x bigint, y bigint); +SELECT create_distributed_table('seq_test_0','x'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +INSERT INTO seq_test_0 SELECT 1, s FROM generate_series(1, 50) s; +SELECT * FROM seq_test_0 ORDER BY 1, 2 LIMIT 5; + x | y +--------------------------------------------------------------------- + 1 | 1 + 1 | 2 + 1 | 3 + 1 | 4 + 1 | 5 +(5 rows) + +ALTER TABLE seq_test_0 ADD COLUMN z bigint; +ALTER TABLE seq_test_0 ALTER COLUMN z SET DEFAULT nextval('seq_0'); +ALTER TABLE seq_test_0 ALTER COLUMN y SET DEFAULT nextval('seq_1'); +ALTER SEQUENCE seq_0 RENAME TO renamed_seq; diff --git a/src/test/regress/sql/sequences.sql b/src/test/regress/sql/sequences.sql new file mode 100644 index 000000000..886585053 --- /dev/null +++ b/src/test/regress/sql/sequences.sql @@ -0,0 +1,27 @@ +SET search_path TO sequences_schema; + +-- see the renamed sequence object +select count(*) from pg_sequence where seqrelid = 'renamed_seq'::regclass; + +TRUNCATE seq_test_0; +INSERT INTO seq_test_0 VALUES (1); + +-- verify that sequence works properly +select max(z) into maxval_z from seq_test_0; +select max(y) into maxval_y from seq_test_0; +select max+1=nextval('renamed_seq') as check_sanity from maxval_z; +select max+1=nextval('seq_1') as check_sanity from maxval_y; + +TRUNCATE seq_test_0; +INSERT INTO seq_test_0 VALUES (199999, DEFAULT, DEFAULT); +drop table maxval_z; +select max(z) into maxval_z from seq_test_0; +SELECT pg_sequence_last_value('renamed_seq'::regclass) = max FROM maxval_z; + +TRUNCATE seq_test_0; +BEGIN; + INSERT INTO seq_test_0 VALUES (2); + -- verify that sequence works properly + select max(z)+1=nextval('renamed_seq') as check_sanity from seq_test_0 ; + select max(y)+1=nextval('seq_1') as check_sanity from seq_test_0 ; +COMMIT; diff --git a/src/test/regress/sql/sequences_create.sql b/src/test/regress/sql/sequences_create.sql new file mode 100644 index 000000000..de983e177 --- /dev/null +++ b/src/test/regress/sql/sequences_create.sql @@ -0,0 +1,21 @@ +CREATE SCHEMA sequences_schema; +SET search_path TO sequences_schema; + +CREATE SEQUENCE seq_0; +ALTER SEQUENCE seq_0 AS smallint; + +CREATE SEQUENCE seq_1; +ALTER SEQUENCE seq_1 AS bigint; + +CREATE TABLE seq_test_0 (x bigint, y bigint); +SELECT create_distributed_table('seq_test_0','x'); + +INSERT INTO seq_test_0 SELECT 1, s FROM generate_series(1, 50) s; + +SELECT * FROM seq_test_0 ORDER BY 1, 2 LIMIT 5; + +ALTER TABLE seq_test_0 ADD COLUMN z bigint; +ALTER TABLE seq_test_0 ALTER COLUMN z SET DEFAULT nextval('seq_0'); +ALTER TABLE seq_test_0 ALTER COLUMN y SET DEFAULT nextval('seq_1'); + +ALTER SEQUENCE seq_0 RENAME TO renamed_seq; diff --git a/src/test/regress/sql_schedule b/src/test/regress/sql_schedule index 924143bec..4a1543814 100644 --- a/src/test/regress/sql_schedule +++ b/src/test/regress/sql_schedule @@ -6,3 +6,4 @@ test: intermediate_result_pruning_queries_1 intermediate_result_pruning_queries_ test: dropped_columns_1 distributed_planning test: local_dist_join test: connectivity_checks citus_run_command +test: sequences