From: Simon Riggs <simon@2ndQuadrant.com>
Date: Wed, 9 May 2012 13:00:09 +0000 (+0100)
Subject: Avoid xid error from age() function when run on Hot Standby
X-Git-Tag: REL9_0_8~21
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d02918fc3e67104348dd7ba67b17df6836201ac0;p=postgresql

Avoid xid error from age() function when run on Hot Standby
---

diff --git a/src/backend/utils/adt/xid.c b/src/backend/utils/adt/xid.c
index fcde92cb8a..7db6bb1a66 100644
--- a/src/backend/utils/adt/xid.c
+++ b/src/backend/utils/adt/xid.c
@@ -93,7 +93,10 @@ Datum
 xid_age(PG_FUNCTION_ARGS)
 {
 	TransactionId xid = PG_GETARG_TRANSACTIONID(0);
-	TransactionId now = GetTopTransactionId();
+	TransactionId now = GetTopTransactionIdIfAny();
+
+	if (!TransactionIdIsValid(now))
+		now = ReadNewTransactionId();
 
 	/* Permanent XIDs are always infinitely old */
 	if (!TransactionIdIsNormal(xid))