Re: Possible bug in vacuum redo

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Possible bug in vacuum redo
Дата
Msg-id 24087.1009037614@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Possible bug in vacuum redo  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Ответы Re: Possible bug in vacuum redo  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Список pgsql-hackers
"Hiroshi Inoue" <Inoue@tpf.co.jp> writes:
> AFAIR t_ctid isn't logged in WAL.

After looking at the heap_update code I think you are right.  Doesn't
that render the field completely useless/unreliable?

In the simple heap_update case I think that heap_xlog_update could
easily set the old tuple's t_ctid field correctly.  Not sure how
it works when VACUUM is moving tuple chains around, however.

Another thing I am currently looking at is that I do not believe VACUUM
handles tuple chain moves correctly.  It only enters the chain-moving
logic if it finds a tuple that is in the *middle* of an update chain,
ie, both the prior and next tuples still exist.  In the case of a
two-element update chain (only the latest and next-to-latest tuples of
a row survive VACUUM), AFAICT vacuum will happily move the latest tuple
without ever updating the previous tuple's t_ctid.

In short t_ctid seems extremely unreliable.  I have been trying to work
out a way that a bad t_ctid link could lead to the duplicate-tuple
reports we've been hearing lately, but so far I haven't seen one.  I do
think it can lead to missed UPDATEs in read-committed mode, however.
        regards, tom lane


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

Предыдущее
От: "Hiroshi Inoue"
Дата:
Сообщение: Re: Possible bug in vacuum redo
Следующее
От: Peter Eisentraut
Дата:
Сообщение: HISTORY file