mirror of
https://github.com/postgres/postgres.git
synced 2026-04-15 22:10:45 -04:00
localbuf.c must be able to do blind writes.
This commit is contained in:
parent
0e98ae22d3
commit
500677c40f
1 changed files with 17 additions and 12 deletions
|
|
@ -9,7 +9,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.46 2002/09/04 20:31:25 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.46.2.1 2002/12/05 22:48:10 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
|
@ -90,19 +90,24 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr)
|
|||
{
|
||||
Relation bufrel = RelationNodeCacheGetRelation(bufHdr->tag.rnode);
|
||||
|
||||
/*
|
||||
* The relcache is not supposed to throw away temp rels, so this
|
||||
* should always succeed.
|
||||
*/
|
||||
Assert(bufrel != NULL);
|
||||
|
||||
/* flush this page */
|
||||
smgrwrite(DEFAULT_SMGR, bufrel, bufHdr->tag.blockNum,
|
||||
(char *) MAKE_PTR(bufHdr->data));
|
||||
LocalBufferFlushCount++;
|
||||
if (bufrel == (Relation) NULL)
|
||||
{
|
||||
smgrblindwrt(DEFAULT_SMGR,
|
||||
bufHdr->tag.rnode,
|
||||
bufHdr->tag.blockNum,
|
||||
(char *) MAKE_PTR(bufHdr->data));
|
||||
}
|
||||
else
|
||||
{
|
||||
smgrwrite(DEFAULT_SMGR, bufrel,
|
||||
bufHdr->tag.blockNum,
|
||||
(char *) MAKE_PTR(bufHdr->data));
|
||||
/* drop refcount incremented by RelationNodeCacheGetRelation */
|
||||
RelationDecrementReferenceCount(bufrel);
|
||||
}
|
||||
|
||||
/* drop refcount incremented by RelationNodeCacheGetRelation */
|
||||
RelationDecrementReferenceCount(bufrel);
|
||||
LocalBufferFlushCount++;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue