diff options
Diffstat (limited to 'src/backend/storage/ipc/procarray.c')
-rw-r--r-- | src/backend/storage/ipc/procarray.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 89441f64f1e..575b138c435 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -23,7 +23,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.39 2008/01/01 19:45:51 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.40 2008/01/09 21:52:36 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1006,10 +1006,12 @@ IsBackendPid(int pid) * * If limitXmin is not InvalidTransactionId, we skip any backends * with xmin >= limitXmin. If allDbs is false, we skip backends attached - * to other databases. Also, our own process is always skipped. + * to other databases. If excludeVacuum isn't zero, we skip processes for + * which (excludeVacuum & vacuumFlags) is not zero. Also, our own process + * is always skipped. */ VirtualTransactionId * -GetCurrentVirtualXIDs(TransactionId limitXmin, bool allDbs) +GetCurrentVirtualXIDs(TransactionId limitXmin, bool allDbs, int excludeVacuum) { VirtualTransactionId *vxids; ProcArrayStruct *arrayP = procArray; @@ -1029,6 +1031,9 @@ GetCurrentVirtualXIDs(TransactionId limitXmin, bool allDbs) if (proc == MyProc) continue; + if (excludeVacuum & proc->vacuumFlags) + continue; + if (allDbs || proc->databaseId == MyDatabaseId) { /* Fetch xmin just once - might change on us? */ |