> The tuple toaster currently fetches toast-table rows using SnapshotAny.
> This is quite uncool, because it will in fact find *any* row.
Well, doesn't it need to find *any* row, since the accesses to heap and toast
are not "atomic" (not interlocked) ?
> Including dead rows resulting from an aborted
But then also the heap tuple is aborted, and thus a normal select will not
select that toast anyway.
> (or, in 7.2, still-in-progress)
> VACUUM.
I thought new vacuum did not move tuples ? Why should it then produce
two rows ? And VACUUM FULL locks the table so ...
I think SnapshotSelf could have concurrency problems (not see a toast
that someone else committed between our heap read and toast read)
IIRC, at the time at least SnapshotAny was chosen on purpose.
Might it be a problem, that VACUUM sets xids to FrozenXid, and we always
consider that one Valid, even if that vacuum is still in progress ?
I can only see a problem with a partway through vacuum full, that aborted.
Andreas
PS: short desc between Any and Self, anybody ?