From: Simon Riggs Date: Sat, 12 May 2012 12:24:15 +0000 (+0100) Subject: Ensure backwards compatibility for GetStableLatestTransactionId() X-Git-Tag: REL9_0_8~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=37edecfdfe21c2d20431109e9d1aeb18485bbf0a;p=thirdparty%2Fpostgresql.git Ensure backwards compatibility for GetStableLatestTransactionId() --- 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; }