Re: tuptoaster.c must *not* use SnapshotAny

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 ?

Responses

Browse pgsql-hackers by date

  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