On Sat, 14 Mar 2026 at 15:05, Amit Kapila <[email protected]> wrote:
>
> On Fri, Mar 13, 2026 at 11:51 PM Masahiko Sawada <[email protected]> 
> wrote:
> >
> > On Fri, Mar 13, 2026 at 2:51 AM Amit Kapila <[email protected]> wrote:
> > >
> > > On Fri, Mar 13, 2026 at 8:55 AM Peter Smith <[email protected]> wrote:
> > > >
> > > > Hou-San (off-list) gave an interesting example of how it might look
> > > > when the example is combined with the hypothetical future ability to
> > > > exclude all schema tables from a "FOR ALL TABLES"
> > > > CREATE PUBLICATION pub FOR ALL TABLES EXCEPT (TABLE t1, t2, TABLES IN
> > > > SCHEMA s1);
> > > >
> > >
> > > So, if we follow this, in future, the syntax would look like:
> > > Create publication pub1 FOR ALL TABLES EXCEPT (TABLE t1, t2, TABLES IN
> > > SCHEMA s1, s2), ALL SEQUENCES EXCEPT (SEQUENCE s1);
> > >
> > > I think if we use the above syntax then one can also argue that why
> > > not use FOR ALL (TABLES, SEQUENCES) instead of ALL TABLES, ALL
> > > SEQUENCES.
> >
> > The same is true for the syntaxes of TABLE(t1, t2) and SCHEMA(s1, s2),
> > no? If we allow grouping the tables and the schemas by TABLE and
> > SCHEMA keywords respectively in exclusion lists, one could argue why
> > we don't allow it for the inclusion list.
> >
> > >
> > > Instead the current command would like:
> > > Create publication pub1 FOR ALL TABLES EXCEPT TABLE (t1, t2), EXCEPT
> > > TABLES IN SCHEMA (s1, s2), ALL SEQUENCES EXCEPT SEQUENCE (seq1, seq2);
> > >
> > > Though it is slightly lengthy it makes the syntax local such that the
> > > meaning of a clause is determined by what is inside it, not by
> > > something that appears ten words later.
> >
> > While it helps the syntax locality, I'm concerned that it could make
> > the context of the EXCEPT clause ambiguous. For example, IIUC the
> > above syntax rule would allow us to write:
> >
> > CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT TABLES IN SCHEMA (s1),
> > EXCEPT TABLE (t1);
> >
> > Regarding the second EXCEPT clause, while one might think it excludes
> > t1 from ALL TABLES, one might think it excludes t1 from the first
> > EXCLUDE clause (i.e., the publication actually includes t1 in the
> > publication).
> >
>
> According to me, the comma between EXCEPT clauses breaks such a chain
> of thought but others may think differently. The docs can clarify such
> a confusion if any but if multiple people interpret it the way you
> think, I am fine to go with the direction you are proposing. I am
> slightly worried that both syntaxes have some pros and cons, so even
> if we change to what you are suggesting, one can argue to go back to
> previous syntax as that also has some merits. So, I feel we can
> complete the pending patch [1] and try to get the opinion of some
> other people unless changing the code to support another alternative
> is difficult.

+1 to proceed with completing the pending work.
I implemented the suggested new syntax, and it only requires a few
lines of code changes. I evaluated the change to ensure there is no
additional complexity, and it appears straightforward. We can switch
to the new syntax once we gather a few more opinions and finalize it.
The attached 0002 patch includes the corresponding changes.

Regards,
Vignesh

Attachment: v63-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch
Description: Binary data

Attachment: v63-0002-Change-syntax-of-CREATE-PUBLICATION-.-FOR-ALL-TA.patch
Description: Binary data

Reply via email to