aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1998-02-25 23:40:32 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1998-02-25 23:40:32 +0000
commit20ef87171c86213eb64d47ba5b9fc0d4ddbf0d19 (patch)
treee5c989a7bd9248d54a6d378b97a37d21b01b95d2 /src
parent48a61651b547797cca3bb52a0a8f50b8755d93f8 (diff)
downloadpostgresql-20ef87171c86213eb64d47ba5b9fc0d4ddbf0d19.tar.gz
postgresql-20ef87171c86213eb64d47ba5b9fc0d4ddbf0d19.zip
Fix 6.X vacuum bug in shrinking code.
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/vacuum.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index f586158570e..47d5d2fb47a 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.61 1998/02/03 21:57:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.62 1998/02/25 23:40:32 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1083,23 +1083,19 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
/*
* If no one tuple can't be added to this page -
* remove page from Fvpl. - vadim 11/27/96
+ *
+ * But we can't remove last page - this is our
+ * "show-stopper" !!! - vadim 02/25/98
*/
- if (!vc_enough_space(ToVpd, vacrelstats->min_tlen))
+ if (ToVpd != Fvplast &&
+ !vc_enough_space(ToVpd, vacrelstats->min_tlen))
{
- if (ToVpd != Fvplast)
- {
- Assert(Fnpages > ToVpI + 1);
- memmove(Fvpl->vpl_pgdesc + ToVpI,
- Fvpl->vpl_pgdesc + ToVpI + 1,
- sizeof(VPageDescr *) * (Fnpages - ToVpI - 1));
- }
- Assert(Fnpages >= 1);
+ Assert(Fnpages > ToVpI + 1);
+ memmove(Fvpl->vpl_pgdesc + ToVpI,
+ Fvpl->vpl_pgdesc + ToVpI + 1,
+ sizeof(VPageDescr *) * (Fnpages - ToVpI - 1));
Fnpages--;
- if (Fnpages == 0)
- break;
- /* get prev reapped page from Fvpl */
- Fvplast = Fvpl->vpl_pgdesc[Fnpages - 1];
- Fblklast = Fvplast->vpd_blkno;
+ Assert (Fvplast == Fvpl->vpl_pgdesc[Fnpages - 1]);
}
}
for (i = 0; i < Fnpages; i++)