Re: Support EXCEPT for TABLES IN SCHEMA publications

From: shveta malik <shveta(dot)malik(at)gmail(dot)com>
To: vignesh C <vignesh21(at)gmail(dot)com>
Cc: Peter Smith <smithpb2250(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org, shveta malik <shveta(dot)malik(at)gmail(dot)com>
Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications
Date: 2026-08-20 08:39:37
Message-ID: CAJpy0uAQ=1jEd-kz0sP=vVpcpOL3-5EJ1An8abvjkSUGALjwTQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Aug 19, 2026 at 3:47 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
>
> On Tue, 18 Aug 2026 at 13:34, Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
> >
> > Hi Vignesh/Nisha,
> >
> > IMO, it feels like these patches are doing too much work trying to
> > protect the user from themselves, and it is even making some
> > combinations difficult to specify.
> >
> > Also, there is a lot of logic and many lines of code now just for
> > checking publication command "inconsistencies".
>
> I still feel we should throw the error at CREATE PUBLICATION itself.
> That would make the conflict clear to the user and allow them to
> modify the publication accordingly.

Okay. Noted.

> Otherwise, in a conflicting case
> like the following, it may be unclear whether the table will actually
> be published:
> CREATE TABLE s1.parent (a int);
> CREATE TABLE s2.child (b int) INHERITS (s1.parent);
> CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1 EXCEPT (TABLE s1.parent), s2;
>
> Here, it may not be obvious whether s2.child will be published because
> schema s2 is included, or whether it will be skipped because its
> parent s1.parent is specified in the EXCEPT clause.
>
> I have tried to simplify the patch.

Yes, it looks simpler compared to v28.

> The new version now only has two
> changes to detect the new conflicts:
> a) GetExceptCrossSchemaDescendants - Collects descendants of the
> EXCEPT entries that reside outside the schema of the corresponding
> TABLES IN SCHEMA clause.
> b) Add few additional checks to the existing
> CheckExceptConflicts(renamed from CheckExceptNotInTableList)
> Checks whether any of these cross-schema descendants are also being
> published, either explicitly or through another TABLES IN SCHEMA
> clause, and throws an error if they are.
>
> Please have a look and let me know whether the v29 version is simpler.
>

I had a quick look, it looks better than v28. I will review and
validate it in detail by tomorrow.

thanks
Shveta

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Alexander Lakhin 2026-08-20 09:00:01 Re: Test tidscan,sql is not immune to autovacuum in v14
Previous Message Amit Langote 2026-08-20 08:34:13 Re: PG19 FK fast path: OOB write and missed FK checks during batched