Re:HEAP_MOVED_IN during vacuum - test case

Stephen Birch <sbirch@ironmountainsystems.com>

From: Stephen Birch <sbirch@ironmountainsystems.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: The Hermit Hacker <scrappy@hub.org>, PostgreSQL-development <pgsql-hackers@postgreSQL.org>
Date: 2000-01-09T18:45:20Z
Lists: pgsql-hackers
I have now created a test case that demonstrate the HEAP_MOVED_IN during
vacuum problem.  Since the tar ball is 182k - I put it on an ftp site
instead of mailing it.

You can grab it from the following location:

 http://www.ironmountainsystems.com/heap_moved_in/

The tar ball contains two files - a shell script (show_bug) and a pg_dump
dump.  The shell script does the following using the dump file:

1. Create database ntis
2. Create table msg and populate it.
3. Use trim() twice.
4. Vacuum.

The three interesting commands reside at the end of ntis.dmp:

update msg set description = trim(description);
update msg set owner = trim(owner);
vacuum;

when the script "show_bug" is run, we get the following output:

CREATE DATABASE
You are now connected to database ntis.
CREATE
UPDATE 12069
UPDATE 12069
ERROR:  HEAP_MOVED_IN was not expected

One interesting point: if either one of the trim operations is omitted,
vacuum does not give the HEAP_MOVED_IN error.  I also notice that if you
change ntis.dmp so a vacuum is done between the two, the problem goes away.

Any ideas?


Tom Lane wrote:

> The Hermit Hacker <scrappy@hub.org> writes:
> > "However, the biggest problem was reported recently, see "HEAP_MOVED_IN
> > during vacuum" posted on Saturday, no replies" ...
>
> >       Anyone have any comments on that last one?
>
> I replied to it --- not with any useful ideas I'm afraid, just asking
> for more info.  But if Stephen is claiming he was ignored, then he's
> not reading his email...
>
>                         regards, tom lane
>
> ************