> -----Original Message-----
> From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
>
> "Hiroshi Inoue" <Inoue@tpf.co.jp> writes:
> > I'm for your change.
> > However I could hardly find the case that would cause a trouble.
> > It may occur in the following rare cases though I'm not sure.
>
> > HEAP_MOVED_OFF and (neither HEAP_XMIN_COMMITTED nor
> > HEAP_XMIN_INVALID) and the tuple was recently delete/updated.
>
> I'm not sure if HEAP_MOVED_OFF is really dangerous, but I am sure
> that HEAP_MOVED_IN is dangerous --- vc_rpfheap will error out if
> it hits a tuple marked that way. So, if a VACUUM fails partway
> through vc_rpfheap (I guess this would have to happen after the
> internal commit), it'd be possible that later VACUUMs wouldn't
> work anymore.
>
IIRC,there's no HEAP_MOVED_INd and not HEAP_XMIN_COMMITTED
tuples when vc_rpfheap() is called because such tuples has already
been marked unsued in vc_scanheap().
Regards.
Hiroshi Inoue
Inoue@tpf.co.jp