From 6973868c9dbc8d6242a7419c0807d301dd6d5fe3 Mon Sep 17 00:00:00 2001 From: Amit Kapila Date: Wed, 21 Jun 2023 09:31:32 +0530 Subject: [PATCH] Fix the errhint message and docs for drop subscription failure. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 | 8 +++++--- src/backend/commands/subscriptioncmds.c | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/ref/drop_subscription.sgml b/doc/src/sgml/ref/drop_subscription.sgml index adbdeafb4e1..65b025c6a60 100644 --- a/doc/src/sgml/ref/drop_subscription.sgml +++ b/doc/src/sgml/ref/drop_subscription.sgml @@ -84,9 +84,11 @@ DROP SUBSCRIPTION [ IF EXISTS ] nameDROP SUBSCRIPTION command will fail. To proceed in - this situation, disassociate the subscription from the replication slot by - executing ALTER SUBSCRIPTION ... SET (slot_name = NONE). + the DROP SUBSCRIPTION command will fail. To proceed + in this situation, first disable the subscription by executing + ALTER SUBSCRIPTION ... DISABLE, and then disassociate + it from the replication slot by executing + ALTER SUBSCRIPTION ... SET (slot_name = NONE). After that, DROP SUBSCRIPTION 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 diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 7c981212e75..b03a9871ca6 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -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(); { -- 2.39.5