public inbox for [email protected]  
help / color / mirror / Atom feed
From: shveta malik <[email protected]>
To: Shlok Kyal <[email protected]>
Cc: vignesh C <[email protected]>
Cc: Dilip Kumar <[email protected]>
Cc: Amit Kapila <[email protected]>
Cc: Peter Smith <[email protected]>
Cc: Zhijie Hou (Fujitsu) <[email protected]>
Cc: YeXiu <[email protected]>
Cc: Ian Lawrence Barwick <[email protected]>
Cc: Bharath Rupireddy <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Cc: shveta malik <[email protected]>
Subject: Re: Skipping schema changes in publication
Date: Fri, 6 Feb 2026 15:53:57 +0530
Message-ID: <CAJpy0uB=gaJgDaP8MiVeZmpxALrmDPbx=fqoidAbzhwEO3cv-g@mail.gmail.com> (raw)
In-Reply-To: <CANhcyEWda-0kWVCn8zQ4z9snFK4sCo1-JEewFGWs-9PMrJAmrg@mail.gmail.com>
References: <CALDaNm3=JrucjhiiwsYQw5-PGtBHFONa6F7hhWCXMsGvh=tamA@mail.gmail.com>
	<CALj2ACVOzhs+BD+abFV2x4oKJdsDNd6SgsE7r8UjnZDCKGEckA@mail.gmail.com>
	<CAA4eK1K6Kr88d2S0zFdHRMyuoaZeNh+ktU+oigmCuD09_x_-+g@mail.gmail.com>
	<CAHut+PsvC-NezO3MJkdyEz=G1QRje2LntjwhQiEeVbmhOQuBMA@mail.gmail.com>
	<CALDaNm18VH2j8cTqfELHQ=0ZNognbGBhbHPteJenWQC6C2dueQ@mail.gmail.com>
	<CALDaNm0k_0Ccj47wzJzzPFwgQB7w=R5+Q2_nSqYrmMmjhmcRUw@mail.gmail.com>
	<CAHut+Pv_0DwyWoGQNMF+G2AGqMuJTzWQKRtmxaC+=zLTPL-Zkw@mail.gmail.com>
	<CALDaNm2-GJt2HsYTkLqQ=ecm=R-vOBw1=aM_d2EiYbz39x_cTQ@mail.gmail.com>
	<TYCPR01MB8373C3120C2B3112001ED6F1EDCF9@TYCPR01MB8373.jpnprd01.prod.outlook.com>
	<CALDaNm0iZZDB300Dez_97S8G6_RW5QpQ8ef6X3wq8tyK-8wnXQ@mail.gmail.com>
	<CAHut+PtiomM+iyAZHvb2dzfsPvRru266KuBe49hKy2n2h+m_zA@mail.gmail.com>
	<CALDaNm30KDnwX4Czi29fqLb8JBkuwqjbpj9ixwNXXox574NZqQ@mail.gmail.com>
	<CALDaNm1PfKRJsEzbKpyt=v4p3bw+_SzE+LFPsMhR5X+qs+0pPw@mail.gmail.com>
	<TYCPR01MB83730A2F1D6A5303E9C1416AEDD99@TYCPR01MB8373.jpnprd01.prod.outlook.com>
	<CALDaNm0sAU4s1KTLOEWv=rYo5dQK6uFTJn_0FKj3XG1Nv4D-qw@mail.gmail.com>
	<CALDaNm3CLRa95tpas6tEj8x58MUNDShxBNoYS+P8Uq5cryoAOw@mail.gmail.com>
	<CALDaNm0EKC3o=v+F7GneGibuCULGKkBWXmNaVB4GR9HoqD066A@mail.gmail.com>
	<CALDaNm1Z1Rmqj9s6P9ZzmrVA9F_vZ_DwwhYAJmsjqmY6dS3-hA@mail.gmail.com>
	<CAB8KJ=jJGuW=ozKmXZzKDUHZ_-J2ZYGOtJo=i2cnNbSu6=KuYg@mail.gmail.com>
	<CALDaNm1mbFP8fxHU_H1Ex4cT2Aq3n8FE79tq0TO5ThvFnDUYMA@mail.gmail.com>
	<CAB8KJ=jq4RwTs8K7pokmXQwQppP2ChVJLMSAdXaxAX+c1r+mdg@mail.gmail.com>
	<CALDaNm1mJvLni8GODebKBmyegXuZ18bLoG-Pz6H1MCX=vphCYA@mail.gmail.com>
	<CALDaNm3dWZCYDih55qTNAYsjCvYXMFv=46UsDWmfCnXMt3kPCg@mail.gmail.com>
	<CALDaNm1AQZYgT0tALRrkvpP1Q+8+e7vkGCUjQ-jim1C0q3e=zA@mail.gmail.com>
	<CAA4eK1KRdAPC=5=7tQ1GW0cRwD=zaDMi+T4u_k4GxPhPY6e8BQ@mail.gmail.com>
	<OS3PR01MB5718C8BE84B862E7E0CEC29B94BD2@OS3PR01MB5718.jpnprd01.prod.outlook.com>
	<CAA4eK1KYQz7cf46_D=6VkZ4J6Y8vJ88MMi=6zm2TJXDP+V1mLg@mail.gmail.com>
	<CANhcyEXZq4mP5dNgg7u=sMPwvxA4_ZN9U92uZEuzs=0xTu+8Yg@mail.gmail.com>
	<CANhcyEXspT3v5-Tdop9uqQV2HWBvZoN5P0BxXQ6Md6Mr7GXK9A@mail.gmail.com>
	<CAHut+PuiaLOCkiAx9nPnjk6wTbPFvnm9T5svTuKbgwJwTdea8w@mail.gmail.com>
	<CANhcyEV_MePxgftHY65et1WdOAk70M0C7PZ1STPUO8PXHVB1YA@mail.gmail.com>
	<CAHut+Ps0hSNqrjv_jT1AuXxO-CrZue3ixE0jKsxVhtArMrkujQ@mail.gmail.com>
	<CANhcyEXX3viVpYcGHD_fzhf_f6CDQWr2+VBywrJf5zm_XiB4tg@mail.gmail.com>
	<CAHut+PsXP_61ZXuVOx5u9FZGK3oH4taaA59oOzgqyygZx8ezWw@mail.gmail.com>
	<CANhcyEU+aPu6iAH2cTA0cDtn3pd6c_njBONCt3FubYZoEEnm8Q@mail.gmail.com>
	<CAHut+Pv2P6dJ7hZj_fmzN+=xzjvpOpgkAJvDZg3TD2xpvmY1NQ@mail.gmail.com>
	<CANhcyEW2LK4diNeCG862DE40yQoV3VAgf59kXUq2TuR8fnw5vQ@mail.gmail.com>
	<CAHut+PuSHScrODVGCM7P53Mv1HE2N6ThzkH4+gQ1eFXVeD-OCA@mail.gmail.com>
	<CANhcyEUtYV-9ujtxLasnxN_peT+3LuZjcRx1xUECh1CCmANB8w@mail.gmail.com>
	<CAHut+PuviFA6C7qps=+kDYfe3P99as8NCjbR=SYxoi0o96ipoA@mail.gmail.com>
	<CANhcyEXkeg3sjkS3DS9yU1ckz4ozUBNZ+RmrWaRNSSVCR8RquA@mail.gmail.com>
	<CAHut+PsHavMy_KJ0MwR9J6q0BTTty54TxS-KBZc7X6tb4u7rfA@mail.gmail.com>
	<CANhcyEU=k4+0BqOu25N76g738XKUwfLGGdf8e+ssGiRKHC4RwQ@mail.gmail.com>
	<CAHut+Ptdi8txJbMc+5Sp2uB4QLGOp-rZdkBbXyhAkxim0iAhBQ@mail.gmail.com>
	<CANhcyEW+uJB_bvQLEaZCgoRTc1=i+QnrPPHxZ2=0SBSCyj9pkg@mail.gmail.com>
	<CAHut+Ptq0-tMYUOvG3yR34AvuEzR9vUH=muqV_=uEO3zCuA6rA@mail.gmail.com>
	<CANhcyEUEMWSkTfGc7Q3B+UiOzSiOmOGLgK-+C5DXwtCGOnDBhg@mail.gmail.com>
	<CAHut+PuAgSDr3kbSxPMYEyCeGiJ5hgaT1JUvuiYPRT=Q+--O-Q@mail.gmail.com>
	<CANhcyEU_uuiKMRrd_E_DeYsyCvwY_u995E-Do3d66J7tQnzdzw@mail.gmail.com>
	<CANhcyEWK9sj9UY4uaV36Q8qxUv=8Joch0o98RCN5U3xLjUxAag@mail.gmail.com>
	<CALDaNm32XQDR4qsOhPQeophVbZ8r+ShJSSssoVfdPcwG6joPHQ@mail.gmail.com>
	<CANhcyEVt2CBnG7MOktaPPV4rYapHR-VHe5=qoziTZh1L9SVc6w@mail.gmail.com>
	<CAHut+PtGu2j72yV_as_TVKfWr3ctd18svReGEx3xa=q5BtKyKA@mail.gmail.com>
	<CANhcyEUh9ki36VTXyYf8UqUrfLX9ZhfP_f2LjpvvycgqWLQqqQ@mail.gmail.com>
	<CAHut+Pv96u0VciuSx2B99jDHEvn7svVJynCmw-qYb=z4Kc2knA@mail.gmail.com>
	<CANhcyEWGiWwGt1-v6d9bCAae9Np7cNPt+iRV9PXBZ0z=75XEVw@mail.gmail.com>
	<CANhcyEWAQHtUfgNPA2m-+okEh7pXaK5irBm+yzyNVJXL2LUTXw@mail.gmail.com>
	<CAHut+PuzcKXheZwgNvDJkwK5txd1kzNRxCmcJcbr=_9mGHjKtA@mail.gmail.com>
	<CANhcyEXCKPCAdoqBLAhxt64Nwf+7T52dd8daE3qvhBNTvro13Q@mail.gmail.com>
	<CAHut+Pu50yWjMR5Mswhi6uVKQmn3hO9o0ocRAgXyUUf4cnVTwg@mail.gmail.com>
	<CANhcyEV7ewT+nfLM2owquxW-_6m8Ju+P93y=acoS=JCBHoT-MQ@mail.gmail.com>
	<CAJpy0uDdQH7b=LRn_HevbmFACpvq9=c32Vb3tRvjSOnDsQd74w@mail.gmail.com>
	<CAA4eK1KZ1Sb0soHp3HH2htwJ3=qka-eQjW35vOW3+4VeWw4VoQ@mail.gmail.com>
	<CANhcyEXwLrQsec6g+1dqWTKyJQMQMh=getj28C+zLL14BjuumA@mail.gmail.com>
	<CAJpy0uD35+YmDahVNUm+NZsjisV_k2hUDBkiFOJDwAJ1o1CT9A@mail.gmail.com>
	<CANhcyEV_EVi5cgJ6WPvmeVAqjCS7Of+VAWuRHZtsVf8PQb_z7g@mail.gmail.com>
	<CAHut+Pu5Ukuvd_5oK_mTEjSOEAYupbEXzRqXwSPoLe_sDkA_fg@mail.gmail.com>
	<CANhcyEWg2WbEW_fFwk0D3J2KBrUF7th6VrE+gvESgkUKP9VpZg@mail.gmail.com>
	<CAJpy0uBegaytfG=AS5VUb-6jAEDzC374-1icn-hP5AnRoMJ+Lg@mail.gmail.com>
	<CAJpy0uD+orAxUWKq9Ogf5FEWtXcwkQXb_YZOvXqDc8b15nJe9A@mail.gmail.com>
	<CANhcyEVDTPVRWDm-BdJe0yaWFuz1ozTUFNHKvzX2YuiUHh=ArA@mail.gmail.com>
	<CAHut+Pu6ameXD4YwbhMXf8kHBhPJXGpOmc21R5o7Lo18hkSKMQ@mail.gmail.com>
	<CANhcyEUiwF9w2U6CzkuOsXkLYMOjPs=6O8QyjU_5fDfYWyMswg@mail.gmail.com>
	<CAJpy0uCnK7A8HE_mjWaVHDn9Q=CNJQM_mB=QTtseh=GQ4aGumQ@mail.gmail.com>
	<CANhcyEWewbuqrwLTuwZUSGRGmLSmRadiNKyDB1yt0Sm+JTMHZA@mail.gmail.com>
	<CAA4eK1KFdzZD3JvjfajhbHYYU9DErNcDVQZxfvGKv9npNfO5fQ@mail.gmail.com>
	<CAJpy0uD81HRrMYr7S-6AV4W2PtbGKM-nf2D89zsoMHJ9jZssUg@mail.gmail.com>
	<CAFiTN-sbpXXbU=u0U7SWjjouScAddZq+xb2FP8zfyVZZZt8z7w@mail.gmail.com>
	<CALDaNm2x3fR+AEji0ZruTdss-4WDatraXKs1QA44eVnsBmbUiA@mail.gmail.com>
	<CALDaNm3kX=16L-72m13CqXL9uAiHURNZ+BLo-HfTEYHDFejj-A@mail.gmail.com>
	<CAJpy0uBfEuzYX+qjAPM+GV5duOwMNqO6fkDtsN1OzONVNR9WGQ@mail.gmail.com>
	<CALDaNm2MZU8-JbFruQAxF8OZfcH4ZsBrCsWDg3VMbO-P+xKmBg@mail.gmail.com>
	<CANhcyEXP5BS+0Hq2o=Jmx6J5Nf+H0TW9yayO21NnVwtFqauDGw@mail.gmail.com>
	<CALDaNm1Y5C_-gOA95a+07P5z4DY=PuXbnvdqMT6g7t7OEKD2YA@mail.gmail.com>
	<CANhcyEWda-0kWVCn8zQ4z9snFK4sCo1-JEewFGWs-9PMrJAmrg@mail.gmail.com>

On Thu, Feb 5, 2026 at 10:59 AM Shlok Kyal <[email protected]> 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 will
be good to analyze row-filter and column-list behaviour for equivalent
cases i.e. publication publishing the same set of tables with
different row-filters and different PUBLISH_VIA_PARTITION_ROOT value.
Once we have clarity on that, we can decide about the behaviour here.

thanks
Shveta

tab_root  (RANGE partitioned on range_col)
├── tab_part_1  (range_col: 1 → 1000)
│   ├── tab_part_1_p1  (range_col: 1 → 500)
│   └── tab_part_1_p2  (range_col: 500 → 1000)
└── tab_part_2  (range_col: 1000 → 2000)
    ├── tab_part_2_p1  (range_col: 1000 → 1500)
    └── tab_part_2_p2  (range_col: 1500 → 2000)

CREATE TABLE tab_root (id int, range_col int) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_1 PARTITION OF tab_root FOR VALUES FROM (1) TO (1000) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_2 PARTITION OF tab_root FOR VALUES FROM (1000) TO (2000) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_1_p1 PARTITION OF tab_part_1 FOR VALUES FROM (1) TO (500);
CREATE TABLE tab_part_1_p2 PARTITION OF tab_part_1 FOR VALUES FROM (500) TO (1000);
CREATE TABLE tab_part_2_p1 PARTITION OF tab_part_2 FOR VALUES FROM (1000) TO (1500);
CREATE TABLE tab_part_2_p2 PARTITION OF tab_part_2 FOR VALUES FROM (1500) TO (2000);


INSERT INTO tab_root (id, range_col) VALUES (1, 100);
INSERT INTO tab_root (id, range_col) VALUES (2, 600);
INSERT INTO tab_root (id, range_col) VALUES (3, 1100);
INSERT INTO tab_root (id, range_col) VALUES (4, 1600);

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);

postgres=# SELECT c.relname, p.pubname, pr.prexcept FROM pg_publication_rel pr JOIN pg_class c ON c.oid = pr.prrelid JOIN pg_publication p ON p.oid = pr.prpubid;
    relname    | pubname | prexcept 
---------------+---------+----------
 tab_part_1_p1 | pub1    | t
 tab_part_2    | pub2    | t
 tab_part_2_p2 | pub1    | t
(3 rows)



postgres=# select * from pg_publication_tables;                                                                                        
 pubname | schemaname |   tablename   |    attnames    | rowfilter 
---------+------------+---------------+----------------+-----------
 pub1    | public     | tab_root      | {id,range_col} | 
 pub2    | public     | tab_part_1_p1 | {id,range_col} | 
 pub2    | public     | tab_part_1_p2 | {id,range_col} | 
(3 rows)


Sub:
CREATE TABLE tab_root (id int, range_col int);
CREATE TABLE tab_part_1 (id int, range_col int);
CREATE TABLE tab_part_2 (id int, range_col int);
CREATE TABLE tab_part_1_p1 (id int, range_col int);
CREATE TABLE tab_part_1_p2 (id int, range_col int);
CREATE TABLE tab_part_2_p1 (id int, range_col int);
CREATE TABLE tab_part_2_p2 (id int, range_col int);

CREATE SUBSCRIPTION sub1 connection 'dbname=postgres host=localhost user=shveta port=5433' publication pub1, pub2;
postgres=# SELECT s.subname, c.relname, r.srsubstate, r.srsublsn FROM pg_subscription_rel r JOIN pg_class c ON r.srrelid = c.oid JOIN pg_subscription s ON r.srsubid = s.oid;
 subname | relname  | srsubstate |  srsublsn  
---------+----------+------------+------------
 sub1    | tab_root | r          | 0/017958A8
(1 row)


From Log:
Tablesync worker: Executing query to get the initial sync data:
	COPY (
	SELECT id, range_col FROM  public.tab_part_2_p1
	UNION ALL
	SELECT id, range_col FROM  public.tab_part_1
	)
	TO STDOUT
	
Output of table-sync:
postgres=# select * from tab_root;
 id | range_col 
----+-----------
  1 |       100  --tab_part_1_p1
  2 |       600  --tab_part_1_p2
  3 |      1100  --tab_part_2_p1
(3 rows)

Pub (to test incremental sync):
INSERT INTO tab_root (id, range_col) VALUES (1, 200);   --missed tab_part_1_p1 data.
INSERT INTO tab_root (id, range_col) VALUES (2, 700);   --replicated tab_part_1_p2
INSERT INTO tab_root (id, range_col) VALUES (3, 1200);  --replicated tab_part_2_p1
INSERT INTO tab_root (id, range_col) VALUES (4, 1700);
 
Sub: Result of incremental sync alone:
postgres=# select * from tab_root order by range_col; 
id | range_col 
----+----------- 
  2 |       700 
  3 |      1200 

postgres=# select * from tab_part_1_p1;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_1_p2;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_2_p1;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_2_p2;
 id | range_col 
----+-----------
(0 rows)

So tablesync has replicated the table if it was included in any of the publication while incremental sync has missed publishing tab_part_1_p1 even though it was included in pub2.
 

Attachments:

  [text/plain] DifferentPubViaRoot.txt (4.5K, 2-DifferentPubViaRoot.txt)
  download | inline:
tab_root  (RANGE partitioned on range_col)
├── tab_part_1  (range_col: 1 → 1000)
│   ├── tab_part_1_p1  (range_col: 1 → 500)
│   └── tab_part_1_p2  (range_col: 500 → 1000)
└── tab_part_2  (range_col: 1000 → 2000)
    ├── tab_part_2_p1  (range_col: 1000 → 1500)
    └── tab_part_2_p2  (range_col: 1500 → 2000)

CREATE TABLE tab_root (id int, range_col int) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_1 PARTITION OF tab_root FOR VALUES FROM (1) TO (1000) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_2 PARTITION OF tab_root FOR VALUES FROM (1000) TO (2000) PARTITION BY RANGE (range_col);
CREATE TABLE tab_part_1_p1 PARTITION OF tab_part_1 FOR VALUES FROM (1) TO (500);
CREATE TABLE tab_part_1_p2 PARTITION OF tab_part_1 FOR VALUES FROM (500) TO (1000);
CREATE TABLE tab_part_2_p1 PARTITION OF tab_part_2 FOR VALUES FROM (1000) TO (1500);
CREATE TABLE tab_part_2_p2 PARTITION OF tab_part_2 FOR VALUES FROM (1500) TO (2000);


INSERT INTO tab_root (id, range_col) VALUES (1, 100);
INSERT INTO tab_root (id, range_col) VALUES (2, 600);
INSERT INTO tab_root (id, range_col) VALUES (3, 1100);
INSERT INTO tab_root (id, range_col) VALUES (4, 1600);

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);

postgres=# SELECT c.relname, p.pubname, pr.prexcept FROM pg_publication_rel pr JOIN pg_class c ON c.oid = pr.prrelid JOIN pg_publication p ON p.oid = pr.prpubid;
    relname    | pubname | prexcept 
---------------+---------+----------
 tab_part_1_p1 | pub1    | t
 tab_part_2    | pub2    | t
 tab_part_2_p2 | pub1    | t
(3 rows)



postgres=# select * from pg_publication_tables;                                                                                        
 pubname | schemaname |   tablename   |    attnames    | rowfilter 
---------+------------+---------------+----------------+-----------
 pub1    | public     | tab_root      | {id,range_col} | 
 pub2    | public     | tab_part_1_p1 | {id,range_col} | 
 pub2    | public     | tab_part_1_p2 | {id,range_col} | 
(3 rows)


Sub:
CREATE TABLE tab_root (id int, range_col int);
CREATE TABLE tab_part_1 (id int, range_col int);
CREATE TABLE tab_part_2 (id int, range_col int);
CREATE TABLE tab_part_1_p1 (id int, range_col int);
CREATE TABLE tab_part_1_p2 (id int, range_col int);
CREATE TABLE tab_part_2_p1 (id int, range_col int);
CREATE TABLE tab_part_2_p2 (id int, range_col int);

CREATE SUBSCRIPTION sub1 connection 'dbname=postgres host=localhost user=shveta port=5433' publication pub1, pub2;
postgres=# SELECT s.subname, c.relname, r.srsubstate, r.srsublsn FROM pg_subscription_rel r JOIN pg_class c ON r.srrelid = c.oid JOIN pg_subscription s ON r.srsubid = s.oid;
 subname | relname  | srsubstate |  srsublsn  
---------+----------+------------+------------
 sub1    | tab_root | r          | 0/017958A8
(1 row)


From Log:
Tablesync worker: Executing query to get the initial sync data:
	COPY (
	SELECT id, range_col FROM  public.tab_part_2_p1
	UNION ALL
	SELECT id, range_col FROM  public.tab_part_1
	)
	TO STDOUT
	
Output of table-sync:
postgres=# select * from tab_root;
 id | range_col 
----+-----------
  1 |       100  --tab_part_1_p1
  2 |       600  --tab_part_1_p2
  3 |      1100  --tab_part_2_p1
(3 rows)

Pub (to test incremental sync):
INSERT INTO tab_root (id, range_col) VALUES (1, 200);   --missed tab_part_1_p1 data.
INSERT INTO tab_root (id, range_col) VALUES (2, 700);   --replicated tab_part_1_p2
INSERT INTO tab_root (id, range_col) VALUES (3, 1200);  --replicated tab_part_2_p1
INSERT INTO tab_root (id, range_col) VALUES (4, 1700);
 
Sub: Result of incremental sync alone:
postgres=# select * from tab_root order by range_col; 
id | range_col 
----+----------- 
  2 |       700 
  3 |      1200 

postgres=# select * from tab_part_1_p1;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_1_p2;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_2_p1;
 id | range_col 
----+-----------
(0 rows)

postgres=# select * from tab_part_2_p2;
 id | range_col 
----+-----------
(0 rows)

So tablesync has replicated the table if it was included in any of the publication while incremental sync has missed publishing tab_part_1_p1 even though it was included in pub2.
 

view thread (368+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Skipping schema changes in publication
  In-Reply-To: <CAJpy0uB=gaJgDaP8MiVeZmpxALrmDPbx=fqoidAbzhwEO3cv-g@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox