summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2012-05-12 13:24:15 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2012-05-12 13:24:15 +0100
commit37edecfdfe21c2d20431109e9d1aeb18485bbf0a (patch)
tree0c2e7fdaacd985480092a1a129d6a3a1e5a91142 /src
parent329ee80f79b412915ba96f6896de15b6386b2b97 (diff)
Ensure backwards compatibility for GetStableLatestTransactionId()
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/xact.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index df790c0693e..d1cebeb86db 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -386,11 +386,10 @@ GetCurrentTransactionIdIfAny(void)
return CurrentTransactionState->transactionId;
}
-
/*
- * GetStableLatestTransactionIdIfAny
+ * GetStableLatestTransactionId
*
- * Get the latest XID once and then return same value for rest of transaction.
+ * Get the XID once and then return same value for rest of transaction.
* Acts as a useful reference point for maintenance tasks.
*/
TransactionId
@@ -399,13 +398,16 @@ GetStableLatestTransactionId(void)
static LocalTransactionId lxid = InvalidLocalTransactionId;
static TransactionId stablexid = InvalidTransactionId;
- if (lxid != MyProc->lxid ||
- !TransactionIdIsValid(stablexid))
+ if (lxid != MyProc->lxid)
{
lxid = MyProc->lxid;
- stablexid = ReadNewTransactionId();
+ stablexid = GetTopTransactionIdIfAny();
+ if (!TransactionIdIsValid(stablexid))
+ stablexid = ReadNewTransactionId();
}
+ Assert(TransactionIdIsValid(stablexid));
+
return stablexid;
}