From 50cf1c80e6be80cc620749824fe9e3cd7f6c118e Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 20 Jan 2017 16:45:02 -0300 Subject: [PATCH] Record dependencies on owners for logical replication objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was forgotten in 665d1fad99e7b11678b0d5fa24d2898424243cd6 and caused the whole buildfarm to become red for a little while. Author: Petr JelĂ­nek Also fix a typo in a nearby error message. --- src/backend/commands/publicationcmds.c | 2 ++ src/backend/commands/subscriptioncmds.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index 21e523deb0..63dcc10bd3 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -218,6 +218,8 @@ CreatePublication(CreatePublicationStmt *stmt) CatalogUpdateIndexes(rel, tup); heap_freetuple(tup); + recordDependencyOnOwner(PublicationRelationId, puboid, GetUserId()); + ObjectAddressSet(myself, PublicationRelationId, puboid); /* Make the changes visible. */ diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 1448ee3bee..2b6d322559 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -210,6 +210,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt) Oid subid; bool nulls[Natts_pg_subscription]; Datum values[Natts_pg_subscription]; + Oid owner = GetUserId(); HeapTuple tup; bool enabled_given; bool enabled; @@ -263,7 +264,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt) values[Anum_pg_subscription_subdbid - 1] = ObjectIdGetDatum(MyDatabaseId); values[Anum_pg_subscription_subname - 1] = DirectFunctionCall1(namein, CStringGetDatum(stmt->subname)); - values[Anum_pg_subscription_subowner - 1] = ObjectIdGetDatum(GetUserId()); + values[Anum_pg_subscription_subowner - 1] = ObjectIdGetDatum(owner); values[Anum_pg_subscription_subenabled - 1] = BoolGetDatum(enabled); values[Anum_pg_subscription_subconninfo - 1] = CStringGetTextDatum(conninfo); @@ -279,6 +280,8 @@ CreateSubscription(CreateSubscriptionStmt *stmt) CatalogUpdateIndexes(rel, tup); heap_freetuple(tup); + recordDependencyOnOwner(SubscriptionRelationId, subid, owner); + snprintf(originname, sizeof(originname), "pg_%u", subid); replorigin_create(originname); @@ -493,6 +496,9 @@ DropSubscription(DropSubscriptionStmt *stmt) ReleaseSysCache(tup); + /* Clean up dependencies */ + deleteSharedDependencyRecordsFor(SubscriptionRelationId, subid, 0); + /* Protect against launcher restarting the worker. */ LWLockAcquire(LogicalRepLauncherLock, LW_EXCLUSIVE); @@ -530,7 +536,7 @@ DropSubscription(DropSubscriptionStmt *stmt) if (!walrcv_command(wrconn, cmd.data, &err)) ereport(ERROR, - (errmsg("count not drop the replication slot \"%s\" on publisher", + (errmsg("could not drop the replication slot \"%s\" on publisher", slotname), errdetail("The error was: %s", err))); else