I have applied the following cleanup to procarray.c.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://www.enterprisedb.com
+ If your life is a hard drive, Christ can be your backup. +
Index: src/backend/storage/ipc/procarray.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/ipc/procarray.c,v
retrieving revision 1.21
diff -c -c -r1.21 procarray.c
*** src/backend/storage/ipc/procarray.c 16 Jan 2007 13:28:56 -0000 1.21
--- src/backend/storage/ipc/procarray.c 23 Mar 2007 03:14:10 -0000
***************
*** 590,595 ****
--- 590,600 ----
xmax = ReadNewTransactionId();
+ /*
+ * Spin over procArray checking xid, xmin, and subxids. The goal is
+ * to gather all active xids, find the lowest xmin, and try to record
+ * subxids.
+ */
for (index = 0; index < arrayP->numProcs; index++)
{
PGPROC *proc = arrayP->procs[index];
***************
*** 614,621 ****
if (TransactionIdPrecedes(xid, xmin))
xmin = xid;
! snapshot->xip[count] = xid;
! count++;
/* Update globalxmin to be the smallest valid xmin */
xid = proc->xmin;
--- 619,625 ----
if (TransactionIdPrecedes(xid, xmin))
xmin = xid;
! snapshot->xip[count++] = xid;
/* Update globalxmin to be the smallest valid xmin */
xid = proc->xmin;