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.
