]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix the errhint message and docs for drop subscription failure.
authorAmit Kapila <akapila@postgresql.org>
Wed, 21 Jun 2023 04:01:32 +0000 (09:31 +0530)
committerAmit Kapila <akapila@postgresql.org>
Wed, 21 Jun 2023 04:49:54 +0000 (10:19 +0530)
The existing errhint message and docs were missing the fact that we can't
disassociate from the slot unless the subscription is disabled.

Author: Robert Sjöblom, Peter Smith
Reviewed-by: Peter Eisentraut, Amit Kapila
Backpatch-through: 11
Discussion: https://postgr.es/m/807bdf85-61ea-88e2-5712-6d9fcd4eabff@fortnox.se

doc/src/sgml/ref/drop_subscription.sgml
src/backend/commands/subscriptioncmds.c

index adbdeafb4e18c222170f8c67b31b41c908a4fe60..65b025c6a60b24d98339e520f9e58b8811a7412f 100644 (file)
@@ -84,9 +84,11 @@ DROP SUBSCRIPTION [ IF EXISTS ] <replaceable class="parameter">name</replaceable
    for the subscription on the remote host are released.  If this fails,
    either because the remote host is not reachable or because the remote
    replication slot cannot be dropped or does not exist or never existed,
-   the <command>DROP SUBSCRIPTION</command> command will fail.  To proceed in
-   this situation, disassociate the subscription from the replication slot by
-   executing <literal>ALTER SUBSCRIPTION ... SET (slot_name = NONE)</literal>.
+   the <command>DROP SUBSCRIPTION</command> command will fail.  To proceed
+   in this situation, first disable the subscription by executing
+   <literal>ALTER SUBSCRIPTION ... DISABLE</literal>, and then disassociate
+   it from the replication slot by executing
+   <literal>ALTER SUBSCRIPTION ... SET (slot_name = NONE)</literal>.
    After that, <command>DROP SUBSCRIPTION</command> will no longer attempt any
    actions on a remote host.  Note that if the remote replication slot still
    exists, it should then be dropped manually; otherwise it will continue to
index 7c981212e75a238f67c12eea89bbb4b38429a2c0..b03a9871ca677b0de3295523d25301578473a730 100644 (file)
@@ -975,8 +975,10 @@ DropSubscription(DropSubscriptionStmt *stmt, bool isTopLevel)
                                (errmsg("could not connect to publisher when attempting to "
                                                "drop the replication slot \"%s\"", slotname),
                                 errdetail("The error was: %s", err),
-                                errhint("Use ALTER SUBSCRIPTION ... SET (slot_name = NONE) "
-                                                "to disassociate the subscription from the slot.")));
+                                /* translator: %s is an SQL ALTER command */
+                                errhint("Use %s to disable the subscription, and then use %s to disassociate it from the slot.",
+                                                "ALTER SUBSCRIPTION ... DISABLE",
+                                                "ALTER SUBSCRIPTION ... SET (slot_name = NONE)")));
 
        PG_TRY();
        {