Restrict copying of invalidated replication slots. Previously, invalidated logical and physical replication slots could be copied using the pg_copy_logical_replication_slot and pg_copy_physical_replication_slot functions. Replication slots that were invalidated for reasons other than WAL removal retained their restart_lsn. This meant that a new slot copied from an invalidated slot could have a restart_lsn pointing to a WAL segment that might have already been removed.
This commit restricts the copying of invalidated replication slots. Backpatch to v16, where slots could retain their restart_lsn when invalidated for reasons other than WAL removal. For v15 and earlier, this check is not required since slots can only be invalidated due to WAL removal, and existing checks already handle this issue. Author: Shlok Kyal <shlok.kyal....@gmail.com> Reviewed-by: vignesh C <vignes...@gmail.com> Reviewed-by: Zhijie Hou <houzj.f...@fujitsu.com> Reviewed-by: Peter Smith <smithpb2...@gmail.com> Reviewed-by: Masahiko Sawada <sawada.m...@gmail.com> Reviewed-by: Amit Kapila <amit.kapil...@gmail.com> Discussion: https://postgr.es/m/CANhcyEU65aH0VYnLiu%3DOhNNxhnhNhwcXBeT-jvRe1OiJTo_Ayg%40mail.gmail.com Backpatch-through: 16 Branch ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/87e8599e046f62bc4c1302c89ef58a881622e051 Modified Files -------------- doc/src/sgml/func.sgml | 4 +++- src/backend/replication/slotfuncs.c | 21 +++++++++++++++++++++ src/test/recovery/t/035_standby_logical_decoding.pl | 9 +++++++++ 3 files changed, 33 insertions(+), 1 deletion(-)