On 1/24/07, Martijn van Oosterhout <firstname.lastname@example.org> wrote:
On Wed, Jan 24, 2007 at 12:45:53PM +0530, Pavan Deolasee wrote:
> My apologies if this has been discussed before. I went through the
> discussions, but its still very fuzzy to me. I am not able to construct
> where a tuple is DEAD (not RECENTLY_DEAD) and still there could be
> a transaction need to follow the ctid pointer chain from its parent. Can
> somebody help me to construct this scenario ?
I thought the classical example was a transaction that updated the same
tuple multiple times before committing. Then the version prior to the
transaction start isn't dead yet, but all but one of the versions
created by the transaction will be dead (they were never visible by
anybody else anyway).
I believe that calculation of oldestXmin would consider the running
if any, which can still see the original tuple. So the intermediate tuples
declared DEAD (they will be declared RECENTLY_DEAD) as long as the other
transaction is running. Any newer transactions would always see the
copy and hence need not follow ctid through the dead tuples.
I might be missing something very obvious, but thats what I am trying to