On Thu, Mar 19, 2026 at 10:30 AM Masahiko Sawada <[email protected]> wrote:
>
> I've attached the patch to implement this idea. The patch still
> introduces a new function but it overloads
> pg_get_publication_tables(). We might be able to handle different
> input (array or text) in pg_get_publication_tables() better, but it's
> enough for discussion at least.
>

The patch looks like a good performance improvement. Some minor comments:

1. src/test/regress/expected/publication.out

+-- Clean up
+DROP FUNCTION test_gpt(text[], relname);
+ERROR:  type "relname" does not exist

Cleanup actually fails. Second parameter should be text, not relname.

2. src/include/catalog/pg_proc.dat

+  proallargtypes => '{text,oid,oid,oid,int2vector,pg_node_tree}',
+  proargmodes => '{i,i,o,o,o,o}',
+  proargnames => '{pubname,relid,pubid,relid,attrs,qual}',

Having two arguments with the same name "relid" seems odd, although
one is input and other is output parameter, how about calling input
parameter as target_relid?

3. src/backend/replication/logical/tablesync.c

+
+        if (server_version >= 190000)
+        {
+            /*
+             * We can pass relid to pg_get_publication_table_info() since
+             * version 19.
+             */
+            appendStringInfo(&cmd,
+                             "SELECT DISTINCT"

In multiple places in the code pg_get_publication_table_info() is
used, instead of pg_get_publication_tables()

thanks,
Ajin Cherian
Fujitsu Australia


Reply via email to