Re: age(xid) on hot standby

Peter Eisentraut <peter_e@gmx.net>

From: Peter Eisentraut <peter_e@gmx.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@commandprompt.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2012-01-15T13:00:03Z
Lists: pgsql-hackers
On ons, 2011-12-28 at 14:35 -0500, Tom Lane wrote:
> Alvaro Herrera <alvherre@commandprompt.com> writes:
> > Excerpts from Peter Eisentraut's message of mié dic 28 15:04:09 -0300 2011:
> >> On a hot standby, this fails with:
> >> ERROR:  cannot assign TransactionIds during recovery
> 
> > I think we could just have the xid_age call
> > GetCurrentTransactionIdIfAny, and if that returns InvalidXid, use
> > ReadNewTransactionId instead.  That xid_age assigns a transaction seems
> > more of an accident than really intended.
> 
> The trouble with using ReadNewTransactionId is that it makes the results
> volatile, not stable as the function is declared to be.

Could we alleviate that problem with some caching within the function?