From 9242941758ea4a8d1f6c919937330131c4af7fc4 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 (#470) --- 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 90089743ca6..d63375fa788 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -1092,6 +1092,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 @@ -1136,11 +1137,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);