Commit a29f6c09 authored by Tom Lane's avatar Tom Lane

Make the found-a-buffer-when-we-were-expecting-to-extend-the-rel path

actually work.  It had been throwing an Assert as of my recent changes
to bufmgr.c, but was not really right even before that AFAICT.
parent 109d50dd
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.114 2001/06/29 21:08:24 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.115 2001/07/02 18:47:18 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -198,13 +198,22 @@ ReadBufferInternal(Relation reln, BlockNumber blockNum,
/* if it's already in the buffer pool, we're done */
if (found)
{
/*
* Could have found && isExtend if a buffer was already created for
* the next page position, but then smgrextend failed to write
* the page. Must fall through and try to extend file again.
*/
/* That is, we're done if we expected to be able to find it ... */
if (!isExtend)
return BufferDescriptorGetBuffer(bufHdr);
/*
* If we found a buffer when we were expecting to extend the relation,
* the implication is that a buffer was already created for the next
* page position, but then smgrextend failed to write the page.
* We'd better try the smgrextend again. But since BufferAlloc
* won't have done StartBufferIO, we must do that first.
*/
if (!isLocalBuf)
{
SpinAcquire(BufMgrLock);
StartBufferIO(bufHdr, false);
SpinRelease(BufMgrLock);
}
}
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment