From 3f72a6c1d23c4160e369d8fa1fa92e2b69978eae Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Mon, 28 Nov 2022 09:50:22 +0100 Subject: [PATCH] Second commit to change APIs --- src/backend/distributed/commands/dependencies.c | 15 +++++++-------- src/backend/distributed/metadata/node_metadata.c | 6 ++++-- src/include/distributed/metadata_utility.h | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/backend/distributed/commands/dependencies.c b/src/backend/distributed/commands/dependencies.c index 87491a4f5..d64b9e127 100644 --- a/src/backend/distributed/commands/dependencies.c +++ b/src/backend/distributed/commands/dependencies.c @@ -531,11 +531,12 @@ GetAllDependencyCreateDDLCommands(const List *dependencies) * previously marked objects to a worker node. The function also sets * clusterHasDistributedFunction if there are any distributed functions. */ -List * -ReplicateAllObjectsToNodeCommandList(const char *nodeName, int nodePort) +void +ReplicateAllObjectsToNodeCommandList(const char *nodeName, int nodePort, + List **ddlCommands) { /* since we are executing ddl commands disable propagation first, primarily for mx */ - List *ddlCommands = list_make1(DISABLE_DDL_PROPAGATION); + *ddlCommands = list_make1(DISABLE_DDL_PROPAGATION); /* * collect all dependencies in creation order and get their ddl commands @@ -578,13 +579,11 @@ ReplicateAllObjectsToNodeCommandList(const char *nodeName, int nodePort) continue; } - ddlCommands = list_concat(ddlCommands, - GetDependencyCreateDDLCommands(dependency)); + *ddlCommands = list_concat(*ddlCommands, + GetDependencyCreateDDLCommands(dependency)); } - ddlCommands = lappend(ddlCommands, ENABLE_DDL_PROPAGATION); - - return ddlCommands; + *ddlCommands = lappend(*ddlCommands, ENABLE_DDL_PROPAGATION); } diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index 2775bb690..d22bbc23a 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -827,8 +827,10 @@ SyncDistributedObjectsCommandList(WorkerNode *workerNode, List **commandList) /* * Replicate all objects of the pg_dist_object to the remote node. */ - *commandList = list_concat(*commandList, ReplicateAllObjectsToNodeCommandList( - workerNode->workerName, workerNode->workerPort)); + List *replicateAllObjectsToNodeCommandList = NIL; + ReplicateAllObjectsToNodeCommandList(workerNode->workerName, workerNode->workerPort, + &replicateAllObjectsToNodeCommandList); + *commandList = list_concat(*commandList, replicateAllObjectsToNodeCommandList); /* * After creating each table, handle the inter table relationship between diff --git a/src/include/distributed/metadata_utility.h b/src/include/distributed/metadata_utility.h index 81d95f868..c3b42268b 100644 --- a/src/include/distributed/metadata_utility.h +++ b/src/include/distributed/metadata_utility.h @@ -343,7 +343,8 @@ extern List * GetAllDependencyCreateDDLCommands(const List *dependencies); extern bool ShouldPropagate(void); extern bool ShouldPropagateCreateInCoordinatedTransction(void); extern bool ShouldPropagateAnyObject(List *addresses); -extern List * ReplicateAllObjectsToNodeCommandList(const char *nodeName, int nodePort); +extern void ReplicateAllObjectsToNodeCommandList(const char *nodeName, int nodePort, + List **ddlCommands); /* Remaining metadata utility functions */ extern Oid TableOwnerOid(Oid relationId);