> I am looking at adding an index tuple flag to indicate when a
> heap tuple is expired so the index code can skip looking up the heap tuple.
>
> The problem is that I can't figure out how be sure that the heap tuple
> doesn't need to be looked at by _any_ backend. Right now, we update the
> transaction commit flags in the heap tuple to prevent a pg_log lookup,
> but that is not enough because some transactions may still see that heap
> tuple as visible.
If you are only marking those, that need not be visible anymore, can you not
simply delete that key (slot) from the index ? I know vacuum then shows a count
mismatch, but that could probably be accounted for.
Andreas