From 7c1a41d45ca819251a5388da97bb78e06846854a Mon Sep 17 00:00:00 2001 From: Burak Velioglu Date: Thu, 27 Jan 2022 15:16:00 +0300 Subject: [PATCH] Fix multi-1 tests --- .../distributed/metadata/node_metadata.c | 3 +-- .../distributed/utils/reference_table_utils.c | 9 ++++++--- .../distributed/reference_table_utils.h | 2 +- .../expected/master_copy_shard_placement.out | 2 ++ .../multi_replicate_reference_table.out | 18 +++++++++++++++--- src/test/regress/input/multi_copy.source | 2 -- src/test/regress/output/multi_copy.source | 2 -- .../sql/master_copy_shard_placement.sql | 2 ++ 8 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index 0b09bc86f..82b7e2840 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -1136,8 +1136,7 @@ ActivateNode(char *nodeName, int nodePort) */ if (ReplicateReferenceTablesOnActivate) { - ReplicateAllReferenceTablesToNode(workerNode->workerName, - workerNode->workerPort); + ReplicateAllReferenceTablesToNode(workerNode); } /* diff --git a/src/backend/distributed/utils/reference_table_utils.c b/src/backend/distributed/utils/reference_table_utils.c index 50ee92d0e..50a2338d1 100644 --- a/src/backend/distributed/utils/reference_table_utils.c +++ b/src/backend/distributed/utils/reference_table_utils.c @@ -553,7 +553,7 @@ ReferenceTableReplicationFactor(void) * reference table to prevent unnecessary data transfer. */ void -ReplicateAllReferenceTablesToNode(char *nodeName, int nodePort) +ReplicateAllReferenceTablesToNode(WorkerNode *workerNode) { List *referenceTableList = CitusTableTypeIdList(REFERENCE_TABLE); @@ -589,7 +589,9 @@ ReplicateAllReferenceTablesToNode(char *nodeName, int nodePort) LockShardDistributionMetadata(shardId, ExclusiveLock); - ReplicateReferenceTableShardToNode(shardInterval, nodeName, nodePort); + ReplicateReferenceTableShardToNode(shardInterval, + workerNode->workerName, + workerNode->workerPort); } /* create foreign constraints between reference tables */ @@ -599,7 +601,8 @@ ReplicateAllReferenceTablesToNode(char *nodeName, int nodePort) /* send commands to new workers, the current user should be a superuser */ Assert(superuser()); - SendMetadataCommandListToWorkerInCoordinatedTransaction(nodeName, nodePort, + SendMetadataCommandListToWorkerInCoordinatedTransaction(workerNode->workerName, + workerNode->workerPort, CurrentUserName(), commandList); } diff --git a/src/include/distributed/reference_table_utils.h b/src/include/distributed/reference_table_utils.h index 323f8e355..e8969eec0 100644 --- a/src/include/distributed/reference_table_utils.h +++ b/src/include/distributed/reference_table_utils.h @@ -25,6 +25,6 @@ extern void DeleteAllReplicatedTablePlacementsFromNodeGroup(int32 groupId, bool localOnly); extern int CompareOids(const void *leftElement, const void *rightElement); extern int ReferenceTableReplicationFactor(void); -extern void ReplicateAllReferenceTablesToNode(char *nodeName, int nodePort); +extern void ReplicateAllReferenceTablesToNode(WorkerNode *workerNode); #endif /* REFERENCE_TABLE_UTILS_H_ */ diff --git a/src/test/regress/expected/master_copy_shard_placement.out b/src/test/regress/expected/master_copy_shard_placement.out index 09fad3aa7..2e2f23e11 100644 --- a/src/test/regress/expected/master_copy_shard_placement.out +++ b/src/test/regress/expected/master_copy_shard_placement.out @@ -110,6 +110,8 @@ SELECT count(*) FROM history; -- test we can replicate MX tables SET citus.shard_replication_factor TO 1; -- metadata sync will succeed even if we have rep > 1 tables +INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'public.articles'::regclass::oid, 0); +INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'public.articles_single_shard'::regclass::oid, 0); SELECT start_metadata_sync_to_node('localhost', :worker_1_port); start_metadata_sync_to_node --------------------------------------------------------------------- diff --git a/src/test/regress/expected/multi_replicate_reference_table.out b/src/test/regress/expected/multi_replicate_reference_table.out index e77ce2df1..aa5d10149 100644 --- a/src/test/regress/expected/multi_replicate_reference_table.out +++ b/src/test/regress/expected/multi_replicate_reference_table.out @@ -464,7 +464,11 @@ SELECT create_reference_table('replicate_reference_table_insert'); BEGIN; INSERT INTO replicate_reference_table_insert VALUES(1); SELECT 1 FROM master_add_node('localhost', :worker_2_port); -ERROR: cannot open new connections after the first modification command within a transaction + ?column? +--------------------------------------------------------------------- + 1 +(1 row) + ROLLBACK; DROP TABLE replicate_reference_table_insert; -- test COPY then adding a new node in a transaction @@ -479,7 +483,11 @@ SET citus.enable_local_execution = 'off'; BEGIN; COPY replicate_reference_table_copy FROM STDIN; SELECT 1 FROM master_add_node('localhost', :worker_2_port); -ERROR: cannot open new connections after the first modification command within a transaction + ?column? +--------------------------------------------------------------------- + 1 +(1 row) + ROLLBACK; RESET citus.enable_local_execution; DROP TABLE replicate_reference_table_copy; @@ -494,7 +502,11 @@ SELECT create_reference_table('replicate_reference_table_ddl'); BEGIN; ALTER TABLE replicate_reference_table_ddl ADD column2 int; SELECT 1 FROM master_add_node('localhost', :worker_2_port); -ERROR: cannot open new connections after the first modification command within a transaction + ?column? +--------------------------------------------------------------------- + 1 +(1 row) + ROLLBACK; DROP TABLE replicate_reference_table_ddl; -- test DROP table after adding new node in a transaction diff --git a/src/test/regress/input/multi_copy.source b/src/test/regress/input/multi_copy.source index debb8cf11..79075482a 100644 --- a/src/test/regress/input/multi_copy.source +++ b/src/test/regress/input/multi_copy.source @@ -506,8 +506,6 @@ INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::re INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'packed_numbers_hash'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'super_packed_numbers_hash'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'table_to_distribute'::regclass::oid, 0); -INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'articles'::regclass::oid, 0); -INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'articles_single_shard'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'second_dustbunnies'::regclass::oid, 0); SELECT 1 FROM master_activate_node('localhost', :worker_1_port); diff --git a/src/test/regress/output/multi_copy.source b/src/test/regress/output/multi_copy.source index cf40d4128..0788cf3c9 100644 --- a/src/test/regress/output/multi_copy.source +++ b/src/test/regress/output/multi_copy.source @@ -633,8 +633,6 @@ INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::re INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'packed_numbers_hash'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'super_packed_numbers_hash'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'table_to_distribute'::regclass::oid, 0); -INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'articles'::regclass::oid, 0); -INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'articles_single_shard'::regclass::oid, 0); INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'second_dustbunnies'::regclass::oid, 0); SELECT 1 FROM master_activate_node('localhost', :worker_1_port); ?column? diff --git a/src/test/regress/sql/master_copy_shard_placement.sql b/src/test/regress/sql/master_copy_shard_placement.sql index f4b70fdb2..6448cb63b 100644 --- a/src/test/regress/sql/master_copy_shard_placement.sql +++ b/src/test/regress/sql/master_copy_shard_placement.sql @@ -93,6 +93,8 @@ SELECT count(*) FROM history; SET citus.shard_replication_factor TO 1; -- metadata sync will succeed even if we have rep > 1 tables +INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'public.articles'::regclass::oid, 0); +INSERT INTO citus.pg_dist_object(classid, objid, objsubid) values('pg_class'::regclass::oid, 'public.articles_single_shard'::regclass::oid, 0); SELECT start_metadata_sync_to_node('localhost', :worker_1_port); CREATE TABLE mx_table(a int);