"Tom Lane" <[EMAIL PROTECTED]> writes
>
> WARNING:  relation "t1" page 196 is uninitialized --- fixing
> TRAP: FailedAssertion("!((((PageHeader) ((PageHeader)
pageHeader))->pd_upper == 0))", File: "hio.c", Line: 263)
> LOG:  server process (PID 11296) was terminated by signal 6
>

Inspired by this, can we put an asseration here:

---
  /*
   * lookup the buffer.  IO_IN_PROGRESS is set if the requested
   * 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++;
---

BufferAlloc() consists of two parts, one is looking for the blockNum, the
other is allocating a free buffer. If the asseration is good, then for
"isExtend", we just need the second part. This could bring marginal
performance benefits.


Regards,
Qingqing



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to