diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c
index 1a48485..9b2eede 100644
--- a/src/backend/storage/ipc/procarray.c
+++ b/src/backend/storage/ipc/procarray.c
@@ -55,6 +55,7 @@
 #include "storage/spin.h"
 #include "utils/builtins.h"
 #include "utils/snapmgr.h"
+#include "utils/tqual.h"
 
 
 /* Our shared memory area */
@@ -1200,6 +1201,7 @@ GetSnapshotData(Snapshot snapshot)
 	int			count = 0;
 	int			subcount = 0;
 	bool		suboverflowed = false;
+	bool		allDbs = !IsMVCCSnapshot(snapshot);
 
 	Assert(snapshot != NULL);
 
@@ -1278,6 +1280,12 @@ GetSnapshotData(Snapshot snapshot)
 			if (proc->vacuumFlags & PROC_IN_VACUUM)
 				continue;
 
+			/* MVCC snapshots ignore other databases */
+			if (!allDbs &&
+				proc->databaseId != MyDatabaseId &&
+				proc->databaseId != 0)		/* always include WalSender */
+				continue;
+
 			/* Update globalxmin to be the smallest valid xmin */
 			xid = proc->xmin;	/* fetch just once */
 			if (TransactionIdIsNormal(xid) &&
