Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDDQF-002k0d-08 for pgsql-docs@arkaria.postgresql.org; Thu, 16 Apr 2026 03:29:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDDQD-003Uzq-0L for pgsql-docs@arkaria.postgresql.org; Thu, 16 Apr 2026 03:29:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDDQC-003Uzi-2H for pgsql-docs@lists.postgresql.org; Thu, 16 Apr 2026 03:29:40 +0000 Received: from mail-yx1-xb12a.google.com ([2607:f8b0:4864:20::b12a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDDQA-00000001Fa8-1pHn for pgsql-docs@lists.postgresql.org; Thu, 16 Apr 2026 03:29:39 +0000 Received: by mail-yx1-xb12a.google.com with SMTP id 956f58d0204a3-649278a69c5so6264888d50.3 for ; Wed, 15 Apr 2026 20:29:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776310177; cv=none; d=google.com; s=arc-20240605; b=kLI6a5imgLdEDJK+2FKHf2TTUpxanRiNWREOz28RUM56gtbOZER5F8kf9d8sOn6u6r hz7l0/q5lvm6J6rX6WZLT/F32oS8L/e6k7JHlNEpU9PrOKfvf/bVgZMkRua58EbJ/4RN OStezTcWAJuRMcX0OxFoyKacK7qvlhQ0iKxmvzp7vNlXUQAi/IwPostX7NNEmHJT03e5 aUw63oyFRSkU3pUwj3gTqVrpFCT34vauCgc25ffY/F78dpoNFSr8mPoUdyEcKwgFV3UR LI/NWdTxyWIB9MfXkJDOALHn0NhXj05BdN6Rg/Cpbk0l1cdjNCfBluQuDymv41PUokyY U1xQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:dkim-signature; bh=N5LaraMYtjJ/h1Z9Q/NPINRVr9C9acIUTIZW2zNXwqQ=; fh=KAUoVO6/GZN8GVCzQCBza1oDGoxUdMC1mtMchx42duE=; b=D/rdH3sBOY7EcHQsgD0jESypY5I4LH6GzX2z7FwKotOvvzbppjMKMCQRZTPCnD5SB4 Z4XlpuEGIjI3O4AASr+RWt24MDe/U7qOZOm9Vfj73YvQy6fQ/yvrFvOq0G2JA9Df5nK/ 4pZFtdIElQq6oiAariQjgNG5u1T4aTevvgX8sTC2X7c6FSMIS5Ex6RRweb0Q+P8IKf/E lVdRQ+mqdc6EBjakW79Dy1zJ6U3Z5BHoxz3Mbnse2T4tGKetOp7vEBD91m10Uz9PaaPG JA0b/FZkdhkCr5GNYuPlGvLFT7vmXIeAkizCY9fEJn/1bQtzlHi/lu45qqtllFFdOJyM CRrQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776310177; x=1776914977; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=N5LaraMYtjJ/h1Z9Q/NPINRVr9C9acIUTIZW2zNXwqQ=; b=oTSAt08Y2RkjfohU9gwrnxbDRHgpSwpsg40nuH6INyjt+oEwbmY2RYEgCDhhxsx3Et owad0jMk6xGexqYaJWEYgZu2e44fg/m9dcCxjwuDuKveYSxQQlJ62h35luWW1LFKrzje hFc4ZeZo2QoCJcPMbVSUpsPNNjZcnONOv/0NPjbJP7ZoJjUyimBoVE3GY35buIpOLLeC AI2kUyqJMYt4Nby5UzysB4PKRzKHGSbmKlS4TohVMZOBlZo15K+TIksA74jiOSFPh1TY n+JvSKfHyP7RLoSBVsVY8uxYIPIGMcTl1U1rLYCWSsttdivQUf2mkn9WYGtDO18V7jjE /mOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776310177; x=1776914977; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=N5LaraMYtjJ/h1Z9Q/NPINRVr9C9acIUTIZW2zNXwqQ=; b=sEClqaf8tpVS6J7MZXKkzJ1GbvPdttROyOPu1Z1BfOWMFCXeGJ6c9N7fa+T6FBAWmG 0Ed3MCw6AOd1eg/eOIwyWX94RVNAweMKlyRCEkbwY6tbNEBDbfpBAyngLeU9RcRYN4C/ nZnqh2/Ero6LZSBLVAl9uXBmrT4BBq6bVNmXocmQpYcYp902v3YrcCE6SH0meYnp7PDq b9fBFiSwABD3xH70gaaX1s4lhqz7vnEevvvS1otnwlqPCrKKZJWtiremaow/yZzNDYLo b2DWQDgfM47FW4/GpOW4qPgVGBANpvfZkqzVC7//cbXAHPaX98TyC8L4tdnL2uRV9xd0 RPSg== X-Forwarded-Encrypted: i=1; AFNElJ9/Ru+6PD3Qe7r6mZnDYL6xwSsl6BkMOPQi25COfIKEUWNWG89unXF+4XbFzIX6yWQQsFDHcA3lqWH8@lists.postgresql.org X-Gm-Message-State: AOJu0Ywy9t04UiudJrs86OoVoiQNzv5/UEv3nl4uOtDo+cgkMPBItdPA lEsQsJMps9zvLtnuNF0bG1n8Kk+PJ83vh8CYJUBFXLxGp51NRvHsuwsVUxGavrfoBIFMAfXnMnp S1raowMs5jUOQ/tdDswrba/FOYvJ8hXY= X-Gm-Gg: AeBDievki8SaStj79sFpkinxGMJhbhInJgIKh9dRsn/oeO+OpcOexaiH0Cezmy4J8ED SW1U6Q9dxUOOY8i/L/OuspoQ35KqaclXE7BJ9LC+OH5lGpPARbHmhv30haxs8UStRRUFbIYGl3p Bc9G+0232GmV/OOlayDnLCGP+0ONHQ3D7lXu7sUf3R/in7nq5f4DuMTNXni83V+v81/QPPaQSq6 IiA71xef+IcgOJbAdyuay3Kw/3fzD4AcMHAws1Khi2uGzICh6jcKmLpfzZpzmSbmvbymXfqTaRJ Ha+CSsUeCvYzWZZXaQ== X-Received: by 2002:a53:ab51:0:b0:64e:a1d0:113f with SMTP id 956f58d0204a3-65198c9d710mr16689823d50.67.1776310177555; Wed, 15 Apr 2026 20:29:37 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:7010:2243:b0:4dc:621d:e723 with HTTP; Wed, 15 Apr 2026 20:29:35 -0700 (PDT) In-Reply-To: References: <177609278737.403059.14174275013090471947@wrigleys.postgresql.org> From: "David G. Johnston" Date: Wed, 15 Apr 2026 20:29:35 -0700 X-Gm-Features: AQROBzCY9yhLjb8VfxKJc_dFz3ki9wVyVPtQKelIY-KrG1dLpRTRvJ0MaYlxHAo Message-ID: Subject: Re: Logical Replication upgrade To: Amit Kapila Cc: "mimidatabase@gmail.com" , "pgsql-docs@lists.postgresql.org" Content-Type: multipart/alternative; boundary="00000000000024e93d064f8b712d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000024e93d064f8b712d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wednesday, April 15, 2026, Amit Kapila wrote: > On Wed, Apr 15, 2026 at 9:25=E2=80=AFPM David G. Johnston > wrote: > > > > On Wed, Apr 15, 2026 at 7:52=E2=80=AFAM PG Doc comments form < > noreply@postgresql.org> wrote: > >> > >> The following documentation comment has been logged on the website: > >> > >> Page: https://www.postgresql.org/docs/18/logical-replication- > upgrade.html > >> Description: > >> > >> Hello there, > >> > >> I don't know if it's me but I find this sentence quite confusing in it= s > >> current wording: > >> All slots on the old cluster must be usable, i.e., there are no slots > whose > >> pg_replication_slots.conflicting is not true. > >> > >> The prerequisite is that no replication slot has conflicting=3Dtrue ri= ght? > >> So this sentence (the i.e. part) suggests the opposite, as per my > >> understanding. > >> > >> Here is the link (29.13.1): > >> https://www.postgresql.org/docs/current/logical- > replication-upgrade.html#STEPS-TWO-NODE-CIRCULAR- > LOGICAL-REPLICATION-CLUSTER:~:text=3Dthere%20are%20no%20slots% > 20whose%20pg_replication_slots.conflicting%20is%20not%20true > >> > > > > You are correct. Usage of a double-negative should be avoided as a > matter of style, but in this case it actually resolves to an untrue > statement. > > > > https://github.com/postgres/postgres/commit/ > 7fdeaf5774d05245e82632e763665ff62db5598e > > > > I've copied the committer for this. Removing the "not" is simple > enough; though writing in the negative sense, > > > > How about: "All slots on the old cluster must be usable, i.e., there > are no slots whose pg_replication_slots.conflicting is false."? > That is the same backwards outcome. You only replaced =E2=80=9Cnot true=E2= =80=9D with =E2=80=9Cfalse=E2=80=9D (same meaning) but didn=E2=80=99t change the =E2=80= =9Cno slots=E2=80=9D phrasing. You can write either? No slots are true (conflicting) All slots are false (not conflicting) I prefer the second, and the fact your attempted fix didn=E2=80=99t actuall= y fix things suggests that rephrasing both of these to =E2=80=9Call slots are=E2= =80=9D is better. David J. --00000000000024e93d064f8b712d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wednesday, April 15, 2026, Amit Kapila <amit.kapila16@gmail.com> wrote:
On Wed, Apr 15, 2026 at 9:25=E2=80=AFPM David G. Johnston
<david.g.johnston@gmail.co= m> wrote:
>
> On Wed, Apr 15, 2026 at 7:52=E2=80=AFAM PG Doc comments form <noreply@postgresql.org> wrote:<= br> >>
>> The following documentation comment has been logged on the website= :
>>
>> Page: https://www.postgresql.org/docs/= 18/logical-replication-upgrade.html
>> Description:
>>
>> Hello there,
>>
>> I don't know if it's me but I find this sentence quite con= fusing in its
>> current wording:
>> All slots on the old cluster must be usable, i.e., there are no sl= ots whose
>> pg_replication_slots.conflicting is not true.
>>
>> The prerequisite is that no replication slot has conflicting=3Dtru= e right?
>> So this sentence (the i.e. part) suggests the opposite, as per my<= br> >> understanding.
>>
>> Here is the link (29.13.1):
>> https://www.postgresql.org/docs/curr= ent/logical-replication-upgrade.html#STEPS-TWO-NODE-CIRCULAR-LOGICAL-REPLICATION-CLUSTER:~:text=3Dthere%20are%20no%20slots%20= whose%20pg_replication_slots.conflicting%20is%20not%20true >>
>
> You are correct.=C2=A0 Usage of a double-negative should be avoided as= a matter of style, but in this case it actually resolves to an untrue stat= ement.
>
> https://github.com/postgres/postgres/commit/7fdeaf5774d05245e82632e763665ff62db5598e >
> I've copied the committer for this.=C2=A0 Removing the "not&q= uot; is simple enough; though writing in the negative sense,
>

How about: "All slots on the old cluster must be usable, i.e., there are no slots whose pg_replication_slots.conflicting is false."?

That is the same backwards outcome.=C2=A0 = You only replaced =E2=80=9Cnot true=E2=80=9D with =E2=80=9Cfalse=E2=80=9D (= same meaning) but didn=E2=80=99t change the =E2=80=9Cno slots=E2=80=9D phra= sing.

You can write either?

No slots are true (conflicting)
All slots are false (not confl= icting)

I prefer the second, and the fact your att= empted fix didn=E2=80=99t actually fix things suggests that rephrasing both= of these to =E2=80=9Call slots are=E2=80=9D is better.

David J.

--00000000000024e93d064f8b712d--