diff options
author | Amit Kapila <akapila@postgresql.org> | 2023-11-22 11:44:14 +0530 |
---|---|---|
committer | Amit Kapila <akapila@postgresql.org> | 2023-11-22 11:44:14 +0530 |
commit | eeb0ebad79d9350305d9e111fbac76e20fa4b2fe (patch) | |
tree | 2f3c3cd7a70ef9d16ad4ceacfb49436b8cdb9d9d /src/backend/replication/logical/tablesync.c | |
parent | ff68cc6f3bf08546802216e0b9d28ad1d4be7e70 (diff) | |
download | postgresql-eeb0ebad79d9350305d9e111fbac76e20fa4b2fe.tar.gz postgresql-eeb0ebad79d9350305d9e111fbac76e20fa4b2fe.zip |
Fix the initial sync tables with no columns.
The copy command formed for initial sync was using parenthesis for tables
with no columns leading to syntax error. This patch avoids adding
parenthesis for such tables.
Reported-by: Justin G
Author: Vignesh C
Reviewed-by: Peter Smith, Amit Kapila
Backpatch-through: 15
Discussion: http://postgr.es/m/18203-df37fe354b626670@postgresql.org
Diffstat (limited to 'src/backend/replication/logical/tablesync.c')
-rw-r--r-- | src/backend/replication/logical/tablesync.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index 37a0abe2f4d..df3c42eb5de 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -1124,22 +1124,30 @@ copy_table(Relation rel) /* Regular table with no row filter */ if (lrel.relkind == RELKIND_RELATION && qual == NIL) { - appendStringInfo(&cmd, "COPY %s (", + appendStringInfo(&cmd, "COPY %s", quote_qualified_identifier(lrel.nspname, lrel.relname)); - /* - * XXX Do we need to list the columns in all cases? Maybe we're - * replicating all columns? - */ - for (int i = 0; i < lrel.natts; i++) + /* If the table has columns, then specify the columns */ + if (lrel.natts) { - if (i > 0) - appendStringInfoString(&cmd, ", "); + appendStringInfoString(&cmd, " ("); - appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i])); + /* + * XXX Do we need to list the columns in all cases? Maybe we're + * replicating all columns? + */ + for (int i = 0; i < lrel.natts; i++) + { + if (i > 0) + appendStringInfoString(&cmd, ", "); + + appendStringInfoString(&cmd, quote_identifier(lrel.attnames[i])); + } + + appendStringInfoString(&cmd, ")"); } - appendStringInfoString(&cmd, ") TO STDOUT"); + appendStringInfoString(&cmd, " TO STDOUT"); } else { |