OSDN Git Service

ReleaseTmpRelBuffers () releases buffers in LOCAL buffer pool now
authorVadim B. Mikheev <vadim4o@yahoo.com>
Tue, 31 Dec 1996 06:47:30 +0000 (06:47 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Tue, 31 Dec 1996 06:47:30 +0000 (06:47 +0000)
(if rd_islocal is true).

src/backend/storage/buffer/bufmgr.c

index 007f727..1499659 100644 (file)
@@ -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) {