Re: Added schema level support for publication. - Mailing list pgsql-hackers

From Masahiko Sawada
Subject Re: Added schema level support for publication.
Date
Msg-id CAD21AoBRbagtFYSHFbakPm=h7201f3A6gEoobyiV-6AuQ+1JiA@mail.gmail.com
Whole thread Raw
In response to Re: Added schema level support for publication.  (vignesh C <vignesh21@gmail.com>)
Responses Re: Added schema level support for publication.
Re: Added schema level support for publication.
List pgsql-hackers
On Wed, Aug 4, 2021 at 12:08 AM vignesh C <vignesh21@gmail.com> wrote:
>
> On Tue, Aug 3, 2021 at 12:00 PM tanghy.fnst@fujitsu.com
> <tanghy.fnst@fujitsu.com> wrote:
> >
> > On Monday, August 2, 2021 11:40 PM vignesh C <vignesh21@gmail.com>wrote:
> > >
> > > Thanks for the comments, attached v17 patches has the fixes for the same.
> >
> > Thanks for your new patch.
> >
> > I saw the following warning when compiling. It seems we don't need this variable any more.
> >
> > publicationcmds.c: In function ‘AlterPublicationSchemas’:
> > publicationcmds.c:592:15: warning: unused variable ‘oldlc’ [-Wunused-variable]
> >    ListCell   *oldlc;
> >                ^~~~~
>
> Thanks for reporting this, this is fixed in the v18 patch attached.

I've also started reviewing this patch. I've not looked at the patch
yet but here are initial comments/questions based on using this
feature:

pg_publication catalog still has puballtables column but it's still
necessary? IIUC since pubtype = 'a' means publishing all tables in the
database puballtables seems no longer necessary.

---
Suppose that a parent table and its child table are defined in
different schemas, there is a publication for the schema where only
the parent table is defined, and the subscriber subscribes to the
publication, should changes for its child table be replicated to the
subscriber?

In FOR TABLE cases, i.g., where the subscriber subscribes to the
publication that is only for the parent table, changes for its child
table are replicated to the subscriber.

As far as I tested v18 patch, changes for the child table are not
replicated in FOR SCHEMA cases. Here is the test script:

On publisher and subscriber:
create schema p_schema;
create schema c_schema;
create table p_schema.p (a int) partition by list (a);
create table c_schema.c partition of p_schema.p for values in (1);

On publisher:
create publication pub_p_schema for schema p_schema;

On subscriber:
create subscription pub connection 'dbname=postgres' publication pub_p_schema;

On publisher:
insert into p_schema.p values (1);
select * from p_schema.p;
 a
---
 1
(1 row)

On subscriber:
select * from p_schema.p;
 a
---

(0 rows)

Regards,

--
Masahiko Sawada
EDB:  https://www.enterprisedb.com/



pgsql-hackers by date:

Previous
From: Sadhuprasad Patro
Date:
Subject: Support reset of Shared objects statistics in "pg_stat_reset" function
Next
From: Dilip Kumar
Date:
Subject: Gather performance analysis