]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Vacuum fix. Was modifying cache.
authorBruce Momjian <bruce@momjian.us>
Wed, 19 Aug 1998 19:59:49 +0000 (19:59 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 19 Aug 1998 19:59:49 +0000 (19:59 +0000)
src/backend/commands/vacuum.c
src/bin/initdb/initdb.sh
src/include/catalog/pg_description.h
src/include/commands/vacuum.h

index 7b922e09504588baf30f2c658b4829dcfe26b331..5aa744e5ff42bec55a890d9b1d0ef264abce41a6 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.71 1998/08/19 15:47:35 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.72 1998/08/19 19:59:43 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -87,7 +87,7 @@ static void vc_vaconeind(VPageList vpl, Relation indrel, int nhtups);
 static void vc_scanoneind(Relation indrel, int nhtups);
 static void vc_attrstats(Relation onerel, VRelStats *vacrelstats, HeapTuple tuple);
 static void vc_bucketcpy(AttributeTupleForm attr, Datum value, Datum *bucket, int16 *bucket_len);
-static void vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelstats);
+static void vc_updstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats *vacrelstats);
 static void vc_delhilowstats(Oid relid, int attcnt, int *attnums);
 static void vc_setpagelock(Relation rel, BlockNumber blkno);
 static VPageDescr vc_tidreapped(ItemPointer itemptr, VPageList vpl);
@@ -258,10 +258,10 @@ vc_vacuum(NameData *VacRelP, bool analyze, List *va_cols)
 static VRelList
 vc_getrels(NameData *VacRelP)
 {
-       Relation        pgclass;
-       TupleDesc       pgcdesc;
-       HeapScanDesc pgcscan;
-       HeapTuple       pgctup;
+       Relation        rel;
+       TupleDesc       tupdesc;
+       HeapScanDesc scan;
+       HeapTuple       tuple;
        PortalVariableMemory portalmem;
        MemoryContext old;
        VRelList        vrl,
@@ -271,35 +271,35 @@ vc_getrels(NameData *VacRelP)
        char            rkind;
        bool            n;
        bool            found = false;
-       ScanKeyData pgckey;
+       ScanKeyData key;
 
        StartTransactionCommand();
 
        if (VacRelP->data)
        {
-               ScanKeyEntryInitialize(&pgckey, 0x0, Anum_pg_class_relname,
+               ScanKeyEntryInitialize(&key, 0x0, Anum_pg_class_relname,
                                                           F_NAMEEQ,
                                                           PointerGetDatum(VacRelP->data));
        }
        else
        {
-               ScanKeyEntryInitialize(&pgckey, 0x0, Anum_pg_class_relkind,
+               ScanKeyEntryInitialize(&key, 0x0, Anum_pg_class_relkind,
                                                  F_CHAREQ, CharGetDatum('r'));
        }
 
        portalmem = PortalGetVariableMemory(vc_portal);
        vrl = cur = (VRelList) NULL;
 
-       pgclass = heap_openr(RelationRelationName);
-       pgcdesc = RelationGetTupleDescriptor(pgclass);
+       rel = heap_openr(RelationRelationName);
+       tupdesc = RelationGetTupleDescriptor(rel);
 
-       pgcscan = heap_beginscan(pgclass, false, SnapshotNow, 1, &pgckey);
+       scan = heap_beginscan(rel, false, SnapshotNow, 1, &key);
 
-       while (HeapTupleIsValid(pgctup = heap_getnext(pgcscan, 0)))
+       while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
        {
                found = true;
 
-               d = heap_getattr(pgctup, Anum_pg_class_relname, pgcdesc, &n);
+               d = heap_getattr(tuple, Anum_pg_class_relname, tupdesc, &n);
                rname = (char *) d;
 
                /*
@@ -316,7 +316,7 @@ vc_getrels(NameData *VacRelP)
                        continue;
                }
 
-               d = heap_getattr(pgctup, Anum_pg_class_relkind, pgcdesc, &n);
+               d = heap_getattr(tuple, Anum_pg_class_relkind, tupdesc, &n);
 
                rkind = DatumGetChar(d);
 
@@ -338,15 +338,15 @@ vc_getrels(NameData *VacRelP)
                }
                MemoryContextSwitchTo(old);
 
-               cur->vrl_relid = pgctup->t_oid;
+               cur->vrl_relid = tuple->t_oid;
                cur->vrl_next = (VRelList) NULL;
        }
        if (found == false)
                elog(NOTICE, "Vacuum: table not found");
 
 
-       heap_endscan(pgcscan);
-       heap_close(pgclass);
+       heap_endscan(scan);
+       heap_close(rel);
 
        CommitTransactionCommand();
 
@@ -357,7 +357,7 @@ vc_getrels(NameData *VacRelP)
  *     vc_vacone() -- vacuum one heap relation
  *
  *             This routine vacuums a single heap, cleans out its indices, and
- *             updates its statistics npages and ntups statistics.
+ *             updates its statistics num_pages and num_tuples statistics.
  *
  *             Doing one heap at a time incurs extra overhead, since we need to
  *             check that the heap exists again just before we vacuum it.      The
@@ -368,10 +368,10 @@ vc_getrels(NameData *VacRelP)
 static void
 vc_vacone(Oid relid, bool analyze, List *va_cols)
 {
-       Relation        pgclass;
-       TupleDesc       pgcdesc;
-       HeapTuple       pgctup,
-                               pgttup;
+       Relation        rel;
+       TupleDesc       tupdesc;
+       HeapTuple       tuple,
+                               typetuple;
        Relation        onerel;
        VPageListData Vvpl;                     /* List of pages to vacuum and/or clean
                                                                 * indices */
@@ -382,22 +382,22 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
        int32           nindices,
                                i;
        VRelStats  *vacrelstats;
-
+       
        StartTransactionCommand();
 
-       pgclass = heap_openr(RelationRelationName);
-       pgcdesc = RelationGetTupleDescriptor(pgclass);
+       rel = heap_openr(RelationRelationName);
+       tupdesc = RelationGetTupleDescriptor(rel);
 
        /*
         * Race condition -- if the pg_class tuple has gone away since the
         * last time we saw it, we don't need to vacuum it.
         */
-       pgctup = SearchSysCacheTuple(RELOID,
+       tuple = SearchSysCacheTuple(RELOID,
                                                                 ObjectIdGetDatum(relid),
                                                                 0, 0, 0);
-       if (!HeapTupleIsValid(pgctup))
+       if (!HeapTupleIsValid(tuple))
        {
-               heap_close(pgclass);
+               heap_close(rel);
                CommitTransactionCommand();
                return;
        }
@@ -407,7 +407,7 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
 
        vacrelstats = (VRelStats *) palloc(sizeof(VRelStats));
        vacrelstats->relid = relid;
-       vacrelstats->npages = vacrelstats->ntups = 0;
+       vacrelstats->num_pages = vacrelstats->num_tuples = 0;
        vacrelstats->hasindex = false;
        if (analyze && !IsSystemRelationName((RelationGetRelationName(onerel))->data))
        {
@@ -494,11 +494,11 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
                        else
                                stats->f_cmpgt.fn_addr = NULL;
 
-                       pgttup = SearchSysCacheTuple(TYPOID,
+                       typetuple = SearchSysCacheTuple(TYPOID,
                                                                         ObjectIdGetDatum(stats->attr->atttypid),
                                                                                 0, 0, 0);
-                       if (HeapTupleIsValid(pgttup))
-                               stats->outfunc = ((TypeTupleForm) GETSTRUCT(pgttup))->typoutput;
+                       if (HeapTupleIsValid(typetuple))
+                               stats->outfunc = ((TypeTupleForm) GETSTRUCT(typetuple))->typoutput;
                        else
                                stats->outfunc = InvalidOid;
                }
@@ -517,7 +517,7 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
        RelationSetLockForWrite(onerel);
 
        /* scan it */
-       Vvpl.vpl_npages = Fvpl.vpl_npages = 0;
+       Vvpl.vpl_num_pages = Fvpl.vpl_num_pages = 0;
        vc_scanheap(vacrelstats, onerel, &Vvpl, &Fvpl);
 
        /* Now open indices */
@@ -532,46 +532,46 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
        /* Clean/scan index relation(s) */
        if (Irel != (Relation *) NULL)
        {
-               if (Vvpl.vpl_npages > 0)
+               if (Vvpl.vpl_num_pages > 0)
                {
                        for (i = 0; i < nindices; i++)
-                               vc_vaconeind(&Vvpl, Irel[i], vacrelstats->ntups);
+                               vc_vaconeind(&Vvpl, Irel[i], vacrelstats->num_tuples);
                }
                else
 /* just scan indices to update statistic */
                {
                        for (i = 0; i < nindices; i++)
-                               vc_scanoneind(Irel[i], vacrelstats->ntups);
+                               vc_scanoneind(Irel[i], vacrelstats->num_tuples);
                }
        }
 
-       if (Fvpl.vpl_npages > 0)        /* Try to shrink heap */
+       if (Fvpl.vpl_num_pages > 0)     /* Try to shrink heap */
                vc_rpfheap(vacrelstats, onerel, &Vvpl, &Fvpl, nindices, Irel);
        else
        {
                if (Irel != (Relation *) NULL)
                        vc_clsindices(nindices, Irel);
-               if (Vvpl.vpl_npages > 0)/* Clean pages from Vvpl list */
+               if (Vvpl.vpl_num_pages > 0)/* Clean pages from Vvpl list */
                        vc_vacheap(vacrelstats, onerel, &Vvpl);
        }
 
        /* ok - free Vvpl list of reapped pages */
-       if (Vvpl.vpl_npages > 0)
+       if (Vvpl.vpl_num_pages > 0)
        {
-               vpp = Vvpl.vpl_pgdesc;
-               for (i = 0; i < Vvpl.vpl_npages; i++, vpp++)
+               vpp = Vvpl.vpl_pagedesc;
+               for (i = 0; i < Vvpl.vpl_num_pages; i++, vpp++)
                        pfree(*vpp);
-               pfree(Vvpl.vpl_pgdesc);
-               if (Fvpl.vpl_npages > 0)
-                       pfree(Fvpl.vpl_pgdesc);
+               pfree(Vvpl.vpl_pagedesc);
+               if (Fvpl.vpl_num_pages > 0)
+                       pfree(Fvpl.vpl_pagedesc);
        }
 
        /* all done with this class */
        heap_close(onerel);
-       heap_close(pgclass);
+       heap_close(rel);
 
        /* update statistics in pg_class */
-       vc_updstats(vacrelstats->relid, vacrelstats->npages, vacrelstats->ntups,
+       vc_updstats(vacrelstats->relid, vacrelstats->num_pages, vacrelstats->num_tuples,
                                vacrelstats->hasindex, vacrelstats);
 
        /* next command frees attribute stats */
@@ -609,26 +609,26 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
        char       *relname;
        VPageDescr      vpc,
                                vp;
-       uint32          nvac,
-                               ntups,
+       uint32          tups_vacuumed,
+                               num_tuples,
                                nunused,
                                ncrash,
-                               nempg,
-                               nnepg,
-                               nchpg,
+                               empty_pages,
+                               new_pages,
+                               changed_pages,
                                nemend;
        Size            frsize,
                                frsusf;
        Size            min_tlen = MAXTUPLEN;
        Size            max_tlen = 0;
-       int32           i /* , attr_cnt */ ;
+       int32           i;
        struct rusage ru0,
                                ru1;
        bool            do_shrinking = true;
 
        getrusage(RUSAGE_SELF, &ru0);
 
-       nvac = ntups = nunused = ncrash = nempg = nnepg = nchpg = nemend = 0;
+       tups_vacuumed = num_tuples = nunused = ncrash = empty_pages = new_pages = changed_pages = nemend = 0;
        frsize = frsusf = 0;
 
        relname = (RelationGetRelationName(onerel))->data;
@@ -636,7 +636,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
        nblocks = RelationGetNumberOfBlocks(onerel);
 
        vpc = (VPageDescr) palloc(sizeof(VPageDescrData) + MaxOffsetNumber * sizeof(OffsetNumber));
-       vpc->vpd_nusd = 0;
+       vpc->vpd_offsets_used = 0;
 
        elog(MESSAGE_LEVEL, "--Relation %s--", relname);
        
@@ -645,7 +645,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                buf = ReadBuffer(onerel, blkno);
                page = BufferGetPage(buf);
                vpc->vpd_blkno = blkno;
-               vpc->vpd_noff = 0;
+               vpc->vpd_offsets_free = 0;
 
                if (PageIsNew(page))
                {
@@ -654,7 +654,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                        PageInit(page, BufferGetPageSize(buf), 0);
                        vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
                        frsize += (vpc->vpd_free - sizeof(ItemIdData));
-                       nnepg++;
+                       new_pages++;
                        nemend++;
                        vc_reappage(Vvpl, vpc);
                        WriteBuffer(buf);
@@ -665,7 +665,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                {
                        vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
                        frsize += (vpc->vpd_free - sizeof(ItemIdData));
-                       nempg++;
+                       empty_pages++;
                        nemend++;
                        vc_reappage(Vvpl, vpc);
                        ReleaseBuffer(buf);
@@ -687,7 +687,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                         */
                        if (!ItemIdIsUsed(itemid))
                        {
-                               vpc->vpd_voff[vpc->vpd_noff++] = offnum;
+                               vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum;
                                nunused++;
                                continue;
                        }
@@ -808,13 +808,13 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                                /* mark it unused */
                                lpp->lp_flags &= ~LP_USED;
 
-                               vpc->vpd_voff[vpc->vpd_noff++] = offnum;
-                               nvac++;
+                               vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum;
+                               tups_vacuumed++;
 
                        }
                        else
                        {
-                               ntups++;
+                               num_tuples++;
                                notup = false;
                                if (tuple->t_len < min_tlen)
                                        min_tlen = tuple->t_len;
@@ -828,7 +828,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                {
                        WriteBuffer(buf);
                        dobufrel = false;
-                       nchpg++;
+                       changed_pages++;
                }
                else
                        dobufrel = true;
@@ -841,7 +841,7 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
                        pfree(tempPage);
                        tempPage = (Page) NULL;
                }
-               else if (vpc->vpd_noff > 0)
+               else if (vpc->vpd_offsets_free > 0)
                {                                               /* there are only ~LP_USED line pointers */
                        vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
                        frsize += vpc->vpd_free;
@@ -858,32 +858,32 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
        pfree(vpc);
 
        /* save stats in the rel list for use later */
-       vacrelstats->ntups = ntups;
-       vacrelstats->npages = nblocks;
+       vacrelstats->num_tuples = num_tuples;
+       vacrelstats->num_pages = nblocks;
 /*       vacrelstats->natts = attr_cnt;*/
-       if (ntups == 0)
+       if (num_tuples == 0)
                min_tlen = max_tlen = 0;
        vacrelstats->min_tlen = min_tlen;
        vacrelstats->max_tlen = max_tlen;
 
-       Vvpl->vpl_nemend = nemend;
-       Fvpl->vpl_nemend = nemend;
+       Vvpl->vpl_empty_end_pages = nemend;
+       Fvpl->vpl_empty_end_pages = nemend;
 
        /*
         * Try to make Fvpl keeping in mind that we can't use free space of
         * "empty" end-pages and last page if it reapped.
         */
-       if (do_shrinking && Vvpl->vpl_npages - nemend > 0)
+       if (do_shrinking && Vvpl->vpl_num_pages - nemend > 0)
        {
                int                     nusf;           /* blocks usefull for re-using */
 
-               nusf = Vvpl->vpl_npages - nemend;
-               if ((Vvpl->vpl_pgdesc[nusf - 1])->vpd_blkno == nblocks - nemend - 1)
+               nusf = Vvpl->vpl_num_pages - nemend;
+               if ((Vvpl->vpl_pagedesc[nusf - 1])->vpd_blkno == nblocks - nemend - 1)
                        nusf--;
 
                for (i = 0; i < nusf; i++)
                {
-                       vp = Vvpl->vpl_pgdesc[i];
+                       vp = Vvpl->vpl_pagedesc[i];
                        if (vc_enough_space(vp, min_tlen))
                        {
                                vc_vpinsert(Fvpl, vp);
@@ -896,9 +896,9 @@ vc_scanheap(VRelStats *vacrelstats, Relation onerel,
 
        elog(MESSAGE_LEVEL, "Pages %u: Changed %u, Reapped %u, Empty %u, New %u; \
 Tup %u: Vac %u, Crash %u, UnUsed %u, MinLen %u, MaxLen %u; Re-using: Free/Avail. Space %u/%u; EndEmpty/Avail. Pages %u/%u. Elapsed %u/%u sec.",
-                nblocks, nchpg, Vvpl->vpl_npages, nempg, nnepg,
-                ntups, nvac, ncrash, nunused, min_tlen, max_tlen,
-                frsize, frsusf, nemend, Fvpl->vpl_npages,
+                nblocks, changed_pages, Vvpl->vpl_num_pages, empty_pages, new_pages,
+                num_tuples, tups_vacuumed, ncrash, nunused, min_tlen, max_tlen,
+                frsize, frsusf, nemend, Fvpl->vpl_num_pages,
                 ru1.ru_stime.tv_sec - ru0.ru_stime.tv_sec,
                 ru1.ru_utime.tv_sec - ru0.ru_utime.tv_sec);
 
@@ -930,7 +930,7 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
        OffsetNumber offnum = 0,
                                maxoff = 0,
                                newoff,
-                               moff;
+                               max_offset;
        ItemId          itemid,
                                newitemid;
        HeapTuple       tuple,
@@ -953,10 +953,10 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
                                i;
        Size            tlen;
        int                     nmoved,
-                               Fnpages,
-                               Vnpages;
-       int                     nchkmvd,
-                               ntups;
+                               Fnum_pages,
+                               Vnum_pages;
+       int                     checked_moved,
+                               num_tuples;
        bool            isempty,
                                dowrite;
        struct rusage ru0,
@@ -975,39 +975,39 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
                inulls = (char *) palloc(INDEX_MAX_KEYS * sizeof(*inulls));
        }
 
-       Nvpl.vpl_npages = 0;
-       Fnpages = Fvpl->vpl_npages;
-       Fvplast = Fvpl->vpl_pgdesc[Fnpages - 1];
+       Nvpl.vpl_num_pages = 0;
+       Fnum_pages = Fvpl->vpl_num_pages;
+       Fvplast = Fvpl->vpl_pagedesc[Fnum_pages - 1];
        Fblklast = Fvplast->vpd_blkno;
-       Assert(Vvpl->vpl_npages > Vvpl->vpl_nemend);
-       Vnpages = Vvpl->vpl_npages - Vvpl->vpl_nemend;
-       Vvplast = Vvpl->vpl_pgdesc[Vnpages - 1];
+       Assert(Vvpl->vpl_num_pages > Vvpl->vpl_empty_end_pages);
+       Vnum_pages = Vvpl->vpl_num_pages - Vvpl->vpl_empty_end_pages;
+       Vvplast = Vvpl->vpl_pagedesc[Vnum_pages - 1];
        Vblklast = Vvplast->vpd_blkno;
        Assert(Vblklast >= Fblklast);
        ToBuf = InvalidBuffer;
        nmoved = 0;
 
        vpc = (VPageDescr) palloc(sizeof(VPageDescrData) + MaxOffsetNumber * sizeof(OffsetNumber));
-       vpc->vpd_nusd = vpc->vpd_noff = 0;
+       vpc->vpd_offsets_used = vpc->vpd_offsets_free = 0;
 
-       nblocks = vacrelstats->npages;
-       for (blkno = nblocks - Vvpl->vpl_nemend - 1;; blkno--)
+       nblocks = vacrelstats->num_pages;
+       for (blkno = nblocks - Vvpl->vpl_empty_end_pages - 1;; blkno--)
        {
                /* if it's reapped page and it was used by me - quit */
-               if (blkno == Fblklast && Fvplast->vpd_nusd > 0)
+               if (blkno == Fblklast && Fvplast->vpd_offsets_used > 0)
                        break;
 
                buf = ReadBuffer(onerel, blkno);
                page = BufferGetPage(buf);
 
-               vpc->vpd_noff = 0;
+               vpc->vpd_offsets_free = 0;
 
                isempty = PageIsEmpty(page);
 
                dowrite = false;
                if (blkno == Vblklast)  /* it's reapped page */
                {
-                       if (Vvplast->vpd_noff > 0)      /* there are dead tuples */
+                       if (Vvplast->vpd_offsets_free > 0)      /* there are dead tuples */
                        {                                       /* on this page - clean */
                                Assert(!isempty);
                                vc_vacpage(page, Vvplast);
@@ -1015,18 +1015,18 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
                        }
                        else
                                Assert(isempty);
-                       --Vnpages;
-                       Assert(Vnpages > 0);
+                       --Vnum_pages;
+                       Assert(Vnum_pages > 0);
                        /* get prev reapped page from Vvpl */
-                       Vvplast = Vvpl->vpl_pgdesc[Vnpages - 1];
+                       Vvplast = Vvpl->vpl_pagedesc[Vnum_pages - 1];
                        Vblklast = Vvplast->vpd_blkno;
                        if (blkno == Fblklast)          /* this page in Fvpl too */
                        {
-                               --Fnpages;
-                               Assert(Fnpages > 0);
-                               Assert(Fvplast->vpd_nusd == 0);
+                               --Fnum_pages;
+                               Assert(Fnum_pages > 0);
+                               Assert(Fvplast->vpd_offsets_used == 0);
                                /* get prev reapped page from Fvpl */
-                               Fvplast = Fvpl->vpl_pgdesc[Fnpages - 1];
+                               Fvplast = Fvpl->vpl_pagedesc[Fnum_pages - 1];
                                Fblklast = Fvplast->vpd_blkno;
                        }
                        Assert(Fblklast <= Vblklast);
@@ -1072,27 +1072,27 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
                                        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]);
+                                               Assert(Fnum_pages > ToVpI + 1);
+                                               memmove(Fvpl->vpl_pagedesc + ToVpI,
+                                                               Fvpl->vpl_pagedesc + ToVpI + 1,
+                                                  sizeof(VPageDescr *) * (Fnum_pages - ToVpI - 1));
+                                               Fnum_pages--;
+                                               Assert(Fvplast == Fvpl->vpl_pagedesc[Fnum_pages - 1]);
                                        }
                                }
-                               for (i = 0; i < Fnpages; i++)
+                               for (i = 0; i < Fnum_pages; i++)
                                {
-                                       if (vc_enough_space(Fvpl->vpl_pgdesc[i], tlen))
+                                       if (vc_enough_space(Fvpl->vpl_pagedesc[i], tlen))
                                                break;
                                }
-                               if (i == Fnpages)
+                               if (i == Fnum_pages)
                                        break;          /* can't move item anywhere */
                                ToVpI = i;
-                               ToVpd = Fvpl->vpl_pgdesc[ToVpI];
+                               ToVpd = Fvpl->vpl_pagedesc[ToVpI];
                                ToBuf = ReadBuffer(onerel, ToVpd->vpd_blkno);
                                ToPage = BufferGetPage(ToBuf);
                                /* if this page was not used before - clean it */
-                               if (!PageIsEmpty(ToPage) && ToVpd->vpd_nusd == 0)
+                               if (!PageIsEmpty(ToPage) && ToVpd->vpd_offsets_used == 0)
                                        vc_vacpage(ToPage, ToVpd);
                        }
 
@@ -1116,7 +1116,7 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel,
                                elog(ERROR, "\
 failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
                                         tlen, ToVpd->vpd_blkno, ToVpd->vpd_free,
-                                        ToVpd->vpd_nusd, ToVpd->vpd_noff);
+                                        ToVpd->vpd_offsets_used, ToVpd->vpd_offsets_free);
                        }
                        newitemid = PageGetItemId(ToPage, newoff);
                        pfree(newtup);
@@ -1129,10 +1129,10 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
                        /* set xmax to unknown */
                        tuple->t_infomask &= ~(HEAP_XMAX_INVALID | HEAP_XMAX_COMMITTED);
 
-                       ToVpd->vpd_nusd++;
+                       ToVpd->vpd_offsets_used++;
                        nmoved++;
                        ToVpd->vpd_free = ((PageHeader) ToPage)->pd_upper - ((PageHeader) ToPage)->pd_lower;
-                       vpc->vpd_voff[vpc->vpd_noff++] = offnum;
+                       vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum;
 
                        /* insert index' tuples if needed */
                        if (Irel != (Relation *) NULL)
@@ -1160,7 +1160,7 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
 
                }                                               /* walk along page */
 
-               if (vpc->vpd_noff > 0)  /* some tuples were moved */
+               if (vpc->vpd_offsets_free > 0)  /* some tuples were moved */
                {
                        vc_reappage(&Nvpl, vpc);
                        WriteBuffer(buf);
@@ -1201,29 +1201,29 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
         * Clean uncleaned reapped pages from Vvpl list and set xmin committed
         * for inserted tuples
         */
-       nchkmvd = 0;
-       for (i = 0, vpp = Vvpl->vpl_pgdesc; i < Vnpages; i++, vpp++)
+       checked_moved = 0;
+       for (i = 0, vpp = Vvpl->vpl_pagedesc; i < Vnum_pages; i++, vpp++)
        {
                Assert((*vpp)->vpd_blkno < blkno);
                buf = ReadBuffer(onerel, (*vpp)->vpd_blkno);
                page = BufferGetPage(buf);
-               if ((*vpp)->vpd_nusd == 0)              /* this page was not used */
+               if ((*vpp)->vpd_offsets_used == 0)              /* this page was not used */
                {
 
                        /*
                         * noff == 0 in empty pages only - such pages should be
                         * re-used
                         */
-                       Assert((*vpp)->vpd_noff > 0);
+                       Assert((*vpp)->vpd_offsets_free > 0);
                        vc_vacpage(page, *vpp);
                }
                else
 /* this page was used */
                {
-                       ntups = 0;
-                       moff = PageGetMaxOffsetNumber(page);
+                       num_tuples = 0;
+                       max_offset = PageGetMaxOffsetNumber(page);
                        for (newoff = FirstOffsetNumber;
-                                newoff <= moff;
+                                newoff <= max_offset;
                                 newoff = OffsetNumberNext(newoff))
                        {
                                itemid = PageGetItemId(page, newoff);
@@ -1233,15 +1233,15 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)",
                                if (TransactionIdEquals((TransactionId) tuple->t_xmin, myXID))
                                {
                                        tuple->t_infomask |= HEAP_XMIN_COMMITTED;
-                                       ntups++;
+                                       num_tuples++;
                                }
                        }
-                       Assert((*vpp)->vpd_nusd == ntups);
-                       nchkmvd += ntups;
+                       Assert((*vpp)->vpd_offsets_used == num_tuples);
+                       checked_moved += num_tuples;
                }
                WriteBuffer(buf);
        }
-       Assert(nmoved == nchkmvd);
+       Assert(nmoved == checked_moved);
 
        getrusage(RUSAGE_SELF, &ru1);
 
@@ -1252,7 +1252,7 @@ Elapsed %u/%u sec.",
                 ru1.ru_stime.tv_sec - ru0.ru_stime.tv_sec,
                 ru1.ru_utime.tv_sec - ru0.ru_utime.tv_sec);
 
-       if (Nvpl.vpl_npages > 0)
+       if (Nvpl.vpl_num_pages > 0)
        {
                /* vacuum indices again if needed */
                if (Irel != (Relation *) NULL)
@@ -1261,9 +1261,9 @@ Elapsed %u/%u sec.",
                                           *vpright,
                                                vpsave;
 
-                       /* re-sort Nvpl.vpl_pgdesc */
-                       for (vpleft = Nvpl.vpl_pgdesc,
-                                vpright = Nvpl.vpl_pgdesc + Nvpl.vpl_npages - 1;
+                       /* re-sort Nvpl.vpl_pagedesc */
+                       for (vpleft = Nvpl.vpl_pagedesc,
+                                vpright = Nvpl.vpl_pagedesc + Nvpl.vpl_num_pages - 1;
                                 vpleft < vpright; vpleft++, vpright--)
                        {
                                vpsave = *vpleft;
@@ -1271,19 +1271,19 @@ Elapsed %u/%u sec.",
                                *vpright = vpsave;
                        }
                        for (i = 0; i < nindices; i++)
-                               vc_vaconeind(&Nvpl, Irel[i], vacrelstats->ntups);
+                               vc_vaconeind(&Nvpl, Irel[i], vacrelstats->num_tuples);
                }
 
                /*
                 * clean moved tuples from last page in Nvpl list if some tuples
                 * left there
                 */
-               if (vpc->vpd_noff > 0 && offnum <= maxoff)
+               if (vpc->vpd_offsets_free > 0 && offnum <= maxoff)
                {
                        Assert(vpc->vpd_blkno == blkno - 1);
                        buf = ReadBuffer(onerel, vpc->vpd_blkno);
                        page = BufferGetPage(buf);
-                       ntups = 0;
+                       num_tuples = 0;
                        maxoff = offnum;
                        for (offnum = FirstOffsetNumber;
                                 offnum < maxoff;
@@ -1295,18 +1295,18 @@ Elapsed %u/%u sec.",
                                tuple = (HeapTuple) PageGetItem(page, itemid);
                                Assert(TransactionIdEquals((TransactionId) tuple->t_xmax, myXID));
                                itemid->lp_flags &= ~LP_USED;
-                               ntups++;
+                               num_tuples++;
                        }
-                       Assert(vpc->vpd_noff == ntups);
+                       Assert(vpc->vpd_offsets_free == num_tuples);
                        PageRepairFragmentation(page);
                        WriteBuffer(buf);
                }
 
                /* now - free new list of reapped pages */
-               vpp = Nvpl.vpl_pgdesc;
-               for (i = 0; i < Nvpl.vpl_npages; i++, vpp++)
+               vpp = Nvpl.vpl_pagedesc;
+               for (i = 0; i < Nvpl.vpl_num_pages; i++, vpp++)
                        pfree(*vpp);
-               pfree(Nvpl.vpl_pgdesc);
+               pfree(Nvpl.vpl_pagedesc);
        }
 
        /* truncate relation */
@@ -1317,7 +1317,7 @@ Elapsed %u/%u sec.",
                        elog(FATAL, "VACUUM (vc_rpfheap): BlowawayRelationBuffers returned %d", i);
                blkno = smgrtruncate(DEFAULT_SMGR, onerel, blkno);
                Assert(blkno >= 0);
-               vacrelstats->npages = blkno;    /* set new number of blocks */
+               vacrelstats->num_pages = blkno; /* set new number of blocks */
        }
 
        if (Irel != (Relation *) NULL)          /* pfree index' allocations */
@@ -1347,12 +1347,12 @@ vc_vacheap(VRelStats *vacrelstats, Relation onerel, VPageList Vvpl)
        int                     nblocks;
        int                     i;
 
-       nblocks = Vvpl->vpl_npages;
-       nblocks -= Vvpl->vpl_nemend;/* nothing to do with them */
+       nblocks = Vvpl->vpl_num_pages;
+       nblocks -= Vvpl->vpl_empty_end_pages;/* nothing to do with them */
 
-       for (i = 0, vpp = Vvpl->vpl_pgdesc; i < nblocks; i++, vpp++)
+       for (i = 0, vpp = Vvpl->vpl_pagedesc; i < nblocks; i++, vpp++)
        {
-               if ((*vpp)->vpd_noff > 0)
+               if ((*vpp)->vpd_offsets_free > 0)
                {
                        buf = ReadBuffer(onerel, (*vpp)->vpd_blkno);
                        page = BufferGetPage(buf);
@@ -1362,13 +1362,13 @@ vc_vacheap(VRelStats *vacrelstats, Relation onerel, VPageList Vvpl)
        }
 
        /* truncate relation if there are some empty end-pages */
-       if (Vvpl->vpl_nemend > 0)
+       if (Vvpl->vpl_empty_end_pages > 0)
        {
-               Assert(vacrelstats->npages >= Vvpl->vpl_nemend);
-               nblocks = vacrelstats->npages - Vvpl->vpl_nemend;
+               Assert(vacrelstats->num_pages >= Vvpl->vpl_empty_end_pages);
+               nblocks = vacrelstats->num_pages - Vvpl->vpl_empty_end_pages;
                elog(MESSAGE_LEVEL, "Rel %s: Pages: %u --> %u.",
                         (RelationGetRelationName(onerel))->data,
-                        vacrelstats->npages, nblocks);
+                        vacrelstats->num_pages, nblocks);
 
                /*
                 * we have to flush "empty" end-pages (if changed, but who knows
@@ -1382,7 +1382,7 @@ vc_vacheap(VRelStats *vacrelstats, Relation onerel, VPageList Vvpl)
 
                nblocks = smgrtruncate(DEFAULT_SMGR, onerel, nblocks);
                Assert(nblocks >= 0);
-               vacrelstats->npages = nblocks;  /* set new number of blocks */
+               vacrelstats->num_pages = nblocks;       /* set new number of blocks */
        }
 
 }      /* vc_vacheap */
@@ -1397,10 +1397,10 @@ vc_vacpage(Page page, VPageDescr vpd)
        ItemId          itemid;
        int                     i;
 
-       Assert(vpd->vpd_nusd == 0);
-       for (i = 0; i < vpd->vpd_noff; i++)
+       Assert(vpd->vpd_offsets_used == 0);
+       for (i = 0; i < vpd->vpd_offsets_free; i++)
        {
-               itemid = &(((PageHeader) page)->pd_linp[vpd->vpd_voff[i] - 1]);
+               itemid = &(((PageHeader) page)->pd_linp[vpd->vpd_offsets[i] - 1]);
                itemid->lp_flags &= ~LP_USED;
        }
        PageRepairFragmentation(page);
@@ -1471,7 +1471,7 @@ vc_vaconeind(VPageList vpl, Relation indrel, int nhtups)
        RetrieveIndexResult res;
        IndexScanDesc iscan;
        ItemPointer heapptr;
-       int                     nvac;
+       int                     tups_vacuumed;
        int                     nitups;
        int                     nipages;
        VPageDescr      vp;
@@ -1482,7 +1482,7 @@ vc_vaconeind(VPageList vpl, Relation indrel, int nhtups)
 
        /* walk through the entire index */
        iscan = index_beginscan(indrel, false, 0, (ScanKey) NULL);
-       nvac = 0;
+       tups_vacuumed = 0;
        nitups = 0;
 
        while ((res = index_getnext(iscan, ForwardScanDirection))
@@ -1499,13 +1499,13 @@ vc_vaconeind(VPageList vpl, Relation indrel, int nhtups)
                                 ItemPointerGetBlockNumber(&(res->heap_iptr)),
                                 ItemPointerGetOffsetNumber(&(res->heap_iptr)));
 #endif
-                       if (vp->vpd_noff == 0)
+                       if (vp->vpd_offsets_free == 0)
                        {                                       /* this is EmptyPage !!! */
                                elog(NOTICE, "Ind %s: pointer to EmptyPage (blk %u off %u) - fixing",
                                         indrel->rd_rel->relname.data,
                                         vp->vpd_blkno, ItemPointerGetOffsetNumber(heapptr));
                        }
-                       ++nvac;
+                       ++tups_vacuumed;
                        index_delete(indrel, &res->index_iptr);
                }
                else
@@ -1523,7 +1523,7 @@ vc_vaconeind(VPageList vpl, Relation indrel, int nhtups)
        getrusage(RUSAGE_SELF, &ru1);
 
        elog(MESSAGE_LEVEL, "Ind %s: Pages %u; Tuples %u: Deleted %u. Elapsed %u/%u sec.",
-                indrel->rd_rel->relname.data, nipages, nitups, nvac,
+                indrel->rd_rel->relname.data, nipages, nitups, tups_vacuumed,
                 ru1.ru_stime.tv_sec - ru0.ru_stime.tv_sec,
                 ru1.ru_utime.tv_sec - ru0.ru_utime.tv_sec);
 
@@ -1551,8 +1551,8 @@ vc_tidreapped(ItemPointer itemptr, VPageList vpl)
        ioffno = ItemPointerGetOffsetNumber(itemptr);
 
        vp = &vpd;
-       vpp = (VPageDescr *) vc_find_eq((char *) (vpl->vpl_pgdesc),
-                                          vpl->vpl_npages, sizeof(VPageDescr), (char *) &vp,
+       vpp = (VPageDescr *) vc_find_eq((char *) (vpl->vpl_pagedesc),
+                                          vpl->vpl_num_pages, sizeof(VPageDescr), (char *) &vp,
                                                                        vc_cmp_blk);
 
        if (vpp == (VPageDescr *) NULL)
@@ -1561,13 +1561,13 @@ vc_tidreapped(ItemPointer itemptr, VPageList vpl)
 
        /* ok - we are on true page */
 
-       if (vp->vpd_noff == 0)
+       if (vp->vpd_offsets_free == 0)
        {                                                       /* this is EmptyPage !!! */
                return (vp);
        }
 
-       voff = (OffsetNumber *) vc_find_eq((char *) (vp->vpd_voff),
-                                       vp->vpd_noff, sizeof(OffsetNumber), (char *) &ioffno,
+       voff = (OffsetNumber *) vc_find_eq((char *) (vp->vpd_offsets),
+                                       vp->vpd_offsets_free, sizeof(OffsetNumber), (char *) &ioffno,
                                                                           vc_cmp_offno);
 
        if (voff == (OffsetNumber *) NULL)
@@ -1723,14 +1723,14 @@ vc_bucketcpy(AttributeTupleForm attr, Datum value, Datum *bucket, int16 *bucket_
  *
  *             This routine works for both index and heap relation entries in
  *             pg_class.  We violate no-overwrite semantics here by storing new
- *             values for ntups, npages, and hasindex directly in the pg_class
+ *             values for num_tuples, num_pages, and hasindex directly in the pg_class
  *             tuple that's already on the page.  The reason for this is that if
  *             we updated these tuples in the usual way, then every tuple in pg_class
  *             would be replaced every day.  This would make planning and executing
  *             historical queries very expensive.
  */
 static void
-vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelstats)
+vc_updstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats *vacrelstats)
 {
        Relation        rd,
                                ad,
@@ -1742,24 +1742,28 @@ vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelst
        Form_pg_class pgcform;
        ScanKeyData askey;
        AttributeTupleForm attp;
-
+       Buffer          buffer;
+       
        /*
         * update number of tuples and number of pages in pg_class
         */
-       rtup = SearchSysCacheTupleCopy(RELOID,
-                                                                        ObjectIdGetDatum(relid),
-                                                                        0, 0, 0);
+       rtup = SearchSysCacheTuple(RELOID,
+                                                                ObjectIdGetDatum(relid),
+                                                                0, 0, 0);
        if (!HeapTupleIsValid(rtup))
                elog(ERROR, "pg_class entry for relid %d vanished during vacuuming",
                                relid);
 
        rd = heap_openr(RelationRelationName);
 
+       /* get the buffer cache tuple */
+       rtup = heap_fetch(rd, SnapshotNow, &rtup->t_ctid, &buffer);
+
        /* overwrite the existing statistics in the tuple */
        vc_setpagelock(rd, ItemPointerGetBlockNumber(&rtup->t_ctid));
        pgcform = (Form_pg_class) GETSTRUCT(rtup);
-       pgcform->reltuples = ntups;
-       pgcform->relpages = npages;
+       pgcform->reltuples = num_tuples;
+       pgcform->relpages = num_pages;
        pgcform->relhasindex = hasindex;
 
        if (vacrelstats != NULL && vacrelstats->va_natts > 0)
@@ -1893,7 +1897,7 @@ vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelst
        if (!IsSystemRelationName(pgcform->relname.data))
                RelationInvalidateHeapTuple(rd, rtup);
 
-       pfree(rtup);
+       ReleaseBuffer(buffer);
        heap_close(rd);
 }
 
@@ -1905,27 +1909,27 @@ static void
 vc_delhilowstats(Oid relid, int attcnt, int *attnums)
 {
        Relation        pgstatistic;
-       HeapScanDesc pgsscan;
-       HeapTuple       pgstup;
-       ScanKeyData pgskey;
+       HeapScanDesc scan;
+       HeapTuple       tuple;
+       ScanKeyData key;
 
        pgstatistic = heap_openr(StatisticRelationName);
 
        if (relid != InvalidOid)
        {
-               ScanKeyEntryInitialize(&pgskey, 0x0, Anum_pg_statistic_starelid,
+               ScanKeyEntryInitialize(&key, 0x0, Anum_pg_statistic_starelid,
                                                           F_OIDEQ,
                                                           ObjectIdGetDatum(relid));
-               pgsscan = heap_beginscan(pgstatistic, false, SnapshotNow, 1, &pgskey);
+               scan = heap_beginscan(pgstatistic, false, SnapshotNow, 1, &key);
        }
        else
-               pgsscan = heap_beginscan(pgstatistic, false, SnapshotNow, 0, NULL);
+               scan = heap_beginscan(pgstatistic, false, SnapshotNow, 0, NULL);
 
-       while (HeapTupleIsValid(pgstup = heap_getnext(pgsscan, 0)))
+       while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
        {
                if (attcnt > 0)
                {
-                       Form_pg_statistic pgs = (Form_pg_statistic) GETSTRUCT(pgstup);
+                       Form_pg_statistic pgs = (Form_pg_statistic) GETSTRUCT(tuple);
                        int                     i;
 
                        for (i = 0; i < attcnt; i++)
@@ -1936,10 +1940,10 @@ vc_delhilowstats(Oid relid, int attcnt, int *attnums)
                        if (i >= attcnt)
                                continue;               /* don't delete it */
                }
-               heap_delete(pgstatistic, &pgstup->t_ctid);
+               heap_delete(pgstatistic, &tuple->t_ctid);
        }
 
-       heap_endscan(pgsscan);
+       heap_endscan(scan);
        heap_close(pgstatistic);
 }
 
@@ -1966,15 +1970,15 @@ vc_reappage(VPageList vpl, VPageDescr vpc)
        VPageDescr      newvpd;
 
        /* allocate a VPageDescrData entry */
-       newvpd = (VPageDescr) palloc(sizeof(VPageDescrData) + vpc->vpd_noff * sizeof(OffsetNumber));
+       newvpd = (VPageDescr) palloc(sizeof(VPageDescrData) + vpc->vpd_offsets_free * sizeof(OffsetNumber));
 
        /* fill it in */
-       if (vpc->vpd_noff > 0)
-               memmove(newvpd->vpd_voff, vpc->vpd_voff, vpc->vpd_noff * sizeof(OffsetNumber));
+       if (vpc->vpd_offsets_free > 0)
+               memmove(newvpd->vpd_offsets, vpc->vpd_offsets, vpc->vpd_offsets_free * sizeof(OffsetNumber));
        newvpd->vpd_blkno = vpc->vpd_blkno;
        newvpd->vpd_free = vpc->vpd_free;
-       newvpd->vpd_nusd = vpc->vpd_nusd;
-       newvpd->vpd_noff = vpc->vpd_noff;
+       newvpd->vpd_offsets_used = vpc->vpd_offsets_used;
+       newvpd->vpd_offsets_free = vpc->vpd_offsets_free;
 
        /* insert this page into vpl list */
        vc_vpinsert(vpl, newvpd);
@@ -1986,12 +1990,12 @@ vc_vpinsert(VPageList vpl, VPageDescr vpnew)
 {
 
        /* allocate a VPageDescr entry if needed */
-       if (vpl->vpl_npages == 0)
-               vpl->vpl_pgdesc = (VPageDescr *) palloc(100 * sizeof(VPageDescr));
-       else if (vpl->vpl_npages % 100 == 0)
-               vpl->vpl_pgdesc = (VPageDescr *) repalloc(vpl->vpl_pgdesc, (vpl->vpl_npages + 100) * sizeof(VPageDescr));
-       vpl->vpl_pgdesc[vpl->vpl_npages] = vpnew;
-       (vpl->vpl_npages)++;
+       if (vpl->vpl_num_pages == 0)
+               vpl->vpl_pagedesc = (VPageDescr *) palloc(100 * sizeof(VPageDescr));
+       else if (vpl->vpl_num_pages % 100 == 0)
+               vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, (vpl->vpl_num_pages + 100) * sizeof(VPageDescr));
+       vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew;
+       (vpl->vpl_num_pages)++;
 
 }
 
@@ -2106,14 +2110,14 @@ vc_getindices(Oid relid, int *nindices, Relation **Irel)
 {
        Relation        pgindex;
        Relation        irel;
-       TupleDesc       pgidesc;
-       HeapTuple       pgitup;
-       HeapScanDesc pgiscan;
+       TupleDesc       tupdesc;
+       HeapTuple       tuple;
+       HeapScanDesc scan;
        Datum           d;
        int                     i,
                                k;
        bool            n;
-       ScanKeyData pgikey;
+       ScanKeyData key;
        Oid                *ioid;
 
        *nindices = i = 0;
@@ -2122,25 +2126,25 @@ vc_getindices(Oid relid, int *nindices, Relation **Irel)
 
        /* prepare a heap scan on the pg_index relation */
        pgindex = heap_openr(IndexRelationName);
-       pgidesc = RelationGetTupleDescriptor(pgindex);
+       tupdesc = RelationGetTupleDescriptor(pgindex);
 
-       ScanKeyEntryInitialize(&pgikey, 0x0, Anum_pg_index_indrelid,
+       ScanKeyEntryInitialize(&key, 0x0, Anum_pg_index_indrelid,
                                                   F_OIDEQ,
                                                   ObjectIdGetDatum(relid));
 
-       pgiscan = heap_beginscan(pgindex, false, SnapshotNow, 1, &pgikey);
+       scan = heap_beginscan(pgindex, false, SnapshotNow, 1, &key);
 
-       while (HeapTupleIsValid(pgitup = heap_getnext(pgiscan, 0)))
+       while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
        {
-               d = heap_getattr(pgitup, Anum_pg_index_indexrelid,
-                                                pgidesc, &n);
+               d = heap_getattr(tuple, Anum_pg_index_indexrelid,
+                                                tupdesc, &n);
                i++;
                if (i % 10 == 0)
                        ioid = (Oid *) repalloc(ioid, (i + 10) * sizeof(Oid));
                ioid[i - 1] = DatumGetObjectId(d);
        }
 
-       heap_endscan(pgiscan);
+       heap_endscan(scan);
        heap_close(pgindex);
 
        if (i == 0)
@@ -2196,21 +2200,26 @@ static void
 vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
 {
        IndDesc    *idcur;
-       HeapTuple       pgIndexTup;
+       HeapTuple       tuple;
        AttrNumber *attnumP;
        int                     natts;
        int                     i;
-
+       Buffer          buffer;
+       
        *Idesc = (IndDesc *) palloc(nindices * sizeof(IndDesc));
 
        for (i = 0, idcur = *Idesc; i < nindices; i++, idcur++)
        {
-               pgIndexTup =
-                       SearchSysCacheTuple(INDEXRELID,
-                                                               ObjectIdGetDatum(RelationGetRelid(Irel[i])),
-                                                               0, 0, 0);
-               Assert(pgIndexTup);
-               idcur->tform = (IndexTupleForm) GETSTRUCT(pgIndexTup);
+               tuple = SearchSysCacheTuple(INDEXRELID,
+                                                                       ObjectIdGetDatum(RelationGetRelid(Irel[i])),
+                                                                       0, 0, 0);
+               Assert(tuple);
+
+               /* get the buffer cache tuple */
+               tuple = heap_fetch(onerel, SnapshotNow, &tuple->t_ctid, &buffer);
+               Assert(tuple);
+
+               idcur->tform = (IndexTupleForm) GETSTRUCT(tuple);
                for (attnumP = &(idcur->tform->indkey[0]), natts = 0;
                         *attnumP != InvalidAttrNumber && natts != INDEX_MAX_KEYS;
                         attnumP++, natts++);
@@ -2226,6 +2235,7 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
                        idcur->finfoP = (FuncIndexInfo *) NULL;
 
                idcur->natts = natts;
+               ReleaseBuffer(buffer);
        }
 
 }      /* vc_mkindesc */
@@ -2240,7 +2250,7 @@ vc_enough_space(VPageDescr vpd, Size len)
        if (len > vpd->vpd_free)
                return (false);
 
-       if (vpd->vpd_nusd < vpd->vpd_noff)      /* there are free itemid(s) */
+       if (vpd->vpd_offsets_used < vpd->vpd_offsets_free)      /* there are free itemid(s) */
                return (true);                  /* and len <= free_space */
 
        /* ok. noff_usd >= noff_free and so we'll have to allocate new itemid */
index 2c16006209bb8902b5244ca915bf326686344b26..f59c00d5eb2a039ea738b3ffa53d30c9e3e33ee6 100644 (file)
@@ -26,7 +26,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.46 1998/08/14 16:05:51 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.47 1998/08/19 19:59:45 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -317,7 +317,7 @@ fi
 BACKENDARGS="-boot -C -F -D$PGDATA $BACKEND_TALK_ARG"
 
 echo "$CMDNAME: creating template database in $PGDATA/base/template1"
-echo "Running: postgres $BACKENDARGS template1"
+[ "$debug" -ne 0 ] && echo "Running: postgres $BACKENDARGS template1"
 
 cat $TEMPLATE \
 | sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
@@ -345,7 +345,7 @@ pg_version $PGDATA/base/template1
 
 if [ $template_only -eq 0 ]; then
     echo "Creating global classes in $PG_DATA/base"
-    echo "Running: postgres $BACKENDARGS template1"
+    [ "$debug" -ne 0 ] && echo "Running: postgres $BACKENDARGS template1"
 
     cat $GLOBAL \
     | sed -e "s/postgres PGUID/$POSTGRES_SUPERUSERNAME $POSTGRES_SUPERUID/" \
@@ -382,7 +382,7 @@ if [ $template_only -eq 0 ]; then
     #echo "show" >> /tmp/create.$$
     echo "close pg_database" >> /tmp/create.$$
 
-    echo "Running: postgres $BACKENDARGS template1 < /tmp/create.$$"
+    [ "$debug" -ne 0 ] && echo "Running: postgres $BACKENDARGS template1 < /tmp/create.$$"
 
     postgres $BACKENDARGS template1 < /tmp/create.$$ 
 
index f2916ee3a89e885d2e84785cd62aef38700d0001..3a2c4e6b38a333e1d63e2bb11e762a1368127eae 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_description.h,v 1.5 1998/02/26 04:40:53 momjian Exp $
+ * $Id: pg_description.h,v 1.6 1998/08/19 19:59:47 momjian Exp $
  *
  * NOTES
  *             the genbki.sh script reads this file and generates .bki
@@ -58,9 +58,10 @@ typedef FormData_pg_description *Form_pg_description;
  * ----------------
  */
 
-/* Because the contents of this table are taken from the other *.h files,
-   there is no initialization. It is loaded from initdb using a COPY
-   statement.
-*/
+/*
+ *     Because the contents of this table are taken from the other *.h files,
+ *     there is no initialization.     It is loaded from initdb using a COPY
+ *     statement.
+ */
 
 #endif                                                 /* PG_DESCRIPTION_H */
index 05e737f7349b3a49d186bc64890ea6d078f3c36c..529d652e64f85bea7fe40124505562c089e19dc0 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: vacuum.h,v 1.13 1998/02/26 04:41:12 momjian Exp $
+ * $Id: vacuum.h,v 1.14 1998/08/19 19:59:49 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,18 +33,18 @@ typedef struct VPageDescrData
 {
        BlockNumber vpd_blkno;          /* BlockNumber of this Page */
        Size            vpd_free;               /* FreeSpace on this Page */
-       uint16          vpd_nusd;               /* Number of OffNums used by vacuum */
-       uint16          vpd_noff;               /* Number of OffNums free or to be free */
-       OffsetNumber vpd_voff[1];       /* Array of its OffNums */
+       uint16          vpd_offsets_used;       /* Number of OffNums used by vacuum */
+       uint16          vpd_offsets_free;       /* Number of OffNums free or to be free */
+       OffsetNumber vpd_offsets[1];    /* Array of its OffNums */
 } VPageDescrData;
 
 typedef VPageDescrData *VPageDescr;
 
 typedef struct VPageListData
 {
-       int                     vpl_nemend;             /* Number of "empty" end-pages */
-       int                     vpl_npages;             /* Number of pages in vpl_pgdesc */
-       VPageDescr *vpl_pgdesc;         /* Descriptions of pages */
+       int                     vpl_empty_end_pages;    /* Number of "empty" end-pages */
+       int                     vpl_num_pages;          /* Number of pages in vpl_pagedesc */
+       VPageDescr *vpl_pagedesc;       /* Descriptions of pages */
 } VPageListData;
 
 typedef VPageListData *VPageList;
@@ -96,8 +96,8 @@ typedef VRelListData *VRelList;
 typedef struct VRelStats
 {
        Oid                     relid;
-       int                     ntups;
-       int                     npages;
+       int                     num_tuples;
+       int                     num_pages;
        Size            min_tlen;
        Size            max_tlen;
        bool            hasindex;