mirror of https://github.com/citusdata/citus.git
174 lines
6.1 KiB
Ruby
174 lines
6.1 KiB
Ruby
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"
|