From 56b9a68889e982487e63d3bf08933738108097db Mon Sep 17 00:00:00 2001 From: Sasha Krassovsky Date: Fri, 16 Aug 2024 11:23:31 -0700 Subject: [PATCH] Add on-demand WAL download in CreateReplicationSlot --- src/backend/replication/walsender.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index d9ddd917ebb..d307764df86 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -967,6 +967,7 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) { LogicalDecodingContext *ctx; bool need_full_snapshot = false; + XLogReaderRoutine xlr; /* * Do options check early so that we can bail before calling the @@ -1011,11 +1012,15 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd) need_full_snapshot = true; } + xlr.page_read = logical_read_xlog_page; + xlr.segment_open = WalSndSegmentOpen; + xlr.segment_close = wal_segment_close; + if (WalSender_Custom_XLogReaderRoutines != NULL) + WalSender_Custom_XLogReaderRoutines(&xlr); + ctx = CreateInitDecodingContext(cmd->plugin, NIL, need_full_snapshot, InvalidXLogRecPtr, - XL_ROUTINE(.page_read = logical_read_xlog_page, - .segment_open = WalSndSegmentOpen, - .segment_close = wal_segment_close), + &xlr, WalSndPrepareWrite, WalSndWriteData, WalSndUpdateProgress);