Pub and Sub: create table tab1(i int primary key); create table tab2(i int primary key); create table tab3(i int primary key); Pub: create publication pub1 for table tab1; Sub: create subscription sub1 connection 'dbname=postgres host=localhost user=shveta port=5433' publication pub1 WITH (retain_dead_tuples = true, max_conflict_retention_duration=10000); Pub: insert into tab1 values(10); - hold debugger in RecordTransactionCommit Sub: insert into tab1 values(100); --Wait for sub1 to stop retention and slot's xmin to become NULL: select subname, subenabled, subretaindeadtuples, submaxconflretention, subretentionactive from pg_subscription; select slot_name, xmin from pg_replication_slots; --Now disable sub1: alter subscription sub1 disable; --And release pub's insert debugger. --Now create another pub and sub pair: create publication pub2 for table tab2; create subscription sub2 connection 'dbname=postgres host=localhost user=shveta port=5433' publication pub2 WITH (retain_dead_tuples = true, max_conflict_retention_duration=10000); --Sub2 will resume normally, slot's xmin will be valid now. select subname, subenabled, subretaindeadtuples, submaxconflretention, subretentionactive from pg_subscription; select slot_name, xmin from pg_replication_slots; --Now enable sub1, it should still be in stop-retention mode alter subscription sub1 enable; select subname, subenabled, subretaindeadtuples, submaxconflretention, subretentionactive from pg_subscription; select slot_name, xmin from pg_replication_slots; --Now set sub1's max_conflict_retention_duration to 0, expectation is to resume retention immediately, but it does not. alter subscription sub1 set (max_conflict_retention_duration=0);