From ae753b86b58a9c7d9d88ef1c0270bdf01aa16cb0 Mon Sep 17 00:00:00 2001
From: "Vadim B. Mikheev" <vadim4o@yahoo.com>
Date: Tue, 31 Dec 1996 06:47:30 +0000
Subject: [PATCH] ReleaseTmpRelBuffers () releases buffers in  LOCAL buffer
 pool now (if rd_islocal is true).

---
 src/backend/storage/buffer/bufmgr.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 007f7275ba2..1499659aef0 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.5 1996/11/08 05:58:11 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.6 1996/12/31 06:47:30 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1243,6 +1243,24 @@ ReleaseTmpRelBuffers(Relation tempreldesc)
     int holding = 0;
     BufferDesc *buf;
     
+    /*
+     * Is tempreldesc->rd_islocal == FALSE possible at all ?
+     * But I don't want to mess something now. - vadim 12/31/96
+     */
+    if ( tempreldesc->rd_islocal )
+    {
+    	for (i = 0; i < NLocBuffer; i++)
+    	{
+	    buf = &LocalBufferDescriptors[i];
+	    if ((buf->flags & BM_DIRTY) &&
+		(buf->tag.relId.relId == tempreldesc->rd_id))
+	    {
+		buf->flags &= ~BM_DIRTY;
+	    }
+    	}
+    	return;
+    }
+
     for (i=1; i<=NBuffers; i++) {
 	buf = &BufferDescriptors[i-1];
 	if (!holding) {
-- 
GitLab