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 1vqS4G-00B1yb-0Q for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 08:28:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vqS4F-007TrM-18 for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Feb 2026 08:28:56 +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 1vqS4E-007TrE-2e for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 08:28:55 +0000 Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vqS4C-00000000Fpj-3XLT for pgsql-hackers@lists.postgresql.org; Thu, 12 Feb 2026 08:28:54 +0000 Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-40438380b88so1892207fac.3 for ; Thu, 12 Feb 2026 00:28:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770884933; cv=none; d=google.com; s=arc-20240605; b=JVvVVyTajkeer7Py7SQacARsF9jr/+ME9iYB+9+8+kW09Z5QhVYy481Uz1tjAh9DF2 stz88C6FrShXN4dTpDxRqvp9bWq1tIN8Yj5CHm48nuRKJB+Wse/WlTAvu4g/N2L7B9Oa 7R/2SIVxDQ1tonO6lMvnjoC1oQ/YqcpPK3vYqgE4OHFoawMO1wgpOdKOed2OujZs2Ejq 8v1HfjoDsbTb3dPGkmlQUGOhTwJGwwA6Z2KsyiK/ki05MjCR5jBoLYBUvQZ2AE+0aezm 78NRdthysRI7n+8+qtV+Cw/DwmasBGdvQ73xvoo0OTT4e8mx0QS+tDeWqPUX9tbFXSwb QtmQ== 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:in-reply-to:references :mime-version:dkim-signature; bh=SzLbLXNOLT/oqhM9B9p/xGGK2R5rFZDBpQ8zgctQHlg=; fh=4uk+89mVyg5veEfQ6pyh91tHE9a0SPk/oaQbrPcdJdU=; b=FMByGbz03qV0r+POluoj5q5PTi0mPAMBSaBB6YC9mXvPatTQZTNneN0Xo7eER3s5fJ ZEDuKRU6VQnWheLn/cLAzKOD/ciwseWgTInU/t8MmVZ1cTqcxvni6hYYGRT9nEfG5yBP SM123HGb7xBReuaKhNkK0vBNxobJ6dq4Vb7q8Zb/D4vhjWZSkiqwjTl7dBs1UM5007Xr qJDuwvmiLV7o+v3N0QbunM77H3syulkFh5z4T0WEM74rBHzgQDw00YeL6SGccTMl7nkS 3mLiCYmB25sNjiY+y+zTxinEXlnlMS4tY73zc1Xkjlv/39eXyRWo0WeXSNQOib7Wm5WG hoMQ==; 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=20230601; t=1770884933; x=1771489733; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=SzLbLXNOLT/oqhM9B9p/xGGK2R5rFZDBpQ8zgctQHlg=; b=nOxr1ha9EwiaJwlXV8NtATyNobMdb9Vz9cD5+R94a2TS4x3LXPZctUU3iJ7BfxMjgN yxT/dIo5lTHS5xheP9Kc+mkRpdmrPqEJqTtYkAo/SDc7lZW4A+1Wri3SiyH4AzETW5dj f93fjEOSDewK0FMs3hi6RJNvtYhyp1jTQyaPMfH9zr3ybUBI3BGbYUt9cCtgYDXQ3efC hbehvPIqxxaONxHGtXt8i8q8SGcXe2OMNGqr3ZJaorFtMR8jZbmcYawSSLFPsk2yRseM joI4jo+YJdHCCZSF0etnHZesosJa+Dheiwiw1RQq0O7hFjk1sQmI0LlmN6XvqQxpSube FWxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770884933; x=1771489733; h=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=SzLbLXNOLT/oqhM9B9p/xGGK2R5rFZDBpQ8zgctQHlg=; b=lOvSIaXYOhoNq7wNLbjC+D6qoP/woNFqHffhVRAhmnLELO/d/IAYc8Ij9Q0Ivl2NIu piF4mWrKtHImBSXYLO08sm2XaaGjc+uv5+bjJy+nenIMoB3a9mNKGSlvM7dV2raSCbSg eZQqRnJQcwra9v5kW7c6yoOUs+BM4FSAozeMIVEy2XACoilEKtnbbnf1Dh69rOTD9Sk4 UNAQ4dArNXX2jZJIGZXhLfCcIJYd9EUmWBTzF7WAl7wDCJ8rWNEqXcy046ffKwxD20oM uk/wjsvorK0Pq7syrTTxJ9FX+084nAfCcgPLgITVjr9Emef/4IBopeQzyBEkn9qNOktp xxOw== X-Forwarded-Encrypted: i=1; AJvYcCUajURuhCVl+lm5SMsZbJT/ragflOZrckH/E9iR8GGukbTRQeC/v25eSn1rROeX/tchIFaPa5yCkGFexvVh@lists.postgresql.org X-Gm-Message-State: AOJu0YwbsGLAWzHSFWsG1mboQR+HwsmNwZLxDlqVgiezNeBvdNAo1cfr zdyqbfdhIeG2Pu8YHi6F7yAsLyoGkqemeKTO6beZkXFFdISyjl9ydpoCoSPFCwooKRj8AooRXuI K1E7Qp4pgo9V3BENaVV3Twc3ML1n6rPc= X-Gm-Gg: AZuq6aKcFQvMP6pcSdah5Hvc+HSrspxQVYYZqYMbMrbcNg0eYH8h85aC/VZkGbHI2Un SiN3C1VIhaFvhzTrfPYxA7uQArraVPfX+h+PyMwjzrKeDxcw7h+VZnGZNypEQTpSE2qw16z/7lQ mecmy34iK1VfXTgZlCuYBAixmCzIbf+jXgSJ/GcBAY7AJXFTgZNFW12SbdEwq5aNMidXFBlfJBy vPd9o+hKQAeWyctqXW1PUH155PPeRU7GG6nqInEX0quyyjHZCFdyjl+BEI6dQI3KjRqLsRT0khh Lh2CPd7C X-Received: by 2002:a05:6820:4d5b:20b0:676:6c3c:a1eb with SMTP id 006d021491bc7-6766c3cac3fmr22727eaf.59.1770884932821; Thu, 12 Feb 2026 00:28:52 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: "David G. Johnston" Date: Thu, 12 Feb 2026 01:28:16 -0700 X-Gm-Features: AZwV_Qj9AZjmPs487ZZicZZG3BpP7QvuAwlX8VQfQiAaSPRrUXcjrl4CBhhc07o Message-ID: Subject: Re: Skipping schema changes in publication To: Shlok Kyal Cc: shveta malik , vignesh C , Amit Kapila , Peter Smith , Dilip Kumar , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/alternative; boundary="0000000000005be70e064a9c4728" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005be70e064a9c4728 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 11, 2026 at 11:58=E2=80=AFPM Shlok Kyal wrote: > > We have addressed the comments in the latest v43 patch. > Non-comprehensive review. Shouldn't the early exits look like: if (list_length(publications) < 2) return; perform query here, capture except_publications if (list_length(except_publications) < 2) return; construct error message and ereport + if (publication_has_any_exception(puboid)) + { + except_pub_names =3D lappend(except_pub_names, + makeString(pubform->pubname.data)); + has_any_exclusion =3D true; + except_pub_id =3D pubform->oid; + } Either rename has_any_exclusion to has_any_exception or, given how ambiguous that reads in code, maybe standardize on calling these exclusions throughout the code and either just accept we've chosen EXCEPT for the syntax for good reasons or consider whether to EXCLUDING (table1, table2) would be a better choice. + errmsg("could not get non excluded table list for table \"%s.%s\" from publisher: %s", -- triple negative; try to avoid "non excluded" as a term - those are "included". pg_get_publication_effective_tables - the second input argument is an array of publication names so the singular form here is a bit misleading. Should this be subscription-oriented? Otherwise, pg_get_tables_from_publications seems like a more accurate name. "effective" or "only the included ones" seems reasonable to imply. Related, the check in there for "does at least one publication have an exclusion list" makes sense but feels awfully similar to the check for "at most one publication has an exclusion list"...too late for me to figure out what if anything to do make/do about it though. David J. --0000000000005be70e064a9c4728 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Feb 11, 2026 at 11:58=E2=80=AFPM Shlok Kyal <shlok.kyal.oss@gmail.com> = wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
We have addressed the comments in the latest v43 patch.

Non-comprehensive review.

Should= n't the early exits look like:

<begin function= >
if (list_length(publications) < 2)
=C2=A0 =C2=A0 re= turn;

perform query here, capture except_publications<= /div>

if (list_length(except_publications) < 2)
= =C2=A0 =C2=A0 return;

construct error message and ere= port
<end function>


=
+ if (publication_has_any_exception(puboid))
+ {
+ exc= ept_pub_names =3D lappend(except_pub_names,
+ =C2=A0 makeStri= ng(pubform->pubname.data));
+ has_any_exclusion =3D true;
+ = except_pub_id =3D pubform->oid;
+ }

= Either rename has_any_exclusion to has_any_exception or, given how ambiguou= s=C2=A0that reads in code, maybe standardize on calling these exclusions th= roughout the code and either just accept we've chosen EXCEPT for the sy= ntax for good reasons or consider whether to EXCLUDING (table1, table2) wou= ld be a better choice.

+ errmsg("could not ge= t non excluded table list for table \"%s.%s\" from publisher: %s&= quot;, -- triple negative; try to avoid "non excluded" as a term = - those are "included".

pg_get_publication= _effective_tables - the second input argument is an=C2=A0array of publicati= on names so the singular form here is a bit misleading.=C2=A0 Should this b= e subscription-oriented?=C2=A0 Otherwise, pg_get_tables_from_publications s= eems like a more accurate name.=C2=A0 "effective" or "only t= he included ones" seems reasonable to imply.

Rela= ted, the check=C2=A0in there for "does at least one publication have a= n=C2=A0exclusion list" makes sense but feels awfully similar to the ch= eck for "at most one publication has an exclusion list"...too lat= e for me to figure out what if anything to do make/do about it though.

David J.

--0000000000005be70e064a9c4728--