I got assertion in my 6.2.1 production data base today.
Patch for 6.2.1 follows and is on ftp site too.
Vadim
*** vacuum.c.orig Wed Feb 25 09:44:08 1998
--- vacuum.c Wed Feb 25 09:58:17 1998
***************
*** 1144,1166 ****
/*
* If no one tuple can't be added to this page -
* remove page from Fvpl. - vadim 11/27/96
*/
! if (!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);
Fnpages--;
! if (Fnpages == 0)
! break;
! /* get prev reapped page from Fvpl */
! Fvplast = Fvpl->vpl_pgdesc[Fnpages - 1];
! Fblklast = Fvplast->vpd_blkno;
}
}
for (i = 0; i < Fnpages; i++)
--- 1144,1162 ----
/*
* 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 (ToVpd != Fvplast &&
! !vc_enough_space(ToVpd, vacrelstats->min_tlen))
{
! Assert(Fnpages > ToVpI + 1);
! memmove(Fvpl->vpl_pgdesc + ToVpI,
! Fvpl->vpl_pgdesc + ToVpI + 1,
! sizeof(VPageDescr *) * (Fnpages - ToVpI - 1));
Fnpages--;
! Assert (Fvplast == Fvpl->vpl_pgdesc[Fnpages - 1]);
}
}
for (i = 0; i < Fnpages; i++)