Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9d035f4

Browse files
committed
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.
1 parent 45efb09 commit 9d035f4

File tree

17 files changed

+96
-104
lines changed

17 files changed

+96
-104
lines changed

src/backend/access/gist/gistutil.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.29 2008/06/19 00:46:03 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.30 2008/07/13 20:45:46 tgl Exp $
1212
*-------------------------------------------------------------------------
1313
*/
1414
#include "postgres.h"
@@ -591,8 +591,7 @@ gistcheckpage(Relation rel, Buffer buf)
591591
/*
592592
* Additionally check that the special area looks sane.
593593
*/
594-
if (((PageHeader) (page))->pd_special !=
595-
(BLCKSZ - MAXALIGN(sizeof(GISTPageOpaqueData))))
594+
if (PageGetSpecialSize(page) != MAXALIGN(sizeof(GISTPageOpaqueData)))
596595
ereport(ERROR,
597596
(errcode(ERRCODE_INDEX_CORRUPTED),
598597
errmsg("index \"%s\" contains corrupted page at block %u",

src/backend/access/hash/hashutil.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/access/hash/hashutil.c,v 1.55 2008/06/19 00:46:03 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/hash/hashutil.c,v 1.56 2008/07/13 20:45:47 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -164,8 +164,7 @@ _hash_checkpage(Relation rel, Buffer buf, int flags)
164164
/*
165165
* Additionally check that the special area looks sane.
166166
*/
167-
if (((PageHeader) (page))->pd_special !=
168-
(BLCKSZ - MAXALIGN(sizeof(HashPageOpaqueData))))
167+
if (PageGetSpecialSize(page) != MAXALIGN(sizeof(HashPageOpaqueData)))
169168
ereport(ERROR,
170169
(errcode(ERRCODE_INDEX_CORRUPTED),
171170
errmsg("index \"%s\" contains corrupted page at block %u",

src/backend/access/heap/heapam.c

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.260 2008/06/19 00:46:03 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.261 2008/07/13 20:45:47 tgl Exp $
1212
*
1313
*
1414
* INTERFACE ROUTINES
@@ -1343,7 +1343,7 @@ heap_fetch(Relation relation,
13431343
ItemPointer tid = &(tuple->t_self);
13441344
ItemId lp;
13451345
Buffer buffer;
1346-
PageHeader dp;
1346+
Page page;
13471347
OffsetNumber offnum;
13481348
bool valid;
13491349

@@ -1356,14 +1356,14 @@ heap_fetch(Relation relation,
13561356
* Need share lock on buffer to examine tuple commit status.
13571357
*/
13581358
LockBuffer(buffer, BUFFER_LOCK_SHARE);
1359-
dp = (PageHeader) BufferGetPage(buffer);
1359+
page = BufferGetPage(buffer);
13601360

13611361
/*
13621362
* We'd better check for out-of-range offnum in case of VACUUM since the
13631363
* TID was obtained.
13641364
*/
13651365
offnum = ItemPointerGetOffsetNumber(tid);
1366-
if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp))
1366+
if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(page))
13671367
{
13681368
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
13691369
if (keep_buf)
@@ -1380,7 +1380,7 @@ heap_fetch(Relation relation,
13801380
/*
13811381
* get the item line pointer corresponding to the requested tid
13821382
*/
1383-
lp = PageGetItemId(dp, offnum);
1383+
lp = PageGetItemId(page, offnum);
13841384

13851385
/*
13861386
* Must check for deleted tuple.
@@ -1402,7 +1402,7 @@ heap_fetch(Relation relation,
14021402
/*
14031403
* fill in *tuple fields
14041404
*/
1405-
tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
1405+
tuple->t_data = (HeapTupleHeader) PageGetItem(page, lp);
14061406
tuple->t_len = ItemIdGetLength(lp);
14071407
tuple->t_tableOid = RelationGetRelid(relation);
14081408

@@ -1627,7 +1627,7 @@ heap_get_latest_tid(Relation relation,
16271627
for (;;)
16281628
{
16291629
Buffer buffer;
1630-
PageHeader dp;
1630+
Page page;
16311631
OffsetNumber offnum;
16321632
ItemId lp;
16331633
HeapTupleData tp;
@@ -1638,20 +1638,20 @@ heap_get_latest_tid(Relation relation,
16381638
*/
16391639
buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(&ctid));
16401640
LockBuffer(buffer, BUFFER_LOCK_SHARE);
1641-
dp = (PageHeader) BufferGetPage(buffer);
1641+
page = BufferGetPage(buffer);
16421642

16431643
/*
16441644
* Check for bogus item number. This is not treated as an error
16451645
* condition because it can happen while following a t_ctid link. We
16461646
* just assume that the prior tid is OK and return it unchanged.
16471647
*/
16481648
offnum = ItemPointerGetOffsetNumber(&ctid);
1649-
if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(dp))
1649+
if (offnum < FirstOffsetNumber || offnum > PageGetMaxOffsetNumber(page))
16501650
{
16511651
UnlockReleaseBuffer(buffer);
16521652
break;
16531653
}
1654-
lp = PageGetItemId(dp, offnum);
1654+
lp = PageGetItemId(page, offnum);
16551655
if (!ItemIdIsNormal(lp))
16561656
{
16571657
UnlockReleaseBuffer(buffer);
@@ -1660,7 +1660,7 @@ heap_get_latest_tid(Relation relation,
16601660

16611661
/* OK to access the tuple */
16621662
tp.t_self = ctid;
1663-
tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
1663+
tp.t_data = (HeapTupleHeader) PageGetItem(page, lp);
16641664
tp.t_len = ItemIdGetLength(lp);
16651665

16661666
/*
@@ -1964,7 +1964,7 @@ heap_delete(Relation relation, ItemPointer tid,
19641964
TransactionId xid = GetCurrentTransactionId();
19651965
ItemId lp;
19661966
HeapTupleData tp;
1967-
PageHeader dp;
1967+
Page page;
19681968
Buffer buffer;
19691969
bool have_tuple_lock = false;
19701970
bool iscombo;
@@ -1974,11 +1974,11 @@ heap_delete(Relation relation, ItemPointer tid,
19741974
buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid));
19751975
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
19761976

1977-
dp = (PageHeader) BufferGetPage(buffer);
1978-
lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
1977+
page = BufferGetPage(buffer);
1978+
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid));
19791979
Assert(ItemIdIsNormal(lp));
19801980

1981-
tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
1981+
tp.t_data = (HeapTupleHeader) PageGetItem(page, lp);
19821982
tp.t_len = ItemIdGetLength(lp);
19831983
tp.t_self = *tid;
19841984

@@ -2112,7 +2112,7 @@ heap_delete(Relation relation, ItemPointer tid,
21122112
* the subsequent page pruning will be a no-op and the hint will be
21132113
* cleared.
21142114
*/
2115-
PageSetPrunable(dp, xid);
2115+
PageSetPrunable(page, xid);
21162116

21172117
/* store transaction information of xact deleting the tuple */
21182118
tp.t_data->t_infomask &= ~(HEAP_XMAX_COMMITTED |
@@ -2150,8 +2150,8 @@ heap_delete(Relation relation, ItemPointer tid,
21502150

21512151
recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_DELETE, rdata);
21522152

2153-
PageSetLSN(dp, recptr);
2154-
PageSetTLI(dp, ThisTimeLineID);
2153+
PageSetLSN(page, recptr);
2154+
PageSetTLI(page, ThisTimeLineID);
21552155
}
21562156

21572157
END_CRIT_SECTION();
@@ -2276,7 +2276,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
22762276
ItemId lp;
22772277
HeapTupleData oldtup;
22782278
HeapTuple heaptup;
2279-
PageHeader dp;
2279+
Page page;
22802280
Buffer buffer,
22812281
newbuf;
22822282
bool need_toast,
@@ -2306,11 +2306,11 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
23062306
buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(otid));
23072307
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
23082308

2309-
dp = (PageHeader) BufferGetPage(buffer);
2310-
lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(otid));
2309+
page = BufferGetPage(buffer);
2310+
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(otid));
23112311
Assert(ItemIdIsNormal(lp));
23122312

2313-
oldtup.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
2313+
oldtup.t_data = (HeapTupleHeader) PageGetItem(page, lp);
23142314
oldtup.t_len = ItemIdGetLength(lp);
23152315
oldtup.t_self = *otid;
23162316

@@ -2491,7 +2491,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
24912491
HeapTupleHasExternal(newtup) ||
24922492
newtup->t_len > TOAST_TUPLE_THRESHOLD);
24932493

2494-
pagefree = PageGetHeapFreeSpace((Page) dp);
2494+
pagefree = PageGetHeapFreeSpace(page);
24952495

24962496
newtupsize = MAXALIGN(newtup->t_len);
24972497

@@ -2557,7 +2557,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
25572557
/* Re-acquire the lock on the old tuple's page. */
25582558
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
25592559
/* Re-check using the up-to-date free space */
2560-
pagefree = PageGetHeapFreeSpace((Page) dp);
2560+
pagefree = PageGetHeapFreeSpace(page);
25612561
if (newtupsize > pagefree)
25622562
{
25632563
/*
@@ -2603,7 +2603,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
26032603
else
26042604
{
26052605
/* Set a hint that the old page could use prune/defrag */
2606-
PageSetFull(dp);
2606+
PageSetFull(page);
26072607
}
26082608

26092609
/* NO EREPORT(ERROR) from here till changes are logged */
@@ -2621,7 +2621,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
26212621
* not to optimize for aborts. Note that heap_xlog_update must be kept in
26222622
* sync if this decision changes.
26232623
*/
2624-
PageSetPrunable(dp, xid);
2624+
PageSetPrunable(page, xid);
26252625

26262626
if (use_hot_update)
26272627
{
@@ -2946,7 +2946,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
29462946
HTSU_Result result;
29472947
ItemPointer tid = &(tuple->t_self);
29482948
ItemId lp;
2949-
PageHeader dp;
2949+
Page page;
29502950
TransactionId xid;
29512951
TransactionId xmax;
29522952
uint16 old_infomask;
@@ -2959,11 +2959,11 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
29592959
*buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid));
29602960
LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE);
29612961

2962-
dp = (PageHeader) BufferGetPage(*buffer);
2963-
lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
2962+
page = BufferGetPage(*buffer);
2963+
lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid));
29642964
Assert(ItemIdIsNormal(lp));
29652965

2966-
tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
2966+
tuple->t_data = (HeapTupleHeader) PageGetItem(page, lp);
29672967
tuple->t_len = ItemIdGetLength(lp);
29682968
tuple->t_tableOid = RelationGetRelid(relation);
29692969

@@ -3302,8 +3302,8 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
33023302

33033303
recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_LOCK, rdata);
33043304

3305-
PageSetLSN(dp, recptr);
3306-
PageSetTLI(dp, ThisTimeLineID);
3305+
PageSetLSN(page, recptr);
3306+
PageSetTLI(page, ThisTimeLineID);
33073307
}
33083308

33093309
END_CRIT_SECTION();

src/backend/access/heap/hio.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.71 2008/06/08 22:00:47 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.72 2008/07/13 20:45:47 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -107,7 +107,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
107107
Buffer otherBuffer, bool use_fsm)
108108
{
109109
Buffer buffer = InvalidBuffer;
110-
Page pageHeader;
110+
Page page;
111111
Size pageFreeSpace,
112112
saveFreeSpace;
113113
BlockNumber targetBlock,
@@ -218,8 +218,8 @@ RelationGetBufferForTuple(Relation relation, Size len,
218218
* Now we can check to see if there's enough free space here. If so,
219219
* we're done.
220220
*/
221-
pageHeader = (Page) BufferGetPage(buffer);
222-
pageFreeSpace = PageGetHeapFreeSpace(pageHeader);
221+
page = BufferGetPage(buffer);
222+
pageFreeSpace = PageGetHeapFreeSpace(page);
223223
if (len + saveFreeSpace <= pageFreeSpace)
224224
{
225225
/* use this page as future insert target, too */
@@ -303,16 +303,16 @@ RelationGetBufferForTuple(Relation relation, Size len,
303303
* is empty (this should never happen, but if it does we don't want to
304304
* risk wiping out valid data).
305305
*/
306-
pageHeader = (Page) BufferGetPage(buffer);
306+
page = BufferGetPage(buffer);
307307

308-
if (!PageIsNew((PageHeader) pageHeader))
308+
if (!PageIsNew(page))
309309
elog(ERROR, "page %u of relation \"%s\" should be empty but is not",
310310
BufferGetBlockNumber(buffer),
311311
RelationGetRelationName(relation));
312312

313-
PageInit(pageHeader, BufferGetPageSize(buffer), 0);
313+
PageInit(page, BufferGetPageSize(buffer), 0);
314314

315-
if (len > PageGetHeapFreeSpace(pageHeader))
315+
if (len > PageGetHeapFreeSpace(page))
316316
{
317317
/* We should not get here given the test at the top */
318318
elog(PANIC, "tuple is too big: size %lu", (unsigned long) len);

src/backend/access/heap/pruneheap.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.15 2008/06/19 00:46:03 alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.16 2008/07/13 20:45:47 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -72,7 +72,7 @@ static void heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum);
7272
void
7373
heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin)
7474
{
75-
PageHeader dp = (PageHeader) BufferGetPage(buffer);
75+
Page page = BufferGetPage(buffer);
7676
Size minfree;
7777

7878
/*
@@ -81,7 +81,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin)
8181
* Forget it if page is not hinted to contain something prunable that's
8282
* older than OldestXmin.
8383
*/
84-
if (!PageIsPrunable(dp, OldestXmin))
84+
if (!PageIsPrunable(page, OldestXmin))
8585
return;
8686

8787
/*
@@ -100,7 +100,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin)
100100
HEAP_DEFAULT_FILLFACTOR);
101101
minfree = Max(minfree, BLCKSZ / 10);
102102

103-
if (PageIsFull(dp) || PageGetHeapFreeSpace((Page) dp) < minfree)
103+
if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree)
104104
{
105105
/* OK, try to get exclusive buffer lock */
106106
if (!ConditionalLockBufferForCleanup(buffer))
@@ -112,7 +112,7 @@ heap_page_prune_opt(Relation relation, Buffer buffer, TransactionId OldestXmin)
112112
* prune. (We needn't recheck PageIsPrunable, since no one else could
113113
* have pruned while we hold pin.)
114114
*/
115-
if (PageIsFull(dp) || PageGetHeapFreeSpace((Page) dp) < minfree)
115+
if (PageIsFull(page) || PageGetHeapFreeSpace(page) < minfree)
116116
{
117117
/* OK to prune (though not to remove redirects) */
118118
(void) heap_page_prune(relation, buffer, OldestXmin, false, true);

src/backend/access/nbtree/nbtpage.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.109 2008/05/12 00:00:45 alvherre Exp $
12+
* $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.110 2008/07/13 20:45:47 tgl Exp $
1313
*
1414
* NOTES
1515
* Postgres btree pages look like ordinary relation pages. The opaque
@@ -436,8 +436,7 @@ _bt_checkpage(Relation rel, Buffer buf)
436436
/*
437437
* Additionally check that the special area looks sane.
438438
*/
439-
if (((PageHeader) (page))->pd_special !=
440-
(BLCKSZ - MAXALIGN(sizeof(BTPageOpaqueData))))
439+
if (PageGetSpecialSize(page) != MAXALIGN(sizeof(BTPageOpaqueData)))
441440
ereport(ERROR,
442441
(errcode(ERRCODE_INDEX_CORRUPTED),
443442
errmsg("index \"%s\" contains corrupted page at block %u",
@@ -555,7 +554,7 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
555554

556555
/* Initialize the new page before returning it */
557556
page = BufferGetPage(buf);
558-
Assert(PageIsNew((PageHeader) page));
557+
Assert(PageIsNew(page));
559558
_bt_pageinit(page, BufferGetPageSize(buf));
560559
}
561560

0 commit comments

Comments
 (0)