Re: CREATE/ALTER PUBLICATION improvements for syntax synopsis
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: Peter Smith <smithpb2250@gmail.com>
Cc: Fujii Masao <masao.fujii@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-11-20T03:05:26Z
Lists: pgsql-hackers
> On Nov 20, 2025, at 09:41, Peter Smith <smithpb2250@gmail.com> wrote: > > On Thu, Nov 20, 2025 at 12:03 PM Fujii Masao <masao.fujii@gmail.com> wrote: >> >> On Thu, Nov 20, 2025 at 9:02 AM Chao Li <li.evan.chao@gmail.com> 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* ``` So, I think we should keep the old code. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Commits
-
doc: Fix misleading synopsis for CREATE/ALTER PUBLICATION.
- f9f928304bb7 15.16 landed
- fc6e1a0f2bad 16.12 landed
- d7977668eec6 17.8 landed
- 9ad15f404a70 18.2 landed
- 246ec4a51c16 19 (unreleased) landed