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 по дате отправления: