From: | "Zeugswetter Andreas SB SD" <ZeugswetterA(at)spardat(dot)at> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Jan Wieck" <JanWieck(at)Yahoo(dot)com> |
Cc: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: tuptoaster.c must *not* use SnapshotAny |
Date: | 2002-01-16 17:24:53 |
Message-ID: | 46C15C39FEB2C44BA555E356FBCD6FA41EB4B5@m0114.s-mxs.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> 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 ?
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2002-01-16 17:29:45 | Re: tuptoaster.c must *not* use SnapshotAny |
Previous Message | Tom Lane | 2002-01-16 17:10:52 | Re: tuptoaster.c must *not* use SnapshotAny |