diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 5353b6ab0b..42d2174dd4 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -853,6 +853,7 @@ bool
 TransactionIdIsCurrentTransactionId(TransactionId xid)
 {
 	TransactionState s;
+	TransactionId topxid = GetTopTransactionIdIfAny();
 
 	/*
 	 * We always say that BootstrapTransactionId is "not my transaction ID"
@@ -867,10 +868,10 @@ TransactionIdIsCurrentTransactionId(TransactionId xid)
 	 * not my transaction ID, so we can just return "false" immediately for
 	 * any non-normal XID.
 	 */
-	if (!TransactionIdIsNormal(xid))
+	if (!TransactionIdIsNormal(xid) || !TransactionIdIsNormal(topxid))
 		return false;
 
-	if (TransactionIdEquals(xid, GetTopTransactionIdIfAny()))
+	if (TransactionIdEquals(xid, topxid))
 		return true;
 
 	/*
