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:
parent
109d50dd35
commit
a29f6c095c
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user