Re: Skipping schema changes in publication

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Shlok Kyal <shlok.kyal.oss@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>
Date: 2026-02-20T09:08:03Z
Lists: pgsql-hackers
On Thu, 19 Feb 2026 at 17:22, shveta malik <shveta.malik@gmail.com> wrote:
>
> 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 for the comments. These comments are addressed in the v47
version patch posted at [1].
[1] - https://www.postgresql.org/message-id/CALDaNm3X24fJznRUFh6NVhY1SDzgY9Aie1Ks%3Db6YqmAx-Z4H7Q%40mail.gmail.com

Regards,
Vignesh



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.