]> granicus.if.org Git - postgresql/commitdiff
Blowaway relation buffers from buffer pool before truncation.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 22 Sep 1997 07:12:33 +0000 (07:12 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 22 Sep 1997 07:12:33 +0000 (07:12 +0000)
src/backend/commands/vacuum.c

index af88b26ea1c7f104c624029365acd76aad8c05da..3af40713b305d4a906682db904cb4943f6e35d6a 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.47 1997/09/12 04:07:30 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.48 1997/09/22 07:12:33 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -56,6 +56,8 @@
 
 #include <port-protos.h>
 
+extern int BlowawayRelationBuffers(Relation rdesc, BlockNumber block);
+
 bool           VacuumRunning = false;
 
 static Portal vc_portal;
@@ -1394,6 +1396,9 @@ Elapsed %u/%u sec.",
        /* truncate relation */
        if (blkno < nblocks)
        {
+               i = BlowawayRelationBuffers(onerel, blkno);
+               if (i < 0)
+                       elog (FATAL, "VACUUM (vc_rpfheap): BlowawayRelationBuffers returned %d", i);
                blkno = smgrtruncate(onerel->rd_rel->relsmgr, onerel, blkno);
                Assert(blkno >= 0);
                vacrelstats->npages = blkno;    /* set new number of blocks */
@@ -1465,6 +1470,10 @@ vc_vacheap(VRelStats *vacrelstats, Relation onerel, VPageList Vvpl)
                 * it) before truncation
                 */
                FlushBufferPool(!TransactionFlushEnabled());
+               
+               i = BlowawayRelationBuffers(onerel, nblocks);
+               if (i < 0)
+                       elog (FATAL, "VACUUM (vc_vacheap): BlowawayRelationBuffers returned %d", i);
 
                nblocks = smgrtruncate(onerel->rd_rel->relsmgr, onerel, nblocks);
                Assert(nblocks >= 0);