mirror of https://github.com/citusdata/citus.git
Move cleanup record test to upgrade schedule (#6794)
DESCRIPTION: Move cleanup record test to upgrade schedulepull/6820/head^2
parent
fc479bfa49
commit
83a2cfbfcf
|
@ -1,6 +1,7 @@
|
||||||
# this schedule is to be run only on coordinators
|
# this schedule is to be run only on coordinators
|
||||||
|
|
||||||
test: upgrade_citus_finish_citus_upgrade
|
test: upgrade_citus_finish_citus_upgrade
|
||||||
|
test: upgrade_pg_dist_cleanup_after
|
||||||
test: upgrade_basic_after
|
test: upgrade_basic_after
|
||||||
test: upgrade_partition_constraints_after
|
test: upgrade_partition_constraints_after
|
||||||
test: upgrade_pg_dist_object_test_after
|
test: upgrade_pg_dist_object_test_after
|
||||||
|
|
|
@ -4,4 +4,5 @@ test: upgrade_basic_before
|
||||||
test: upgrade_partition_constraints_before
|
test: upgrade_partition_constraints_before
|
||||||
test: upgrade_pg_dist_object_test_before
|
test: upgrade_pg_dist_object_test_before
|
||||||
test: upgrade_columnar_metapage_before
|
test: upgrade_columnar_metapage_before
|
||||||
|
test: upgrade_pg_dist_cleanup_before
|
||||||
test: upgrade_post_11_before
|
test: upgrade_post_11_before
|
||||||
|
|
|
@ -1197,44 +1197,7 @@ SELECT * FROM multi_extension.print_extension_changes();
|
||||||
|
|
||||||
-- Test downgrade to 11.1-1 from 11.2-1
|
-- Test downgrade to 11.1-1 from 11.2-1
|
||||||
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
||||||
-- create a table with orphaned shards to see if orphaned shards will be dropped
|
|
||||||
-- and cleanup records will be created for them
|
|
||||||
SET citus.shard_replication_factor to 1;
|
|
||||||
CREATE TABLE table_with_orphaned_shards (a int);
|
|
||||||
SELECT create_distributed_table('table_with_orphaned_shards', 'a');
|
|
||||||
create_distributed_table
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
-- show there are 4 placements
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
placementid | shardid | shardstate | shardlength | groupid
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
1 | 102008 | 1 | 0 | 0
|
|
||||||
2 | 102009 | 1 | 0 | 0
|
|
||||||
3 | 102010 | 1 | 0 | 0
|
|
||||||
4 | 102011 | 1 | 0 | 0
|
|
||||||
(4 rows)
|
|
||||||
|
|
||||||
-- mark two of them as orphaned
|
|
||||||
UPDATE pg_dist_placement SET shardstate = 4 WHERE shardid % 2 = 1;
|
|
||||||
ALTER EXTENSION citus UPDATE TO '11.1-1';
|
ALTER EXTENSION citus UPDATE TO '11.1-1';
|
||||||
-- show placements and cleanup records
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
placementid | shardid | shardstate | shardlength | groupid
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
1 | 102008 | 1 | 0 | 0
|
|
||||||
2 | 102009 | 4 | 0 | 0
|
|
||||||
3 | 102010 | 1 | 0 | 0
|
|
||||||
4 | 102011 | 4 | 0 | 0
|
|
||||||
(4 rows)
|
|
||||||
|
|
||||||
SELECT * FROM pg_dist_cleanup;
|
|
||||||
record_id | operation_id | object_type | object_name | node_group_id | policy_type
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
(0 rows)
|
|
||||||
|
|
||||||
-- Should be empty result since upgrade+downgrade should be a no-op
|
-- Should be empty result since upgrade+downgrade should be a no-op
|
||||||
SELECT * FROM multi_extension.print_extension_changes();
|
SELECT * FROM multi_extension.print_extension_changes();
|
||||||
previous_object | current_object
|
previous_object | current_object
|
||||||
|
@ -1243,21 +1206,6 @@ SELECT * FROM multi_extension.print_extension_changes();
|
||||||
|
|
||||||
-- Snapshot of state at 11.2-1
|
-- Snapshot of state at 11.2-1
|
||||||
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
||||||
-- verify that the placements are deleted and cleanup records are created
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
placementid | shardid | shardstate | shardlength | groupid
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
1 | 102008 | 1 | 0 | 0
|
|
||||||
3 | 102010 | 1 | 0 | 0
|
|
||||||
(2 rows)
|
|
||||||
|
|
||||||
SELECT * FROM pg_dist_cleanup;
|
|
||||||
record_id | operation_id | object_type | object_name | node_group_id | policy_type
|
|
||||||
---------------------------------------------------------------------
|
|
||||||
1 | 0 | 1 | table_with_orphaned_shards_102009 | 0 | 0
|
|
||||||
2 | 0 | 1 | table_with_orphaned_shards_102011 | 0 | 0
|
|
||||||
(2 rows)
|
|
||||||
|
|
||||||
ALTER EXTENSION citus_columnar UPDATE TO '11.2-1';
|
ALTER EXTENSION citus_columnar UPDATE TO '11.2-1';
|
||||||
-- Make sure that we defined dependencies from all rel objects (tables,
|
-- Make sure that we defined dependencies from all rel objects (tables,
|
||||||
-- indexes, sequences ..) to columnar table access method ...
|
-- indexes, sequences ..) to columnar table access method ...
|
||||||
|
@ -1295,16 +1243,6 @@ SELECT COUNT(*)=5 FROM columnar_schema_members_pg_depend;
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
DROP TABLE columnar_schema_members, columnar_schema_members_pg_depend;
|
DROP TABLE columnar_schema_members, columnar_schema_members_pg_depend;
|
||||||
-- error out as cleanup records remain
|
|
||||||
ALTER EXTENSION citus UPDATE TO '11.0-4';
|
|
||||||
ERROR: pg_dist_cleanup is introduced in Citus 11.1
|
|
||||||
HINT: To downgrade Citus to an older version, you should first cleanup all the orphaned resources and make sure pg_dist_cleanup is empty, by executing CALL citus_cleanup_orphaned_resources();
|
|
||||||
CONTEXT: PL/pgSQL function inline_code_block line XX at RAISE
|
|
||||||
-- cleanup
|
|
||||||
SET client_min_messages TO ERROR;
|
|
||||||
CALL citus_cleanup_orphaned_resources();
|
|
||||||
DROP TABLE table_with_orphaned_shards;
|
|
||||||
RESET client_min_messages;
|
|
||||||
SELECT * FROM multi_extension.print_extension_changes();
|
SELECT * FROM multi_extension.print_extension_changes();
|
||||||
previous_object | current_object
|
previous_object | current_object
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
|
|
@ -39,16 +39,29 @@ SELECT nextval('pg_dist_colocationid_seq') = MAX(colocationid)+1 FROM pg_dist_co
|
||||||
t
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT nextval('pg_dist_operationid_seq') = MAX(operation_id)+1 FROM pg_dist_cleanup;
|
-- while testing sequences on pg_dist_cleanup, they return null in pg upgrade schedule
|
||||||
?column?
|
-- but return a valid value in citus upgrade schedule
|
||||||
|
-- that's why we accept both NULL and MAX()+1 here
|
||||||
|
SELECT
|
||||||
|
CASE WHEN MAX(operation_id) IS NULL
|
||||||
|
THEN true
|
||||||
|
ELSE nextval('pg_dist_operationid_seq') = MAX(operation_id)+1
|
||||||
|
END AS check_operationid
|
||||||
|
FROM pg_dist_cleanup;
|
||||||
|
check_operationid
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT nextval('pg_dist_cleanup_recordid_seq') = MAX(record_id)+1 FROM pg_dist_cleanup;
|
SELECT
|
||||||
?column?
|
CASE WHEN MAX(record_id) IS NULL
|
||||||
|
THEN true
|
||||||
|
ELSE nextval('pg_dist_cleanup_recordid_seq') = MAX(record_id)+1
|
||||||
|
END AS check_recordid
|
||||||
|
FROM pg_dist_cleanup;
|
||||||
|
check_recordid
|
||||||
---------------------------------------------------------------------
|
---------------------------------------------------------------------
|
||||||
|
t
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT nextval('pg_dist_background_job_job_id_seq') > COALESCE(MAX(job_id), 0) FROM pg_dist_background_job;
|
SELECT nextval('pg_dist_background_job_job_id_seq') > COALESCE(MAX(job_id), 0) FROM pg_dist_background_job;
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
upgrade_test_old_citus_version_gte_11_2
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
|
@ -0,0 +1,30 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
upgrade_test_old_citus_version_gte_11_2
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
||||||
|
\endif
|
||||||
|
-- verify that the orphaned placement is deleted and cleanup record is created
|
||||||
|
SELECT COUNT(*) FROM pg_dist_placement WHERE shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='table_with_orphaned_shards'::regclass);
|
||||||
|
count
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
32
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT * FROM pg_dist_cleanup;
|
||||||
|
record_id | operation_id | object_type | object_name | node_group_id | policy_type
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
1 | 0 | 1 | table_with_orphaned_shards_980001 | 1 | 0
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CALL citus_cleanup_orphaned_resources();
|
||||||
|
NOTICE: cleaned up 1 orphaned resources
|
||||||
|
DROP TABLE table_with_orphaned_shards;
|
|
@ -0,0 +1,13 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
upgrade_test_old_citus_version_gte_11_2
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
t
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
|
@ -0,0 +1,36 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
upgrade_test_old_citus_version_gte_11_2
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
||||||
|
\endif
|
||||||
|
-- create a table with orphaned shards to see if orphaned shards will be dropped
|
||||||
|
-- and cleanup records will be created for them
|
||||||
|
SET citus.next_shard_id TO 980000;
|
||||||
|
CREATE TABLE table_with_orphaned_shards (a int);
|
||||||
|
SELECT create_distributed_table('table_with_orphaned_shards', 'a');
|
||||||
|
create_distributed_table
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- show all 32 placements are active
|
||||||
|
SELECT COUNT(*) FROM pg_dist_placement WHERE shardstate = 1 AND shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='table_with_orphaned_shards'::regclass);
|
||||||
|
count
|
||||||
|
---------------------------------------------------------------------
|
||||||
|
32
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- create an orphaned placement based on an existing one
|
||||||
|
INSERT INTO pg_dist_placement(placementid, shardid, shardstate, shardlength, groupid)
|
||||||
|
SELECT nextval('pg_dist_placement_placementid_seq'::regclass), shardid, 4, shardlength, 3-groupid
|
||||||
|
FROM pg_dist_placement
|
||||||
|
WHERE shardid = 980001;
|
|
@ -529,33 +529,13 @@ SELECT * FROM multi_extension.print_extension_changes();
|
||||||
|
|
||||||
-- Test downgrade to 11.1-1 from 11.2-1
|
-- Test downgrade to 11.1-1 from 11.2-1
|
||||||
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
||||||
|
|
||||||
-- create a table with orphaned shards to see if orphaned shards will be dropped
|
|
||||||
-- and cleanup records will be created for them
|
|
||||||
SET citus.shard_replication_factor to 1;
|
|
||||||
CREATE TABLE table_with_orphaned_shards (a int);
|
|
||||||
SELECT create_distributed_table('table_with_orphaned_shards', 'a');
|
|
||||||
-- show there are 4 placements
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
-- mark two of them as orphaned
|
|
||||||
UPDATE pg_dist_placement SET shardstate = 4 WHERE shardid % 2 = 1;
|
|
||||||
|
|
||||||
ALTER EXTENSION citus UPDATE TO '11.1-1';
|
ALTER EXTENSION citus UPDATE TO '11.1-1';
|
||||||
|
|
||||||
-- show placements and cleanup records
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
SELECT * FROM pg_dist_cleanup;
|
|
||||||
|
|
||||||
-- Should be empty result since upgrade+downgrade should be a no-op
|
-- Should be empty result since upgrade+downgrade should be a no-op
|
||||||
SELECT * FROM multi_extension.print_extension_changes();
|
SELECT * FROM multi_extension.print_extension_changes();
|
||||||
|
|
||||||
-- Snapshot of state at 11.2-1
|
-- Snapshot of state at 11.2-1
|
||||||
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
ALTER EXTENSION citus UPDATE TO '11.2-1';
|
||||||
|
|
||||||
-- verify that the placements are deleted and cleanup records are created
|
|
||||||
SELECT * FROM pg_dist_placement ORDER BY shardid;
|
|
||||||
SELECT * FROM pg_dist_cleanup;
|
|
||||||
|
|
||||||
ALTER EXTENSION citus_columnar UPDATE TO '11.2-1';
|
ALTER EXTENSION citus_columnar UPDATE TO '11.2-1';
|
||||||
|
|
||||||
-- Make sure that we defined dependencies from all rel objects (tables,
|
-- Make sure that we defined dependencies from all rel objects (tables,
|
||||||
|
@ -589,15 +569,6 @@ SELECT COUNT(*)=5 FROM columnar_schema_members_pg_depend;
|
||||||
|
|
||||||
DROP TABLE columnar_schema_members, columnar_schema_members_pg_depend;
|
DROP TABLE columnar_schema_members, columnar_schema_members_pg_depend;
|
||||||
|
|
||||||
-- error out as cleanup records remain
|
|
||||||
ALTER EXTENSION citus UPDATE TO '11.0-4';
|
|
||||||
|
|
||||||
-- cleanup
|
|
||||||
SET client_min_messages TO ERROR;
|
|
||||||
CALL citus_cleanup_orphaned_resources();
|
|
||||||
DROP TABLE table_with_orphaned_shards;
|
|
||||||
RESET client_min_messages;
|
|
||||||
|
|
||||||
SELECT * FROM multi_extension.print_extension_changes();
|
SELECT * FROM multi_extension.print_extension_changes();
|
||||||
|
|
||||||
-- Test downgrade to 11.2-1 from 11.3-1
|
-- Test downgrade to 11.2-1 from 11.3-1
|
||||||
|
|
|
@ -8,8 +8,21 @@ SELECT nextval('pg_dist_placement_placementid_seq') = MAX(placementid)+1 FROM pg
|
||||||
SELECT nextval('pg_dist_groupid_seq') = MAX(groupid)+1 FROM pg_dist_node;
|
SELECT nextval('pg_dist_groupid_seq') = MAX(groupid)+1 FROM pg_dist_node;
|
||||||
SELECT nextval('pg_dist_node_nodeid_seq') = MAX(nodeid)+1 FROM pg_dist_node;
|
SELECT nextval('pg_dist_node_nodeid_seq') = MAX(nodeid)+1 FROM pg_dist_node;
|
||||||
SELECT nextval('pg_dist_colocationid_seq') = MAX(colocationid)+1 FROM pg_dist_colocation;
|
SELECT nextval('pg_dist_colocationid_seq') = MAX(colocationid)+1 FROM pg_dist_colocation;
|
||||||
SELECT nextval('pg_dist_operationid_seq') = MAX(operation_id)+1 FROM pg_dist_cleanup;
|
-- while testing sequences on pg_dist_cleanup, they return null in pg upgrade schedule
|
||||||
SELECT nextval('pg_dist_cleanup_recordid_seq') = MAX(record_id)+1 FROM pg_dist_cleanup;
|
-- but return a valid value in citus upgrade schedule
|
||||||
|
-- that's why we accept both NULL and MAX()+1 here
|
||||||
|
SELECT
|
||||||
|
CASE WHEN MAX(operation_id) IS NULL
|
||||||
|
THEN true
|
||||||
|
ELSE nextval('pg_dist_operationid_seq') = MAX(operation_id)+1
|
||||||
|
END AS check_operationid
|
||||||
|
FROM pg_dist_cleanup;
|
||||||
|
SELECT
|
||||||
|
CASE WHEN MAX(record_id) IS NULL
|
||||||
|
THEN true
|
||||||
|
ELSE nextval('pg_dist_cleanup_recordid_seq') = MAX(record_id)+1
|
||||||
|
END AS check_recordid
|
||||||
|
FROM pg_dist_cleanup;
|
||||||
SELECT nextval('pg_dist_background_job_job_id_seq') > COALESCE(MAX(job_id), 0) FROM pg_dist_background_job;
|
SELECT nextval('pg_dist_background_job_job_id_seq') > COALESCE(MAX(job_id), 0) FROM pg_dist_background_job;
|
||||||
SELECT nextval('pg_dist_background_task_task_id_seq') > COALESCE(MAX(task_id), 0) FROM pg_dist_background_task;
|
SELECT nextval('pg_dist_background_task_task_id_seq') > COALESCE(MAX(task_id), 0) FROM pg_dist_background_task;
|
||||||
SELECT last_value > 0 FROM pg_dist_clock_logical_seq;
|
SELECT last_value > 0 FROM pg_dist_clock_logical_seq;
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
||||||
|
\endif
|
||||||
|
|
||||||
|
-- verify that the orphaned placement is deleted and cleanup record is created
|
||||||
|
SELECT COUNT(*) FROM pg_dist_placement WHERE shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='table_with_orphaned_shards'::regclass);
|
||||||
|
SELECT * FROM pg_dist_cleanup;
|
||||||
|
CALL citus_cleanup_orphaned_resources();
|
||||||
|
DROP TABLE table_with_orphaned_shards;
|
|
@ -0,0 +1,22 @@
|
||||||
|
\set upgrade_test_old_citus_version `echo "$CITUS_OLD_VERSION"`
|
||||||
|
SELECT substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int > 11 OR
|
||||||
|
(substring(:'upgrade_test_old_citus_version', 'v(\d+)\.\d+\.\d+')::int = 11 AND
|
||||||
|
substring(:'upgrade_test_old_citus_version', 'v\d+\.(\d+)\.\d+')::int >= 2)
|
||||||
|
AS upgrade_test_old_citus_version_gte_11_2;
|
||||||
|
\gset
|
||||||
|
\if :upgrade_test_old_citus_version_gte_11_2
|
||||||
|
\q
|
||||||
|
\endif
|
||||||
|
|
||||||
|
-- create a table with orphaned shards to see if orphaned shards will be dropped
|
||||||
|
-- and cleanup records will be created for them
|
||||||
|
SET citus.next_shard_id TO 980000;
|
||||||
|
CREATE TABLE table_with_orphaned_shards (a int);
|
||||||
|
SELECT create_distributed_table('table_with_orphaned_shards', 'a');
|
||||||
|
-- show all 32 placements are active
|
||||||
|
SELECT COUNT(*) FROM pg_dist_placement WHERE shardstate = 1 AND shardid IN (SELECT shardid FROM pg_dist_shard WHERE logicalrelid='table_with_orphaned_shards'::regclass);
|
||||||
|
-- create an orphaned placement based on an existing one
|
||||||
|
INSERT INTO pg_dist_placement(placementid, shardid, shardstate, shardlength, groupid)
|
||||||
|
SELECT nextval('pg_dist_placement_placementid_seq'::regclass), shardid, 4, shardlength, 3-groupid
|
||||||
|
FROM pg_dist_placement
|
||||||
|
WHERE shardid = 980001;
|
Loading…
Reference in New Issue