diff --git a/src/backend/access/common/toast_internals.c b/src/backend/access/common/toast_internals.c
index 730cd04a2d..386c5bda2b 100644
--- a/src/backend/access/common/toast_internals.c
+++ b/src/backend/access/common/toast_internals.c
@@ -638,8 +638,12 @@ init_toast_snapshot(Snapshot toast_snapshot)
 {
 	Snapshot	snapshot = GetOldestSnapshot();
 
+	/*
+	 * It is possible to get here when no snapshot has yet been established in
+	 * the current transaction.  If so, just create a transaction snapshot.
+	 */
 	if (snapshot == NULL)
-		elog(ERROR, "no known snapshots");
+		snapshot = GetTransactionSnapshot();
 
 	InitToastSnapshot(*toast_snapshot, snapshot->lsn, snapshot->whenTaken);
 }
