]> granicus.if.org Git - postgresql/commitdiff
Record dependencies on owners for logical replication objects
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 20 Jan 2017 19:45:02 +0000 (16:45 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
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