diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2008-07-13 20:45:47 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2008-07-13 20:45:47 +0000 |
commit | 9d035f425452279041c52e01cf83b2a27e121b5c (patch) | |
tree | d521a3bdb9ca231ed49e09a48259a45b519f6d1c /src/backend/access/heap | |
parent | 45efb09a01e93d20ccb5671703649d9f87f744de (diff) | |
download | postgresql-9d035f425452279041c52e01cf83b2a27e121b5c.tar.gz postgresql-9d035f425452279041c52e01cf83b2a27e121b5c.zip |
Clean up the use of some page-header-access macros: principally, use
SizeOfPageHeaderData instead of sizeof(PageHeaderData) in places where that
makes the code clearer, and avoid casting between Page and PageHeader where
possible. Zdenek Kotala, with some additional cleanup by Heikki Linnakangas.
I did not apply the parts of the proposed patch that would have resulted in
slightly changing the on-disk format of hash indexes; it seems to me that's
not a win as long as there's any chance of having in-place upgrade for 8.4.
Diffstat (limited to 'src/backend/access/heap')
-rw-r--r-- | src/backend/access/heap/heapam.c | 64 | ||||
-rw-r--r-- | src/backend/access/heap/hio.c | 16 | ||||
-rw-r--r-- | src/backend/access/heap/pruneheap.c | 10 |
3 files changed, 45 insertions, 45 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 482e53dfaa9..cb2f428afe6 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.260 2008/06/19 00:46:03 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.261 2008/07/13 20:45:47 tgl Exp $ * * * INTERFACE ROUTINES @@ -1343,7 +1343,7 @@ heap_fetch(Relation relation, ItemPointer tid = &(tuple->t_self); ItemId lp; Buffer buffer; - PageHeader dp; + Page page; OffsetNumber offnum; bool valid; @@ -1356,14 +1356,14 @@ heap_fetch(Relation relation, * Need share lock on buffer to examine tuple commit status. */ LockBuffer(buffer, BUFFER_LOCK_SHARE); - dp = (PageHeader) BufferGetPage(buffer); + page = BufferGetPage(buffer); /* * We'd better check for out-of-range offnum in case of VACUUM since the * TID was obtained. */ offnum = ItemPointerGetOffsetNumber(tid); - if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) + if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(page)) { LockBuffer(buffer, BUFFER_LOCK_UNLOCK); if (keep_buf) @@ -1380,7 +1380,7 @@ heap_fetch(Relation relation, /* * get the item line pointer corresponding to the requested tid */ - lp = PageGetItemId(dp, offnum); + lp = PageGetItemId(page, offnum); /* * Must check for deleted tuple. @@ -1402,7 +1402,7 @@ heap_fetch(Relation relation, /* * fill in *tuple fields */ - tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); + tuple->t_data = (HeapTupleHeader) PageGetItem(page, lp); tuple->t_len = ItemIdGetLength(lp); tuple->t_tableOid = RelationGetRelid(relation); @@ -1627,7 +1627,7 @@ heap_get_latest_tid(Relation relation, for (;;) { Buffer buffer; - PageHeader dp; + Page page; OffsetNumber offnum; ItemId lp; HeapTupleData tp; @@ -1638,7 +1638,7 @@ heap_get_latest_tid(Relation relation, */ buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(&ctid)); LockBuffer(buffer, BUFFER_LOCK_SHARE); - dp = (PageHeader) BufferGetPage(buffer); + page = BufferGetPage(buffer); /* * Check for bogus item number. This is not treated as an error @@ -1646,12 +1646,12 @@ heap_get_latest_tid(Relation relation, * just assume that the prior tid is OK and return it unchanged. */ offnum = ItemPointerGetOffsetNumber(&ctid); - if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp)) + if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(page)) { UnlockReleaseBuffer(buffer); break; } - lp = PageGetItemId(dp, offnum); + lp = PageGetItemId(page, offnum); if (!ItemIdIsNormal(lp)) { UnlockReleaseBuffer(buffer); @@ -1660,7 +1660,7 @@ heap_get_latest_tid(Relation relation, /* OK to access the tuple */ tp.t_self = ctid; - tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp); + tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); tp.t_len = ItemIdGetLength(lp); /* @@ -1964,7 +1964,7 @@ heap_delete(Relation relation, ItemPointer tid, TransactionId xid = GetCurrentTransactionId(); ItemId lp; HeapTupleData tp; - PageHeader dp; + Page page; Buffer buffer; bool have_tuple_lock = false; bool iscombo; @@ -1974,11 +1974,11 @@ heap_delete(Relation relation, ItemPointer tid, buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid)); LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); - dp = (PageHeader) BufferGetPage(buffer); - lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid)); + page = BufferGetPage(buffer); + lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); Assert(ItemIdIsNormal(lp)); - tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp); + tp.t_data = (HeapTupleHeader) PageGetItem(page, lp); tp.t_len = ItemIdGetLength(lp); tp.t_self = *tid; @@ -2112,7 +2112,7 @@ l1: * the subsequent page pruning will be a no-op and the hint will be * cleared. */ - PageSetPrunable(dp, xid); + PageSetPrunable(page, xid); /* store transaction information of xact deleting the tuple */ tp.t_data->t_infomask &= ~(HEAP_XMAX_COMMITTED | @@ -2150,8 +2150,8 @@ l1: recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_DELETE, rdata); - PageSetLSN(dp, recptr); - PageSetTLI(dp, ThisTimeLineID); + PageSetLSN(page, recptr); + PageSetTLI(page, ThisTimeLineID); } END_CRIT_SECTION(); @@ -2276,7 +2276,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, ItemId lp; HeapTupleData oldtup; HeapTuple heaptup; - PageHeader dp; + Page page; Buffer buffer, newbuf; bool need_toast, @@ -2306,11 +2306,11 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(otid)); LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); - dp = (PageHeader) BufferGetPage(buffer); - lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(otid)); + page = BufferGetPage(buffer); + lp = PageGetItemId(page, ItemPointerGetOffsetNumber(otid)); Assert(ItemIdIsNormal(lp)); - oldtup.t_data = (HeapTupleHeader) PageGetItem(dp, lp); + oldtup.t_data = (HeapTupleHeader) PageGetItem(page, lp); oldtup.t_len = ItemIdGetLength(lp); oldtup.t_self = *otid; @@ -2491,7 +2491,7 @@ l2: HeapTupleHasExternal(newtup) || newtup->t_len > TOAST_TUPLE_THRESHOLD); - pagefree = PageGetHeapFreeSpace((Page) dp); + pagefree = PageGetHeapFreeSpace(page); newtupsize = MAXALIGN(newtup->t_len); @@ -2557,7 +2557,7 @@ l2: /* Re-acquire the lock on the old tuple's page. */ LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); /* Re-check using the up-to-date free space */ - pagefree = PageGetHeapFreeSpace((Page) dp); + pagefree = PageGetHeapFreeSpace(page); if (newtupsize > pagefree) { /* @@ -2603,7 +2603,7 @@ l2: else { /* Set a hint that the old page could use prune/defrag */ - PageSetFull(dp); + PageSetFull(page); } /* NO EREPORT(ERROR) from here till changes are logged */ @@ -2621,7 +2621,7 @@ l2: * not to optimize for aborts. Note that heap_xlog_update must be kept in * sync if this decision changes. */ - PageSetPrunable(dp, xid); + PageSetPrunable(page, xid); if (use_hot_update) { @@ -2946,7 +2946,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer, HTSU_Result result; ItemPointer tid = &(tuple->t_self); ItemId lp; - PageHeader dp; + Page page; TransactionId xid; TransactionId xmax; uint16 old_infomask; @@ -2959,11 +2959,11 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer, *buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid)); LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE); - dp = (PageHeader) BufferGetPage(*buffer); - lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid)); + page = BufferGetPage(*buffer); + lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); Assert(ItemIdIsNormal(lp)); - tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); + tuple->t_data = (HeapTupleHeader) PageGetItem(page, lp); tuple->t_len = ItemIdGetLength(lp); tuple->t_tableOid = RelationGetRelid(relation); @@ -3302,8 +3302,8 @@ l3: recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_LOCK, rdata); - PageSetLSN(dp, recptr); - PageSetTLI(dp, ThisTimeLineID); + PageSetLSN(page, recptr); + PageSetTLI(page, ThisTimeLineID); } END_CRIT_SECTION(); diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c index df902a02f3b..6db80590de6 100644 --- a/src/backend/access/heap/hio.c +++ b/src/backend/access/heap/hio.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.71 2008/06/08 22:00:47 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.72 2008/07/13 20:45:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -107,7 +107,7 @@ RelationGetBufferForTuple(Relation relation, Size len, Buffer otherBuffer, bool use_fsm) { Buffer buffer = InvalidBuffer; - Page pageHeader; + Page page; Size pageFreeSpace, saveFreeSpace; BlockNumber targetBlock, @@ -218,8 +218,8 @@ RelationGetBufferForTuple(Relation relation, Size len, * Now we can check to see if there's enough free space here. If so, * we're done. */ - pageHeader = (Page) BufferGetPage(buffer); - pageFreeSpace = PageGetHeapFreeSpace(pageHeader); + page = BufferGetPage(buffer); + pageFreeSpace = PageGetHeapFreeSpace(page); if (len + saveFreeSpace <= pageFreeSpace) { /* use this page as future insert target, too */ @@ -303,16 +303,16 @@ RelationGetBufferForTuple(Relation relation, Size len, * is empty (this should never happen, but if it does we don't want to * risk wiping out valid data). */ - pageHeader = (Page) BufferGetPage(buffer); + page = BufferGetPage(buffer); - if (!PageIsNew((PageHeader) pageHeader)) + if (!PageIsNew(page)) elog(ERROR, "page %u of relation \"%s\" should be empty but is not", BufferGetBlockNumber(buffer), RelationGetRelationName(relation)); - PageInit(pageHeader, BufferGetPageSize(buffer), 0); + PageInit(page, BufferGetPageSize(buffer), 0); - if (len > PageGetHeapFreeSpace(pageHeader)) + if (len > PageGetHeapFreeSpace(page)) { /* We should not get here given the test at the top */ elog(PANIC, "tuple is too big: size %lu", (unsigned long) len); diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index be630b225b9..bdffd6dc64d 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.15 2008/06/19 00:46:03 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.16 2008/07/13 20:45:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -72,7 +72,7 @@ static void heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum); void heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin) { - PageHeader dp = (PageHeader) BufferGetPage(buffer); + Page page = BufferGetPage(buffer); Size minfree; /* @@ -81,7 +81,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin) * Forget it if page is not hinted to contain something prunable that's * older than OldestXmin. */ - if (!PageIsPrunable(dp, OldestXmin)) + if (!PageIsPrunable(page, OldestXmin)) return; /* @@ -100,7 +100,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin) HEAP_DEFAULT_FILLFACTOR); minfree = Max(minfree, BLCKSZ / 10); - if (PageIsFull(dp) || PageGetHeapFreeSpace((Page) dp) < minfree) + if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) { /* OK, try to get exclusive buffer lock */ if (!ConditionalLockBufferForCleanup(buffer)) @@ -112,7 +112,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin) * prune. (We needn't recheck PageIsPrunable, since no one else could * have pruned while we hold pin.) */ - if (PageIsFull(dp) || PageGetHeapFreeSpace((Page) dp) < minfree) + if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree) { /* OK to prune (though not to remove redirects) */ (void) heap_page_prune(relation, buffer, OldestXmin, false, true); |