Обсуждение: pg15 beta2 bug:cause by logcial replation

Поиск
Список
Период
Сортировка

pg15 beta2 bug:cause by logcial replation

От
"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

RE: pg15 beta2 bug:cause by logcial replation

От
"houzj.fnst@fujitsu.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



Re: pg15 beta2 bug:cause by logcial replation

От
Tom Lane
Дата:
"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



Re: RE: pg15 beta2 bug:cause by logcial replation

От
"396934406@qq.com"
Дата:
$ /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
 
Date: 2022-07-01 12:09
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

Re: Re: pg15 beta2 bug:cause by logcial replation

От
"396934406@qq.com"
Дата:
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
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
 

RE: RE: pg15 beta2 bug:cause by logcial replation

От
"houzj.fnst@fujitsu.com"
Дата:

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

          ^

 

 


 

Date: 2022-07-01 12:09

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

Re: RE: pg15 beta2 bug:cause by logcial replation

От
"396934406@qq.com"
Дата:
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
 
Date: 2022-07-01 12:09
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

Re: RE: pg15 beta2 bug:cause by logcial replation

От
"396934406@qq.com"
Дата:
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
 
Date: 2022-07-01 12:09
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