Tom Lane wrote:
>
> Philip Molter <philip@datafoundry.net> writes:
> > I am using 7.1.2.
>
> Drat.
>
> Don't suppose you want to dig in there with a debugger when it happens?
> You must be seeing some hard-to-replicate problem in VACUUM's
> tuple-chain-moving logic.
I had a pretty reproducible example 2 years ago.
IIRC the situation was like
When vacuum starts xid=10001 and 10004 are alive.
If vacuum finds an update chain (10002 -> 10000 -> 10003),
it removes the tuple (10000) because no xids <= 10000 is
alive. Then the chain is broken.
The problem seems to lie in scan_heap.
How could vacuum know that the tuple (10000) must be alive
after vacuum ?
regards,
Hiroshi Inoue