diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c index a7953f3..4b3fbff 100644 --- a/src/backend/access/transam/xlogreader.c +++ b/src/backend/access/transam/xlogreader.c @@ -856,13 +856,6 @@ XLogReaderValidatePageHeader(XLogReaderState *state, XLogRecPtr recptr, return true; } -#ifdef FRONTEND -/* - * Functions that are currently not needed in the backend, but are better - * implemented inside xlogreader.c because of the internal facilities available - * here. - */ - /* * Find the first record with an lsn >= RecPtr. * @@ -981,9 +974,6 @@ out: return found; } -#endif /* FRONTEND */ - - /* ---------------------------------------- * Functions for decoding the data and block references in a record. * ---------------------------------------- diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index d9e1026..4199f6d 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -357,6 +357,9 @@ pg_logical_replication_slot_advance(XLogRecPtr startlsn, XLogRecPtr moveto) CurrentResourceOwner = ResourceOwnerCreate(CurrentResourceOwner, "logical decoding"); + /* Move to the first valid record with an lsn >= startlsn */ + startlsn = XLogFindNextRecord(ctx->reader, startlsn); + /* invalidate non-timetravel entries */ InvalidateSystemCaches(); diff --git a/src/include/access/xlogreader.h b/src/include/access/xlogreader.h index f307b63..7df5a80 100644 --- a/src/include/access/xlogreader.h +++ b/src/include/access/xlogreader.h @@ -211,10 +211,7 @@ extern bool XLogReaderValidatePageHeader(XLogReaderState *state, /* Invalidate read state */ extern void XLogReaderInvalReadState(XLogReaderState *state); - -#ifdef FRONTEND extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr); -#endif /* FRONTEND */ /* Functions for decoding an XLogRecord */