From 95572c5adaf437156e1580a82477fe3c1633a189 Mon Sep 17 00:00:00 2001 From: gindibay Date: Thu, 16 Nov 2023 02:58:56 +0300 Subject: [PATCH] Adds EnableCreateDatabasePropagation flag check --- src/backend/distributed/commands/role.c | 1 - .../distributed/metadata/metadata_sync.c | 23 +++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/backend/distributed/commands/role.c b/src/backend/distributed/commands/role.c index 0293d6a7b..3c56e3fd7 100644 --- a/src/backend/distributed/commands/role.c +++ b/src/backend/distributed/commands/role.c @@ -513,7 +513,6 @@ GenerateRoleOptionsList(HeapTuple tuple) List * GenerateCreateOrAlterRoleCommand(Oid roleOid) { - elog(LOG, "GenerateCreateOrAlterRoleCommand execution"); HeapTuple roleTuple = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleOid)); Form_pg_authid role = ((Form_pg_authid) GETSTRUCT(roleTuple)); diff --git a/src/backend/distributed/metadata/metadata_sync.c b/src/backend/distributed/metadata/metadata_sync.c index 82267ac02..77e0edd11 100644 --- a/src/backend/distributed/metadata/metadata_sync.c +++ b/src/backend/distributed/metadata/metadata_sync.c @@ -4771,24 +4771,27 @@ SendNodeWideObjectsSyncCommands(MetadataSyncContext *context) /* * SendDatabaseGrantSyncCommands sends database grants to roles to workers with * transactional or nontransactional mode according to transactionMode inside - * metadataSyncContext. + * metadataSyncContext in case of EnableCreateDatabasePropagation GUC set. * This function is called after SendNodeWideObjectsSyncCommands and SendDependencyCreationCommands * because we need both databases and roles to be created on the worker. + * */ static void SendDatabaseGrantSyncCommands(MetadataSyncContext *context) { - /* propagate node wide objects. It includes only roles for now. */ - List *commandList = GenerateGrantDatabaseCommandList(); + if(EnableCreateDatabasePropagation){ + /* propagate node wide objects. It includes only roles for now. */ + List *commandList = GenerateGrantDatabaseCommandList(); - if (commandList == NIL) - { - return; + if (commandList == NIL) + { + return; + } + + commandList = lcons(DISABLE_DDL_PROPAGATION, commandList); + commandList = lappend(commandList, ENABLE_DDL_PROPAGATION); + SendOrCollectCommandListToActivatedNodes(context, commandList); } - - commandList = lcons(DISABLE_DDL_PROPAGATION, commandList); - commandList = lappend(commandList, ENABLE_DDL_PROPAGATION); - SendOrCollectCommandListToActivatedNodes(context, commandList); }