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
v63-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch
Description: Binary data
v63-0002-Change-syntax-of-CREATE-PUBLICATION-.-FOR-ALL-TA.patch
Description: Binary data
