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:
parent
56901beb80
commit
3dfaea4727
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user