mirror of https://github.com/citusdata/citus.git
62 lines
1.8 KiB
SQL
62 lines
1.8 KiB
SQL
--
|
|
-- SHARD_MOVE_DEFERRED_DELETE
|
|
--
|
|
|
|
SET citus.next_shard_id TO 20000000;
|
|
|
|
SET citus.shard_count TO 6;
|
|
SET citus.shard_replication_factor TO 1;
|
|
SET citus.defer_drop_after_shard_move TO on;
|
|
|
|
CREATE SCHEMA shard_move_deferred_delete;
|
|
SET search_path TO shard_move_deferred_delete;
|
|
|
|
CREATE TABLE t1 ( id int PRIMARY KEY);
|
|
SELECT create_distributed_table('t1', 'id');
|
|
|
|
-- by counting how ofter we see the specific shard on all workers we can verify is the shard is there
|
|
SELECT run_command_on_workers($cmd$
|
|
SELECT count(*) FROM pg_class WHERE relname = 't1_20000000';
|
|
$cmd$);
|
|
|
|
-- move shard
|
|
SELECT master_move_shard_placement(20000000, 'localhost', :worker_1_port, 'localhost', :worker_2_port);
|
|
|
|
-- we expect the shard to be on both workers now
|
|
SELECT run_command_on_workers($cmd$
|
|
SELECT count(*) FROM pg_class WHERE relname = 't1_20000000';
|
|
$cmd$);
|
|
|
|
-- execute delayed removal
|
|
SELECT public.master_defer_delete_shards();
|
|
|
|
-- we expect the shard to be on only the second worker
|
|
SELECT run_command_on_workers($cmd$
|
|
SELECT count(*) FROM pg_class WHERE relname = 't1_20000000';
|
|
$cmd$);
|
|
|
|
SELECT master_move_shard_placement(20000000, 'localhost', :worker_2_port, 'localhost', :worker_1_port);
|
|
|
|
-- we expect the shard to be on both workers now
|
|
SELECT run_command_on_workers($cmd$
|
|
SELECT count(*) FROM pg_class WHERE relname = 't1_20000000';
|
|
$cmd$);
|
|
|
|
-- enable auto delete
|
|
ALTER SYSTEM SET citus.defer_shard_delete_interval TO 10;
|
|
SELECT pg_reload_conf();
|
|
|
|
-- Sleep 1 second to give Valgrind enough time to clear transactions
|
|
SELECT pg_sleep(1);
|
|
|
|
-- we expect the shard to be on only the first worker
|
|
SELECT run_command_on_workers($cmd$
|
|
SELECT count(*) FROM pg_class WHERE relname = 't1_20000000';
|
|
$cmd$);
|
|
|
|
-- reset test suite
|
|
ALTER SYSTEM SET citus.defer_shard_delete_interval TO -1;
|
|
SELECT pg_reload_conf();
|
|
|
|
DROP SCHEMA shard_move_deferred_delete CASCADE;
|