mirror of https://github.com/citusdata/citus.git
Add tests
parent
c5d6ab42c9
commit
1e79469e9a
|
@ -773,6 +773,83 @@ SELECT logicalrelid, partmethod, partkey FROM pg_dist_partition
|
||||||
parent_dropped_col_2 | h | {VAR :varno 1 :varattno 5 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 5 :location -1}
|
parent_dropped_col_2 | h | {VAR :varno 1 :varattno 5 :vartype 23 :vartypmod -1 :varcollid 0 :varlevelsup 0 :varnoold 1 :varoattno 5 :location -1}
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
|
-- some tests for view propagation on citus local tables
|
||||||
|
CREATE TABLE view_tbl_1 (a int);
|
||||||
|
CREATE TABLE view_tbl_2 (a int);
|
||||||
|
CREATE SCHEMA viewsc;
|
||||||
|
-- create dependent views, in a different schema
|
||||||
|
-- the first one depends on a citus metadata table
|
||||||
|
CREATE VIEW viewsc.prop_view AS SELECT COUNT (*) FROM view_tbl_1 JOIN pg_dist_node ON view_tbl_1.a=pg_dist_node.nodeid;
|
||||||
|
CREATE VIEW viewsc.prop_view2 AS SELECT COUNT (*) FROM view_tbl_1;
|
||||||
|
SELECT citus_add_local_table_to_metadata('view_tbl_1');
|
||||||
|
citus_add_local_table_to_metadata
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- verify the shard view is dropped, and created&propagated the correct view
|
||||||
|
SELECT viewname, definition FROM pg_views WHERE viewname LIKE 'prop_view%' ORDER BY viewname;
|
||||||
|
viewname | definition
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
prop_view | SELECT count(*) AS count +
|
||||||
|
| FROM (view_tbl_1 +
|
||||||
|
| JOIN pg_dist_node ON ((view_tbl_1.a = pg_dist_node.nodeid)));
|
||||||
|
prop_view2 | SELECT count(*) AS count +
|
||||||
|
| FROM view_tbl_1;
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
run_command_on_workers
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
(localhost,57637,t,2)
|
||||||
|
(localhost,57638,t,2)
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
-- drop views
|
||||||
|
DROP VIEW viewsc.prop_view;
|
||||||
|
DROP VIEW viewsc.prop_view2;
|
||||||
|
-- verify dropped on workers
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
run_command_on_workers
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
(localhost,57637,t,0)
|
||||||
|
(localhost,57638,t,0)
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
-- create a view that depends on a pg_ table
|
||||||
|
CREATE VIEW viewsc.prop_view3 AS SELECT COUNT (*) FROM view_tbl_1 JOIN pg_namespace ON view_tbl_1.a=pg_namespace.nspowner;
|
||||||
|
-- create a view that depends on two different tables, one of them is local for now
|
||||||
|
CREATE VIEW viewsc.prop_view4 AS SELECT COUNT (*) FROM view_tbl_1 JOIN view_tbl_2 ON view_tbl_1.a=view_tbl_2.a;
|
||||||
|
-- distribute the first table
|
||||||
|
SELECT create_distributed_table('view_tbl_1','a');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- verify the last view is not distributed
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
run_command_on_workers
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
(localhost,57637,t,1)
|
||||||
|
(localhost,57638,t,1)
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
-- add the other table to metadata, so the local view gets distributed
|
||||||
|
SELECT citus_add_local_table_to_metadata('view_tbl_2');
|
||||||
|
citus_add_local_table_to_metadata
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- verify both views are distributed
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
run_command_on_workers
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
(localhost,57637,t,2)
|
||||||
|
(localhost,57638,t,2)
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
-- cleanup at exit
|
-- cleanup at exit
|
||||||
set client_min_messages to error;
|
set client_min_messages to error;
|
||||||
DROP SCHEMA citus_local_tables_mx CASCADE;
|
DROP SCHEMA citus_local_tables_mx CASCADE;
|
||||||
|
|
|
@ -570,6 +570,10 @@ BEGIN;
|
||||||
SET LOCAL citus.force_max_query_parallelization TO ON;
|
SET LOCAL citus.force_max_query_parallelization TO ON;
|
||||||
CREATE TABLE table_1_to_view_in_transaction(a int);
|
CREATE TABLE table_1_to_view_in_transaction(a int);
|
||||||
SELECT create_distributed_table('table_1_to_view_in_transaction', 'a');
|
SELECT create_distributed_table('table_1_to_view_in_transaction', 'a');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
CREATE TABLE table_2_to_view_in_transaction(a int);
|
CREATE TABLE table_2_to_view_in_transaction(a int);
|
||||||
SELECT create_distributed_table('table_2_to_view_in_transaction', 'a');
|
SELECT create_distributed_table('table_2_to_view_in_transaction', 'a');
|
||||||
create_distributed_table
|
create_distributed_table
|
||||||
|
|
|
@ -409,6 +409,38 @@ SELECT logicalrelid, partmethod, partkey FROM pg_dist_partition
|
||||||
WHERE logicalrelid IN ('parent_dropped_col'::regclass, 'parent_dropped_col_2'::regclass)
|
WHERE logicalrelid IN ('parent_dropped_col'::regclass, 'parent_dropped_col_2'::regclass)
|
||||||
ORDER BY logicalrelid;
|
ORDER BY logicalrelid;
|
||||||
|
|
||||||
|
-- some tests for view propagation on citus local tables
|
||||||
|
CREATE TABLE view_tbl_1 (a int);
|
||||||
|
CREATE TABLE view_tbl_2 (a int);
|
||||||
|
CREATE SCHEMA viewsc;
|
||||||
|
-- create dependent views, in a different schema
|
||||||
|
-- the first one depends on a citus metadata table
|
||||||
|
CREATE VIEW viewsc.prop_view AS SELECT COUNT (*) FROM view_tbl_1 JOIN pg_dist_node ON view_tbl_1.a=pg_dist_node.nodeid;
|
||||||
|
CREATE VIEW viewsc.prop_view2 AS SELECT COUNT (*) FROM view_tbl_1;
|
||||||
|
SELECT citus_add_local_table_to_metadata('view_tbl_1');
|
||||||
|
-- verify the shard view is dropped, and created&propagated the correct view
|
||||||
|
SELECT viewname, definition FROM pg_views WHERE viewname LIKE 'prop_view%' ORDER BY viewname;
|
||||||
|
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
-- drop views
|
||||||
|
DROP VIEW viewsc.prop_view;
|
||||||
|
DROP VIEW viewsc.prop_view2;
|
||||||
|
-- verify dropped on workers
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
|
||||||
|
-- create a view that depends on a pg_ table
|
||||||
|
CREATE VIEW viewsc.prop_view3 AS SELECT COUNT (*) FROM view_tbl_1 JOIN pg_namespace ON view_tbl_1.a=pg_namespace.nspowner;
|
||||||
|
-- create a view that depends on two different tables, one of them is local for now
|
||||||
|
CREATE VIEW viewsc.prop_view4 AS SELECT COUNT (*) FROM view_tbl_1 JOIN view_tbl_2 ON view_tbl_1.a=view_tbl_2.a;
|
||||||
|
-- distribute the first table
|
||||||
|
SELECT create_distributed_table('view_tbl_1','a');
|
||||||
|
-- verify the last view is not distributed
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
-- add the other table to metadata, so the local view gets distributed
|
||||||
|
SELECT citus_add_local_table_to_metadata('view_tbl_2');
|
||||||
|
-- verify both views are distributed
|
||||||
|
SELECT run_command_on_workers($$SELECT COUNT(*) FROM pg_views WHERE viewname LIKE 'prop_view%';$$);
|
||||||
|
|
||||||
-- cleanup at exit
|
-- cleanup at exit
|
||||||
set client_min_messages to error;
|
set client_min_messages to error;
|
||||||
DROP SCHEMA citus_local_tables_mx CASCADE;
|
DROP SCHEMA citus_local_tables_mx CASCADE;
|
||||||
|
|
Loading…
Reference in New Issue