aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2019-11-11 16:33:04 +1300
committerThomas Munro <tmunro@postgresql.org>2019-11-11 16:33:04 +1300
commit695c5977c8bc115029a85dcc1821d7b0136b4e4c (patch)
tree61b9edb5b40e3eb4afeec44a34d7a630894ca091
parent9fab25c6cd1f943284b8e0014007cd5750d54308 (diff)
downloadpostgresql-695c5977c8bc115029a85dcc1821d7b0136b4e4c.tar.gz
postgresql-695c5977c8bc115029a85dcc1821d7b0136b4e4c.zip
Optimize TransactionIdIsCurrentTransactionId().
If the passed in xid is the current top transaction, we can do a fast check and exit early. This should work well for the current heap but also works very well for proposed AMs that don't use a separate xid for subtransactions. Author: Ashwin Agrawal, based on a suggestion from Andres Freund Reviewed-by: Thomas Munro Discussion: https://postgr.es/m/CALfoeiv0k3hkEb3Oqk%3DziWqtyk2Jys1UOK5hwRBNeANT_yX%2Bng%40mail.gmail.com
-rw-r--r--src/backend/access/transam/xact.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index fc55fa6d53c..e5e2902465a 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -871,6 +871,9 @@ TransactionIdIsCurrentTransactionId(TransactionId xid)
if (!TransactionIdIsNormal(xid))
return false;
+ if (TransactionIdEquals(xid, GetTopTransactionIdIfAny()))
+ return true;
+
/*
* In parallel workers, the XIDs we must consider as current are stored in
* ParallelCurrentXids rather than the transaction-state stack. Note that