Blowaway relation buffers from buffer pool before truncation.
authorVadim B. Mikheev
Mon, 22 Sep 1997 07:12:33 +0000 (07:12 +0000)
committerVadim B. Mikheev
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 
 
+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);