diff --git a/src/test/regress/spec/isolation_node_pause_ops.spec b/src/test/regress/spec/isolation_node_pause_ops.spec new file mode 100644 index 000000000..bb40918f7 --- /dev/null +++ b/src/test/regress/spec/isolation_node_pause_ops.spec @@ -0,0 +1,173 @@ +setup +{ + SELECT citus_set_coordinator_host('localhost', 57636); + SET citus.shard_replication_factor TO 1; + CREATE SCHEMA tenant1; + CREATE TABLE tenant1.table1(id int PRIMARY KEY, name text, col bigint); + INSERT INTO tenant1.table1 SELECT i, 'asd', i*1000 FROM generate_series(11, 20) i; + + CREATE TABLE tenant1.table2(id int PRIMARY KEY, name text, col bigint); + + CREATE TABLE public.ref(id int PRIMARY KEY); + SELECT create_reference_table('public.ref'); + + CREATE TABLE tenant1.table3(id int PRIMARY KEY, name text, col1 int, col int REFERENCES public.ref(id)); + SELECT citus_add_local_table_to_metadata('tenant1.table3'); +} + +teardown +{ + DROP TABLE public.ref CASCADE; + DROP SCHEMA IF EXISTS tenant1, tenant2 CASCADE; + SELECT citus_remove_node('localhost', 57636); +} + +session "s1" + +step "s1-begin" +{ + BEGIN; + SET citus.shard_replication_factor TO 1; +} + +step "s1-schema-distribute" +{ + SELECT citus_schema_distribute('tenant1'); +} + +step "s1-schema-undistribute" +{ + SELECT citus_schema_undistribute('tenant1'); +} + +step "s1-verify-distributed-schema" +{ + SELECT logicalrelid, partmethod, partkey, (colocationid = (SELECT colocationid AS tenant_colocid FROM pg_dist_schema)) AS is_correct_colocid, repmodel, autoconverted FROM pg_dist_partition WHERE logicalrelid::text LIKE 'tenant%' ORDER BY logicalrelid; +} + +step "s1-commit" +{ + COMMIT; +} + +session "s2" + +step "s2-drop-schema" +{ + DROP SCHEMA tenant1 CASCADE; +} + +step "s2-rename-schema" +{ + ALTER SCHEMA tenant1 RENAME TO tenant2; +} + +step "s2-add-table" +{ + SET citus.shard_replication_factor TO 1; + CREATE TABLE tenant1.table4(id int PRIMARY KEY, name text, col bigint); +} + +step "s2-drop-table" +{ + DROP TABLE tenant1.table3; +} + +step "s2-alter-col-type" +{ + ALTER TABLE tenant1.table3 ALTER COLUMN col1 TYPE text; +} + +step "s2-add-foreign-key" +{ + ALTER TABLE tenant1.table3 ADD CONSTRAINT table3_fk1 FOREIGN KEY (id) REFERENCES tenant1.table2 (id); +} + +step "s2-drop-foreign-key" +{ + ALTER TABLE tenant1.table3 DROP CONSTRAINT table3_col_fkey; +} + +step "s2-create-unique-index" +{ + CREATE UNIQUE INDEX idx_2 ON tenant1.table3 (col); +} + +step "s2-create-unique-index-concurrently" +{ + CREATE UNIQUE INDEX CONCURRENTLY idx_3 ON tenant1.table3 (col); +} + +step "s2-reindex-unique-concurrently" +{ + REINDEX INDEX CONCURRENTLY tenant1.idx_2; +} + +step "s2-insert" +{ + // we insert into public.ref table as well to prevent fkey violation + INSERT INTO public.ref SELECT i FROM generate_series(11, 20) i; + INSERT INTO tenant1.table3 SELECT i, 'asd', i*1000 FROM generate_series(11, 20) i; +} + +step "s2-delete" +{ + DELETE FROM tenant1.table3; +} + +step "s2-update" +{ + UPDATE tenant1.table3 SET col = 11 WHERE col = 11; +} + +// DROP SCHEMA +permutation "s1-begin" "s1-schema-distribute" "s2-drop-schema" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-drop-schema" "s1-commit" "s1-verify-distributed-schema" + +// RENAME SCHEMA +permutation "s1-begin" "s1-schema-distribute" "s2-rename-schema" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-rename-schema" "s1-commit" "s1-verify-distributed-schema" + +// CREATE TABLE +permutation "s1-begin" "s1-schema-distribute" "s2-add-table" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-add-table" "s1-commit" "s1-verify-distributed-schema" + +// DROP TABLE +permutation "s1-begin" "s1-schema-distribute" "s2-drop-table" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-drop-table" "s1-commit" "s1-verify-distributed-schema" + +// ALTER TABLE ALTER COLUMN TYPE +permutation "s1-begin" "s1-schema-distribute" "s2-alter-col-type" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-alter-col-type" "s1-commit" "s1-verify-distributed-schema" + +// ADD FOREIGN KEY +permutation "s1-begin" "s1-schema-distribute" "s2-add-foreign-key" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-add-foreign-key" "s1-commit" "s1-verify-distributed-schema" + +// DROP FOREIGN KEY +permutation "s1-begin" "s1-schema-distribute" "s2-drop-foreign-key" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-drop-foreign-key" "s1-commit" "s1-verify-distributed-schema" + +// CREATE UNIQUE INDEX +permutation "s1-begin" "s1-schema-distribute" "s2-create-unique-index" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-create-unique-index" "s1-commit" "s1-verify-distributed-schema" + +// CREATE UNIQUE INDEX CONCURRENTLY +permutation "s1-begin" "s1-schema-distribute" "s2-create-unique-index-concurrently" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-create-unique-index-concurrently" "s1-commit" "s1-verify-distributed-schema" + +// REINDEX CONCURRENTLY +permutation "s2-create-unique-index" "s1-begin" "s1-schema-distribute" "s2-reindex-unique-concurrently" "s1-commit" "s1-verify-distributed-schema" +permutation "s2-create-unique-index" "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-reindex-unique-concurrently" "s1-commit" "s1-verify-distributed-schema" + +// INSERT +permutation "s1-begin" "s1-schema-distribute" "s2-insert" "s1-commit" "s1-verify-distributed-schema" +permutation "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-insert" "s1-commit" "s1-verify-distributed-schema" + +// UPDATE +permutation "s2-insert" "s1-begin" "s1-schema-distribute" "s2-update" "s1-commit" "s1-verify-distributed-schema" +permutation "s2-insert" "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-update" "s1-commit" "s1-verify-distributed-schema" + +// DELETE +permutation "s2-insert" "s1-begin" "s1-schema-distribute" "s2-delete" "s1-commit" "s1-verify-distributed-schema" +permutation "s2-insert" "s1-schema-distribute" "s1-begin" "s1-schema-undistribute" "s2-delete" "s1-commit" "s1-verify-distributed-schema"