diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index a1aa0b773873742421bcc9bc4322057cbb91834c..d4e4b89f6863ae00826ade9147163e5b15375939 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.155 2000/05/29 16:21:04 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.156 2000/05/29 17:06:14 momjian Exp $ * *------------------------------------------------------------------------- @@ -78,20 +78,20 @@ static void vac_vacuum(NameData *VacRelP, bool analyze, List *anal_cols2); static VRelList getrels(NameData *VacRelP); static void vacuum_rel(Oid relid, bool analyze); static void analyze_rel(Oid relid, List *anal_cols2); -static void scan_heap(VRelStats *vacrelstats, Relation onerel, VPageList vacuum_pages, VPageList fraged_pages); -static void repair_frag(VRelStats *vacrelstats, Relation onerel, VPageList vacuum_pages, VPageList fraged_pages, int nindices, Relation *Irel); -static void vacuum_heap(VRelStats *vacrelstats, Relation onerel, VPageList vpl); -static void vacuum_page(Page page, VPageDescr vpd); -static void vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples); +static void scan_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages, VacPageList fraged_pages); +static void repair_frag(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages, VacPageList fraged_pages, int nindices, Relation *Irel); +static void vacuum_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacpagelist); +static void vacuum_page(Page page, VacPage vacpage); +static void vacuum_index(VacPageList vacpagelist, Relation indrel, int num_tuples, int keep_tuples); static void scan_index(Relation indrel, int num_tuples); static void attr_stats(Relation onerel, int attr_cnt, VacAttrStats *vacattrstats, HeapTuple tuple); static void bucketcpy(Form_pg_attribute attr, Datum value, Datum *bucket, int *bucket_len); static void update_relstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats *vacrelstats); static void update_attstats(Oid relid, int natts, VacAttrStats *vacattrstats); static void del_stats(Oid relid, int attcnt, int *attnums); -static VPageDescr tid_reaped(ItemPointer itemptr, VPageList vpl); -static void reap_page(VPageList vpl, VPageDescr vpc); -static void vpage_insert(VPageList vpl, VPageDescr vpnew); +static VacPage tid_reaped(ItemPointer itemptr, VacPageList vacpagelist); +static void reap_page(VacPageList vacpagelist, VacPage vacpage); +static void vpage_insert(VacPageList vacpagelist, VacPage vpnew); static void get_indices(Oid relid, int *nindices, Relation **Irel); static void close_indices(int nindices, Relation *Irel); static void get_index_desc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc); @@ -100,7 +100,7 @@ static void *vac_find_eq(void *bot, int nelem, int size, void *elm, static int vac_cmp_blk(const void *left, const void *right); static int vac_cmp_offno(const void *left, const void *right); static int vac_cmp_vtlinks(const void *left, const void *right); -static bool enough_space(VPageDescr vpd, Size len); +static bool enough_space(VacPage vacpage, Size len); static char *show_rusage(struct rusage * ru0); /* CommonSpecialPortal function at the bottom */ @@ -363,11 +363,11 @@ vacuum_rel(Oid relid, bool analyze) { HeapTuple tuple; Relation onerel; - VPageListData vacuum_pages; /* List of pages to vacuum and/or clean + VacPageListData vacuum_pages; /* List of pages to vacuum and/or clean * indices */ - VPageListData fraged_pages; /* List of pages with space enough for + VacPageListData fraged_pages; /* List of pages with space enough for * re-using */ - VPageDescr *vpp; + VacPage *vacpage; Relation *Irel; int32 nindices, i; @@ -428,7 +428,7 @@ vacuum_rel(Oid relid, bool analyze) /* scan it */ reindex = false; - vacuum_pages.vpl_num_pages = fraged_pages.vpl_num_pages = 0; + vacuum_pages.num_pages = fraged_pages.num_pages = 0; scan_heap(vacrelstats, onerel, &vacuum_pages, &fraged_pages); if (IsIgnoringSystemIndexes() && IsSystemRelationName(RelationGetRelationName(onerel))) reindex = true; @@ -456,7 +456,7 @@ vacuum_rel(Oid relid, bool analyze) /* Clean/scan index relation(s) */ if (Irel != (Relation *) NULL) { - if (vacuum_pages.vpl_num_pages > 0) + if (vacuum_pages.num_pages > 0) { for (i = 0; i < nindices; i++) vacuum_index(&vacuum_pages, Irel[i], vacrelstats->num_tuples, 0); @@ -469,13 +469,13 @@ vacuum_rel(Oid relid, bool analyze) } } - if (fraged_pages.vpl_num_pages > 0) /* Try to shrink heap */ + if (fraged_pages.num_pages > 0) /* Try to shrink heap */ repair_frag(vacrelstats, onerel, &vacuum_pages, &fraged_pages, nindices, Irel); else { if (Irel != (Relation *) NULL) close_indices(nindices, Irel); - if (vacuum_pages.vpl_num_pages > 0) /* Clean pages from + if (vacuum_pages.num_pages > 0) /* Clean pages from * vacuum_pages list */ vacuum_heap(vacrelstats, onerel, &vacuum_pages); } @@ -483,14 +483,14 @@ vacuum_rel(Oid relid, bool analyze) activate_indexes_of_a_table(relid, true); /* ok - free vacuum_pages list of reaped pages */ - if (vacuum_pages.vpl_num_pages > 0) + if (vacuum_pages.num_pages > 0) { - vpp = vacuum_pages.vpl_pagedesc; - for (i = 0; i < vacuum_pages.vpl_num_pages; i++, vpp++) - pfree(*vpp); - pfree(vacuum_pages.vpl_pagedesc); - if (fraged_pages.vpl_num_pages > 0) - pfree(fraged_pages.vpl_pagedesc); + vacpage = vacuum_pages.pagedesc; + for (i = 0; i < vacuum_pages.num_pages; i++, vacpage++) + pfree(*vacpage); + pfree(vacuum_pages.pagedesc); + if (fraged_pages.num_pages > 0) + pfree(fraged_pages.pagedesc); } /* all done with this class, but hold lock until commit */ @@ -691,7 +691,7 @@ analyze_rel(Oid relid, List *anal_cols2) */ static void scan_heap(VRelStats *vacrelstats, Relation onerel, - VPageList vacuum_pages, VPageList fraged_pages) + VacPageList vacuum_pages, VacPageList fraged_pages) { BlockNumber nblocks, blkno; @@ -707,7 +707,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, dobufrel, notup; char *relname; - VPageDescr vpc, + VacPage vacpage, vp; uint32 tups_vacuumed, num_tuples, @@ -740,37 +740,37 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, nblocks = RelationGetNumberOfBlocks(onerel); - vpc = (VPageDescr) palloc(sizeof(VPageDescrData) + MaxOffsetNumber * sizeof(OffsetNumber)); - vpc->vpd_offsets_used = 0; + vacpage = (VacPage) palloc(sizeof(VacPageData) + MaxOffsetNumber * sizeof(OffsetNumber)); + vacpage->offsets_used = 0; for (blkno = 0; blkno < nblocks; blkno++) { buf = ReadBuffer(onerel, blkno); page = BufferGetPage(buf); - vpc->vpd_blkno = blkno; - vpc->vpd_offsets_free = 0; + vacpage->blkno = blkno; + vacpage->offsets_free = 0; if (PageIsNew(page)) { elog(NOTICE, "Rel %s: Uninitialized page %u - fixing", relname, blkno); PageInit(page, BufferGetPageSize(buf), 0); - vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; - free_size += (vpc->vpd_free - sizeof(ItemIdData)); + vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; + free_size += (vacpage->free - sizeof(ItemIdData)); new_pages++; empty_end_pages++; - reap_page(vacuum_pages, vpc); + reap_page(vacuum_pages, vacpage); WriteBuffer(buf); continue; } if (PageIsEmpty(page)) { - vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; - free_size += (vpc->vpd_free - sizeof(ItemIdData)); + vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; + free_size += (vacpage->free - sizeof(ItemIdData)); empty_pages++; empty_end_pages++; - reap_page(vacuum_pages, vpc); + reap_page(vacuum_pages, vacpage); ReleaseBuffer(buf); continue; } @@ -790,7 +790,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, */ if (!ItemIdIsUsed(itemid)) { - vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum; + vacpage->offsets[vacpage->offsets_free++] = offnum; nunused++; continue; } @@ -974,7 +974,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, /* mark it unused */ lpp->lp_flags &= ~LP_USED; - vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum; + vacpage->offsets[vacpage->offsets_free++] = offnum; tups_vacuumed++; } @@ -1001,17 +1001,17 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, if (tempPage != (Page) NULL) { /* Some tuples are gone */ PageRepairFragmentation(tempPage); - vpc->vpd_free = ((PageHeader) tempPage)->pd_upper - ((PageHeader) tempPage)->pd_lower; - free_size += vpc->vpd_free; - reap_page(vacuum_pages, vpc); + vacpage->free = ((PageHeader) tempPage)->pd_upper - ((PageHeader) tempPage)->pd_lower; + free_size += vacpage->free; + reap_page(vacuum_pages, vacpage); pfree(tempPage); tempPage = (Page) NULL; } - else if (vpc->vpd_offsets_free > 0) + else if (vacpage->offsets_free > 0) { /* there are only ~LP_USED line pointers */ - vpc->vpd_free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; - free_size += vpc->vpd_free; - reap_page(vacuum_pages, vpc); + vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower; + free_size += vacpage->free; + reap_page(vacuum_pages, vacpage); } if (dobufrel) ReleaseBuffer(buf); @@ -1021,7 +1021,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, empty_end_pages = 0; } - pfree(vpc); + pfree(vacpage); /* save stats in the rel list for use later */ vacrelstats->num_tuples = num_tuples; @@ -1032,28 +1032,28 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, vacrelstats->min_tlen = min_tlen; vacrelstats->max_tlen = max_tlen; - vacuum_pages->vpl_empty_end_pages = empty_end_pages; - fraged_pages->vpl_empty_end_pages = empty_end_pages; + vacuum_pages->empty_end_pages = empty_end_pages; + fraged_pages->empty_end_pages = empty_end_pages; /* * Try to make fraged_pages keeping in mind that we can't use free * space of "empty" end-pages and last page if it reaped. */ - if (do_shrinking && vacuum_pages->vpl_num_pages - empty_end_pages > 0) + if (do_shrinking && vacuum_pages->num_pages - empty_end_pages > 0) { int nusf; /* blocks usefull for re-using */ - nusf = vacuum_pages->vpl_num_pages - empty_end_pages; - if ((vacuum_pages->vpl_pagedesc[nusf - 1])->vpd_blkno == nblocks - empty_end_pages - 1) + nusf = vacuum_pages->num_pages - empty_end_pages; + if ((vacuum_pages->pagedesc[nusf - 1])->blkno == nblocks - empty_end_pages - 1) nusf--; for (i = 0; i < nusf; i++) { - vp = vacuum_pages->vpl_pagedesc[i]; + vp = vacuum_pages->pagedesc[i]; if (enough_space(vp, min_tlen)) { vpage_insert(fraged_pages, vp); - usable_free_size += vp->vpd_free; + usable_free_size += vp->free; } } } @@ -1075,11 +1075,11 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, elog(MESSAGE_LEVEL, "Pages %u: Changed %u, reaped %u, Empty %u, New %u; \ Tup %u: Vac %u, Keep/VTL %u/%u, Crash %u, UnUsed %u, MinLen %u, MaxLen %u; \ Re-using: Free/Avail. Space %u/%u; EndEmpty/Avail. Pages %u/%u. %s", - nblocks, changed_pages, vacuum_pages->vpl_num_pages, empty_pages, + nblocks, changed_pages, vacuum_pages->num_pages, empty_pages, new_pages, num_tuples, tups_vacuumed, nkeep, vacrelstats->num_vtlinks, ncrash, nunused, min_tlen, max_tlen, free_size, usable_free_size, - empty_end_pages, fraged_pages->vpl_num_pages, + empty_end_pages, fraged_pages->num_pages, show_rusage(&ru0)); } @@ -1090,14 +1090,14 @@ Re-using: Free/Avail. Space %u/%u; EndEmpty/Avail. Pages %u/%u. %s", * * This routine marks dead tuples as unused and tries re-use dead space * by moving tuples (and inserting indices if needed). It constructs - * Nvpl list of free-ed pages (moved tuples) and clean indices + * Nvacpagelist list of free-ed pages (moved tuples) and clean indices * for them after committing (in hack-manner - without losing locks * and freeing memory!) current transaction. It truncates relation * if some end-blocks are gone away. */ static void repair_frag(VRelStats *vacrelstats, Relation onerel, - VPageList vacuum_pages, VPageList fraged_pages, + VacPageList vacuum_pages, VacPageList fraged_pages, int nindices, Relation *Irel) { TransactionId myXID; @@ -1120,11 +1120,11 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, Datum *idatum = NULL; char *inulls = NULL; InsertIndexResult iresult; - VPageListData Nvpl; - VPageDescr cur_page = NULL, + VacPageListData Nvacpagelist; + VacPage cur_page = NULL, last_vacuum_page, - vpc, - *vpp; + vacpage, + *curpage; int cur_item = 0; IndDesc *Idesc, *idcur; @@ -1156,17 +1156,17 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, inulls = (char *) palloc(INDEX_MAX_KEYS * sizeof(*inulls)); } - Nvpl.vpl_num_pages = 0; - num_fraged_pages = fraged_pages->vpl_num_pages; - Assert(vacuum_pages->vpl_num_pages > vacuum_pages->vpl_empty_end_pages); - vacuumed_pages = vacuum_pages->vpl_num_pages - vacuum_pages->vpl_empty_end_pages; - last_vacuum_page = vacuum_pages->vpl_pagedesc[vacuumed_pages - 1]; - last_vacuum_block = last_vacuum_page->vpd_blkno; + Nvacpagelist.num_pages = 0; + num_fraged_pages = fraged_pages->num_pages; + Assert(vacuum_pages->num_pages > vacuum_pages->empty_end_pages); + vacuumed_pages = vacuum_pages->num_pages - vacuum_pages->empty_end_pages; + last_vacuum_page = vacuum_pages->pagedesc[vacuumed_pages - 1]; + last_vacuum_block = last_vacuum_page->blkno; cur_buffer = InvalidBuffer; num_moved = 0; - vpc = (VPageDescr) palloc(sizeof(VPageDescrData) + MaxOffsetNumber * sizeof(OffsetNumber)); - vpc->vpd_offsets_used = vpc->vpd_offsets_free = 0; + vacpage = (VacPage) palloc(sizeof(VacPageData) + MaxOffsetNumber * sizeof(OffsetNumber)); + vacpage->offsets_used = vacpage->offsets_free = 0; /* * Scan pages backwards from the last nonempty page, trying to move @@ -1180,21 +1180,21 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, * in order, and on fraged_pages being a subset of vacuum_pages. */ nblocks = vacrelstats->num_pages; - for (blkno = nblocks - vacuum_pages->vpl_empty_end_pages - 1; + for (blkno = nblocks - vacuum_pages->empty_end_pages - 1; blkno > last_move_dest_block; blkno--) { buf = ReadBuffer(onerel, blkno); page = BufferGetPage(buf); - vpc->vpd_offsets_free = 0; + vacpage->offsets_free = 0; isempty = PageIsEmpty(page); dowrite = false; if (blkno == last_vacuum_block) /* it's reaped page */ { - if (last_vacuum_page->vpd_offsets_free > 0) /* there are dead tuples */ + if (last_vacuum_page->offsets_free > 0) /* there are dead tuples */ { /* on this page - clean */ Assert(!isempty); vacuum_page(page, last_vacuum_page); @@ -1206,8 +1206,8 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, if (vacuumed_pages > 0) { /* get prev reaped page from vacuum_pages */ - last_vacuum_page = vacuum_pages->vpl_pagedesc[vacuumed_pages - 1]; - last_vacuum_block = last_vacuum_page->vpd_blkno; + last_vacuum_page = vacuum_pages->pagedesc[vacuumed_pages - 1]; + last_vacuum_block = last_vacuum_page->blkno; } else { @@ -1215,7 +1215,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, last_vacuum_block = -1; } if (num_fraged_pages > 0 && - fraged_pages->vpl_pagedesc[num_fraged_pages - 1]->vpd_blkno == + fraged_pages->pagedesc[num_fraged_pages - 1]->blkno == (BlockNumber) blkno) { /* page is in fraged_pages too; remove it */ @@ -1232,7 +1232,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, chain_tuple_moved = false; /* no one chain-tuple was moved * off this page, yet */ - vpc->vpd_blkno = blkno; + vacpage->blkno = blkno; maxoff = PageGetMaxOffsetNumber(page); for (offnum = FirstOffsetNumber; offnum <= maxoff; @@ -1257,7 +1257,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, /* * If this (chain) tuple is moved by me already then I - * have to check is it in vpc or not - i.e. is it moved + * have to check is it in vacpage or not - i.e. is it moved * while cleaning this page or some previous one. */ if (tuple.t_data->t_infomask & HEAP_MOVED_OFF) @@ -1267,21 +1267,21 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, if (chain_tuple_moved) /* some chains was moved * while */ { /* cleaning this page */ - Assert(vpc->vpd_offsets_free > 0); - for (i = 0; i < vpc->vpd_offsets_free; i++) + Assert(vacpage->offsets_free > 0); + for (i = 0; i < vacpage->offsets_free; i++) { - if (vpc->vpd_offsets[i] == offnum) + if (vacpage->offsets[i] == offnum) break; } - if (i >= vpc->vpd_offsets_free) /* not found */ + if (i >= vacpage->offsets_free) /* not found */ { - vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum; + vacpage->offsets[vacpage->offsets_free++] = offnum; keep_tuples--; } } else { - vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum; + vacpage->offsets[vacpage->offsets_free++] = offnum; keep_tuples--; } continue; @@ -1309,7 +1309,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, palloc(100 * sizeof(VTupleMoveData)); int num_vtmove = 0; int free_vtmove = 100; - VPageDescr to_vpd = NULL; + VacPage to_vacpage = NULL; int to_item = 0; bool freeCbuf = false; int ti; @@ -1366,26 +1366,26 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, /* first, can chain be moved ? */ for (;;) { - if (to_vpd == NULL || - !enough_space(to_vpd, tlen)) + if (to_vacpage == NULL || + !enough_space(to_vacpage, tlen)) { /* - * if to_vpd no longer has enough free space to be + * if to_vacpage no longer has enough free space to be * useful, remove it from fraged_pages list */ - if (to_vpd != NULL && - !enough_space(to_vpd, vacrelstats->min_tlen)) + if (to_vacpage != NULL && + !enough_space(to_vacpage, vacrelstats->min_tlen)) { Assert(num_fraged_pages > to_item); - memmove(fraged_pages->vpl_pagedesc + to_item, - fraged_pages->vpl_pagedesc + to_item + 1, - sizeof(VPageDescr) * (num_fraged_pages - to_item - 1)); + memmove(fraged_pages->pagedesc + to_item, + fraged_pages->pagedesc + to_item + 1, + sizeof(VacPage) * (num_fraged_pages - to_item - 1)); num_fraged_pages--; } for (i = 0; i < num_fraged_pages; i++) { - if (enough_space(fraged_pages->vpl_pagedesc[i], tlen)) + if (enough_space(fraged_pages->pagedesc[i], tlen)) break; } @@ -1394,19 +1394,19 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, { for (i = 0; i < num_vtmove; i++) { - Assert(vtmove[i].vpd->vpd_offsets_used > 0); - (vtmove[i].vpd->vpd_offsets_used)--; + Assert(vtmove[i].vacpage->offsets_used > 0); + (vtmove[i].vacpage->offsets_used)--; } num_vtmove = 0; break; } to_item = i; - to_vpd = fraged_pages->vpl_pagedesc[to_item]; + to_vacpage = fraged_pages->pagedesc[to_item]; } - to_vpd->vpd_free -= MAXALIGN(tlen); - if (to_vpd->vpd_offsets_used >= to_vpd->vpd_offsets_free) - to_vpd->vpd_free -= MAXALIGN(sizeof(ItemIdData)); - (to_vpd->vpd_offsets_used)++; + to_vacpage->free -= MAXALIGN(tlen); + if (to_vacpage->offsets_used >= to_vacpage->offsets_free) + to_vacpage->free -= MAXALIGN(sizeof(ItemIdData)); + (to_vacpage->offsets_used)++; if (free_vtmove == 0) { free_vtmove = 1000; @@ -1415,8 +1415,8 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, sizeof(VTupleMoveData)); } vtmove[num_vtmove].tid = tp.t_self; - vtmove[num_vtmove].vpd = to_vpd; - if (to_vpd->vpd_offsets_used == 1) + vtmove[num_vtmove].vacpage = to_vacpage; + if (to_vacpage->offsets_used == 1) vtmove[num_vtmove].cleanVpd = true; else vtmove[num_vtmove].cleanVpd = false; @@ -1481,8 +1481,8 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, ReleaseBuffer(Pbuf); for (i = 0; i < num_vtmove; i++) { - Assert(vtmove[i].vpd->vpd_offsets_used > 0); - (vtmove[i].vpd->vpd_offsets_used)--; + Assert(vtmove[i].vacpage->offsets_used > 0); + (vtmove[i].vacpage->offsets_used)--; } num_vtmove = 0; elog(NOTICE, "Too old parent tuple found - can't continue repair_frag"); @@ -1531,7 +1531,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, ItemPointerSetInvalid(&Ctid); for (ti = 0; ti < num_vtmove; ti++) { - VPageDescr destvpd = vtmove[ti].vpd; + VacPage destvacpage = vtmove[ti].vacpage; /* Get tuple from chain */ tuple.t_self = vtmove[ti].tid; @@ -1544,7 +1544,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, tuple.t_data = (HeapTupleHeader) PageGetItem(Cpage, Citemid); tuple_len = tuple.t_len = ItemIdGetLength(Citemid); /* Get page to move in */ - cur_buffer = ReadBuffer(onerel, destvpd->vpd_blkno); + cur_buffer = ReadBuffer(onerel, destvacpage->blkno); /* * We should LockBuffer(cur_buffer) but don't, at the @@ -1559,20 +1559,20 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, * * This path is different from the other callers of * vacuum_page, because we have already incremented the - * vpd's vpd_offsets_used field to account for the + * vacpage's offsets_used field to account for the * tuple(s) we expect to move onto the page. Therefore - * vacuum_page's check for vpd_offsets_used == 0 is + * vacuum_page's check for offsets_used == 0 is * wrong. But since that's a good debugging check for * all other callers, we work around it here rather * than remove it. */ if (!PageIsEmpty(ToPage) && vtmove[ti].cleanVpd) { - int sv_offsets_used = destvpd->vpd_offsets_used; + int sv_offsets_used = destvacpage->offsets_used; - destvpd->vpd_offsets_used = 0; - vacuum_page(ToPage, destvpd); - destvpd->vpd_offsets_used = sv_offsets_used; + destvacpage->offsets_used = 0; + vacuum_page(ToPage, destvacpage); + destvacpage->offsets_used = sv_offsets_used; } heap_copytuple_with_tuple(&tuple, &newtup); RelationInvalidateHeapTuple(onerel, &tuple); @@ -1585,15 +1585,15 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, if (newoff == InvalidOffsetNumber) { elog(ERROR, "moving chain: failed to add item with len = %u to page %u", - tuple_len, destvpd->vpd_blkno); + tuple_len, destvacpage->blkno); } newitemid = PageGetItemId(ToPage, newoff); pfree(newtup.t_data); newtup.t_datamcxt = NULL; newtup.t_data = (HeapTupleHeader) PageGetItem(ToPage, newitemid); - ItemPointerSet(&(newtup.t_self), destvpd->vpd_blkno, newoff); - if (((int) destvpd->vpd_blkno) > last_move_dest_block) - last_move_dest_block = destvpd->vpd_blkno; + ItemPointerSet(&(newtup.t_self), destvacpage->blkno, newoff); + if (((int) destvacpage->blkno) > last_move_dest_block) + last_move_dest_block = destvacpage->blkno; /* * Set t_ctid pointing to itself for last tuple in @@ -1617,7 +1617,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, * (corresponding index tuple will be cleaned). */ if (Cbuf == buf) - vpc->vpd_offsets[vpc->vpd_offsets_free++] = + vacpage->offsets[vacpage->offsets_free++] = ItemPointerGetOffsetNumber(&(tuple.t_self)); else keep_tuples++; @@ -1670,25 +1670,25 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, if (!enough_space(cur_page, vacrelstats->min_tlen)) { Assert(num_fraged_pages > cur_item); - memmove(fraged_pages->vpl_pagedesc + cur_item, - fraged_pages->vpl_pagedesc + cur_item + 1, - sizeof(VPageDescr) * (num_fraged_pages - cur_item - 1)); + memmove(fraged_pages->pagedesc + cur_item, + fraged_pages->pagedesc + cur_item + 1, + sizeof(VacPage) * (num_fraged_pages - cur_item - 1)); num_fraged_pages--; } } for (i = 0; i < num_fraged_pages; i++) { - if (enough_space(fraged_pages->vpl_pagedesc[i], tuple_len)) + if (enough_space(fraged_pages->pagedesc[i], tuple_len)) break; } if (i == num_fraged_pages) break; /* can't move item anywhere */ cur_item = i; - cur_page = fraged_pages->vpl_pagedesc[cur_item]; - cur_buffer = ReadBuffer(onerel, cur_page->vpd_blkno); + cur_page = fraged_pages->pagedesc[cur_item]; + cur_buffer = ReadBuffer(onerel, cur_page->blkno); ToPage = BufferGetPage(cur_buffer); /* if this page was not used before - clean it */ - if (!PageIsEmpty(ToPage) && cur_page->vpd_offsets_used == 0) + if (!PageIsEmpty(ToPage) && cur_page->offsets_used == 0) vacuum_page(ToPage, cur_page); } @@ -1713,14 +1713,14 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, { elog(ERROR, "\ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", - tuple_len, cur_page->vpd_blkno, cur_page->vpd_free, - cur_page->vpd_offsets_used, cur_page->vpd_offsets_free); + tuple_len, cur_page->blkno, cur_page->free, + cur_page->offsets_used, cur_page->offsets_free); } newitemid = PageGetItemId(ToPage, newoff); pfree(newtup.t_data); newtup.t_datamcxt = NULL; newtup.t_data = (HeapTupleHeader) PageGetItem(ToPage, newitemid); - ItemPointerSet(&(newtup.t_data->t_ctid), cur_page->vpd_blkno, newoff); + ItemPointerSet(&(newtup.t_data->t_ctid), cur_page->blkno, newoff); newtup.t_self = newtup.t_data->t_ctid; /* @@ -1732,13 +1732,13 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", ~(HEAP_XMIN_COMMITTED | HEAP_XMIN_INVALID | HEAP_MOVED_IN); tuple.t_data->t_infomask |= HEAP_MOVED_OFF; - cur_page->vpd_offsets_used++; + cur_page->offsets_used++; num_moved++; - cur_page->vpd_free = ((PageHeader) ToPage)->pd_upper - ((PageHeader) ToPage)->pd_lower; - if (((int) cur_page->vpd_blkno) > last_move_dest_block) - last_move_dest_block = cur_page->vpd_blkno; + cur_page->free = ((PageHeader) ToPage)->pd_upper - ((PageHeader) ToPage)->pd_lower; + if (((int) cur_page->blkno) > last_move_dest_block) + last_move_dest_block = cur_page->blkno; - vpc->vpd_offsets[vpc->vpd_offsets_free++] = offnum; + vacpage->offsets[vacpage->offsets_free++] = offnum; /* insert index' tuples if needed */ if (Irel != (Relation *) NULL) @@ -1788,22 +1788,22 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", /* some chains was moved while */ if (chain_tuple_moved) { /* cleaning this page */ - Assert(vpc->vpd_offsets_free > 0); - for (i = 0; i < vpc->vpd_offsets_free; i++) + Assert(vacpage->offsets_free > 0); + for (i = 0; i < vacpage->offsets_free; i++) { - if (vpc->vpd_offsets[i] == off) + if (vacpage->offsets[i] == off) break; } - if (i >= vpc->vpd_offsets_free) /* not found */ + if (i >= vacpage->offsets_free) /* not found */ { - vpc->vpd_offsets[vpc->vpd_offsets_free++] = off; + vacpage->offsets[vacpage->offsets_free++] = off; Assert(keep_tuples > 0); keep_tuples--; } } else { - vpc->vpd_offsets[vpc->vpd_offsets_free++] = off; + vacpage->offsets[vacpage->offsets_free++] = off; Assert(keep_tuples > 0); keep_tuples--; } @@ -1811,14 +1811,14 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", } } - if (vpc->vpd_offsets_free > 0) /* some tuples were moved */ + if (vacpage->offsets_free > 0) /* some tuples were moved */ { if (chain_tuple_moved) /* else - they are ordered */ { - qsort((char *) (vpc->vpd_offsets), vpc->vpd_offsets_free, + qsort((char *) (vacpage->offsets), vacpage->offsets_free, sizeof(OffsetNumber), vac_cmp_offno); } - reap_page(&Nvpl, vpc); + reap_page(&Nvacpagelist, vacpage); WriteBuffer(buf); } else if (dowrite) @@ -1858,15 +1858,15 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", * xmin committed for inserted tuples */ checked_moved = 0; - for (i = 0, vpp = vacuum_pages->vpl_pagedesc; i < vacuumed_pages; i++, vpp++) + for (i = 0, curpage = vacuum_pages->pagedesc; i < vacuumed_pages; i++, curpage++) { - Assert((*vpp)->vpd_blkno < (BlockNumber) blkno); - buf = ReadBuffer(onerel, (*vpp)->vpd_blkno); + Assert((*curpage)->blkno < (BlockNumber) blkno); + buf = ReadBuffer(onerel, (*curpage)->blkno); page = BufferGetPage(buf); - if ((*vpp)->vpd_offsets_used == 0) /* this page was not used */ + if ((*curpage)->offsets_used == 0) /* this page was not used */ { if (!PageIsEmpty(page)) - vacuum_page(page, *vpp); + vacuum_page(page, *curpage); } else /* this page was used */ @@ -1897,7 +1897,7 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", elog(ERROR, "HEAP_MOVED_OFF/HEAP_MOVED_IN was expected"); } } - Assert((*vpp)->vpd_offsets_used == num_tuples); + Assert((*curpage)->offsets_used == num_tuples); checked_moved += num_tuples; } WriteBuffer(buf); @@ -1909,18 +1909,18 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", nblocks, blkno, num_moved, show_rusage(&ru0)); - if (Nvpl.vpl_num_pages > 0) + if (Nvacpagelist.num_pages > 0) { /* vacuum indices again if needed */ if (Irel != (Relation *) NULL) { - VPageDescr *vpleft, + VacPage *vpleft, *vpright, vpsave; - /* re-sort Nvpl.vpl_pagedesc */ - for (vpleft = Nvpl.vpl_pagedesc, - vpright = Nvpl.vpl_pagedesc + Nvpl.vpl_num_pages - 1; + /* re-sort Nvacpagelist.pagedesc */ + for (vpleft = Nvacpagelist.pagedesc, + vpright = Nvacpagelist.pagedesc + Nvacpagelist.num_pages - 1; vpleft < vpright; vpleft++, vpright--) { vpsave = *vpleft; @@ -1929,15 +1929,15 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", } Assert(keep_tuples >= 0); for (i = 0; i < nindices; i++) - vacuum_index(&Nvpl, Irel[i], + vacuum_index(&Nvacpagelist, Irel[i], vacrelstats->num_tuples, keep_tuples); } - /* clean moved tuples from last page in Nvpl list */ - if (vpc->vpd_blkno == (BlockNumber) (blkno - 1) && - vpc->vpd_offsets_free > 0) + /* clean moved tuples from last page in Nvacpagelist list */ + if (vacpage->blkno == (BlockNumber) (blkno - 1) && + vacpage->offsets_free > 0) { - buf = ReadBuffer(onerel, vpc->vpd_blkno); + buf = ReadBuffer(onerel, vacpage->blkno); page = BufferGetPage(buf); num_tuples = 0; for (offnum = FirstOffsetNumber; @@ -1964,16 +1964,16 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", } } - Assert(vpc->vpd_offsets_free == num_tuples); + Assert(vacpage->offsets_free == num_tuples); PageRepairFragmentation(page); WriteBuffer(buf); } /* now - free new list of reaped pages */ - vpp = Nvpl.vpl_pagedesc; - for (i = 0; i < Nvpl.vpl_num_pages; i++, vpp++) - pfree(*vpp); - pfree(Nvpl.vpl_pagedesc); + curpage = Nvacpagelist.pagedesc; + for (i = 0; i < Nvacpagelist.num_pages; i++, curpage++) + pfree(*curpage); + pfree(Nvacpagelist.pagedesc); } /* truncate relation, after flushing any dirty pages out to disk */ @@ -1995,7 +1995,7 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", close_indices(nindices, Irel); } - pfree(vpc); + pfree(vacpage); if (vacrelstats->vtlinks != NULL) pfree(vacrelstats->vtlinks); @@ -2008,34 +2008,34 @@ failed to add item with len = %u to page %u (free space %u, nusd %u, noff %u)", * if there are "empty" end-blocks. */ static void -vacuum_heap(VRelStats *vacrelstats, Relation onerel, VPageList vacuum_pages) +vacuum_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages) { Buffer buf; Page page; - VPageDescr *vpp; + VacPage *vacpage; int nblocks; int i; - nblocks = vacuum_pages->vpl_num_pages; - nblocks -= vacuum_pages->vpl_empty_end_pages; /* nothing to do with + nblocks = vacuum_pages->num_pages; + nblocks -= vacuum_pages->empty_end_pages; /* nothing to do with * them */ - for (i = 0, vpp = vacuum_pages->vpl_pagedesc; i < nblocks; i++, vpp++) + for (i = 0, vacpage = vacuum_pages->pagedesc; i < nblocks; i++, vacpage++) { - if ((*vpp)->vpd_offsets_free > 0) + if ((*vacpage)->offsets_free > 0) { - buf = ReadBuffer(onerel, (*vpp)->vpd_blkno); + buf = ReadBuffer(onerel, (*vacpage)->blkno); page = BufferGetPage(buf); - vacuum_page(page, *vpp); + vacuum_page(page, *vacpage); WriteBuffer(buf); } } /* truncate relation if there are some empty end-pages */ - if (vacuum_pages->vpl_empty_end_pages > 0) + if (vacuum_pages->empty_end_pages > 0) { - Assert(vacrelstats->num_pages >= vacuum_pages->vpl_empty_end_pages); - nblocks = vacrelstats->num_pages - vacuum_pages->vpl_empty_end_pages; + Assert(vacrelstats->num_pages >= vacuum_pages->empty_end_pages); + nblocks = vacrelstats->num_pages - vacuum_pages->empty_end_pages; elog(MESSAGE_LEVEL, "Rel %s: Pages: %u --> %u.", RelationGetRelationName(onerel), vacrelstats->num_pages, nblocks); @@ -2065,17 +2065,17 @@ vacuum_heap(VRelStats *vacrelstats, Relation onerel, VPageList vacuum_pages) * and repair its fragmentation. */ static void -vacuum_page(Page page, VPageDescr vpd) +vacuum_page(Page page, VacPage vacpage) { ItemId itemid; int i; /* There shouldn't be any tuples moved onto the page yet! */ - Assert(vpd->vpd_offsets_used == 0); + Assert(vacpage->offsets_used == 0); - for (i = 0; i < vpd->vpd_offsets_free; i++) + for (i = 0; i < vacpage->offsets_free; i++) { - itemid = &(((PageHeader) page)->pd_linp[vpd->vpd_offsets[i] - 1]); + itemid = &(((PageHeader) page)->pd_linp[vacpage->offsets[i] - 1]); itemid->lp_flags &= ~LP_USED; } PageRepairFragmentation(page); @@ -2128,7 +2128,7 @@ scan_index(Relation indrel, int num_tuples) /* * vacuum_index() -- vacuum one index relation. * - * Vpl is the VPageList of the heap we're currently vacuuming. + * Vpl is the VacPageList of the heap we're currently vacuuming. * It's locked. Indrel is an index relation on the vacuumed heap. * We don't set locks on the index relation here, since the indexed * access methods support locking at different granularities. @@ -2138,7 +2138,7 @@ scan_index(Relation indrel, int num_tuples) * pg_class. */ static void -vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples) +vacuum_index(VacPageList vacpagelist, Relation indrel, int num_tuples, int keep_tuples) { RetrieveIndexResult res; IndexScanDesc iscan; @@ -2146,7 +2146,7 @@ vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples) int tups_vacuumed; int num_index_tuples; int num_pages; - VPageDescr vp; + VacPage vp; struct rusage ru0; getrusage(RUSAGE_SELF, &ru0); @@ -2161,7 +2161,7 @@ vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples) { heapptr = &res->heap_iptr; - if ((vp = tid_reaped(heapptr, vpl)) != (VPageDescr) NULL) + if ((vp = tid_reaped(heapptr, vacpagelist)) != (VacPage) NULL) { #ifdef NOT_USED elog(DEBUG, "<%x,%x> -> <%x,%x>", @@ -2170,11 +2170,11 @@ vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples) ItemPointerGetBlockNumber(&(res->heap_iptr)), ItemPointerGetOffsetNumber(&(res->heap_iptr))); #endif - if (vp->vpd_offsets_free == 0) + if (vp->offsets_free == 0) { elog(NOTICE, "Index %s: pointer to EmptyPage (blk %u off %u) - fixing", RelationGetRelationName(indrel), - vp->vpd_blkno, ItemPointerGetOffsetNumber(heapptr)); + vp->blkno, ItemPointerGetOffsetNumber(heapptr)); } ++tups_vacuumed; index_delete(indrel, &res->index_iptr); @@ -2206,42 +2206,42 @@ vacuum_index(VPageList vpl, Relation indrel, int num_tuples, int keep_tuples) /* * tid_reaped() -- is a particular tid reaped? * - * vpl->VPageDescr_array is sorted in right order. + * vacpagelist->VacPage_array is sorted in right order. */ -static VPageDescr -tid_reaped(ItemPointer itemptr, VPageList vpl) +static VacPage +tid_reaped(ItemPointer itemptr, VacPageList vacpagelist) { OffsetNumber ioffno; OffsetNumber *voff; - VPageDescr vp, + VacPage vp, *vpp; - VPageDescrData vpd; + VacPageData vacpage; - vpd.vpd_blkno = ItemPointerGetBlockNumber(itemptr); + vacpage.blkno = ItemPointerGetBlockNumber(itemptr); ioffno = ItemPointerGetOffsetNumber(itemptr); - vp = &vpd; - vpp = (VPageDescr *) vac_find_eq((void *) (vpl->vpl_pagedesc), - vpl->vpl_num_pages, sizeof(VPageDescr), (void *) &vp, + vp = &vacpage; + vpp = (VacPage *) vac_find_eq((void *) (vacpagelist->pagedesc), + vacpagelist->num_pages, sizeof(VacPage), (void *) &vp, vac_cmp_blk); - if (vpp == (VPageDescr *) NULL) - return (VPageDescr) NULL; + if (vpp == (VacPage *) NULL) + return (VacPage) NULL; vp = *vpp; /* ok - we are on true page */ - if (vp->vpd_offsets_free == 0) + if (vp->offsets_free == 0) { /* this is EmptyPage !!! */ return vp; } - voff = (OffsetNumber *) vac_find_eq((void *) (vp->vpd_offsets), - vp->vpd_offsets_free, sizeof(OffsetNumber), (void *) &ioffno, + voff = (OffsetNumber *) vac_find_eq((void *) (vp->offsets), + vp->offsets_free, sizeof(OffsetNumber), (void *) &ioffno, vac_cmp_offno); if (voff == (OffsetNumber *) NULL) - return (VPageDescr) NULL; + return (VacPage) NULL; return vp; @@ -2720,43 +2720,44 @@ del_stats(Oid relid, int attcnt, int *attnums) * (and highest tid on a page is last). */ static void -reap_page(VPageList vpl, VPageDescr vpc) +reap_page(VacPageList vacpagelist, VacPage vacpage) { - VPageDescr newvpd; + VacPage newvacpage; - /* allocate a VPageDescrData entry */ - newvpd = (VPageDescr) palloc(sizeof(VPageDescrData) + vpc->vpd_offsets_free * sizeof(OffsetNumber)); + /* allocate a VacPageData entry */ + newvacpage = (VacPage) palloc(sizeof(VacPageData) + vacpage->offsets_free * sizeof(OffsetNumber)); /* fill it in */ - 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_offsets_used = vpc->vpd_offsets_used; - newvpd->vpd_offsets_free = vpc->vpd_offsets_free; + if (vacpage->offsets_free > 0) + memmove(newvacpage->offsets, vacpage->offsets, vacpage->offsets_free * sizeof(OffsetNumber)); + newvacpage->blkno = vacpage->blkno; + newvacpage->free = vacpage->free; + newvacpage->offsets_used = vacpage->offsets_used; + newvacpage->offsets_free = vacpage->offsets_free; - /* insert this page into vpl list */ - vpage_insert(vpl, newvpd); + /* insert this page into vacpagelist list */ + vpage_insert(vacpagelist, newvacpage); } -static void vpage_insert(VPageList vpl, VPageDescr vpnew) +static void +vpage_insert(VacPageList vacpagelist, VacPage vpnew) { #define PG_NPAGEDESC 1024 - /* allocate a VPageDescr entry if needed */ - if (vpl->vpl_num_pages == 0) + /* allocate a VacPage entry if needed */ + if (vacpagelist->num_pages == 0) { - vpl->vpl_pagedesc = (VPageDescr *) palloc(PG_NPAGEDESC * sizeof(VPageDescr)); - vpl->vpl_num_allocated_pages = PG_NPAGEDESC; + vacpagelist->pagedesc = (VacPage *) palloc(PG_NPAGEDESC * sizeof(VacPage)); + vacpagelist->num_allocated_pages = PG_NPAGEDESC; } - else if (vpl->vpl_num_pages >= vpl->vpl_num_allocated_pages) + else if (vacpagelist->num_pages >= vacpagelist->num_allocated_pages) { - vpl->vpl_num_allocated_pages *= 2; - vpl->vpl_pagedesc = (VPageDescr *) repalloc(vpl->vpl_pagedesc, vpl->vpl_num_allocated_pages * sizeof(VPageDescr)); + vacpagelist->num_allocated_pages *= 2; + vacpagelist->pagedesc = (VacPage *) repalloc(vacpagelist->pagedesc, vacpagelist->num_allocated_pages * sizeof(VacPage)); } - vpl->vpl_pagedesc[vpl->vpl_num_pages] = vpnew; - (vpl->vpl_num_pages)++; + vacpagelist->pagedesc[vacpagelist->num_pages] = vpnew; + (vacpagelist->num_pages)++; } @@ -2821,8 +2822,8 @@ vac_cmp_blk(const void *left, const void *right) BlockNumber lblk, rblk; - lblk = (*((VPageDescr *) left))->vpd_blkno; - rblk = (*((VPageDescr *) right))->vpd_blkno; + lblk = (*((VacPage *) left))->blkno; + rblk = (*((VacPage *) right))->blkno; if (lblk < rblk) return -1; @@ -3063,20 +3064,20 @@ get_index_desc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc) static bool -enough_space(VPageDescr vpd, Size len) +enough_space(VacPage vacpage, Size len) { len = MAXALIGN(len); - if (len > vpd->vpd_free) + if (len > vacpage->free) return false; - if (vpd->vpd_offsets_used < vpd->vpd_offsets_free) /* there are free + if (vacpage->offsets_used < vacpage->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 */ - if (len + MAXALIGN(sizeof(ItemIdData)) <= vpd->vpd_free) + if (len + MAXALIGN(sizeof(ItemIdData)) <= vacpage->free) return true; return false; diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h index 79f2ba8bfb4efe035b91171324faba375c0232ea..e11ad2500a059a75b30a09acbcc422978a40ccde 100644 --- a/src/include/commands/vacuum.h +++ b/src/include/commands/vacuum.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: vacuum.h,v 1.29 2000/05/29 16:21:05 momjian Exp $ + * $Id: vacuum.h,v 1.30 2000/05/29 17:06:15 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -30,29 +30,29 @@ typedef struct VAttListData typedef VAttListData *VAttList; -typedef struct VPageDescrData +typedef struct VacPageData { - BlockNumber vpd_blkno; /* BlockNumber of this Page */ - Size vpd_free; /* FreeSpace on this Page */ - uint16 vpd_offsets_used; /* Number of OffNums used by + BlockNumber blkno; /* BlockNumber of this Page */ + Size free; /* FreeSpace on this Page */ + uint16 offsets_used; /* Number of OffNums used by * vacuum */ - uint16 vpd_offsets_free; /* Number of OffNums free or to be + uint16 offsets_free; /* Number of OffNums free or to be * free */ - OffsetNumber vpd_offsets[1];/* Array of its OffNums */ -} VPageDescrData; + OffsetNumber offsets[1];/* Array of its OffNums */ +} VacPageData; -typedef VPageDescrData *VPageDescr; +typedef VacPageData *VacPage; -typedef struct VPageListData +typedef struct VacPageListData { - int vpl_empty_end_pages; /* Number of "empty" end-pages */ - int vpl_num_pages; /* Number of pages in vpl_pagedesc */ - int vpl_num_allocated_pages; /* Number of allocated - * pages in vpl_pagedesc */ - VPageDescr *vpl_pagedesc; /* Descriptions of pages */ -} VPageListData; + int empty_end_pages; /* Number of "empty" end-pages */ + int num_pages; /* Number of pages in pagedesc */ + int num_allocated_pages; /* Number of allocated + * pages in pagedesc */ + VacPage *pagedesc; /* Descriptions of pages */ +} VacPageListData; -typedef VPageListData *VPageList; +typedef VacPageListData *VacPageList; typedef struct { @@ -111,8 +111,8 @@ typedef VTupleLinkData *VTupleLink; typedef struct VTupleMoveData { ItemPointerData tid; /* tuple ID */ - VPageDescr vpd; /* where to move */ - bool cleanVpd; /* clean vpd before using */ + VacPage vacpage; /* where to move */ + bool cleanVpd; /* clean vacpage before using */ } VTupleMoveData; typedef VTupleMoveData *VTupleMove;