agora inbox for pgsql-hackers@postgresql.org  
help / color / mirror / Atom feed
Remove stale XXX comment in logical launcher
130+ messages / 4 participants
[nested] [flat]

* Remove stale XXX comment in logical launcher
@ 2026-09-03 03:42 Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  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   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
@ 2026-09-03 12:07   ` Amit Kapila <amit.kapila16@gmail.com>
  2026-09-03 18:12     ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  2026-09-03 12:07   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
@ 2026-09-03 18:12     ` Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-07 05:17       ` RE: Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* RE: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  2026-09-03 12:07   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  2026-09-03 18:12     ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
@ 2026-09-07 05:17       ` Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-08 07:50         ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  2026-09-03 12:07   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  2026-09-03 18:12     ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-07 05:17       ` RE: Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
@ 2026-09-08 07:50         ` Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-09 04:59           ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  2026-09-03 12:07   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  2026-09-03 18:12     ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-07 05:17       ` RE: Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-08 07:50         ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
@ 2026-09-09 04:59           ` Amit Kapila <amit.kapila16@gmail.com>
  2026-09-09 09:15             ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 1 reply; 130+ 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] 130+ messages in thread

* Re: Remove stale XXX comment in logical launcher
  2026-09-03 03:42 Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-03 06:26 ` Re: Remove stale XXX comment in logical launcher shveta malik <shveta.malik@gmail.com>
  2026-09-03 12:07   ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
  2026-09-03 18:12     ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-07 05:17       ` RE: Remove stale XXX comment in logical launcher Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
  2026-09-08 07:50         ` Re: Remove stale XXX comment in logical launcher Álvaro Herrera <alvherre@kurilemu.de>
  2026-09-09 04:59           ` Re: Remove stale XXX comment in logical launcher Amit Kapila <amit.kapila16@gmail.com>
@ 2026-09-09 09:15             ` Álvaro Herrera <alvherre@kurilemu.de>
  0 siblings, 0 replies; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ 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; 130+ 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] 130+ messages in thread


end of thread, other threads:[~2026-09-09 09:15 UTC | newest]

Thread overview: 130+ 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>
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