mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +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
5829387381 and follow-on commits in the back
branches only.
			
			
This commit is contained in:
		@@ -392,30 +392,6 @@ GetCurrentTransactionIdIfAny(void)
 | 
			
		||||
	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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
xid_age(PG_FUNCTION_ARGS)
 | 
			
		||||
{
 | 
			
		||||
	TransactionId xid = PG_GETARG_TRANSACTIONID(0);
 | 
			
		||||
	TransactionId now = GetStableLatestTransactionId();
 | 
			
		||||
	TransactionId now = GetTopTransactionId();
 | 
			
		||||
 | 
			
		||||
	/* Permanent XIDs are always infinitely old */
 | 
			
		||||
	if (!TransactionIdIsNormal(xid))
 | 
			
		||||
 
 | 
			
		||||
@@ -198,7 +198,6 @@ extern TransactionId GetTopTransactionId(void);
 | 
			
		||||
extern TransactionId GetTopTransactionIdIfAny(void);
 | 
			
		||||
extern TransactionId GetCurrentTransactionId(void);
 | 
			
		||||
extern TransactionId GetCurrentTransactionIdIfAny(void);
 | 
			
		||||
extern TransactionId GetStableLatestTransactionId(void);
 | 
			
		||||
extern SubTransactionId GetCurrentSubTransactionId(void);
 | 
			
		||||
extern CommandId GetCurrentCommandId(bool used);
 | 
			
		||||
extern TimestampTz GetCurrentTransactionStartTimestamp(void);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user