Re: Skipping schema changes in publication

shveta malik <shveta.malik@gmail.com>

From: shveta malik <shveta.malik@gmail.com>
To: Shlok Kyal <shlok.kyal.oss@gmail.com>
Cc: vignesh C <vignesh21@gmail.com>, "David G. Johnston" <david.g.johnston@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Peter Smith <smithpb2250@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>, shveta malik <shveta.malik@gmail.com>
Date: 2026-02-19T11:51:50Z
Lists: pgsql-hackers
On Thu, Feb 19, 2026 at 10:13 AM Shlok Kyal <shlok.kyal.oss@gmail.com> wrote:
>
>
> Thanks for reviewing the patch. I have addressed the remaining
> comments in the v46 patch..
>

Thanks. Please find a few comments:

1)
pg_get_publication_effective_tables has
+ ereport(ERROR,
+ errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot use multiple publications with EXCEPT TABLE lists"),
+ errdetail("The following publications have exceptions: %s.",
+   pub_names->data));

LoadPublications has:
+ ereport(ERROR,
+ errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot use multiple publications with EXCEPT TABLE lists"),
+ errdetail("Publications (%s) define EXCEPT TABLE clauses.",
+   pub_names_str.data));

check_publications_except_list has:
+ ereport(ERROR,
+ errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot combine publications %s with EXCEPT TABLE clauses",
pubnames.data));

Can we make all three messages the same based on which format was
decided earlier.

2)
+/* Helper: Check syscache for prexcept flag */
+bool
+is_relid_excepted(Oid relid, Oid pubid)

Can we move this function just before 'is_relid_or_ancestor_excepted'
as they are related functions? Can we also change the comments as well
similar to other functions?

3)
I see that is_schema_published() is only needed by
is_relid_or_ancestor_published() which calls is_relid_published()
already. Shall we make logic of 'is_schema_published' as part of
'is_relid_published' itself i.e. we will consider relid published if
it is published explicitly or as part of schema? Thoughts? This will
help us to avoid having 'is_schema_published' function separately when
its usage is quite limited.

4)
pg_get_publication_effective_tables() has neighboring comments:

+ /* Check whether this publication defines any EXCEPT entries */

+ /*
+ * This publication includes all tables without except.
+ */

We can choose the same comment style at both places. Please check the
rest of the function too.

thanks
Shveta



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix miscellaneous issues in EXCEPT publication clause.

  2. Change syntax of EXCEPT TABLE clause in publication commands.

  3. Add support for EXCEPT TABLE in ALTER PUBLICATION.

  4. Allow table exclusions in publications via EXCEPT TABLE.

  5. Add wait_for_subscription_sync for TAP tests.