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) ...@@ -218,6 +218,8 @@ CreatePublication(CreatePublicationStmt *stmt)
CatalogUpdateIndexes(rel, tup); CatalogUpdateIndexes(rel, tup);
heap_freetuple(tup); heap_freetuple(tup);
recordDependencyOnOwner(PublicationRelationId, puboid, GetUserId());
ObjectAddressSet(myself, PublicationRelationId, puboid); ObjectAddressSet(myself, PublicationRelationId, puboid);
/* Make the changes visible. */ /* Make the changes visible. */
......
...@@ -210,6 +210,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt) ...@@ -210,6 +210,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt)
Oid subid; Oid subid;
bool nulls[Natts_pg_subscription]; bool nulls[Natts_pg_subscription];
Datum values[Natts_pg_subscription]; Datum values[Natts_pg_subscription];
Oid owner = GetUserId();
HeapTuple tup; HeapTuple tup;
bool enabled_given; bool enabled_given;
bool enabled; bool enabled;
...@@ -263,7 +264,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt) ...@@ -263,7 +264,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt)
values[Anum_pg_subscription_subdbid - 1] = ObjectIdGetDatum(MyDatabaseId); values[Anum_pg_subscription_subdbid - 1] = ObjectIdGetDatum(MyDatabaseId);
values[Anum_pg_subscription_subname - 1] = values[Anum_pg_subscription_subname - 1] =
DirectFunctionCall1(namein, CStringGetDatum(stmt->subname)); 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_subenabled - 1] = BoolGetDatum(enabled);
values[Anum_pg_subscription_subconninfo - 1] = values[Anum_pg_subscription_subconninfo - 1] =
CStringGetTextDatum(conninfo); CStringGetTextDatum(conninfo);
...@@ -279,6 +280,8 @@ CreateSubscription(CreateSubscriptionStmt *stmt) ...@@ -279,6 +280,8 @@ CreateSubscription(CreateSubscriptionStmt *stmt)
CatalogUpdateIndexes(rel, tup); CatalogUpdateIndexes(rel, tup);
heap_freetuple(tup); heap_freetuple(tup);
recordDependencyOnOwner(SubscriptionRelationId, subid, owner);
snprintf(originname, sizeof(originname), "pg_%u", subid); snprintf(originname, sizeof(originname), "pg_%u", subid);
replorigin_create(originname); replorigin_create(originname);
...@@ -493,6 +496,9 @@ DropSubscription(DropSubscriptionStmt *stmt) ...@@ -493,6 +496,9 @@ DropSubscription(DropSubscriptionStmt *stmt)
ReleaseSysCache(tup); ReleaseSysCache(tup);
/* Clean up dependencies */
deleteSharedDependencyRecordsFor(SubscriptionRelationId, subid, 0);
/* Protect against launcher restarting the worker. */ /* Protect against launcher restarting the worker. */
LWLockAcquire(LogicalRepLauncherLock, LW_EXCLUSIVE); LWLockAcquire(LogicalRepLauncherLock, LW_EXCLUSIVE);
...@@ -530,7 +536,7 @@ DropSubscription(DropSubscriptionStmt *stmt) ...@@ -530,7 +536,7 @@ DropSubscription(DropSubscriptionStmt *stmt)
if (!walrcv_command(wrconn, cmd.data, &err)) if (!walrcv_command(wrconn, cmd.data, &err))
ereport(ERROR, ereport(ERROR,
(errmsg("count not drop the replication slot \"%s\" on publisher", (errmsg("could not drop the replication slot \"%s\" on publisher",
slotname), slotname),
errdetail("The error was: %s", err))); errdetail("The error was: %s", err)));
else 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