Hannu Krosing <hannu@skype.net> writes:
> Please check the actual patch and advise if anything is still missing.
While testing this I realized that it does not in fact work as
advertised. It will only exclude long-running VACUUMs from other
VACUUMs' OldestXmin if *all* the transactions in the system are lazy
VACUUMs. If there is even one regular transaction in the system,
that transaction will include the VACUUMs in its MyProc->xmin, and
thence GetOldestXmin will have to include them in its result.
AFAICS the only way to fix this would be to exclude inVacuum
transactions from GetSnapshotData's calculations as well. That
makes the patch far more invasive, and I'm not confident I can work
out all the implications. (In particular, the consequences for
TransactionIdIsInProgress look bad. I don't think we want a VACUUM
to be seen as not-in-progress.)
So I'm bouncing this patch again...
regards, tom lane