diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-09-12 22:10:26 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-09-12 22:10:26 +0000 |
| commit | 6889303531187f7867a5dfad5f5b5ba103f7cdd6 (patch) | |
| tree | ea862682de0eb2dad6cba22fb7d0978d70fd54b2 /src/backend/commands | |
| parent | eb0a7735ba1ede6a35b80d73f6c371a8b1220552 (diff) | |
| download | postgresql-6889303531187f7867a5dfad5f5b5ba103f7cdd6.tar.gz | |
Redefine the lp_flags field of item pointers as having four states, rather
than two independent bits (one of which was never used in heap pages anyway,
or at least hadn't been in a very long time). This gives us flexibility to
add the HOT notions of redirected and dead item pointers without requiring
anything so klugy as magic values of lp_off and lp_len. The state values
are chosen so that for the states currently in use (pre-HOT) there is no
change in the physical representation.
Diffstat (limited to 'src/backend/commands')
| -rw-r--r-- | src/backend/commands/sequence.c | 6 | ||||
| -rw-r--r-- | src/backend/commands/trigger.c | 4 | ||||
| -rw-r--r-- | src/backend/commands/vacuum.c | 14 | ||||
| -rw-r--r-- | src/backend/commands/vacuumlazy.c | 4 |
4 files changed, 14 insertions, 14 deletions
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index cb2a1380ca..73024a7e70 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.144 2007/09/05 18:10:47 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.145 2007/09/12 22:10:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -936,7 +936,7 @@ read_info(SeqTable elm, Relation rel, Buffer *buf) RelationGetRelationName(rel), sm->magic); lp = PageGetItemId(page, FirstOffsetNumber); - Assert(ItemIdIsUsed(lp)); + Assert(ItemIdIsNormal(lp)); tuple.t_data = (HeapTupleHeader) PageGetItem((Page) page, lp); seq = (Form_pg_sequence) GETSTRUCT(&tuple); @@ -1281,7 +1281,7 @@ seq_redo(XLogRecPtr lsn, XLogRecord *record) itemsz = record->xl_len - sizeof(xl_seq_rec); itemsz = MAXALIGN(itemsz); if (PageAddItem(page, (Item) item, itemsz, - FirstOffsetNumber, LP_USED) == InvalidOffsetNumber) + FirstOffsetNumber, false) == InvalidOffsetNumber) elog(PANIC, "seq_redo: failed to add item to page"); PageSetLSN(page, lsn); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index afcdaa5e91..5d8b6aa168 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.218 2007/08/15 21:39:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.219 2007/09/12 22:10:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1826,7 +1826,7 @@ ltrmark:; dp = (PageHeader) BufferGetPage(buffer); lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid)); - Assert(ItemIdIsUsed(lp)); + Assert(ItemIdIsNormal(lp)); tuple.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); tuple.t_len = ItemIdGetLength(lp); diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 89ddeedbea..f9b9423534 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.357 2007/09/08 20:31:14 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.358 2007/09/12 22:10:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1522,7 +1522,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, /* mark it unused on the temp page */ lpp = PageGetItemId(tempPage, offnum); - lpp->lp_flags &= ~LP_USED; + ItemIdSetUnused(lpp); vacpage->offsets[vacpage->offsets_free++] = offnum; tups_vacuumed += 1; @@ -1558,7 +1558,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, { /* Just use current available space */ vacpage->free = PageGetFreeSpaceWithFillFactor(onerel, page); - /* Need to reap the page if it has ~LP_USED line pointers */ + /* Need to reap the page if it has LP_UNUSED line pointers */ do_reap = (vacpage->offsets_free > 0); } @@ -2582,7 +2582,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, if (HeapTupleHeaderGetXvac(htup) != myXID) elog(ERROR, "invalid XVAC in tuple header"); - itemid->lp_flags &= ~LP_USED; + ItemIdSetUnused(itemid); num_tuples++; } Assert(vacpage->offsets_free == num_tuples); @@ -2714,7 +2714,7 @@ move_chain_tuple(Relation rel, newtup.t_data->t_infomask |= HEAP_MOVED_IN; HeapTupleHeaderSetXvac(newtup.t_data, myXID); newoff = PageAddItem(dst_page, (Item) newtup.t_data, tuple_len, - InvalidOffsetNumber, LP_USED); + InvalidOffsetNumber, false); if (newoff == InvalidOffsetNumber) elog(PANIC, "failed to add item with len = %lu to page %u while moving tuple chain", (unsigned long) tuple_len, dst_vacpage->blkno); @@ -2819,7 +2819,7 @@ move_plain_tuple(Relation rel, /* add tuple to the page */ newoff = PageAddItem(dst_page, (Item) newtup.t_data, tuple_len, - InvalidOffsetNumber, LP_USED); + InvalidOffsetNumber, false); if (newoff == InvalidOffsetNumber) elog(PANIC, "failed to add item with len = %lu to page %u (free space %lu, nusd %u, noff %u)", (unsigned long) tuple_len, @@ -3033,7 +3033,7 @@ vacuum_page(Relation onerel, Buffer buffer, VacPage vacpage) for (i = 0; i < vacpage->offsets_free; i++) { itemid = PageGetItemId(page, vacpage->offsets[i]); - itemid->lp_flags &= ~LP_USED; + ItemIdSetUnused(itemid); } uncnt = PageRepairFragmentation(page, unused); diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index 0552c3e0ae..3dbd17de58 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -36,7 +36,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.94 2007/09/12 02:05:48 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.95 2007/09/12 22:10:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -642,7 +642,7 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer, break; /* past end of tuples for this block */ toff = ItemPointerGetOffsetNumber(&vacrelstats->dead_tuples[tupindex]); itemid = PageGetItemId(page, toff); - itemid->lp_flags &= ~LP_USED; + ItemIdSetUnused(itemid); } uncnt = PageRepairFragmentation(page, unused); |
