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 1wD2aw-002Y0Y-1R for pgsql-docs@arkaria.postgresql.org; Wed, 15 Apr 2026 15:56:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wD2av-000edT-1W for pgsql-docs@arkaria.postgresql.org; Wed, 15 Apr 2026 15:56:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wD2av-000edJ-0g for pgsql-docs@lists.postgresql.org; Wed, 15 Apr 2026 15:56:01 +0000 Received: from mail-yx1-xb12e.google.com ([2607:f8b0:4864:20::b12e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wD2as-00000001FRC-3lXt for pgsql-docs@lists.postgresql.org; Wed, 15 Apr 2026 15:56:00 +0000 Received: by mail-yx1-xb12e.google.com with SMTP id 956f58d0204a3-64e87a81639so6446149d50.0 for ; Wed, 15 Apr 2026 08:55:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776268557; cv=none; d=google.com; s=arc-20240605; b=fRCtcRgxaFdUZBMkY8WGPS2McGEDqxmDuJI/YeC9caZfySamH1DNHwHbje3IShtWcy TbYMGG1VYG8t3BbTeGoZ3ya9YG1h+qHSvimbZalzt52/5zrnDh7Sy/YLNp9GC84Syw9q PHe084ZaW7ZKsDfenhHDHZ2W5rx5udSzNq0fMEkqxioIYHIqf5/FdPR/j33yKo0pCJXQ o5tcv8sGghEy1LalncetYaN9W6fWoDGVttxE2qxh7IyoAReccieWPlDZ5/0COCOwhOae 2Lv1jVHfaMKNpQ3TSC0TwOBq2Oc+QVHmEt/ZsANqFRL8860Q+A7n6UpaObDEgkGJZZCB LHCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=ffZQxYNSg8EaSucyDtKlnGXwK3L+6tamB2cb4WeYG5w=; fh=viusaetpVS3NbN151xUo2M/4p0YBiCnzQocdhU6MY/o=; b=L1tpJRgs09dKLwiS3bM3zNhCt8CZubdT2jDefSh9P9X4E+upJih2BDc1iLSRGZjPns 93ETi5W/VpJRwgUd5JgoPQ4S8Azsg11BIggt+7hDlH2NOE+nl9WTVmbGfwHxJ9nsjk7U uMI1WswAIMjbSixvmAK4j25qfU+i+tpcqUN30KB2MOj+La2LHll5O/pgaXDuu01mKfTV u6n1JOOmiqWFvdemcTkRMMduDXYswLSEcSL5JZCd0L7x0tRUmDw0isS/MfA+hYgvIUNO 3paz2uoI1QoJudEnptD7k1AP1V2SNWCFS8NT6DlgguzGEAhFtQi//6EBdLIw3dIKYLcz /KRQ==; 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=1776268557; x=1776873357; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=ffZQxYNSg8EaSucyDtKlnGXwK3L+6tamB2cb4WeYG5w=; b=ckxgxj5V89/mVEcrYvIn6X2QgZsVCaHrOMSWHnyZl4dVTV/jIjsoL4oge4YywBO5qJ pATzf2T1mvwCnVfCgzCj5YuB5bHCNyJ0+cFrO6OsM8lQGIB0Z6XFw7bj+IJHk3Wv3bKt wRVLFkC9DuIelKb3cMAuneRG631SUgvq8C6wMhOzx3NZfsaMCiJBCQxlouXkXAK4AJEG SytZURmvLh5gDKmPRCBeXKV7HaamSJSiR3zC3MkjexDgjQYQbZJ9rOjXiGyfs+NrW71r zHw3FPOrCUJb0aesI0N3zDnGhayIK+ybb/TzONBcX15UPJFlHbF/XwrJ1XpO/3pc5ztE QIxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776268557; x=1776873357; h=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=ffZQxYNSg8EaSucyDtKlnGXwK3L+6tamB2cb4WeYG5w=; b=gPa1G68rRHEDLnh+NPQSqdn5pmTYEQKb17rmJThD72LXvy9peuHGnCkIcfOLQeIFrn 9U+p04CRwPNhjhE0q1DVmqXxP3Sji5M+ATh5zsiEHlJAqMw6BJCS8nGtSfHNbbTbcZ1k 78qqO1mZFRxFOlhKelNH74crJX1K26WEOZaZ+Rx0L5jUIuYxUecgpkScCIrCd6UUBwGS kTzck+YvoLVRe6K6rOzgXvn92h8mCQpmBjQzz7R1XDHGMH4RhDc2lyd/bQoQbOM+XtTJ KKrBmuFua+IRGIygVGfgOVUGUOLlCgmXc5CjD/eWTxcByGfX8XbMrSiSBaFzMyotfaaz pFJw== X-Forwarded-Encrypted: i=1; AFNElJ8JBvZKGIc3oZ303sQcok57WkG3E1TMyrasopE9lDZLzu7vmpJZs30LMBgek97TxG7BH+2hc97MzRvn@lists.postgresql.org X-Gm-Message-State: AOJu0YxKEFsV42mgaZZNCZO/3jApcGuCEblxkEAqhho3NRmyRi4VOnt0 pUMVWT+BSqVj18zkMC7BZ56MaB3GLme2nLOJir/tuse7B5uWLJyihZgypYm5q/qNvhSbd3S8ijy whBBF9MDceSSbN8DcmxNaefteK9RaCyg= X-Gm-Gg: AeBDiesYVnDFer2eJFQHKJZzqnDWFMSpQnqeVqh5WEAYyNgriYRyWg1tNY8Lo0+pYdB cH7NsiueaQ/7wdKgiWo+sv6iTiY0oxZh5EeHH4BateGnGZU1mFzcmyfK0MV37SuLpXKZyjg+fUF vEwSPzpSWbYUd9lP/cGx0GpyiWnrC4mx6tGPcZvY3jLnGAaN/Uo/VHtp8Ze63T2MDKX7i22vle9 2Cfvk3jCiVZdEhaznyO8Rqj1t581sURPBNDoOliH4atiadGdN5NqmhpcPHpPkKIjQJys8edLNQv 9nLcEKvG9e0opdxOUA== X-Received: by 2002:a53:e3c4:0:b0:650:3ed8:f89e with SMTP id 956f58d0204a3-65198ab6341mr15429060d50.25.1776268557204; Wed, 15 Apr 2026 08:55:57 -0700 (PDT) MIME-Version: 1.0 References: <177609278737.403059.14174275013090471947@wrigleys.postgresql.org> In-Reply-To: <177609278737.403059.14174275013090471947@wrigleys.postgresql.org> From: "David G. Johnston" Date: Wed, 15 Apr 2026 08:55:20 -0700 X-Gm-Features: AQROBzAl9eyvJcRoa8KuLqYWxER1qTT0SJTy96qJZMVnd20prHvZoD4YfTt9Sa4 Message-ID: Subject: Re: Logical Replication upgrade To: mimidatabase@gmail.com, pgsql-docs@lists.postgresql.org, Amit Kapila Content-Type: multipart/alternative; boundary="00000000000060c108064f81c0ac" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000060c108064f81c0ac Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 its > current wording: > All slots on the old cluster must be usable, i.e., there are no slots who= se > pg_replication_slots.conflicting is not true. > > The prerequisite is that no replication slot has conflicting=3Dtrue right= ? > 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%20= no%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/7fdeaf5774d05245e82632e763665ff= 62db5598e I've copied the committer for this. Removing the "not" is simple enough; though writing in the negative sense, while good for an SQL where clause, does make reading in English more difficult. Would rather say "all slots must be false" rather than "no slots can be true". The next item regarding no persistent slots has the same complaint though it is factually correct as written. Though NULL is a valid value here so maybe the negative phrasing is indeed necessary... David J. --00000000000060c108064f81c0ac Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Apr 15, 2026 at 7:52=E2=80=AFAM P= G Doc comments form <noreply@postgresql.org> wrote:
The foll= owing 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= its
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 right?<= br> 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-R= EPLICATION-CLUSTER:~:text=3Dthere%20are%20no%20slots%20whose%20pg_replicati= on_slots.conflicting%20is%20not%20true


You are correct.=C2=A0 Usage of a double-negative should be avoided a= s a matter of style, but in this case it actually resolves to an untrue sta= tement.


I've copied the committer for this.=C2=A0 = Removing the "not" is simple enough; though writing in the negati= ve sense, while good for an SQL where clause, does make reading in English = more difficult.=C2=A0 Would rather say "all slots must be false" = rather than "no slots can be true".=C2=A0 The next item regarding= no persistent slots has the same complaint though it is factually correct = as written.=C2=A0 Though NULL is a valid value here so maybe the negative p= hrasing is indeed necessary...

David J.

--00000000000060c108064f81c0ac--