Re: Add support for specifying tables in pg_createsubscriber. - Mailing list pgsql-hackers

From Shubham Khanna
Subject Re: Add support for specifying tables in pg_createsubscriber.
Date
Msg-id CAHv8RjJZBdEj+znQ3k8Lh4RCtKAHgK8pnQ4-+ooAuf23CtLH-Q@mail.gmail.com
Whole thread Raw
In response to RE: Add support for specifying tables in pg_createsubscriber.  ("Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>)
Responses Re: Add support for specifying tables in pg_createsubscriber.
List pgsql-hackers
On Mon, Aug 25, 2025 at 12:53 PM Zhijie Hou (Fujitsu)
<houzj.fnst@fujitsu.com> wrote:
>
> On Monday, August 25, 2025 8:08 AM Peter Smith <smithpb2250@gmail.com> wrote:
> >
> > IIUC, the only purpose of the proposed '--table' spec is to allow some users the
> > ability to tweak the default "CREATE PUBLICATION p FOR ALL TABLES;" that
> > the 'pg_createsubscriber' tool would otherwise construct.
> >
> > But --table is introducing problems too: e.g.
> > - tricky option ordering rules (e.g. most recent --database if dbname not
> > specified?)
> > - too many --table may be needed; redundant repeating of databases and
> > schemas also seems very verbose.
> > - limitations for syntax (e.g. what about FOR TABLES IN SCHEMA?)
> > - limitations for future syntax (e.g. what about SEQUENCES?; what about
> > EXCEPT?)
> >
> > Can these problems disappear just by slightly changing the meaning of the
> > existing '--publication' option to allow specifying more than just the
> > publication name: e.g.
> > --publication = 'pub1' ==> "CREATE PUBLICATION pub1 FOR ALL TABLES;"
> > --publication = 'pub1 FOR TABLE t1,t2(c1,c2),t3' ==> "CREATE
> > PUBLICATION pub1 FOR TABLE t1,t2(c1,c2),t3;"
> > --publication = 'pub1 FOR TABLES IN SCHEMA s1' ==> "CREATE
> > PUBLICATION
> > pub1 FOR TABLES IN SCHEMA s1;"
> > --publication = 'pub1 FOR ALL TABLES WITH (publish_via_partition_root)'
> > ==> "CREATE PUBLICATION pub1 FOR ALL TABLES WITH
> > (publish_via_partition_root);"
>
> I think embedding commands directly in the option value poses SQL injection
> risks, so is not very safe. We could directly allow users to use an existing
> publication (as mentioned by Euler[1]).
>
> [1] https://www.postgresql.org/message-id/30cc34eb-07a0-4b55-b4fe-6c526886b2c4%40app.fastmail.com
>

I have incorporated the latest approach suggested by Hou-san at [1]
and added a new --existing-publication option. This enhancement allows
users to specify existing publications instead of always creating new
ones. The attached patch includes the corresponding changes.

[1] -
https://www.postgresql.org/message-id/TY4PR01MB169075A23F8D5EED4154A4AF3943EA%40TY4PR01MB16907.jpnprd01.prod.outlook.com

Thanks and regards,
Shubham Khanna.

Attachment

pgsql-hackers by date:

Previous
From: David Geier
Date:
Subject: Re: Performance issues with parallelism and LIMIT
Next
From: Shlok Kyal
Date:
Subject: Re: POC: enable logical decoding when wal_level = 'replica' without a server restart