Re: Support EXCEPT for TABLES IN SCHEMA publications
Nisha Moond <nisha.moond412@gmail.com>
From: Nisha Moond <nisha.moond412@gmail.com>
To: Peter Smith <smithpb2250@gmail.com>
Cc: shveta malik <shveta.malik@gmail.com>,
Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-05-28T11:28:31Z
Lists: pgsql-hackers
Attachments
- v7-0001-Support-EXCEPT-clause-for-schema-level-publicatio.patch (application/x-patch)
- v7-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABLE.patch (application/x-patch)
- v7-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABLE.patch (application/x-patch)
On Tue, May 26, 2026 at 11:27 AM Peter Smith <smithpb2250@gmail.com> wrote: > > Hi Nisha. > > Some review comments for patch v6-0003. > Thanks for the review. All comments are addressed in v7. Please find responses below for a few of the comments. > > 3. > The <literal>EXCEPT</literal> clause can be used with > - <literal>ADD TABLES IN SCHEMA</literal> to exclude specific tables from a > + <literal>ADD TABLES IN SCHEMA</literal> and > + <literal>SET TABLES IN SCHEMA</literal> to exclude specific tables from a > schema-level publication. <literal>EXCEPT</literal> is not supported with > <literal>DROP TABLES IN SCHEMA</literal>; instead, dropping a schema from > the publication automatically removes all of its associated > > 3a. > This whole description section seems arranged in a confusing way IMO. > Anyway, it is not all the fault of the current patch. But I don't > think it should be talking about "SET TABLES IN SCHEMA" here because > that was all mentioned already in the earlier "third variant" > paragraph. > Right. it seems repeating. Removed "SET TABLES IN SCHEMA" related info. > ~ > > 3b. > That last sentence all about EXCEPT with DROP TABLES IN SCHEMA seems > redundant to me. It is not allowed by the synopsis, so there is no > possible confusion about it being supported. Isn't it better to just > say nothing? > Okay, that makes sense. Fixed. > ~~~ > > 4b. > This description about EXCEPT is missing talking about FOR ALL TABLES > EXCEPT, but IIRC I already reported that in a previous review. > Yes, we can handle this in a separate patch. > ~~~ > > PublicationDropSchemas: > > 12. > + /* > + * Collect prexcept rows for tables belonging to this schema before > + * removing the schema entry. GetExcludedPublicationTables relies on > + * is_schema_publication(), which scans pg_publication_namespace; if > + * this is the last schema in the publication, performDeletion() below > + * would remove that row and make is_schema_publication() return > + * false, tripping the assertion. > + */ > > What assertion? > The assertion is Assert(GetPublication(pubid)->alltables || is_schema_publication(pubid)) in GetExcludedPublicationTables(). I’ve trimmed the comment a bit, as it felt slightly over-explained. ~~~~ Please find the updated patch-set v7 attached. -- Thanks, Nisha