From 04511cc5e0bc3815ec8bcd010ad611c518ff061f Mon Sep 17 00:00:00 2001 From: Burak Velioglu Date: Sun, 16 Jan 2022 16:39:49 +0300 Subject: [PATCH] Adress reviews --- .../distributed/metadata/metadata_sync.c | 6 +++--- .../distributed/metadata/node_metadata.c | 20 +++++++++++++------ src/include/distributed/metadata_sync.h | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index 478c9c267..bf64d5218 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -158,18 +158,18 @@ start_metadata_sync_to_node(PG_FUNCTION_ARGS) char *nodeNameString = text_to_cstring(nodeName); - StartMetadataSyncToNode(nodeNameString, nodePort); + SyncNodeMetadataToNode(nodeNameString, nodePort); PG_RETURN_VOID(); } /* - * StartMetadataSyncToNode is the internal API for + * SyncNodeMetadataToNode is the internal API for * start_metadata_sync_to_node(). */ void -StartMetadataSyncToNode(const char *nodeNameString, int32 nodePort) +SyncNodeMetadataToNode(const char *nodeNameString, int32 nodePort) { char *escapedNodeName = quote_literal_cstr(nodeNameString); diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index 93a4f2fad..bc9f06aa6 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -651,9 +651,12 @@ SetUpMultipleDistributedTableIntegrations(WorkerNode *workerNode) multipleTableIntegrationCommandList); multipleTableIntegrationCommandList = lappend(multipleTableIntegrationCommandList, ENABLE_DDL_PROPAGATION); + + /* send commands to new workers, the current user should be a superuser */ + Assert(superuser()); SendMetadataCommandListToWorkerInCoordinatedTransaction(workerNode->workerName, workerNode->workerPort, - CitusExtensionOwnerName(), + CurrentUserName(), multipleTableIntegrationCommandList); } @@ -720,10 +723,11 @@ SetUpObjectMetadata(WorkerNode *workerNode) metadataSnapshotCommandList = lappend(metadataSnapshotCommandList, ENABLE_DDL_PROPAGATION); - char *currentUser = CurrentUserName(); + /* send commands to new workers, the current user should be a superuser */ + Assert(superuser()); SendMetadataCommandListToWorkerInCoordinatedTransaction(workerNode->workerName, workerNode->workerPort, - currentUser, + CurrentUserName(), metadataSnapshotCommandList); } @@ -828,9 +832,11 @@ UpdatePgDistLocalGroupOnNode(WorkerNode *workerNode) List *localGroupIdUpdateCommandList = list_make1(localGroupIdUpdateCommand); + /* send commands to new workers, the current user should be a superuser */ + Assert(superuser()); SendMetadataCommandListToWorkerInCoordinatedTransaction(workerNode->workerName, workerNode->workerPort, - CitusExtensionOwnerName(), + CurrentUserName(), localGroupIdUpdateCommandList); } @@ -857,9 +863,11 @@ ClearDistributedTablesFromNode(WorkerNode *workerNode) list_make1( ENABLE_DDL_PROPAGATION)); + /* send commands to new workers, the current user should be a superuser */ + Assert(superuser()); SendMetadataCommandListToWorkerInCoordinatedTransaction(workerNode->workerName, workerNode->workerPort, - CitusExtensionOwnerName(), + CurrentUserName(), clearDistributedTablesCommandList); } @@ -1242,7 +1250,7 @@ ActivateNode(char *nodeName, int nodePort) if (syncMetadata) { - StartMetadataSyncToNode(nodeName, nodePort); + SyncNodeMetadataToNode(nodeName, nodePort); if (!NodeIsCoordinator(workerNode)) { diff --git a/src/include/distributed/metadata_sync.h b/src/include/distributed/metadata_sync.h index 60c7d966e..fdcb08099 100644 --- a/src/include/distributed/metadata_sync.h +++ b/src/include/distributed/metadata_sync.h @@ -28,7 +28,7 @@ typedef enum } MetadataSyncResult; /* Functions declarations for metadata syncing */ -extern void StartMetadataSyncToNode(const char *nodeNameString, int32 nodePort); +extern void SyncNodeMetadataToNode(const char *nodeNameString, int32 nodePort); extern bool ClusterHasKnownMetadataWorkers(void); extern char * LocalGroupIdUpdateCommand(int32 groupId); extern bool ShouldSyncTableMetadata(Oid relationId);