On Thu, Nov 20, 2025 at 2:06 PM Chao Li <[email protected]> wrote: > > > > > On Nov 20, 2025, at 09:41, Peter Smith <[email protected]> wrote: > > > > On Thu, Nov 20, 2025 at 12:03 PM Fujii Masao <[email protected]> wrote: > >> > >> On Thu, Nov 20, 2025 at 9:02 AM Chao Li <[email protected]> wrote: > >>> V6 looks better. > >> > >> +1. Thanks for updating the patch! > >> > >> +<phrase>and <replaceable class="parameter">table</replaceable> > >> is:</phrase> > >> + > >> + [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] > >> > >> I have one question: in lock.sgml and truncate.sgml, the syntax > >> "[ ONLY ] name [ * ] [, ... ]" seems shown as acceptable (though > >> I'm not entirely sure it's actually valid). If that form is allowed, > >> then this change may not be necessary? > >> > > > > I think if this were strict BNF rules, then the bindings of the "..." > > are not correct. I think the Postgres documentation is a bit loose > > with the rules (e.g. your TRUNCATE example is deemed acceptable) > > > > A user might also wonder if "ONLY a,b" means the same as "ONLY a", "ONLY b"? > > > > But, in the interest of not bloating the ALTER PUBLICATION synopsis > > too much, and still being consistent with what seems accepted by > > existing PG docs, I am happy to remove that extra 'table' replacement > > class. Maybe it's a bit ambiguous, but it seems mostly harmless. > > > > Thoughts? > > > > I think the new code of publication_drop_object has changed the original > meaning. > > Old code: > ``` > - TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ > * ] [, ... ] > ``` > > Means the drop clause can be: > ``` > ALTER PUBLICATION DROP TABLE ONLY t1*, TABLE ONLY t2* > ``` > > Now, the new code: > ``` > + TABLE <replaceable class="parameter">table</replaceable> [, … ] > <phrase>and <replaceable class="parameter">table</replaceable> is:</phrase> > + > + [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] > ``` > > Changes the meaning to: > ``` > ALTER PUBLICATION DROP TABLE ONLY t1*, ONLY t2* > ``` >
There are 2 sets of ellipses: Here: "publication_drop_object [, ...]" And here "TABLE <replaceable class="parameter">table</replaceable> [, … ]" So I think there is no change of meaning. AFAICT all variations are possible, same as they always were. It just depends which way you squint at the syntax -- e.g. are you conceptually expanding another "publication_drop_objecr" replacement or expanding another "table" replacement. > So, I think we should keep the old code. Anyway, I am happy to go back to the old code. I'll post another patch later to do that. ====== Kind Regards, Peter Smith. Fujitsu Australia
