mirror of https://github.com/citusdata/citus.git
75 lines
2.6 KiB
SQL
75 lines
2.6 KiB
SQL
\set VERBOSITY terse
|
|
|
|
SET citus.next_shard_id TO 1511000;
|
|
SET citus.shard_replication_factor TO 1;
|
|
SET citus.enable_local_execution TO ON;
|
|
SET citus.log_local_commands TO ON;
|
|
|
|
CREATE SCHEMA citus_local_tables_ent;
|
|
SET search_path TO citus_local_tables_ent;
|
|
|
|
-- ensure that coordinator is added to pg_dist_node
|
|
SET client_min_messages to ERROR;
|
|
SELECT 1 FROM master_add_node('localhost', :master_port, groupId => 0);
|
|
RESET client_min_messages;
|
|
|
|
CREATE TABLE citus_local_table (a int, b int);
|
|
SELECT citus_add_local_table_to_metadata('citus_local_table');
|
|
|
|
-- isolate_tenant_to_new_shard is not supported
|
|
SELECT isolate_tenant_to_new_shard('citus_local_table', 100);
|
|
|
|
-- master_copy_shard_placement is not supported
|
|
SELECT master_copy_shard_placement(shardid, 'localhost', :master_port, 'localhost', :worker_1_port, false)
|
|
FROM (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='citus_local_table'::regclass) as shardid;
|
|
|
|
-- master_move_shard_placement is not supported
|
|
SELECT master_move_shard_placement(shardid, 'localhost', :master_port, 'localhost', :worker_1_port)
|
|
FROM (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='citus_local_table'::regclass) as shardid;
|
|
|
|
-- replicate_table_shards is not suported
|
|
SELECT replicate_table_shards('citus_local_table'::regclass, 2);
|
|
|
|
-- rebalance_table_shards is not supported
|
|
SELECT rebalance_table_shards('citus_local_table');
|
|
|
|
-- get_rebalance_table_shards_plan is not supported
|
|
SELECT get_rebalance_table_shards_plan('citus_local_table');
|
|
|
|
-- test a policy defined after creating a citus local table
|
|
|
|
-- create another user for policy test
|
|
CREATE USER user_can_select_a_1;
|
|
ALTER ROLE user_can_select_a_1 SET search_path TO citus_local_tables_ent;
|
|
GRANT USAGE ON SCHEMA citus_local_tables_ent TO user_can_select_a_1;
|
|
|
|
INSERT INTO citus_local_table VALUES (1,1);
|
|
INSERT INTO citus_local_table VALUES (2,2);
|
|
|
|
-- grant access
|
|
GRANT SELECT ON TABLE citus_local_table TO user_can_select_a_1;
|
|
|
|
-- enable row level security
|
|
ALTER TABLE citus_local_table ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- switch user, it should not be able to see any rows since row level security is enabled
|
|
SET ROLE user_can_select_a_1;
|
|
SELECT * FROM citus_local_table ORDER BY 1, 2;
|
|
RESET ROLE;
|
|
|
|
-- create policy for user to read access for rows with a=1
|
|
CREATE POLICY user_mod ON citus_local_table
|
|
FOR SELECT
|
|
TO user_can_select_a_1
|
|
USING (current_user = 'user_can_select_a_1' and a=1);
|
|
|
|
-- switch user, it should be able to see rows with a=1
|
|
SET ROLE user_can_select_a_1;
|
|
SELECT * FROM citus_local_table ORDER BY 1, 2;
|
|
|
|
-- reset role
|
|
RESET ROLE;
|
|
|
|
-- cleanup at exit
|
|
DROP SCHEMA citus_local_tables_ent CASCADE;
|