Re: tuptoaster.c must *not* use SnapshotAny
От | Zeugswetter Andreas SB SD |
---|---|
Тема | Re: tuptoaster.c must *not* use SnapshotAny |
Дата | |
Msg-id | 46C15C39FEB2C44BA555E356FBCD6FA41EB4B5@m0114.s-mxs.net обсуждение исходный текст |
Ответ на | tuptoaster.c must *not* use SnapshotAny (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: tuptoaster.c must *not* use SnapshotAny
|
Список | 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 ?
В списке pgsql-hackers по дате отправления: