Re: Skipping schema changes in publication
David G. Johnston <david.g.johnston@gmail.com>
From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Shlok Kyal <shlok.kyal.oss@gmail.com>
Cc: shveta malik <shveta.malik@gmail.com>, vignesh C <vignesh21@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>,
"Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, YeXiu <1518981153@qq.com>, Ian Lawrence Barwick <barwick@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-02-12T08:28:16Z
Lists: pgsql-hackers
On Wed, Feb 11, 2026 at 11:58 PM Shlok Kyal <shlok.kyal.oss@gmail.com>
wrote:
>
> We have addressed the comments in the latest v43 patch.
>
Non-comprehensive review.
Shouldn't the early exits look like:
<begin function>
if (list_length(publications) < 2)
return;
perform query here, capture except_publications
if (list_length(except_publications) < 2)
return;
construct error message and ereport
<end function>
+ if (publication_has_any_exception(puboid))
+ {
+ except_pub_names = lappend(except_pub_names,
+ makeString(pubform->pubname.data));
+ has_any_exclusion = true;
+ except_pub_id = 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.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix miscellaneous issues in EXCEPT publication clause.
- 6b0550c45d13 19 (unreleased) landed
-
Change syntax of EXCEPT TABLE clause in publication commands.
- 5984ea868eee 19 (unreleased) landed
-
Add support for EXCEPT TABLE in ALTER PUBLICATION.
- 493f8c6439cf 19 (unreleased) landed
-
Allow table exclusions in publications via EXCEPT TABLE.
- fd366065e06a 19 (unreleased) landed
-
Add wait_for_subscription_sync for TAP tests.
- 0c20dd33db16 16.0 cited