diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c index 72798ef9ef..e6f66df9a1 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 7187ca7c98..4652915c4e 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);