diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index cffad0d8a..db22514fe 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -861,10 +861,8 @@ SyncDistributedObjectsToNodeList(List *workerNodeList) /* send commands to new workers, the current user should be a superuser */ Assert(superuser()); - SendMetadataCommandListToWorkerListInCoordinatedTransaction( - workerNodesToSync, - CurrentUserName(), - commandList); + SendBareCommandListToWorkers(workerNodesToSync, + commandList); } diff --git a/src/backend/distributed/transaction/worker_transaction.c b/src/backend/distributed/transaction/worker_transaction.c index 486dd7280..d4ea6a1c9 100644 --- a/src/backend/distributed/transaction/worker_transaction.c +++ b/src/backend/distributed/transaction/worker_transaction.c @@ -182,10 +182,16 @@ SendBareCommandListToMetadataWorkers(List *commandList) { TargetWorkerSet targetWorkerSet = NON_COORDINATOR_METADATA_NODES; List *workerNodeList = TargetWorkerSetNodeList(targetWorkerSet, RowShareLock); - char *nodeUser = CurrentUserName(); ErrorIfAnyMetadataNodeOutOfSync(workerNodeList); + SendBareCommandListToWorkers(workerNodeList, commandList); +} + + +void +SendBareCommandListToWorkers(List *workerNodeList, List *commandList) +{ /* run commands serially */ WorkerNode *workerNode = NULL; foreach_ptr(workerNode, workerNodeList) @@ -197,7 +203,8 @@ SendBareCommandListToMetadataWorkers(List *commandList) MultiConnection *workerConnection = GetNodeUserDatabaseConnection(connectionFlags, nodeName, nodePort, - nodeUser, NULL); + CurrentUserName(), + NULL); /* iterate over the commands and execute them in the same connection */ const char *commandString = NULL; diff --git a/src/include/distributed/worker_transaction.h b/src/include/distributed/worker_transaction.h index aa137b76b..16842c109 100644 --- a/src/include/distributed/worker_transaction.h +++ b/src/include/distributed/worker_transaction.h @@ -74,6 +74,7 @@ extern bool SendOptionalMetadataCommandListToWorkerInCoordinatedTransaction(cons extern void SendCommandToWorkersWithMetadata(const char *command); extern void SendCommandToWorkersWithMetadataViaSuperUser(const char *command); extern void SendBareCommandListToMetadataWorkers(List *commandList); +extern void SendBareCommandListToWorkers(List *workerNodeList, List *commandList); extern void EnsureNoModificationsHaveBeenDone(void); extern void SendCommandListToWorkerOutsideTransaction(const char *nodeName, int32 nodePort,