Re: Skipping schema changes in publication

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Shlok Kyal <shlok.kyal.oss@gmail.com>, vignesh C <vignesh21@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Peter Smith <smithpb2250@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-02-08T10:20:58Z
Lists: pgsql-hackers
On Fri, Feb 6, 2026 at 3:54 PM shveta malik <shveta.malik@gmail.com> wrote:
>
> On Thu, Feb 5, 2026 at 10:59 AM Shlok Kyal <shlok.kyal.oss@gmail.com> wrote:
> >
> > I have added the fix of the same in the latest v41 patch and added the
> > corresponding test in 101_test.pl file.
> > I have also merged the v40-0001 and v40-0002 patches  to form v41-0001
> > patch and v41-0002 has the extended tests.
> >
>
> Thank You for the patched Shlok. While testing I found a case where
> table-sync and incremental-sync are not replicating same set of
> tables.
>
> I have attached the test-case and results in DifferentPubViaRoot.txt
>
> The problem happens when we have a subscriber subscribing to multiple
> pubs with different EXCEPT and different PUBLISH_VIA_PARTITION_ROOT
> value. Example:
>
> CREATE PUBLICATION pub1 for ALL TABLES EXCEPT table (tab_part_1_p1,
> tab_part_2_p2) WITH (PUBLISH_VIA_PARTITION_ROOT=true);
> CREATE PUBLICATION pub2 for ALL TABLES EXCEPT table (tab_part_2) WITH
> (PUBLISH_VIA_PARTITION_ROOT=false);
>
> We need to decide the behaviour of such a case for Apporach1.
>

It is better to disallow such combinations where combining
publications could lead to contradictory behavior. For example, pub1:
FOR ALL Tables EXCEPT (tab1) and pub2: FOR TABLE tab1. Now, combining
pub1 and pub2 via subscription should result in an ERROR. We have
similar restrictions for column lists. See section: "Warning:
Combining Column Lists from Multiple Publications" in docs [1]. Does
that sound reasonable to you?

[1] - https://www.postgresql.org/docs/devel/logical-replication-col-lists.html

-- 
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 →
  1. Fix miscellaneous issues in EXCEPT publication clause.

  2. Change syntax of EXCEPT TABLE clause in publication commands.

  3. Add support for EXCEPT TABLE in ALTER PUBLICATION.

  4. Allow table exclusions in publications via EXCEPT TABLE.

  5. Add wait_for_subscription_sync for TAP tests.