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.
This commit is contained in:
Tom Lane 2001-07-02 18:47:18 +00:00
parent 109d50dd35
commit a29f6c095c

View File

@ -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);
}
}
/*