On 3/10/07, Tom Lane <[EMAIL PROTECTED]> wrote:


Although this shouldn't happen anymore after fixing the chaining
conditions, I'm inclined to introduce an additional test to verify that
the starting tuple is actually MOVED_OFF after we finish the chain move.
If not, give up on repair_frag the same as in some other corner cases.


scan_heap() would usually have collected the DEAD tuple in offsets_free
list. How do you plan to check if the tuple is in middle on a chain which
has
RECENTLY_DEAD tuple before the tuple under check ? Don't we need
to collect the TID of the DEAD tuple in the vtlinks[] as well to establish
the backward chains ?



[ raised eyebrow... ] You sure about that?  If you replace an XID
before OldestXmin with one after, or vice versa, ISTM you *could*
be creating a problem.  "Committed" is not good enough.  So it looks
to me like you can't remove a DEAD tuple whose predecessor is only
RECENTLY_DEAD.


I also thought about it. For HOT, since we are only talking about the
HOT-update chain within the page, ISTM it should be OK to change
the xmin of the next tuple. I can see the following two cases:

Case 1:

Say, OldestXmin = 17

10,20    20,18   18,16    16,14    14,22      22,0
RD       RD       D         D          RD        L

After we remove the two DEAD tuples, the HOT-chain would
look like:

10,20    20,18    18,22      22,0
RD       RD        RD        L

Case 2:

Say, OldestXmin = 17

10,20    20,18   18,16    16,14    14,0
RD       RD       D         D          L

After we remove the two DEAD tuples, the HOT-chain would
look like:

10,20    20,18    18,0
RD       RD        L

In both the cases, the modified HOT-chain looks sane to me.
I understand that when we walk backward in the chain, we would
have "break" at the second last tuple in Case 1 and the last tuple
in the Case 2, but with the modified chain we shall walk backward
to the first tuple in the chain.

Do you see any issue here ? Anyways, if you plan to fix the problem
in a different way for the current implementation, I can use the same
for HOT.

Thanks,
Pavan

--

EnterpriseDB     http://www.enterprisedb.com

Reply via email to