Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9d035f4

Browse files
committed
Clean up the use of some page-header-access macros: principally, use
SizeOfPageHeaderData instead of sizeof(PageHeaderData) in places where thatmakes the code clearer, and avoid casting between Page and PageHeader wherepossible. Zdenek Kotala, with some additional cleanup by Heikki Linnakangas.I did not apply the parts of the proposed patch that would have resulted inslightly changing the on-disk format of hash indexes; it seems to me that'snot a win as long as there's any chance of having in-place upgrade for 8.4.
1 parent45efb09 commit9d035f4

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
ItemPointertid=&(tuple->t_self);
13441344
ItemIdlp;
13451345
Bufferbuffer;
1346-
PageHeaderdp;
1346+
Pagepage;
13471347
OffsetNumberoffnum;
13481348
boolvalid;
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
Bufferbuffer;
1630-
PageHeaderdp;
1630+
Pagepage;
16311631
OffsetNumberoffnum;
16321632
ItemIdlp;
16331633
HeapTupleDatatp;
@@ -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
TransactionIdxid=GetCurrentTransactionId();
19651965
ItemIdlp;
19661966
HeapTupleDatatp;
1967-
PageHeaderdp;
1967+
Pagepage;
19681968
Bufferbuffer;
19691969
boolhave_tuple_lock= false;
19701970
booliscombo;
@@ -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
ItemIdlp;
22772277
HeapTupleDataoldtup;
22782278
HeapTupleheaptup;
2279-
PageHeaderdp;
2279+
Pagepage;
22802280
Bufferbuffer,
22812281
newbuf;
22822282
boolneed_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_Resultresult;
29472947
ItemPointertid=&(tuple->t_self);
29482948
ItemIdlp;
2949-
PageHeaderdp;
2949+
Pagepage;
29502950
TransactionIdxid;
29512951
TransactionIdxmax;
29522952
uint16old_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:47alvherre Exp $
11+
* $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.72 2008/07/13 20:45:47tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -107,7 +107,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
107107
BufferotherBuffer,booluse_fsm)
108108
{
109109
Bufferbuffer=InvalidBuffer;
110-
PagepageHeader;
110+
Pagepage;
111111
SizepageFreeSpace,
112112
saveFreeSpace;
113113
BlockNumbertargetBlock,
@@ -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(Relationrelation,Bufferbuffer,TransactionIdOldestXmin)
7474
{
75-
PageHeaderdp= (PageHeader)BufferGetPage(buffer);
75+
Pagepage=BufferGetPage(buffer);
7676
Sizeminfree;
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)

[8]ページ先頭

©2009-2025 Movatter.jp