agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedRemove stale XXX comment in logical launcher
124+ messages / 4 participants
[nested] [flat]
* Remove stale XXX comment in logical launcher
@ 2026-09-03 03:42 Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
0 siblings, 1 reply; 124+ messages in thread
From: Zhijie Hou (Fujitsu) @ 2026-09-03 03:42 UTC (permalink / raw)
To: pgsql-hackers
Hi,
I noticed one comment in the launcher that can be removed:
if (!retain_dead_tuples)
/* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
Since the conflict detection slot is a physical one, there is no logical
decoding state to disable when dropping it. The condition it depends on is also
self-evident from the surrounding code and the block comment above, which
already explains why the slot is dropped. So here is a patch to remove the XXX
comment.
Best Regards,
Zhijie Hou
Attachments:
[application/octet-stream] v1-0001-Remove-stale-XXX-comment-in-logical-launcher.patch (1.0K, ../../TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com/2-v1-0001-Remove-stale-XXX-comment-in-logical-launcher.patch)
download | inline diff:
From bd84e8f875c9df93edf6a803cced21737c413ae1 Mon Sep 17 00:00:00 2001
From: Zhijie Hou <houzj.fnst@fujitsu.com>
Date: Thu, 3 Sep 2026 11:35:06 +0800
Subject: [PATCH v1] Remove stale XXX comment in logical launcher
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment.
---
src/backend/replication/logical/launcher.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 313e31ff2e3..137da582fe2 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1406,7 +1406,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
--
2.43.0
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-03 06:26 shveta malik <shveta.malik@gmail.com>
parent: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
0 siblings, 1 reply; 124+ messages in thread
From: shveta malik @ 2026-09-03 06:26 UTC (permalink / raw)
To: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; +Cc: pgsql-hackers; shveta malik <shveta.malik@gmail.com>
On Thu, Sep 3, 2026 at 9:12 AM Zhijie Hou (Fujitsu)
<houzj.fnst@fujitsu.com> wrote:
>
> Hi,
>
> I noticed one comment in the launcher that can be removed:
>
> if (!retain_dead_tuples)
> /* XXX unclear why we don't request logical decoding disable */
> ReplicationSlotDropAcquired(false);
>
> Since the conflict detection slot is a physical one, there is no logical
> decoding state to disable when dropping it.
I agree. However, the comments never mention that this is a physical
slot, making it easy to misconstrue it as a logical one. Do you think
we can add the keyword 'physical' in the comment above this Drop()
or/and above CreateConflictDetectionSlot or/and above macro
CONFLICT_DETECTION_SLOT?
> The condition it depends on is also
> self-evident from the surrounding code and the block comment above, which
> already explains why the slot is dropped. So here is a patch to remove the XXX
> comment.
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-03 12:07 Amit Kapila <amit.kapila16@gmail.com>
parent: shveta malik <shveta.malik@gmail.com>
0 siblings, 1 reply; 124+ messages in thread
From: Amit Kapila @ 2026-09-03 12:07 UTC (permalink / raw)
To: shveta malik <shveta.malik@gmail.com>; Álvaro Herrera <alvherre@kurilemu.de>; +Cc: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; pgsql-hackers
On Thu, Sep 3, 2026 at 11:56 AM shveta malik <shveta.malik@gmail.com> wrote:
>
> On Thu, Sep 3, 2026 at 9:12 AM Zhijie Hou (Fujitsu)
> <houzj.fnst@fujitsu.com> wrote:
> >
> > Hi,
> >
> > I noticed one comment in the launcher that can be removed:
> >
> > if (!retain_dead_tuples)
> > /* XXX unclear why we don't request logical decoding disable */
> > ReplicationSlotDropAcquired(false);
> >
> > Since the conflict detection slot is a physical one, there is no logical
> > decoding state to disable when dropping it.
>
> I agree. However, the comments never mention that this is a physical
> slot, making it easy to misconstrue it as a logical one. Do you think
> we can add the keyword 'physical' in the comment above this Drop()
> or/and above CreateConflictDetectionSlot or/and above macro
> CONFLICT_DETECTION_SLOT?
>
Adding such a comment at the time of creation sounds reasonable to me.
I would still like to check with Alvaro who added this comment in
commit 2af1dc89282bea681201cf66e2bb32537294e623 whether such a comment
would make it easier to follow this part of code?
--
With Regards,
Amit Kapila.
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-03 18:12 Álvaro Herrera <alvherre@kurilemu.de>
parent: Amit Kapila <amit.kapila16@gmail.com>
0 siblings, 1 reply; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-03 18:12 UTC (permalink / raw)
To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: shveta malik <shveta.malik@gmail.com>; Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; pgsql-hackers
On 2026-Sep-03, Amit Kapila wrote:
> On Thu, Sep 3, 2026 at 11:56 AM shveta malik <shveta.malik@gmail.com> wrote:
> > I agree. However, the comments never mention that this is a physical
> > slot, making it easy to misconstrue it as a logical one. Do you think
> > we can add the keyword 'physical' in the comment above this Drop()
> > or/and above CreateConflictDetectionSlot or/and above macro
> > CONFLICT_DETECTION_SLOT?
>
> Adding such a comment at the time of creation sounds reasonable to me.
> I would still like to check with Alvaro who added this comment in
> commit 2af1dc89282bea681201cf66e2bb32537294e623 whether such a comment
> would make it easier to follow this part of code?
I agree that having a comment stating that the slot we hold is
necessarily physical would be good. It wouldn't hurt to see exactly
what is being proposed though.
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"[PostgreSQL] is a great group; in my opinion it is THE best open source
development communities in existence anywhere." (Lamar Owen)
^ permalink raw reply [nested|flat] 124+ messages in thread
* RE: Remove stale XXX comment in logical launcher
@ 2026-09-07 05:17 Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
parent: Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 1 reply; 124+ messages in thread
From: Zhijie Hou (Fujitsu) @ 2026-09-07 05:17 UTC (permalink / raw)
To: Álvaro Herrera <alvherre@kurilemu.de>; Amit Kapila <amit.kapila16@gmail.com>; +Cc: shveta malik <shveta.malik@gmail.com>; pgsql-hackers
Hi,
On Friday, September 4, 2026 2:12 AM Álvaro Herrera <alvherre@kurilemu.de> wrote:
>
> On 2026-Sep-03, Amit Kapila wrote:
> >
> > Adding such a comment at the time of creation sounds reasonable to me.
> > I would still like to check with Alvaro who added this comment in
> > commit 2af1dc89282bea681201cf66e2bb32537294e623 whether such a
> > comment would make it easier to follow this part of code?
>
> I agree that having a comment stating that the slot we hold is necessarily
> physical would be good. It wouldn't hurt to see exactly what is being
> proposed though.
Thanks for confirming.
Here is the updated patch with the suggested comments.
Best Regards,
Zhijie Hou
Attachments:
[application/octet-stream] v2-0001-Remove-stale-XXX-comment-in-logical-launcher.patch (1.7K, ../../TY4PR01MB17718CEAE3E330A24936393B194B22@TY4PR01MB17718.jpnprd01.prod.outlook.com/2-v2-0001-Remove-stale-XXX-comment-in-logical-launcher.patch)
download | inline diff:
From 92a3041be5ed9ce33d1aebf3f8381ecbf0e01b1b Mon Sep 17 00:00:00 2001
From: Zhijie Hou <houzj.fnst@fujitsu.com>
Date: Thu, 3 Sep 2026 11:35:06 +0800
Subject: [PATCH v2] Remove stale XXX comment in logical launcher
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
---
src/backend/replication/logical/launcher.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 313e31ff2e3..4e5c05b1164 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1406,7 +1406,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1564,6 +1563,11 @@ init_conflict_slot_xmin(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * The slot is necessarily physical: it is not tied to any database and no
+ * logical decoding is ever performed on it; only its xmin horizon is used to
+ * prevent the removal of dead tuples and commit timestamp data required
+ * by subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.43.0
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* [PATCH] Remove stale XXX comment in logical launcher
@ 2026-09-08 07:44 Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:44 UTC (permalink / raw)
An XXX comment in launcher.c questioned why the slot drop does not request
disabling logical decoding. But the conflict detection slot is a physical slot,
so there is no logical decoding state to disable. Remove the comment and add an
explanation atop the slot creation function clarifying that the slot is physical.
Author: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Reviewed-by: shveta malik <shveta.malik@gmail.com>
Discussion: https://postgr.es/m/TY4PR01MB177186C8AB596F30DF704ECDC94B62@TY4PR01MB17718.jpnprd01.prod.outlook.com
---
src/backend/replication/logical/launcher.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index c328ad53ecc..5057a928adb 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -1284,12 +1284,12 @@ ApplyLauncherMain(Datum main_arg)
retain_dead_tuples = true;
/*
- * Create a replication slot to retain information necessary
- * for conflict detection such as dead tuples, commit
- * timestamps, and origins.
+ * Create a (physical) replication slot to retain information
+ * necessary for conflict detection such as dead tuples,
+ * commit timestamps, and origins.
*
* The slot is created before starting the apply worker to
- * prevent it from unnecessarily maintaining its
+ * prevent the worker from unnecessarily maintaining its
* oldest_nonremovable_xid.
*
* The slot is created even for a disabled subscription to
@@ -1418,7 +1418,6 @@ ApplyLauncherMain(Datum main_arg)
if (MyReplicationSlot)
{
if (!retain_dead_tuples)
- /* XXX unclear why we don't request logical decoding disable */
ReplicationSlotDropAcquired(false);
else if (can_update_xmin)
update_conflict_slot_xmin(xmin);
@@ -1627,6 +1626,11 @@ reset_conflict_slot_xmin_to_safe_horizon(void)
/*
* Create and acquire the replication slot used to retain information for
* conflict detection, if not yet.
+ *
+ * A physical slot is enough, as no logical decoding is going to be performed
+ * through it. In fact, the slot will only be used through its xmin horizon
+ * to prevent the removal of dead tuples and commit timestamp data required by
+ * subscriptions with retain_dead_tuples enabled in any database.
*/
void
CreateConflictDetectionSlot(void)
--
2.47.3
--3lvjw6xwjq6anblz--
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-08 07:50 Álvaro Herrera <alvherre@kurilemu.de>
parent: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
0 siblings, 1 reply; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-08 07:50 UTC (permalink / raw)
To: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; +Cc: Amit Kapila <amit.kapila16@gmail.com>; shveta malik <shveta.malik@gmail.com>; pgsql-hackers
Hello,
On 2026-Sep-07, Zhijie Hou (Fujitsu) wrote:
> Here is the updated patch with the suggested comments.
Mumble.
How about like this?
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
Attachments:
[text/x-diff] 0001-Remove-stale-XXX-comment-in-logical-launcher.patch (0B, ../../ap-9M0MfJ0M72mnu@alvherre.pgsql/2-0001-Remove-stale-XXX-comment-in-logical-launcher.patch)
download
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-09 04:59 Amit Kapila <amit.kapila16@gmail.com>
parent: Álvaro Herrera <alvherre@kurilemu.de>
0 siblings, 1 reply; 124+ messages in thread
From: Amit Kapila @ 2026-09-09 04:59 UTC (permalink / raw)
To: Álvaro Herrera <alvherre@kurilemu.de>; +Cc: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; shveta malik <shveta.malik@gmail.com>; pgsql-hackers
On Tue, Sep 8, 2026 at 1:20 PM Álvaro Herrera <alvherre@kurilemu.de> wrote:
>
> On 2026-Sep-07, Zhijie Hou (Fujitsu) wrote:
>
> > Here is the updated patch with the suggested comments.
>
> Mumble.
>
> How about like this?
>
LGTM. Do let me know if you would like me to push, otherwise, I would
be happy if you can take care of it.
--
With Regards,
Amit Kapila.
^ permalink raw reply [nested|flat] 124+ messages in thread
* Re: Remove stale XXX comment in logical launcher
@ 2026-09-09 09:15 Álvaro Herrera <alvherre@kurilemu.de>
parent: Amit Kapila <amit.kapila16@gmail.com>
0 siblings, 0 replies; 124+ messages in thread
From: Álvaro Herrera @ 2026-09-09 09:15 UTC (permalink / raw)
To: Amit Kapila <amit.kapila16@gmail.com>; +Cc: Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>; shveta malik <shveta.malik@gmail.com>; pgsql-hackers
On 2026-Sep-09, Amit Kapila wrote:
> LGTM. Do let me know if you would like me to push, otherwise, I would
> be happy if you can take care of it.
Thanks for looking! I have pushed it. Thanks Hou for reporting.
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".
^ permalink raw reply [nested|flat] 124+ messages in thread
end of thread, other threads:[~2026-09-09 09:15 UTC | newest]
Thread overview: 124+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
2026-09-03 06:26 ` shveta malik <shveta.malik@gmail.com>
2026-09-03 12:07 ` Amit Kapila <amit.kapila16@gmail.com>
2026-09-03 18:12 ` Álvaro Herrera <alvherre@kurilemu.de>
2026-09-07 05:17 ` Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
2026-09-08 07:50 ` Álvaro Herrera <alvherre@kurilemu.de>
2026-09-09 04:59 ` Amit Kapila <amit.kapila16@gmail.com>
2026-09-09 09:15 ` Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
2026-09-08 07:44 [PATCH] Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox