On Wed, Mar 18, 2026 at 1:11 PM Jan Wieck <[email protected]> wrote: > > On 3/18/26 12:44, Masahiko Sawada wrote: > > On Wed, Mar 18, 2026 at 6:56 AM Amit Kapila <[email protected]> wrote: > >> > >> On Tue, Mar 10, 2026 at 3:40 AM Masahiko Sawada <[email protected]> > >> wrote: > >> > > >> > On Tue, Mar 3, 2026 at 2:22 AM Zhijie Hou (Fujitsu) > >> > <[email protected]> wrote: > >> > > > >> > > On Saturday, February 28, 2026 7:48 AM Masahiko Sawada > >> > > <[email protected]> wrote: > >> > > > To: Marcos Pegoraro <[email protected]> > >> > > > Cc: PostgreSQL Hackers <[email protected]> > >> > > > Subject: Re: Initial COPY of Logical Replication is too slow > >> > > > > >> > > > Another variant of this approach is to extend > >> > > > pg_get_publication_table() so that it can accept a relid to get the > >> > > > publication > >> > > > information of the specific table. I've attached the patch for this > >> > > > idea. I'm > >> > > > going to add regression test cases. > >> > > > > >> > > > pg_get_publication_table() is a VARIACID array function so the patch > >> > > > changes > >> > > > its signature to {text[] [, oid]}, breaking the tool compatibility. > >> > > > Given this > >> > > > function is mostly an internal-use function (we don't have the > >> > > > documentation > >> > > > for it), it would probably be okay with it. I find it's clearer than > >> > > > the other > >> > > > approach of introducing pg_get_publication_table_info(). Feedback is > >> > > > very > >> > > > welcome. > >> > > > >> > > Thanks for updating the patch. > >> > > > >> > > I have few comments for the function change: > >> > > > >> > > 1. > >> > > > >> > > If we change the function signature, will it affect use cases where the > >> > > publisher version is newer and the subscriber version is older ? E.g., > >> > > when > >> > > publisher is passing text style publication name to > >> > > pg_get_publication_tables(). > >> > > >> > Good point. > >> > > >> > I noticed that changing the function signature of > >> > pg_get_publication_tables() breaks logical replication setups where > >> > the subscriber is 18 or older. > >> > > >> > >> Why adding a new function with additional parameters (Oid relid) > >> couldn't help with such a case? I am asking because your previous > >> version code looks simpler as compared to the new patch version. > > > > I tried to pass a relid to pg_get_publication_tables() but we cannot > > avoid changing its signature because it's a VARIADIC array function. > > The previous patch changed pg_get_publication_tables(VARIADIC text[]) > > to pg_get_publication_tables(text[] {, relid}). However, changing the > > function signature would break the logical replication from v19 to an > > older version. > > Would it be possible to use function overloading to provide both > signatures handled by different C functions internally?
Yes, we can define both pg_get_publication_tables(VARIADIC text[]) and pg_get_publication_tables(text, oid), which seems like a less invasive approach. I'll give this idea a shot and see how it goes. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
