Re: Bug in ALTER SUBSCRIPTION ... SERVER / ... CONNECTION with broken old server
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Amit Kapila <amit.kapila16@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
Cc: Chao Li <li.evan.chao@gmail.com>, Zsolt Parragi
<zsolt.parragi@percona.com>, Ajin Cherian <itsajin@gmail.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-07-06T23:41:34Z
Lists: pgsql-hackers
On Mon, 2026-06-29 at 10:07 +0530, Amit Kapila wrote: > On Wed, Jun 24, 2026 at 7:48 AM Hayato Kuroda (Fujitsu) > <kuroda.hayato@fujitsu.com> wrote: > > > > I went through the 0003 patch. Apart from HINT message, I found > > that error code > > ERRCODE_CONNECTION_FAILURE is always used. Should we report the > > original errcode > > of the root cause? > > > > That could be marginally better but not sure if it is worth the > complexity. I have a few more points regarding 0003: > * Regarding the point: "we can't absorb every kind of error." In the > PG_CATCH, re-throw query-cancel / interrupt-class conditions (if > those > are possible) instead of swallowing them, otherwise a SIGINT during > ForeignServerConnectionString() becomes a silent successful DROP (for > slot_name=NONE) or a mislabeled connection error. The DROP SUBSCRIPTION documentation says that: "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." But that stopped being true after commit ce0fdbfe97. There should be some kind of escape such that we can force a DROP SUBSCRIPTION to succeed without trying to connect to the remote host. And if we have that escape, then we don't need to overcomplicate this by using a subtransaction and trying to guess which errors are recoverable or not. Regards, Jeff Davis
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Avoid errors during DROP SUBSCRIPTION when slot_name is NONE.
- 702e9dfd6c50 19 (unreleased) landed
-
Avoid errors during ALTER SUBSCRIPTION.
- e5c40584a712 19 (unreleased) landed
-
Check retain_dead_tuples for ALTER SUBSCRIPTION ... SERVER.
- 8eba2edb8010 19 (unreleased) landed
-
Allow multiple xacts during table sync in logical replication.
- ce0fdbfe9722 14.0 cited