diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 67c596d..aa1bc62 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -393,19 +393,21 @@ CatalogCacheCompareTuple(const CatCache *cache, int nkeys,
 		Datum atp;
 		bool isnull;
 
-		/*
-		 * XXX: might be worthwhile to only handle oid sysattr, to reduce
-		 * overhead - it's the most common key.
-		 */
-		atp = heap_getattr(tuple,
-						   cc_key[i],
-						   tupdesc,
-						   &isnull);
-		Assert(!isnull);
-
-		if (!(cc_fastequal[i])(atp, arguments[i]))
+		if (cc_key[i] == ObjectIdAttributeNumber)
 		{
-			return false;
+			if (HeapTupleGetOid(tuple) != DatumGetObjectId(arguments[i]))
+				return false;
+		}
+		else
+		{
+			atp = heap_getattr(tuple,
+							   cc_key[i],
+							   tupdesc,
+							   &isnull);
+			Assert(!isnull);
+
+			if (!(cc_fastequal[i])(atp, arguments[i]))
+				return false;
 		}
 	}
 	return true;
