Commit 50cf1c80 authored by Alvaro Herrera's avatar Alvaro Herrera

Record dependencies on owners for logical replication objects

This was forgotten in 665d1fad 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.
parent a600ee9e
......@@ -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. */
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment