Hi Movead,

It's an interesting idea.

While it’s impossible to predict exactly how much WAL we’ll need to
backtrack through --
I assume it mainly depends on the duration of long-running transactions --
this approach
seems to offer an opportunity using pg_rewind without enabling
wal_log_hints.

On Fri, Jan 16, 2026 at 9:28 PM Movead <[email protected]> wrote:

>
> In fact the min_commited_xid and max_commited_xid is the edge transaction
> commited after
> diverge record, so it's enough.
>
>
Given the potential large gap between transaction IDs (especially when
long-running transactions are involved),
maintaining  a list/bitmap struct would be worthwhile.

A minor suggestion, for an operation that may fail, I suggest retrieving
the first XLOG_RUNNING_XACTS record to obtain its base_xid
before doing the deep-dig process. If the task cannot be completed (i.e.,
the base_xid <= min_commited_xid condition isn’t met),
we can throw an error immediately instead of waiting for all WAL records to
be parsed.

Reply via email to