Re: Skipping schema changes in publication
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Cc: shveta malik <shveta.malik@gmail.com>, vignesh C <vignesh21@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>, Dilip Kumar <dilipbalaut@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>, 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-04-22T11:32:01Z
Lists: pgsql-hackers
On Wed, Apr 22, 2026 at 3:33 PM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote: > > On Wednesday, April 22, 2026 5:54 PM shveta malik <shveta.malik@gmail.com> wrote: > > On Mon, Apr 20, 2026 at 5:43 PM vignesh C <vignesh21@gmail.com> wrote: > > > > > > Hi, > > > > > > When changing a table to UNLOGGED, tables that appear in publications > > > via EXCEPT clauses (prexcept = true) are currently allowed, but their > > > entries remain in pg_publication_rel. > > > > > > For example: > > > postgres=# create table t1(c1 int); > > > CREATE TABLE > > > postgres=# create publication pub1 for all tables except (table t1); > > > CREATE PUBLICATION postgres=# alter table t1 set unlogged; ALTER TABLE > > > postgres=# \d t1 > > > Unlogged table "public.t1" > > > Column | Type | Collation | Nullable | Default > > > --------+---------+-----------+----------+--------- > > > c1 | integer | | | > > > Except publications: > > > "pub1" > > > > > > Since UNLOGGED tables are not supported in publications, this leaves > > > stale catalog entries. This patch removes such entries from > > > pg_publication_rel when the table is changed to UNLOGGED, and emits a > > > NOTICE to inform the user. > > > > > > Another option considered was to throw an error when setting such > > > tables to UNLOGGED. However, allowing the operation was preferred, > > > since UNLOGGED tables do not generate WAL and are not replicated > > > anyway, so blocking the operation would be unnecessarily restrictive. > > > > > > Attached patch has the changes for the same. > > > > > > > The main concern of removal table form EXCEPT-list is that once the table is > > changed back to LOGGED, there is no internal way to add it to the EXCEPT list > > again. > > > > OTOH, raising an ERROR does not seem like a good solution either. When a > > user converts a table to UNLOGGED, they are effectively excluding it from > > publications. Therefore, throwing an error for the purpose that "table is part > > of EXCEPT, cannot convert it to UNLOGGED" does not appear appropriate, > > since both actions ultimately exclude the table from publication. I think we > > can keep the current behavior unchanged as it causes no harm. > > I also personally prefer keeping the current behavior, as there is no harm in > doing so, and I'm not sure whether reporting one more ERROR would make users > happy. > +1. -- With Regards, Amit Kapila.
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