Re: [HACKERS] HEAP_MOVED_IN error during vacuum?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [HACKERS] HEAP_MOVED_IN error during vacuum?
Дата
Msg-id 16274.946605910@sss.pgh.pa.us
обсуждение исходный текст
Ответ на HEAP_MOVED_IN error during vacuum?  (Stephen Birch <sbirch@ironmountainsystems.com>)
Список pgsql-hackers
Stephen Birch <sbirch@ironmountainsystems.com> writes:
> When I vacuum the database (PostgreSQL 6.5.3 on SuSE 6.3 Linux, 2.2
> kernel), I get the following error message:

> ERROR: HEAP_MOVED_IN was not expected.

> Can anyone tell me what a HEAP_MOVED_IN error is - I checked the
> source but was not familiar enough to understand it?  Any ideas on why
> trim() may have cause it?

When VACUUM moves a tuple from one disk page to another (to compact the
table), the original tuple is marked HEAP_MOVED_OFF and the copy is
marked HEAP_MOVED_IN temporarily, until the VACUUM is ready to commit.
This is supposed to ensure that a failure partway through VACUUM won't
corrupt your table by leaving you with two copies of the same tuple.
(The HEAP_MOVED_OFF copy is valid until VACUUM commits, and the
HEAP_MOVED_IN copy is valid afterwards.)

I haven't heard of other reports of this error message, so I suspect
you have found some hard-to-hit boundary condition error in VACUUM's
data-shuffling logic.  I guess that the reason you don't see the error
after a single trim() is that not very much data-shuffling is needed to
compact the table after just one tuple update.

What we need is a reproducible test case so we can chase down the bug
--- any chance you can provide one?
        regards, tom lane


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Is backend-libpq's "PQexec/PQfn/portal" code dead?
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Is backend-libpq's "PQexec/PQfn/portal" code dead?