pg15 beta2 bug:cause by logcial replation
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
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
"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
$ /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
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
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
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
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