@ -370,6 +370,61 @@ $result = $node_subscriber->safe_psql('postgres', "SELECT * FROM sch2.t1");
is ( $ result , qq( 1
is ( $ result , qq( 1
3 ) , 'check data in subscriber sch2.t1 after schema rename' ) ;
3 ) , 'check data in subscriber sch2.t1 after schema rename' ) ;
# Again, drop replication state but not tables.
$ node_subscriber - > safe_psql ( 'postgres' , "DROP SUBSCRIPTION tap_sub_sch" ) ;
$ 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
$ node_publisher - > rotate_logfile ( ) ;
$ node_publisher - > start ( ) ;
$ node_subscriber - > rotate_logfile ( ) ;
$ node_subscriber - > start ( ) ;
$ 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 ;
- - some initial data
INSERT INTO dropped_cols VALUES ( 1 , 1 , 1 ) ;
) ) ;
$ node_subscriber - > safe_psql (
'postgres' , qq(
CREATE TABLE dropped_cols ( a int , b_drop int , c int ) ;
) ) ;
$ publisher_connstr = $ node_publisher - > connstr . ' dbname=postgres' ;
$ node_subscriber - > safe_psql ( 'postgres' ,
"CREATE SUBSCRIPTION sub_dropped_cols CONNECTION '$publisher_connstr' PUBLICATION pub_dropped_cols"
) ;
$ node_subscriber - > wait_for_subscription_sync ;
$ node_publisher - > safe_psql (
'postgres' , qq(
ALTER TABLE dropped_cols DROP COLUMN b_drop ;
) ) ;
$ node_subscriber - > safe_psql (
'postgres' , qq(
ALTER TABLE dropped_cols DROP COLUMN b_drop ;
) ) ;
$ node_publisher - > safe_psql (
'postgres' , qq(
UPDATE dropped_cols SET a = 100 ;
) ) ;
$ node_publisher - > wait_for_catchup ( 'sub_dropped_cols' ) ;
is ( $ node_subscriber - > safe_psql (
'postgres' , "SELECT count(*) FROM dropped_cols WHERE a = 100" ) ,
qq( 1 ) ,
'replication with RI FULL and dropped columns' ) ;
$ node_publisher - > stop ( 'fast' ) ;
$ node_publisher - > stop ( 'fast' ) ;
$ node_subscriber - > stop ( 'fast' ) ;
$ node_subscriber - > stop ( 'fast' ) ;