From 370517cad57eb36cd93e1b5ef5135561732b1505 Mon Sep 17 00:00:00 2001 From: Ajin Cherian Date: Tue, 11 Nov 2025 13:43:16 +1100 Subject: [PATCH v1] Support for COPY TO for partitioned tables in tablesync This commit modifies tablesync logic to use COPY TO for partitioned tables. Performance tests show it's faster than the COPY (SELECT ...) TO variant as it avoids the overheads of query processing and sending results to the COPY TO command. --- src/backend/replication/logical/tablesync.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index dcc6124cc73..fa8e3bf969a 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -1068,8 +1068,9 @@ copy_table(Relation rel) /* Start copy on the publisher. */ initStringInfo(&cmd); - /* Regular table with no row filter or generated columns */ - if (lrel.relkind == RELKIND_RELATION && qual == NIL && !gencol_published) + /* Regular or partitioned table with no row filter or generated columns */ + if ((lrel.relkind == RELKIND_RELATION || lrel.relkind == RELKIND_PARTITIONED_TABLE) + && qual == NIL && !gencol_published) { appendStringInfo(&cmd, "COPY %s", quote_qualified_identifier(lrel.nspname, lrel.relname)); -- 2.47.3