Re: Skipping schema changes in publication
Peter Smith <smithpb2250@gmail.com>
From: Peter Smith <smithpb2250@gmail.com>
To: vignesh C <vignesh21@gmail.com>
Cc: Shlok Kyal <shlok.kyal.oss@gmail.com>,
Amit Kapila <amit.kapila16@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, shveta malik <shveta.malik@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>,
Nisha Moond <nisha.moond412@gmail.com>, Ashutosh Sharma <ashu.coek88@gmail.com>,
"David G. Johnston" <david.g.johnston@gmail.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, YeXiu <1518981153@qq.com>, Ian Lawrence Barwick <barwick@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-03-31T00:29:39Z
Lists: pgsql-hackers
Hi Vignesh.
Some review comments for patch v4-0001.
======
doc/src/sgml/ref/alter_publication.sgml
1.
- [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ]
+ TABLE <replaceable class="parameter">table_object</replaceable> [, ... ]
+
+<phrase>and <replaceable class="parameter">table_object</replaceable>
is:</phrase>
+
+ [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ]
With the introduction of 'table_object' I expected that
'table_and_columns' and 'publication_drop_object' would also make use
of it. Why not?
======
doc/src/sgml/ref/create_publication.sgml
2.
- [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ]
+ TABLE <replaceable class="parameter">table_object</replaceable> [, ... ]
+
+<phrase>and <replaceable class="parameter">table_object</replaceable>
is:</phrase>
+
+ [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ]
With the introduction of 'table_object' I expected that
'table_and_columns' would also make use of it. Why not?
======
src/backend/parser/gram.y
3.
@@ -11399,7 +11399,7 @@ pub_obj_list: PublicationObjSpec
;
opt_pub_except_clause:
- EXCEPT TABLE '(' pub_except_obj_list ')' { $$ = $4; }
+ EXCEPT '(' TABLE pub_except_obj_list ')' { $$ = $4; }
| /*EMPTY*/ { $$ = NIL; }
;
@@ -11439,8 +11439,8 @@ PublicationExceptObjSpec:
pub_except_obj_list: PublicationExceptObjSpec
{ $$ = list_make1($1); }
- | pub_except_obj_list ',' PublicationExceptObjSpec
- { $$ = lappend($1, $3); }
+ | pub_except_obj_list ',' opt_table PublicationExceptObjSpec
+ { $$ = lappend($1, $4); }
;
IMO we should put 'table' in all those table-specific production names:
e.g. opt_pub_except_clause ==> opt_pub_except_table_clause
e.g. pub_except_obj_list ==> pub_except_tableobj_list
e.g. PublicationExceptObjSpec ==> PublicationExceptTableObjSpec
IIUC, in future when "FOR ALL SEQUENCES EXCEPT (SEQUENCES ...)" and/or
"FOR ALL SCHEMAS EXCEPT (SCHEMA ...)" are implemented then these names
won't be much good anymore, so I thought they should be made
table-specific now to avoid churning them later.
======
src/bin/psql/tab-complete.in.c
4.
- COMPLETE_WITH("EXCEPT TABLE (");
+ COMPLETE_WITH("EXCEPT ( TABLE");
(this is in several places in ALTER and CREATE)
In v3 the space in "( TABLE" was changed to "(TABLE", but now in v4
the space is back again. AFAICT the v3 change was in response to
review [1] (comment #2). Was it reverted deliberately?
======
[1] https://www.postgresql.org/message-id/CAHg%2BQDe%2B7J0e1JLjpqe-NxVJMWXH6UDtqugrm%2BDP7rHEJLrBqQ%40mail.gmail.com
Kind Regards,
Peter Smith.
Fujitsu Australia
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix miscellaneous issues in EXCEPT publication clause.
- 6b0550c45d13 19 (unreleased) landed
-
Change syntax of EXCEPT TABLE clause in publication commands.
- 5984ea868eee 19 (unreleased) landed
-
Add support for EXCEPT TABLE in ALTER PUBLICATION.
- 493f8c6439cf 19 (unreleased) landed
-
Allow table exclusions in publications via EXCEPT TABLE.
- fd366065e06a 19 (unreleased) landed
-
Add wait_for_subscription_sync for TAP tests.
- 0c20dd33db16 16.0 cited