@ -377,8 +377,8 @@ $node_publisher->safe_psql('postgres', "DROP PUBLICATION tap_pub_sch");
$ node_publisher - > stop ( 'fast' ) ;
$ node_subscriber - > stop ( 'fast' ) ;
# The bug was that when the REPLICA IDENTITY FULL is used with dropped columns,
# we fail to apply updates and deletes
# The bug was that when the REPLICA IDENTITY FULL is used with dropped or
# generated columns, we fail to apply updates and deletes
$ node_publisher - > rotate_logfile ( ) ;
$ node_publisher - > start ( ) ;
@ -389,14 +389,18 @@ $node_publisher->safe_psql(
'postgres' , qq(
CREATE TABLE dropped_cols ( a int , b_drop int , c int ) ;
ALTER TABLE dropped_cols REPLICA IDENTITY FULL ;
CREATE PUBLICATION pub_dropped_cols FOR TABLE dropped_cols ;
CREATE TABLE generated_cols ( a int , b_gen int GENERATED ALWAYS AS ( 5 * a ) STORED , c int ) ;
ALTER TABLE generated_cols REPLICA IDENTITY FULL ;
CREATE PUBLICATION pub_dropped_cols FOR TABLE dropped_cols , generated_cols ;
- - some initial data
INSERT INTO dropped_cols VALUES ( 1 , 1 , 1 ) ;
INSERT INTO generated_cols ( a , c ) VALUES ( 1 , 1 ) ;
) ) ;
$ node_subscriber - > safe_psql (
'postgres' , qq(
CREATE TABLE dropped_cols ( a int , b_drop int , c int ) ;
CREATE TABLE generated_cols ( a int , b_gen int GENERATED ALWAYS AS ( 5 * a ) STORED , c int ) ;
) ) ;
$ publisher_connstr = $ node_publisher - > connstr . ' dbname=postgres' ;
@ -417,6 +421,7 @@ $node_subscriber->safe_psql(
$ node_publisher - > safe_psql (
'postgres' , qq(
UPDATE dropped_cols SET a = 100 ;
UPDATE generated_cols SET a = 100 ;
) ) ;
$ node_publisher - > wait_for_catchup ( 'sub_dropped_cols' ) ;
@ -425,6 +430,11 @@ is( $node_subscriber->safe_psql(
qq( 1 ) ,
'replication with RI FULL and dropped columns' ) ;
is ( $ node_subscriber - > safe_psql (
'postgres' , "SELECT count(*) FROM generated_cols WHERE a = 100" ) ,
qq( 1 ) ,
'replication with RI FULL and generated columns' ) ;
$ node_publisher - > stop ( 'fast' ) ;
$ node_subscriber - > stop ( 'fast' ) ;