1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-25 21:42:33 +03:00

Revert back-branch changes in behavior of age(xid).

Per discussion, it does not seem like a good idea to change the behavior of
age(xid) in a minor release, even though the old definition causes the
function to fail on hot standby slaves.  Therefore, revert commit
5829387381d2e4edf84652bb5a712f6185860670 and follow-on commits in the back
branches only.
This commit is contained in:
Tom Lane 2012-05-31 11:12:26 -04:00
parent 56901beb80
commit 3dfaea4727
3 changed files with 2 additions and 27 deletions

View File

@ -392,30 +392,6 @@ GetCurrentTransactionIdIfAny(void)
return CurrentTransactionState->transactionId; return CurrentTransactionState->transactionId;
} }
/*
* GetStableLatestTransactionId
*
* Get the XID once and then return same value for rest of transaction.
* Acts as a useful reference point for maintenance tasks.
*/
TransactionId
GetStableLatestTransactionId(void)
{
static LocalTransactionId lxid = InvalidLocalTransactionId;
static TransactionId stablexid = InvalidTransactionId;
if (lxid != MyProc->lxid)
{
lxid = MyProc->lxid;
stablexid = GetTopTransactionIdIfAny();
if (!TransactionIdIsValid(stablexid))
stablexid = ReadNewTransactionId();
}
Assert(TransactionIdIsValid(stablexid));
return stablexid;
}
/* /*
* AssignTransactionId * AssignTransactionId

View File

@ -87,13 +87,13 @@ xideq(PG_FUNCTION_ARGS)
} }
/* /*
* xid_age - compute age of an XID (relative to latest stable xid) * xid_age - compute age of an XID (relative to current xact)
*/ */
Datum Datum
xid_age(PG_FUNCTION_ARGS) xid_age(PG_FUNCTION_ARGS)
{ {
TransactionId xid = PG_GETARG_TRANSACTIONID(0); TransactionId xid = PG_GETARG_TRANSACTIONID(0);
TransactionId now = GetStableLatestTransactionId(); TransactionId now = GetTopTransactionId();
/* Permanent XIDs are always infinitely old */ /* Permanent XIDs are always infinitely old */
if (!TransactionIdIsNormal(xid)) if (!TransactionIdIsNormal(xid))

View File

@ -198,7 +198,6 @@ extern TransactionId GetTopTransactionId(void);
extern TransactionId GetTopTransactionIdIfAny(void); extern TransactionId GetTopTransactionIdIfAny(void);
extern TransactionId GetCurrentTransactionId(void); extern TransactionId GetCurrentTransactionId(void);
extern TransactionId GetCurrentTransactionIdIfAny(void); extern TransactionId GetCurrentTransactionIdIfAny(void);
extern TransactionId GetStableLatestTransactionId(void);
extern SubTransactionId GetCurrentSubTransactionId(void); extern SubTransactionId GetCurrentSubTransactionId(void);
extern CommandId GetCurrentCommandId(bool used); extern CommandId GetCurrentCommandId(bool used);
extern TimestampTz GetCurrentTransactionStartTimestamp(void); extern TimestampTz GetCurrentTransactionStartTimestamp(void);