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) &&