Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Patch applied. Thanks. > > * block is not currently in memory. > > */ > > bufHdr = BufferAlloc(reln, blockNum, &found); > > + /* we are guaranted that nobody else has touched this > > will-be-new block */ > > + Assert(!(found && isExtend)); > > if (found) > > BufferHitCount++; > > } > > This patch is utterly wrong. Please revert it. > > The case it is Asserting can't happen is explained in the comment a > couple dozen lines further down: > > * try to extend a relation > * read smgrnblocks to find the current relation length > * allocate an empty buffer for the N+1'st page of the rel > * call smgrextend > * smgrextend fails for some reason (eg, no space left on disk) > * buffer remains present, but is not BM_VALID > * awhile later, try to extend relation again > * read smgrnblocks to find the current relation length > * allocate a buffer for the N+1'st page of the rel > > This is entirely likely to find the same non-BM_VALID buffer that was > assigned in the first iteration.
Reverted. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match