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