*** 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++)