aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/localbuf.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-12-05 22:48:03 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-12-05 22:48:03 +0000
commita2e8e15dd442e59deff2e96542b5281c14f63786 (patch)
tree00d32981d472fdd1ad4483aa196d65b09188e0e5 /src/backend/storage/buffer/localbuf.c
parent993b145d7ff99231128e83b51317094821314e32 (diff)
downloadpostgresql-a2e8e15dd442e59deff2e96542b5281c14f63786.tar.gz
postgresql-a2e8e15dd442e59deff2e96542b5281c14f63786.zip
localbuf.c must be able to do blind writes.
Diffstat (limited to 'src/backend/storage/buffer/localbuf.c')
-rw-r--r--src/backend/storage/buffer/localbuf.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 5f4033b583e..29ec7902222 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -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.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);
- /*
- * 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++;
}
/*