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 1wDF3K-002lpu-2s for pgsql-docs@arkaria.postgresql.org; Thu, 16 Apr 2026 05:14:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDF3I-003raC-38 for pgsql-docs@arkaria.postgresql.org; Thu, 16 Apr 2026 05:14:08 +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 1wDF3I-003ra4-2O for pgsql-docs@lists.postgresql.org; Thu, 16 Apr 2026 05:14:08 +0000 Received: from mail-lj1-x235.google.com ([2a00:1450:4864:20::235]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDF3F-00000001GIN-340f for pgsql-docs@lists.postgresql.org; Thu, 16 Apr 2026 05:14:07 +0000 Received: by mail-lj1-x235.google.com with SMTP id 38308e7fff4ca-38c620f1699so79598651fa.0 for ; Wed, 15 Apr 2026 22:14:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776316444; cv=none; d=google.com; s=arc-20240605; b=Z1J+St1KiUplNHXqR19WPiQ/U6iBwzp07L/Wh6Pa3GnE2xeloVit0h1qbmxbnpmKT8 MiCCWRuxU0holyIOwZeFBIeUHGwLve5YXFjApk9fe1rF4xnrbi6LZ2ke2leWYy/KDYZI xUGhMhMDC/V1Edg60OrTd3RWiuJEG4aQyb35GxH6URkVQz4e4E+UDZoGSDnhpupdGkno rQ+d+dn0NAKILTis5Z9vb9VzqNxyx170dbomF0KcmFEQ8H6JJckkXiY5+mVh3oAHoU3d wk2RO535RDdMWfDlE3ywK08tjpfLIS5u5dVkin+fmQXIrmO0opQbTvq/eYkWkkEQs8v7 7IaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=m+0DWMKkd4mC8L2KtIF+eji04sW0aiXyU+tpaXxSgH0=; fh=YA4IDcRtaAxX1sw0Vr7z5mCFqJ+zuSTeQMF6d8GgNTs=; b=OHlhMUhBzjwiK/xQCmLqpXZ1kW5yS0tx3+bWCrPhMFSHLelahap6rwPbITHtOhYA5S tKNgGeg8nC81IWwblJxDlYn8ilcHfda4j5RIZjWE33SalgVSh3nJbxUTgJqtu63jRxx7 9Ekyj0EF59hZIZIOZRgLlGWMhhtWIa43oPjRy2m+gv9h5ySTfg47y/c4jXprWT89bnVH r5mC4iNxQzkDDTQpWCK2ncxa7SXJO50z99Y7ZwrZE0H1hQWuUUD7988zqIVJf219v/1W nogOr8bjwdO3UbuNG0UY+yUX4ZQ58u1xQcziANl7WIUL7rdU/IV+NhVDULDqIuDksXhO 6xvA==; 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=1776316444; x=1776921244; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=m+0DWMKkd4mC8L2KtIF+eji04sW0aiXyU+tpaXxSgH0=; b=aVxgFEt9oCRVOSuG6yGyWr5qPEESKD8x6Oe3/uu47ARwagaF7NIwhuRmVguoNfZgvU 2kh3hfgSE7r+It1S6X78wBDrdRRmYqOuxIlwy3w+0eh1endzWlv2ecYYG/gPwk9d5iqi wCGgutJzPRsh+xnnlGDzmVADt7+KE/n6Z2n43SZPT/AgNWnyjXQqQKvAzC3q45e8WQBk C6zGZqGp9ypW83NIfC55+zsm3a+qVtHy/aWSXpXzgdYdf+zgmtW8jVinY953HnXdDkg4 wScxxFvDb9WiQ8qvQKq67tElHjDz9WWoXPd6TyiOuwBnwWCLxQw4e6rlBBw0nP1O/YIl 3Hfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776316444; x=1776921244; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=m+0DWMKkd4mC8L2KtIF+eji04sW0aiXyU+tpaXxSgH0=; b=beYKC9gsi9wPF2F6ogCzT3g1C+YF9LDg/D7LwWR6/1WcDlc4W1LXi4WtLXYKRrAK/Z vsHZYOVdOiEttS2sTO0L/VAoTRAZo1vZn7HBK7n2DpXajpHBoR46oBHrwx42scGaGZEw 7a9PS6K1/n7Kr74YeG3N2F84Y6MmaZyCnMMQ68QOr2mQQgswcX5iDLc9nVYHSglpTi8w spx1dhDrxvidEqmxnsJL8mSh7XQ6PcSC8DlJtHKhYHXdkhRvNic9Mt2vy/5PeGL8KFG5 e/ota/e5ZNPtpPd4IhrQIkUCZzaGc+5XposTWuksbvSySd+NKqfoZLfQGbrVtUh07GFV xHWQ== X-Forwarded-Encrypted: i=1; AFNElJ9vScomMrO99Sa7aZ3hSPspGR6ixlcRsnFAFAP0B+1xi1fZc2vidLHfeUvwqWjoPaHyCl947tONDFwo@lists.postgresql.org X-Gm-Message-State: AOJu0YwBpWeqFwSF/FvOtqbsNUQeddrA7OL/VpdzdYV1PqiSAirSnKDp nxYQtG3Nn7lLOOBQWSxqOMLyet9QlQHb9GnYFPeM5/cJ2VyZMYiE2fD4HPaLneODEbEhkTIFBAv 8Oibg25jCvOtCSnwwjRA6LMDA4anljGg= X-Gm-Gg: AeBDieuO6smP9feW993MtQfHPARMzVAiu1me//wE31ZZ5vvgy1M1aMEoc1Oba7VJktJ MLZyBtl5UTOX+GWlrKsSpvtAFrVsmHYAWSN0DtVyuJjKgBBmRwFYQPa7dyBtfcyGiBwTYczTdc6 IxN9bstyck7HM3htAJNSbXjMDdLe80QjZJEykZ6MNNeDweMISoWc2FZ4n2Oyuwp5jiJ9RuBOusA hAVC7+hmGDOJF5Uq8X5xmwV6jyPQadqIL2A/hcr2dCvAJeklqdki7OK7RfHQn1FTcz+gvGDqvhm fLlSygxJvtlO+9lFJ0gCQfM6SKCZEC+C/xbE/ky4lKmHIbnQXUk= X-Received: by 2002:a05:651c:e16:b0:38a:8602:71aa with SMTP id 38308e7fff4ca-38e4bf6e6ffmr52407401fa.16.1776316443994; Wed, 15 Apr 2026 22:14:03 -0700 (PDT) MIME-Version: 1.0 References: <177609278737.403059.14174275013090471947@wrigleys.postgresql.org> In-Reply-To: From: Amit Kapila Date: Thu, 16 Apr 2026 10:43:52 +0530 X-Gm-Features: AQROBzAaijA00URsyp7Mm_a8yIA1CO9mxalf3b1lowNv7NWgboyu9iXZM3NNHMw Message-ID: Subject: Re: Logical Replication upgrade To: "David G. Johnston" Cc: "mimidatabase@gmail.com" , "pgsql-docs@lists.postgresql.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Apr 16, 2026 at 8:59=E2=80=AFAM David G. Johnston wrote: > > 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 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 i= ts >> >> 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 r= ight? >> >> 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.h= tml#STEPS-TWO-NODE-CIRCULAR-LOGICAL-REPLICATION-CLUSTER:~:text=3Dthere%20ar= e%20no%20slots%20whose%20pg_replication_slots.conflicting%20is%20not%20true >> >> >> > >> > You are correct. Usage of a double-negative should be avoided as a ma= tter of style, but in this case it actually resolves to an untrue statement= . >> > >> > https://github.com/postgres/postgres/commit/7fdeaf5774d05245e82632e763= 665ff62db5598e >> > >> > I've copied the committer for this. Removing the "not" is simple enou= gh; 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 ch= ange the =E2=80=9Cno slots=E2=80=9D phrasing. > Right, I got confused. > 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 actua= lly fix things suggests that rephrasing both of these to =E2=80=9Call slots= are=E2=80=9D is better. > So, how about: "All slots on the old cluster must be usable, i.e., their pg_replication_slots.conflicting is false."? --=20 With Regards, Amit Kapila.