Re: [COMMITTERS] pgsql: Fix freezing of a dead HOT-updated tuple

From: Peter Geoghegan <pg(at)bowt(dot)ie>
To: "Wong, Yi Wen" <yiwong(at)amazon(dot)com>
Cc: "Wood, Dan" <hexpert(at)amazon(dot)com>, Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [COMMITTERS] pgsql: Fix freezing of a dead HOT-updated tuple
Date: 2017-10-04 15:40:32
Message-ID: CAH2-WzmpuR3vF6+PW2nRh2+eHPTb-c3tAw+S8iBWPK8pwtnUpg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers pgsql-hackers

On Tue, Oct 3, 2017 at 8:43 PM, Wong, Yi Wen <yiwong(at)amazon(dot)com> wrote:
> My interpretation of README.HOT is the check is just to ensure the chain is continuous; in which case the condition should be:
>
>> if (TransactionIdIsValid(priorXmax) &&
>> !TransactionIdEquals(priorXmax, HeapTupleHeaderGetRawXmin(htup)))
>> break;
>
> So the difference is GetRawXmin vs GetXmin, because otherwise we get the FreezeId instead of the Xmin when the transaction happened

I was thinking along similar lines.

> The interesting consequence of changing that is the prune seems to get the entire chain altogether with Dan's repro... I've run it a couple of times and have consistently gotten the following page
>
> lp | t_ctid | lp_off | lp_flags | t_infomask | t_infomask2
> ----+--------+--------+----------+------------+-------------
> 1 | (0,1) | 8152 | 1 | 2818 | 3
> 2 | | 7 | 2 | |
> 3 | | 0 | 0 | |
> 4 | | 0 | 0 | |
> 5 | | 0 | 0 | |
> 6 | | 0 | 0 | |
> 7 | (0,7) | 8112 | 1 | 11010 | 32771
> (7 rows)

That's also what I see. This is a good thing, I think; that's how we
ought to prune.

--
Peter Geoghegan

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2017-10-04 16:45:08 pgsql: Attempt to adapt windows build for 212e6f34d55c.
Previous Message Alvaro Herrera 2017-10-04 13:46:05 Re: [COMMITTERS] pgsql: Fix freezing of a dead HOT-updated tuple

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2017-10-04 16:00:18 Re: Partition-wise join for join between (declaratively) partitioned tables
Previous Message Robert Haas 2017-10-04 15:34:06 Re: Partition-wise join for join between (declaratively) partitioned tables