diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index 72798ef9effbd6cbeedd78aa60768f2490f01757..e6f66df9a139d4693083e1dfd84bc70e8b0a2d61 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -1089,7 +1089,7 @@ load_enum_cache_data(TypeCacheEntry *tcache)
 	enum_rel = heap_open(EnumRelationId, AccessShareLock);
 	enum_scan = systable_beginscan(enum_rel,
 								   EnumTypIdLabelIndexId,
-								   true, GetTransactionSnapshot(),
+								   true, GetLatestSnapshot(),
 								   1, &skey);
 
 	while (HeapTupleIsValid(enum_tuple = systable_getnext(enum_scan)))
diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c
index 7187ca7c98d7da16ec7fdadb8d839ca995056b58..4652915c4e3854fe8e9a08c58801cc1985bcfe81 100644
--- a/src/backend/utils/time/snapmgr.c
+++ b/src/backend/utils/time/snapmgr.c
@@ -196,9 +196,9 @@ GetTransactionSnapshot(void)
 Snapshot
 GetLatestSnapshot(void)
 {
-	/* Should not be first call in transaction */
+	/* If first call in transaction, go ahead and set the xact snapshot */
 	if (!FirstSnapshotSet)
-		elog(ERROR, "no snapshot has been set");
+		return GetTransactionSnapshot();
 
 	SecondarySnapshot = GetSnapshotData(&SecondarySnapshotData);