mirror of https://github.com/citusdata/citus.git
Add Publication Tests for Tenant Schema Tables (#7011)
This PR adds schema based sharding tests to publication.sql filepull/6923/head^2
parent
fba5c8dd30
commit
d71ad4b65a
|
@ -90,13 +90,18 @@ SELECT DISTINCT c FROM (
|
|||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables_orig WITH (publish_via_partition_root = ''false'', publish = ''insert, truncate'')');
|
||||
(1 row)
|
||||
|
||||
-- distribute a table, creating a mixed publication
|
||||
-- distribute a table and create a tenant schema, creating a mixed publication
|
||||
SELECT create_distributed_table('test','x', colocate_with := 'none');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SET citus.enable_schema_based_sharding TO ON;
|
||||
CREATE SCHEMA citus_schema_1;
|
||||
CREATE TABLE citus_schema_1.test (x int primary key, y int, "column-1" int, doc xml);
|
||||
SET citus.enable_schema_based_sharding TO OFF;
|
||||
ALTER PUBLICATION pubtables_orig ADD TABLE citus_schema_1.test;
|
||||
-- some generic operations
|
||||
ALTER PUBLICATION pubtables_orig RENAME TO pubtables;
|
||||
ALTER PUBLICATION pubtables SET (publish = 'insert, update, delete');
|
||||
|
@ -108,7 +113,11 @@ ERROR: relation "notexist" does not exist
|
|||
-- operations with a distributed table
|
||||
ALTER PUBLICATION pubtables DROP TABLE test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- operations with a tenant schema table
|
||||
ALTER PUBLICATION pubtables DROP TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- operations with a local table in a mixed publication
|
||||
ALTER PUBLICATION pubtables DROP TABLE "test-pubs";
|
||||
ALTER PUBLICATION pubtables ADD TABLE "test-pubs";
|
||||
|
@ -124,9 +133,9 @@ SELECT DISTINCT c FROM (
|
|||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
c
|
||||
c
|
||||
---------------------------------------------------------------------
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, TABLE publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete'')');
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, TABLE citus_schema_1.test, TABLE publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete'')');
|
||||
(1 row)
|
||||
|
||||
-- operations with a strangely named distributed table in a mixed publication
|
||||
|
@ -134,7 +143,7 @@ ALTER PUBLICATION pubtables DROP TABLE "test-pubs";
|
|||
ALTER PUBLICATION pubtables ADD TABLE "test-pubs";
|
||||
-- create a publication with distributed and local tables
|
||||
DROP PUBLICATION pubtables;
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- change distributed tables
|
||||
SELECT alter_distributed_table('test', shard_count := 5, cascade_to_colocated := true);
|
||||
NOTICE: creating a new table for publication.test
|
||||
|
@ -194,9 +203,9 @@ SELECT DISTINCT c FROM (
|
|||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
c
|
||||
c
|
||||
---------------------------------------------------------------------
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, TABLE publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE citus_schema_1.test, TABLE publication.test, TABLE publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
(1 row)
|
||||
|
||||
-- partitioned table
|
||||
|
@ -257,10 +266,11 @@ SELECT substring(:'server_version', '\d+')::int >= 15 AS server_version_ge_15
|
|||
SET client_min_messages TO ERROR;
|
||||
DROP SCHEMA publication CASCADE;
|
||||
DROP SCHEMA "publication-1" CASCADE;
|
||||
DROP SCHEMA citus_schema_1 CASCADE;
|
||||
\q
|
||||
\endif
|
||||
-- recreate a mixed publication
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "publication-1"."test-pubs";
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- operations on an existing distributed table
|
||||
ALTER PUBLICATION pubtables DROP TABLE test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE test (y);
|
||||
|
@ -277,6 +287,22 @@ SELECT DISTINCT c FROM (
|
|||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test WHERE (CASE test.x WHEN 5 THEN true ELSE false END) WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
(1 row)
|
||||
|
||||
-- operations on an existing tenant schema table
|
||||
ALTER PUBLICATION pubtables ADD TABLE citus_schema_1.test (y);
|
||||
ALTER PUBLICATION pubtables DROP TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (doc IS DOCUMENT);
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (xmlexists('//foo[text() = ''bar'']' PASSING BY VALUE doc));
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (CASE x WHEN 5 THEN true ELSE false END);
|
||||
SELECT DISTINCT c FROM (
|
||||
SELECT unnest(result::text[]) c
|
||||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
c
|
||||
---------------------------------------------------------------------
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE citus_schema_1.test WHERE (CASE test.x WHEN 5 THEN true ELSE false END) WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
(1 row)
|
||||
|
||||
ALTER PUBLICATION pubtables SET TABLE test ("column-1", x) WHERE (x > "column-1"), "publication-1"."test-pubs";
|
||||
-- operations on a local table
|
||||
ALTER PUBLICATION pubtables DROP TABLE "publication-1"."test-pubs";
|
||||
|
@ -363,3 +389,4 @@ DROP PUBLICATION pubpartitioned;
|
|||
SET client_min_messages TO ERROR;
|
||||
DROP SCHEMA publication CASCADE;
|
||||
DROP SCHEMA "publication-1" CASCADE;
|
||||
DROP SCHEMA citus_schema_1 CASCADE;
|
||||
|
|
|
@ -90,13 +90,18 @@ SELECT DISTINCT c FROM (
|
|||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables_orig WITH (publish_via_partition_root = ''false'', publish = ''insert, truncate'')');
|
||||
(1 row)
|
||||
|
||||
-- distribute a table, creating a mixed publication
|
||||
-- distribute a table and create a tenant schema, creating a mixed publication
|
||||
SELECT create_distributed_table('test','x', colocate_with := 'none');
|
||||
create_distributed_table
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SET citus.enable_schema_based_sharding TO ON;
|
||||
CREATE SCHEMA citus_schema_1;
|
||||
CREATE TABLE citus_schema_1.test (x int primary key, y int, "column-1" int, doc xml);
|
||||
SET citus.enable_schema_based_sharding TO OFF;
|
||||
ALTER PUBLICATION pubtables_orig ADD TABLE citus_schema_1.test;
|
||||
-- some generic operations
|
||||
ALTER PUBLICATION pubtables_orig RENAME TO pubtables;
|
||||
ALTER PUBLICATION pubtables SET (publish = 'insert, update, delete');
|
||||
|
@ -108,7 +113,11 @@ ERROR: relation "notexist" does not exist
|
|||
-- operations with a distributed table
|
||||
ALTER PUBLICATION pubtables DROP TABLE test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- operations with a tenant schema table
|
||||
ALTER PUBLICATION pubtables DROP TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- operations with a local table in a mixed publication
|
||||
ALTER PUBLICATION pubtables DROP TABLE "test-pubs";
|
||||
ALTER PUBLICATION pubtables ADD TABLE "test-pubs";
|
||||
|
@ -124,9 +133,9 @@ SELECT DISTINCT c FROM (
|
|||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
c
|
||||
c
|
||||
---------------------------------------------------------------------
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete'')');
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, citus_schema_1.test, publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete'')');
|
||||
(1 row)
|
||||
|
||||
-- operations with a strangely named distributed table in a mixed publication
|
||||
|
@ -134,7 +143,7 @@ ALTER PUBLICATION pubtables DROP TABLE "test-pubs";
|
|||
ALTER PUBLICATION pubtables ADD TABLE "test-pubs";
|
||||
-- create a publication with distributed and local tables
|
||||
DROP PUBLICATION pubtables;
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
-- change distributed tables
|
||||
SELECT alter_distributed_table('test', shard_count := 5, cascade_to_colocated := true);
|
||||
NOTICE: creating a new table for publication.test
|
||||
|
@ -194,9 +203,9 @@ SELECT DISTINCT c FROM (
|
|||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
c
|
||||
c
|
||||
---------------------------------------------------------------------
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE publication.test, publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
SELECT worker_create_or_replace_object('CREATE PUBLICATION pubtables FOR TABLE citus_schema_1.test, publication.test, publication."test-pubs" WITH (publish_via_partition_root = ''false'', publish = ''insert, update, delete, truncate'')');
|
||||
(1 row)
|
||||
|
||||
-- partitioned table
|
||||
|
@ -257,4 +266,5 @@ SELECT substring(:'server_version', '\d+')::int >= 15 AS server_version_ge_15
|
|||
SET client_min_messages TO ERROR;
|
||||
DROP SCHEMA publication CASCADE;
|
||||
DROP SCHEMA "publication-1" CASCADE;
|
||||
DROP SCHEMA citus_schema_1 CASCADE;
|
||||
\q
|
||||
|
|
|
@ -84,8 +84,13 @@ SELECT DISTINCT c FROM (
|
|||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
|
||||
-- distribute a table, creating a mixed publication
|
||||
-- distribute a table and create a tenant schema, creating a mixed publication
|
||||
SELECT create_distributed_table('test','x', colocate_with := 'none');
|
||||
SET citus.enable_schema_based_sharding TO ON;
|
||||
CREATE SCHEMA citus_schema_1;
|
||||
CREATE TABLE citus_schema_1.test (x int primary key, y int, "column-1" int, doc xml);
|
||||
SET citus.enable_schema_based_sharding TO OFF;
|
||||
ALTER PUBLICATION pubtables_orig ADD TABLE citus_schema_1.test;
|
||||
|
||||
-- some generic operations
|
||||
ALTER PUBLICATION pubtables_orig RENAME TO pubtables;
|
||||
|
@ -97,7 +102,12 @@ ALTER PUBLICATION pubtables ADD TABLE notexist;
|
|||
-- operations with a distributed table
|
||||
ALTER PUBLICATION pubtables DROP TABLE test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
|
||||
-- operations with a tenant schema table
|
||||
ALTER PUBLICATION pubtables DROP TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables ADD TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables SET TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
|
||||
-- operations with a local table in a mixed publication
|
||||
ALTER PUBLICATION pubtables DROP TABLE "test-pubs";
|
||||
|
@ -118,7 +128,7 @@ ALTER PUBLICATION pubtables ADD TABLE "test-pubs";
|
|||
|
||||
-- create a publication with distributed and local tables
|
||||
DROP PUBLICATION pubtables;
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs";
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "test-pubs", "publication-1"."test-pubs", citus_schema_1.test;
|
||||
|
||||
-- change distributed tables
|
||||
SELECT alter_distributed_table('test', shard_count := 5, cascade_to_colocated := true);
|
||||
|
@ -184,11 +194,12 @@ SELECT substring(:'server_version', '\d+')::int >= 15 AS server_version_ge_15
|
|||
SET client_min_messages TO ERROR;
|
||||
DROP SCHEMA publication CASCADE;
|
||||
DROP SCHEMA "publication-1" CASCADE;
|
||||
DROP SCHEMA citus_schema_1 CASCADE;
|
||||
\q
|
||||
\endif
|
||||
|
||||
-- recreate a mixed publication
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "publication-1"."test-pubs";
|
||||
CREATE PUBLICATION pubtables FOR TABLE test, "publication-1"."test-pubs", citus_schema_1.test;
|
||||
|
||||
-- operations on an existing distributed table
|
||||
ALTER PUBLICATION pubtables DROP TABLE test;
|
||||
|
@ -197,6 +208,19 @@ ALTER PUBLICATION pubtables SET TABLE test WHERE (doc IS DOCUMENT);
|
|||
ALTER PUBLICATION pubtables SET TABLE test WHERE (xmlexists('//foo[text() = ''bar'']' PASSING BY VALUE doc));
|
||||
ALTER PUBLICATION pubtables SET TABLE test WHERE (CASE x WHEN 5 THEN true ELSE false END);
|
||||
|
||||
SELECT DISTINCT c FROM (
|
||||
SELECT unnest(result::text[]) c
|
||||
FROM run_command_on_workers($$
|
||||
SELECT array_agg(c) FROM (SELECT c FROM unnest(activate_node_snapshot()) c WHERE c LIKE '%CREATE PUBLICATION%' AND c LIKE '%pubtables%' ORDER BY 1) s$$)
|
||||
ORDER BY c) s;
|
||||
|
||||
-- operations on an existing tenant schema table
|
||||
ALTER PUBLICATION pubtables ADD TABLE citus_schema_1.test (y);
|
||||
ALTER PUBLICATION pubtables DROP TABLE citus_schema_1.test;
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (doc IS DOCUMENT);
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (xmlexists('//foo[text() = ''bar'']' PASSING BY VALUE doc));
|
||||
ALTER PUBLICATION pubtables SET TABLE citus_schema_1.test WHERE (CASE x WHEN 5 THEN true ELSE false END);
|
||||
|
||||
SELECT DISTINCT c FROM (
|
||||
SELECT unnest(result::text[]) c
|
||||
FROM run_command_on_workers($$
|
||||
|
@ -260,3 +284,4 @@ DROP PUBLICATION pubpartitioned;
|
|||
SET client_min_messages TO ERROR;
|
||||
DROP SCHEMA publication CASCADE;
|
||||
DROP SCHEMA "publication-1" CASCADE;
|
||||
DROP SCHEMA citus_schema_1 CASCADE;
|
||||
|
|
Loading…
Reference in New Issue