Tom Lane wrote:
>
> 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.
>
Oops I've misunderstood GetXmaxRecent() until now.
Now I'm checking the current source.
Hmm is there any place setting proc->xmin other than
the following ?
[in storage/ipc/sinval.c] if (serializable) MyProc->xmin = snapshot->xmin;
regards,
Hiroshi Inoue