From: Thomas Munro Date: Mon, 11 Nov 2019 03:33:04 +0000 (+1300) Subject: Optimize TransactionIdIsCurrentTransactionId(). X-Git-Url: http://git.postgresql.org/gitweb/-?a=commitdiff_plain;h=695c5977c8bc115029a85dcc1821d7b0136b4e4c;p=users%2Frhaas%2Fpostgres.git 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 --- diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index fc55fa6d53..e5e2902465 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