Re: POC: enable logical decoding when wal_level = 'replica' without a server restart

From: Peter Smith <smithpb2250(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, shveta malik <shveta(dot)malik(at)gmail(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: POC: enable logical decoding when wal_level = 'replica' without a server restart
Date: 2025-12-16 06:32:20
Message-ID: CAHut+PthRb9eiUOz7+7Z2w00SYUA=Gby+A5pY83GXaWm+4p-Cg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Sawada-San.

Some minor review comments for v35-0001.

======
src/backend/replication/logical/logicalctl.c

ProcessBarrierUpdateXLogLogicalInfo:

1.
+/*
+ * This routine is called when we are told to update XLogLogicalInfo
+ * by a ProcSignalBarrier.
+ */
+bool
+ProcessBarrierUpdateXLogLogicalInfo(void)
+{
+ if (GetTopTransactionIdIfAny() != InvalidTransactionId)
+ {
+ /* Delay updating XLogLogicalInfo until the transaction end */
+ XLogLogicalInfoUpdatePending = true;
+ }
+ else
+ update_xlog_logical_info();
+
+ return true;
+}
+

Strange to have a boolean function that unconditionally returns true.
Should the function comment explain the meaning of the (always true)
return value?

The return value is assigned to a variable which defaults true anyway,
so really this function might as well be void.

~~~

EnsureLogicalDecodingEnabled:

2.
+ if (RecoveryInProgress())
+ {
+ /*
+ * CheckLogicalDecodingRequirements() must have already error out if
+ * logical decoding is not enabled since we cannot enable the logical
+ * decoding status during recovery.
+ */
+ Assert(IsLogicalDecodingEnabled());
+ return;
+ }

typo? "already error out"

======
.../recovery/t/050_effective_wal_level.pl

3.
+$primary->safe_psql('postgres',
+ qq[select pg_create_physical_replication_slot('test_phy_slot', false, false)]
+);
+
+# Check that creating a physical slot doesn't affect effective_wal_level.
+test_wal_level($primary, "replica|replica",
+ "effective_wal_level doesn't change with a new physical slot");
+$primary->safe_psql('postgres',
+ qq[select pg_drop_replication_slot('test_phy_slot')]);
+

That pg_create_physical_replication_slot() should be beneath the
comment that says what the test is doing.

~~~

4.
+# Create logical slots on the both nodes.

typo /the both/both/

~~~

5.
+# effective_wal_level should be 'logical' on the both nodes.

typo /the both/both/

~~~

6.
+# Verify that the effective_wal_level remains 'logical' on the both nodes

typo /the both/both/

======
Kind Regards,
Peter Smith.
Fujitsu Australia

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amul Sul 2025-12-16 06:34:40 Re: alter check constraint enforceability
Previous Message Feilong Meng 2025-12-16 06:18:05 [PATCH]Remove the redundant assignment