mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
localbuf.c must be able to do blind writes.
This commit is contained in:
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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.47 2002/12/05 22:48:03 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -90,19 +90,24 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr)
|
|||||||
{
|
{
|
||||||
Relation bufrel = RelationNodeCacheGetRelation(bufHdr->tag.rnode);
|
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 */
|
/* flush this page */
|
||||||
smgrwrite(DEFAULT_SMGR, bufrel, bufHdr->tag.blockNum,
|
if (bufrel == (Relation) NULL)
|
||||||
(char *) MAKE_PTR(bufHdr->data));
|
{
|
||||||
LocalBufferFlushCount++;
|
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 */
|
LocalBufferFlushCount++;
|
||||||
RelationDecrementReferenceCount(bufrel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user