Re: CURRENT OF cursor without OIDs

Поиск
Список
Период
Сортировка
От Ian Lance Taylor
Тема Re: CURRENT OF cursor without OIDs
Дата
Msg-id sik80ehatz.fsf@daffy.airs.com
обсуждение исходный текст
Ответ на RE: CURRENT OF cursor without OIDs  ("Zeugswetter Andreas SB SD" <ZeugswetterA@spardat.at>)
Ответы Re: CURRENT OF cursor without OIDs  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
"Zeugswetter Andreas SB SD" <ZeugswetterA@spardat.at> writes:

> >    There could be DELETE operations for the tuple
> >    from other backends also and the TID may disappear.
> >    Because FULL VACUUM couldn't run while the cursor
> >    is open, it could neither move nor remove the tuple
> >    but I'm not sure if the new VACUUM could remove
> >    the deleted tuple and other backends could re-use
> >    the space under such a situation.
> 
> If you also save the tuple transaction info (xmin ?) during the
> select in addition to xtid, you could see whether the tupleslot was
> reused ?
> (This might need a function interface to make it reasonably portable to
> future 
> versions)
> Of course the only thing you can do if you notice it has changed is bail
> out.
> But that leaves the question to me on what should actually be done when
> the tuple has changed underneath. 
> I for one would not like the update to succeed if someone else modified
> it 
> inbetween my fetch and my update.

If PL/pgSQL doesn't lock the table before doing the select, then I
think it has to mark the tuples for update when it does the select.
Unfortunately, the portal code explicitly rejects FOR UPDATE
(transformSelectStmt in parser/analyze.c).

Ian


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Re: Null-safe GiST interface (proposal)
Следующее
От: Tom Lane
Дата:
Сообщение: Re: CURRENT OF cursor without OIDs