Hiroshi Inoue <Inoue@tpf.co.jp> writes:
> GetXmaxRecent() ignores the backend tx_old because it had been
> committed when VACUUM started and may return the xid > the
> very old xid of tx_old.
Absolutely not; things would never work if that were true.
GetXmaxRecent() returns the oldest TID that was running *when any
current transaction started*, not just VACUUM's transaction. Thus,
no transaction that could be considered live by the cursor-holding
transaction will be considered dead by VACUUM.
regards, tom lane