From: Vadim B. Mikheev <vadim4o@yahoo.com>
Date: Sun, 12 Oct 1997 07:12:03 +0000 (+0000)
Subject: Decrement relation reference count incremented in
X-Git-Tag: REL6_2_1~21
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14f81d8d3455933cc1756cccc702cc83a7a1ac84;p=postgresql

Decrement relation reference count incremented in
RelationIdCacheGetRelation() to flush relations from cache
in commit time.
---

diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index ae249eed2a..f8b6c579c8 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.26 1997/09/22 07:13:56 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.27 1997/10/12 07:12:02 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -832,6 +832,8 @@ FlushBuffer(Buffer buffer, bool release)
 
 	status = smgrflush(bufHdr->bufsmgr, bufrel, bufHdr->tag.blockNum,
 					   (char *) MAKE_PTR(bufHdr->data));
+	
+	RelationDecrementReferenceCount(bufrel);
 
 	if (status == SM_FAIL)
 	{
@@ -1065,15 +1067,8 @@ BufferSync()
 				 * were flushing it out we must not clear DIRTY flag -
 				 * vadim 01/17/97
 				 */
-				if (bufHdr->flags & BM_JUST_DIRTIED)
-				{
-					elog(NOTICE, "BufferSync: content of block %u (%s) changed while flushing",
-						 bufHdr->tag.blockNum, bufHdr->sb_relname);
-				}
-				else
-				{
+				if (!(bufHdr->flags & BM_JUST_DIRTIED))
 					bufHdr->flags &= ~BM_DIRTY;
-				}
 				if (reln != (Relation) NULL)
 					RelationDecrementReferenceCount(reln);
 			}
@@ -1392,6 +1387,9 @@ BufferReplace(BufferDesc *bufHdr, bool bufferLockHeld)
 							  bufHdr->tag.blockNum,
 							  (char *) MAKE_PTR(bufHdr->data));
 	}
+	
+	if (reln != (Relation) NULL)
+		RelationDecrementReferenceCount(reln);
 
 	if (status == SM_FAIL)
 		return (FALSE);
diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 2b5c72d9db..9b335ae584 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.12 1997/09/18 20:21:22 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/localbuf.c,v 1.13 1997/10/12 07:12:03 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -127,6 +127,7 @@ LocalBufferAlloc(Relation reln, BlockNumber blockNum, bool *foundPtr)
 		smgrwrite(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum,
 				  (char *) MAKE_PTR(bufHdr->data));
 		LocalBufferFlushCount++;
+		RelationDecrementReferenceCount(bufrel);
 	}
 
 	/*
@@ -204,7 +205,8 @@ FlushLocalBuffer(Buffer buffer, bool release)
 	smgrflush(bufrel->rd_rel->relsmgr, bufrel, bufHdr->tag.blockNum,
 			  (char *) MAKE_PTR(bufHdr->data));
 	LocalBufferFlushCount++;
-
+	RelationDecrementReferenceCount(bufrel);
+	
 	Assert(LocalRefCount[bufid] > 0);
 	if (release)
 		LocalRefCount[bufid]--;
@@ -277,7 +279,8 @@ LocalBufferSync(void)
 			smgrwrite(bufrel->rd_rel->relsmgr, bufrel, buf->tag.blockNum,
 					  (char *) MAKE_PTR(buf->data));
 			LocalBufferFlushCount++;
-
+			RelationDecrementReferenceCount(bufrel);
+			
 			buf->tag.relId.relId = InvalidOid;
 			buf->flags &= ~BM_DIRTY;
 		}