Re: BUG #18203: Logical Replication initial sync failure
vignesh C <vignesh21@gmail.com>
From: vignesh C <vignesh21@gmail.com>
To: zzzzz.graf@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2023-11-20T09:23:16Z
Lists: pgsql-bugs
Attachments
- v1-0001-Specify-parenthesis-for-tablesync-worker-copy-com.patch (text/x-patch) patch v1-0001
On Sat, 18 Nov 2023 at 18:10, PG Bug reporting form <noreply@postgresql.org> wrote: > > The following bug has been logged on the website: > > Bug reference: 18203 > Logged by: Justin G > Email address: zzzzz.graf@gmail.com > PostgreSQL version: 15.2 > Operating system: Ubuntu 20 > Description: > > We’ve found an edge case that breaks logical replication. > > Procedure: > > alter system set wal_level to 'logical' ; > > create database source; --pg 11 > create database destin; --pg 15 > > create table no_col(); -- pg 11 > > insert into no_col default values; > insert into no_col default values; > insert into no_col default values; > insert into no_col default values; > insert into no_col default values; > > CREATE PUBLICATION no_col_pub for table no_col; > > create table no_col(); --pg 15 > > CREATE SUBSCRIPTION no_col_sub --pg15 > CONNECTION > 'host=<hostname/ip> > port=5432 > user=<set username> > dbname=source > password=<set the password>' > PUBLICATION no_col_pub > WITH ( > CREATE_SLOT = TRUE, > ENABLED = TRUE, > COPY_DATA = TRUE > ); > > > We now have a table with 5 null rows. This is a valid table, pg_dump will > dump it and restore it. count(*) will return 5. > > The dump file produced by pg_dump version 15 generates this SQL > COPY public.no_col FROM stdin; > > However, the copy command from PG 15 using logical replication includes (), > which normally has a list of columns between the parentheses. > > COPY public.no_col () TO STDOUT > > Logical replication worker returns with the following error: > 2023-11-17 20:40:16.141 UTC [151084] ERROR: could not start initial > contents copy for table "public.no_col": ERROR: syntax error at or near > ")" > LINE 1: COPY public.no_col () TO STDOUT Thanks for reporting this issue, I was able to reproduce the issue. This issue is happening because we are trying to specify the column list while the table sync worker is copying data for the table. I felt we should not specify the column list when the table has no columns. Attached patch has the changes to handle the same. Regards, Vignesh
Commits
-
Fix the initial sync tables with no columns.
- eeb0ebad79d9 17.0 landed
- 1b6da28e0668 16.2 landed
- 57aae65aee26 15.6 landed