| From: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
|---|---|
| To: | Peter Smith <smithpb2250(at)gmail(dot)com> |
| Cc: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: CREATE/ALTER PUBLICATION improvements for syntax synopsis |
| Date: | 2025-11-20 03:05:26 |
| Message-ID: | 5217AD5E-4C6A-4BA3-B222-0C919F950EE5@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
> On Nov 20, 2025, at 09:41, Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
>
> On Thu, Nov 20, 2025 at 12:03 PM Fujii Masao <masao(dot)fujii(at)gmail(dot)com> wrote:
>>
>> On Thu, Nov 20, 2025 at 9:02 AM Chao Li <li(dot)evan(dot)chao(at)gmail(dot)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/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chao Li | 2025-11-20 03:36:42 | Re: Use strtoi64() in pgbench, replacing its open-coded implementation |
| Previous Message | Andres Freund | 2025-11-20 02:47:49 | Re: Buffer locking is special (hints, checksums, AIO writes) |