From 2d009d46d3042dd1500c31877901f190f1d47628 Mon Sep 17 00:00:00 2001 From: gindibay Date: Tue, 24 Oct 2023 10:32:27 +0300 Subject: [PATCH] Fixes worker pg_dist_object removal issue --- src/backend/distributed/commands/database.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/commands/database.c b/src/backend/distributed/commands/database.c index 88aea7abb..94de7f508 100644 --- a/src/backend/distributed/commands/database.c +++ b/src/backend/distributed/commands/database.c @@ -365,6 +365,20 @@ GetUnmarkDatabaseDistributedSql(char *dbName) } +static void +UnmarkObjectDistributedForDropDb(const ObjectAddress *distAddress, char *dbName) +{ + UnmarkObjectDistributed(distAddress); + + if (EnableMetadataSync) + { + char *workerPgDistObjectUpdateCommand = + GetUnmarkDatabaseDistributedSql(dbName); + SendCommandToWorkersWithMetadata(workerPgDistObjectUpdateCommand); + } +} + + List * PreprocessDropDatabaseStmt(Node *node, const char *queryString, ProcessUtilityContext processUtilityContext) @@ -394,7 +408,7 @@ PreprocessDropDatabaseStmt(Node *node, const char *queryString, return NIL; } - UnmarkObjectDistributed(&dbAddress); + UnmarkObjectDistributedForDropDb(&dbAddress, stmt->dbname); char *unmarkDatabaseDistributedSql = GetUnmarkDatabaseDistributedSql(stmt->dbname); char *dropDatabaseCommand = DeparseTreeNode(node);