pg15 beta2 bug:cause by logcial replation

Started by 396934406@qq.comalmost 4 years ago8 messagesbugs
Jump to latest
#1396934406@qq.com
396934406@qq.com

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Test is ok in pg15 beta1.

396934406@qq.com

#2Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: 396934406@qq.com (#1)
RE: pg15 beta2 bug:cause by logcial replation

On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

? pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Hi,

I tried your reproduction steps but cannot get the same error.

Can you please provide some more information about the version
of publisher and subscriber you used ?

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

Best regards,
Hou zj

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Zhijie Hou (Fujitsu) (#2)
Re: pg15 beta2 bug:cause by logcial replation

"houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com> writes:

On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

It looks to me like this was an attempt to replicate from 15beta1 to
15beta2, which would fail because commit fd0b9dceb imagines that any
server reporting version >= 15 will have pg_publication_tables.attnames,
even though that column was not there in beta1.

I bitched about the ill-timing of that schema change at the time
but was outvoted. At this point I think it's water over the dam.
We could perhaps change that test in fetch_table_list(), but it'd
require access to the source server's catversion, which I don't think
is readily available. In any case, by the time we could provide a fix
it'd be useless to testers of beta1; they'd have updated already by
some other method.

regards, tom lane

#4396934406@qq.com
396934406@qq.com
In reply to: 396934406@qq.com (#1)
Re: RE: pg15 beta2 bug:cause by logcial replation

$ /opt/pg15-beta2/bin/psql -p1502
psql (15beta2)
Type "help" for help.

postgres=# drop database logical_src;
DROP DATABASE
postgres=# drop database logical_dest ;
DROP DATABASE
postgres=# select version();
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 15beta2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)

postgres=# create database logical_src;
CREATE DATABASE
postgres=# create database logical_dest;
CREATE DATABASE
postgres=# \c logical_src
You are now connected to database "logical_src" as user "postgres".
logical_src=# create table tab1(id int primary key,info varchar);
CREATE TABLE
logical_src=# create table tab2(id int primary key,info1 varchar,info2 varchar);
CREATE TABLE
logical_src=# select pg_create_logical_replication_slot('logical_slot1','pgoutput');
pg_create_logical_replication_slot
------------------------------------
(logical_slot1,0/4976D9D8)
(1 row)

logical_src=# create publication pub_two for table tab1, tab2;
CREATE PUBLICATION
logical_src=# \c logical_dest
You are now connected to database "logical_dest" as user "postgres".
logical_dest=# create table tab1(id int primary key,info varchar);
CREATE TABLE
logical_dest=# create table tab2(id int primary key,info1 varchar,info2 varchar);
CREATE TABLE
logical_dest=# create subscription sub_two
logical_dest-# connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
logical_dest-# publication pub_two with(create_slot='false',slot_name='logical_slot1');
ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames
^

396934406@qq.com

From: houzj.fnst@fujitsu.com
Date: 2022-07-01 12:09
To: 396934406@qq.com
CC: pgsql-bugs
Subject: RE: pg15 beta2 bug:cause by logcial replation
On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

? pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Hi,

I tried your reproduction steps but cannot get the same error.

Can you please provide some more information about the version
of publisher and subscriber you used ?

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

Best regards,
Hou zj

#5396934406@qq.com
396934406@qq.com
In reply to: 396934406@qq.com (#1)
Re: Re: pg15 beta2 bug:cause by logcial replation

Obviously in the same pg server pg15 beta2, because my
subscriber creation use "create_slot='false'", another clue is i use "\c", all the test on the same cluster.

396934406@qq.com

From: Tom Lane
Date: 2022-07-01 13:16
To: houzj.fnst@fujitsu.com
CC: Amit Kapila; 396934406@qq.com; pgsql-bugs
Subject: Re: pg15 beta2 bug:cause by logcial replation
"houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com> writes:

On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

It looks to me like this was an attempt to replicate from 15beta1 to
15beta2, which would fail because commit fd0b9dceb imagines that any
server reporting version >= 15 will have pg_publication_tables.attnames,
even though that column was not there in beta1.

I bitched about the ill-timing of that schema change at the time
but was outvoted. At this point I think it's water over the dam.
We could perhaps change that test in fetch_table_list(), but it'd
require access to the source server's catversion, which I don't think
is readily available. In any case, by the time we could provide a fix
it'd be useless to testers of beta1; they'd have updated already by
some other method.

regards, tom lane

#6Zhijie Hou (Fujitsu)
houzj.fnst@fujitsu.com
In reply to: 396934406@qq.com (#4)
RE: RE: pg15 beta2 bug:cause by logcial replation

Hi,

$ /opt/pg15-beta2/bin/psql -p1502
psql (15beta2)
Type "help" for help.

postgres=# drop database logical_src;
DROP DATABASE
postgres=# drop database logical_dest ;
DROP DATABASE
postgres=# select version();
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 15beta2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)

Hmm, if both publisher and subscriber are on PG 15beta2, I am not sure why you get this error.

Can you please try to Initdb a new database and try the reproduction steps again ? It’s
possible that there is something wrong when initializing the database.

Best regards,
Hou zj

From: 396934406@qq.com <396934406@qq.com>
Sent: Friday, July 1, 2022 2:37 PM
To: Hou, Zhijie <houzj.fnst@fujitsu.com>
Cc: pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Subject: Re: RE: pg15 beta2 bug:cause by logcial replation

$ /opt/pg15-beta2/bin/psql -p1502
psql (15beta2)
Type "help" for help.

postgres=# drop database logical_src;
DROP DATABASE
postgres=# drop database logical_dest ;
DROP DATABASE
postgres=# select version();
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 15beta2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)

postgres=# create database logical_src;
CREATE DATABASE
postgres=# create database logical_dest;
CREATE DATABASE
postgres=# \c logical_src
You are now connected to database "logical_src" as user "postgres".
logical_src=# create table tab1(id int primary key,info varchar);
CREATE TABLE
logical_src=# create table tab2(id int primary key,info1 varchar,info2 varchar);
CREATE TABLE
logical_src=# select pg_create_logical_replication_slot('logical_slot1','pgoutput');
pg_create_logical_replication_slot
------------------------------------
(logical_slot1,0/4976D9D8)
(1 row)

logical_src=# create publication pub_two for table tab1, tab2;
CREATE PUBLICATION
logical_src=# \c logical_dest
You are now connected to database "logical_dest" as user "postgres".
logical_dest=# create table tab1(id int primary key,info varchar);
CREATE TABLE
logical_dest=# create table tab2(id int primary key,info1 varchar,info2 varchar);
CREATE TABLE
logical_dest=# create subscription sub_two
logical_dest-# connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
logical_dest-# publication pub_two with(create_slot='false',slot_name='logical_slot1');
ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames
^

________________________________
396934406@qq.com<mailto:396934406@qq.com>

From: houzj.fnst@fujitsu.com<mailto:houzj.fnst@fujitsu.com>
Date: 2022-07-01 12:09
To: 396934406@qq.com<mailto:396934406@qq.com>
CC: pgsql-bugs<mailto:pgsql-bugs@lists.postgresql.org>
Subject: RE: pg15 beta2 bug:cause by logcial replation
On Friday, July 1, 2022 11:35 AM 396934406@qq.com<mailto:396934406@qq.com> <396934406@qq.com<mailto:396934406@qq.com>> wrote:

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

? pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Hi,

I tried your reproduction steps but cannot get the same error.

Can you please provide some more information about the version
of publisher and subscriber you used ?

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

Best regards,
Hou zj

#7396934406@qq.com
396934406@qq.com
In reply to: 396934406@qq.com (#1)
Re: RE: pg15 beta2 bug:cause by logcial replation

yes,the problem was i use port 1501 when i create subscription. so the problem is use the PG15 beta1 as publisher, and use PG15 beta2 as the subscriber.

396934406@qq.com

From: houzj.fnst@fujitsu.com
Date: 2022-07-01 12:09
To: 396934406@qq.com
CC: pgsql-bugs
Subject: RE: pg15 beta2 bug:cause by logcial replation
On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

? pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Hi,

I tried your reproduction steps but cannot get the same error.

Can you please provide some more information about the version
of publisher and subscriber you used ?

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

Best regards,
Hou zj

#8396934406@qq.com
396934406@qq.com
In reply to: 396934406@qq.com (#1)
Re: RE: pg15 beta2 bug:cause by logcial replation

yes,the problem was i use port 1501 when i create subscription. so the problem is use the PG15 beta1 as publisher, and use PG15 beta2 as the subscriber.

396934406@qq.com

From: houzj.fnst@fujitsu.com
Date: 2022-07-01 12:09
To: 396934406@qq.com
CC: pgsql-bugs
Subject: RE: pg15 beta2 bug:cause by logcial replation
On Friday, July 1, 2022 11:35 AM 396934406@qq.com <396934406@qq.com> wrote:

hello,:

i am jerome Peng, from pg15 beta2 changes since beta 1 , i test this item and found a error:

? pg_publication_tables now provides information on column lists and row filters.

\c logical_src
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
select pg_create_logical_replication_slot('logical_slot1','pgoutput');
create publication pub_two for table tab1, tab2;

\c logical_dest
create table tab1(id int primary key,info varchar);
create table tab2(id int primary key,info1 varchar,info2 varchar);
create subscription sub_two
connection 'hostaddr=127.0.0.1 port=1501 user=postgres dbname=logical_src'
publication pub_two with(create_slot='false',slot_name='logical_slot1');

ERROR: could not receive list of replicated tables from the publisher: ERROR: column t.attnames does not exist
LINE 2: , t.attnames

Hi,

I tried your reproduction steps but cannot get the same error.

Can you please provide some more information about the version
of publisher and subscriber you used ?

Just to confirm, did you use the PG15 beta1 or earlier PG15 version
as the publisher and use PG15 beta2 as the subscriber ?

Best regards,
Hou zj