I think we should avoid the #define's like below which uses a local variable. I guess the same #define is used elsewhere in the code as well. If the code is rearranged or the variable name is changed, the code would break.
The use of malloc should also be avoided (unless the memory subsystem is not up yet; I haven't checked). *************** *** 706,713 **** (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); Assert(snapshot->subxip == NULL); snapshot->subxip = (TransactionId *) ! malloc(arrayP->maxProcs * PGPROC_MAX_CACHED_SUBXIDS * sizeof(TransactionId)); if (snapshot->subxip == NULL) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), --- 1003,1011 ---- (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); Assert(snapshot->subxip == NULL); + #define maxNumSubXids (arrayP->maxProcs * PGPROC_MAX_CACHED_SUBXIDS) snapshot->subxip = (TransactionId *) ! malloc(maxNumSubXids * sizeof(TransactionId)); if (snapshot->subxip == NULL) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), Thanks, Pavan -- Pavan Deolasee EnterpriseDB http://www.enterprisedb.com