Record dependencies on owners for logical replication objects
authorAlvaro Herrera
Fri, 20 Jan 2017 19:45:02 +0000 (16:45 -0300)
committerAlvaro Herrera
Fri, 20 Jan 2017 19:45:02 +0000 (16:45 -0300)
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
src/backend/commands/subscriptioncmds.c

index 21e523deb083b9768d2fd1e7b460b2f51ce1ac40..63dcc10bd31f26e70f7328aefbf2574882a67272 100644 (file)
@@ -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. */
index 1448ee3beea1694ead814c9ffb76a9d96494faad..2b6d3225594381a1c37135b7ede1ad470eb6bca4 100644 (file)
@@ -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