Re: age(xid) on hot standby

Simon Riggs <simon@2ndquadrant.com>

From: Simon Riggs <simon@2ndQuadrant.com>
To: Peter Eisentraut <peter_e@gmx.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@commandprompt.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2012-05-08T23:55:04Z
Lists: pgsql-hackers
On 8 May 2012 20:01, Peter Eisentraut <peter_e@gmx.net> wrote:
> On ons, 2012-01-18 at 14:55 -0500, Tom Lane wrote:
>> BTW, it strikes me that maybe the coding should work about like this:
>>
>>       if (!TransactionIdIsValid(age_reference_xid))
>>       {
>>               age_reference_xid = GetTopTransactionIdIfAny();
>>               if (!TransactionIdIsValid(age_reference_xid))
>>                       age_reference_xid = ReadNewTransactionId();
>>       }
>>       ... use age_reference_xid to compute result ...
>>
>> and of course code somewhere to reset age_reference_xid at end of xact.
>
> How about this patch?

I think we should fix this, but not with this exact patch.

We should just use MyPgXact->xid
rather than add more to the transaction path

I'll simplify the patch and commit.

-- 
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services