aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Kapila <akapila@postgresql.org>2023-06-21 10:36:09 +0530
committerAmit Kapila <akapila@postgresql.org>2023-06-21 10:36:09 +0530
commita734caa25f79b7bfa423dd97162e5ecf14d1feb5 (patch)
tree3b654a943d2d9111f8f56ffbc224699366b7e310
parent5b1a8799431279b5f9d56c81b0d0879415e7b45c (diff)
downloadpostgresql-a734caa25f79b7bfa423dd97162e5ecf14d1feb5.tar.gz
postgresql-a734caa25f79b7bfa423dd97162e5ecf14d1feb5.zip
Fix the errhint message and docs for drop subscription failure.
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
-rw-r--r--doc/src/sgml/ref/drop_subscription.sgml8
-rw-r--r--src/backend/commands/subscriptioncmds.c3
2 files changed, 7 insertions, 4 deletions
diff --git a/doc/src/sgml/ref/drop_subscription.sgml b/doc/src/sgml/ref/drop_subscription.sgml
index 8d997c983fe..2a67bdea913 100644
--- a/doc/src/sgml/ref/drop_subscription.sgml
+++ b/doc/src/sgml/ref/drop_subscription.sgml
@@ -85,9 +85,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 (and any related table synchronization slots) should then be
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index 1c88c2bccbf..54895ba929a 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -2185,7 +2185,8 @@ ReportSlotConnectionError(List *rstates, Oid subid, char *slotname, char *err)
errmsg("could not connect to publisher when attempting to drop replication slot \"%s\": %s",
slotname, err),
/* translator: %s is an SQL ALTER command */
- errhint("Use %s to disassociate the subscription from the slot.",
+ 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)")));
}