Disable logical decoding after REPACK (CONCURRENTLY)

REPACK (CONCURRENTLY) uses a temporary logical replication slot, which
is dropped once done, but it wasn't calling RequestDisableLogicalDecoding(),
leaving effective_wal_level stuck at 'logical'.

Fix by adding a Boolean flag to ReplicationSlotDropAcquired() to have it
request to disable logical decoding, and passing it as true on REPACK.
Other callers of that function preserve their existing behavior.

Author: Imran Zaheer <[email protected]>
Reviewed-by: shveta malik <[email protected]>
Discussion: 
https://postgr.es/m/CA+UBfaktds57dw2M8BEv_kS-=ixph3w+3mxkixtadqmi_k7...@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2af1dc89282bea681201cf66e2bb32537294e623

Modified Files
--------------
src/backend/commands/repack_worker.c           |  2 +-
src/backend/replication/logical/launcher.c     |  3 +-
src/backend/replication/logical/slotsync.c     | 10 ++++--
src/backend/replication/slot.c                 | 48 +++++++++++---------------
src/include/replication/slot.h                 |  2 +-
src/test/recovery/t/051_effective_wal_level.pl | 14 ++++++++
6 files changed, 47 insertions(+), 32 deletions(-)

Reply via email to