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

Commit4f4a1d8

Browse files
committed
Add const qualifiers to bufpage.h
This makes use of the new PageData type.PageGetSpecialPointer() had to be turned back into a macro, because itis used in a way that sometimes it takes const and returns const andsometimes takes non-const and returns non-const.Discussion:https://www.postgresql.org/message-id/flat/692ee0da-49da-4d32-8dca-da224cc2800e@eisentraut.org
1 parent6e4df23 commit4f4a1d8

File tree

2 files changed

+53
-54
lines changed

2 files changed

+53
-54
lines changed

‎src/backend/storage/page/bufpage.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ PageInit(Page page, Size pageSize, Size specialSize)
8585
* to pgstat.
8686
*/
8787
bool
88-
PageIsVerifiedExtended(Pagepage,BlockNumberblkno,intflags)
88+
PageIsVerifiedExtended(constPageData*page,BlockNumberblkno,intflags)
8989
{
90-
PageHeaderp= (PageHeader)page;
90+
constPageHeaderData*p= (constPageHeaderData*)page;
9191
size_t*pagebytes;
9292
boolchecksum_failure= false;
9393
boolheader_sane= false;
@@ -351,7 +351,7 @@ PageAddItemExtended(Page page,
351351
*The returned page is not initialized at all; caller must do that.
352352
*/
353353
Page
354-
PageGetTempPage(Pagepage)
354+
PageGetTempPage(constPageData*page)
355355
{
356356
SizepageSize;
357357
Pagetemp;
@@ -368,7 +368,7 @@ PageGetTempPage(Page page)
368368
*The page is initialized by copying the contents of the given page.
369369
*/
370370
Page
371-
PageGetTempPageCopy(Pagepage)
371+
PageGetTempPageCopy(constPageData*page)
372372
{
373373
SizepageSize;
374374
Pagetemp;
@@ -388,7 +388,7 @@ PageGetTempPageCopy(Page page)
388388
*given page, and the special space is copied from the given page.
389389
*/
390390
Page
391-
PageGetTempPageCopySpecial(Pagepage)
391+
PageGetTempPageCopySpecial(constPageData*page)
392392
{
393393
SizepageSize;
394394
Pagetemp;
@@ -893,16 +893,16 @@ PageTruncateLinePointerArray(Page page)
893893
* PageGetHeapFreeSpace on heap pages.
894894
*/
895895
Size
896-
PageGetFreeSpace(Pagepage)
896+
PageGetFreeSpace(constPageData*page)
897897
{
898+
constPageHeaderData*phdr= (constPageHeaderData*)page;
898899
intspace;
899900

900901
/*
901902
* Use signed arithmetic here so that we behave sensibly if pd_lower >
902903
* pd_upper.
903904
*/
904-
space= (int) ((PageHeader)page)->pd_upper-
905-
(int) ((PageHeader)page)->pd_lower;
905+
space= (int)phdr->pd_upper- (int)phdr->pd_lower;
906906

907907
if (space< (int)sizeof(ItemIdData))
908908
return0;
@@ -920,16 +920,16 @@ PageGetFreeSpace(Page page)
920920
* PageGetHeapFreeSpace on heap pages.
921921
*/
922922
Size
923-
PageGetFreeSpaceForMultipleTuples(Pagepage,intntups)
923+
PageGetFreeSpaceForMultipleTuples(constPageData*page,intntups)
924924
{
925+
constPageHeaderData*phdr= (constPageHeaderData*)page;
925926
intspace;
926927

927928
/*
928929
* Use signed arithmetic here so that we behave sensibly if pd_lower >
929930
* pd_upper.
930931
*/
931-
space= (int) ((PageHeader)page)->pd_upper-
932-
(int) ((PageHeader)page)->pd_lower;
932+
space= (int)phdr->pd_upper- (int)phdr->pd_lower;
933933

934934
if (space< (int) (ntups*sizeof(ItemIdData)))
935935
return0;
@@ -944,16 +944,16 @@ PageGetFreeSpaceForMultipleTuples(Page page, int ntups)
944944
*without any consideration for adding/removing line pointers.
945945
*/
946946
Size
947-
PageGetExactFreeSpace(Pagepage)
947+
PageGetExactFreeSpace(constPageData*page)
948948
{
949+
constPageHeaderData*phdr= (constPageHeaderData*)page;
949950
intspace;
950951

951952
/*
952953
* Use signed arithmetic here so that we behave sensibly if pd_lower >
953954
* pd_upper.
954955
*/
955-
space= (int) ((PageHeader)page)->pd_upper-
956-
(int) ((PageHeader)page)->pd_lower;
956+
space= (int)phdr->pd_upper- (int)phdr->pd_lower;
957957

958958
if (space<0)
959959
return0;
@@ -977,7 +977,7 @@ PageGetExactFreeSpace(Page page)
977977
* on the number of line pointers, we make this extra check.)
978978
*/
979979
Size
980-
PageGetHeapFreeSpace(Pagepage)
980+
PageGetHeapFreeSpace(constPageData*page)
981981
{
982982
Sizespace;
983983

@@ -1001,7 +1001,7 @@ PageGetHeapFreeSpace(Page page)
10011001
*/
10021002
for (offnum=FirstOffsetNumber;offnum <=nline;offnum=OffsetNumberNext(offnum))
10031003
{
1004-
ItemIdlp=PageGetItemId(page,offnum);
1004+
ItemIdlp=PageGetItemId(unconstify(PageData*,page),offnum);
10051005

10061006
if (!ItemIdIsUsed(lp))
10071007
break;

‎src/include/storage/bufpage.h

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -222,19 +222,19 @@ typedef PageHeaderData *PageHeader;
222222
*returns true iff no itemid has been allocated on the page
223223
*/
224224
staticinlinebool
225-
PageIsEmpty(Pagepage)
225+
PageIsEmpty(constPageData*page)
226226
{
227-
return ((PageHeader)page)->pd_lower <=SizeOfPageHeaderData;
227+
return ((constPageHeaderData*)page)->pd_lower <=SizeOfPageHeaderData;
228228
}
229229

230230
/*
231231
* PageIsNew
232232
*returns true iff page has not been initialized (by PageInit)
233233
*/
234234
staticinlinebool
235-
PageIsNew(Pagepage)
235+
PageIsNew(constPageData*page)
236236
{
237-
return ((PageHeader)page)->pd_upper==0;
237+
return ((constPageHeaderData*)page)->pd_upper==0;
238238
}
239239

240240
/*
@@ -275,19 +275,19 @@ PageGetContents(Page page)
275275
* however, it can be called on a page that is not stored in a buffer.
276276
*/
277277
staticinlineSize
278-
PageGetPageSize(Pagepage)
278+
PageGetPageSize(constPageData*page)
279279
{
280-
return (Size) (((PageHeader)page)->pd_pagesize_version& (uint16)0xFF00);
280+
return (Size) (((constPageHeaderData*)page)->pd_pagesize_version& (uint16)0xFF00);
281281
}
282282

283283
/*
284284
* PageGetPageLayoutVersion
285285
*Returns the page layout version of a page.
286286
*/
287287
staticinlineuint8
288-
PageGetPageLayoutVersion(Pagepage)
288+
PageGetPageLayoutVersion(constPageData*page)
289289
{
290-
return (((PageHeader)page)->pd_pagesize_version&0x00FF);
290+
return (((constPageHeaderData*)page)->pd_pagesize_version&0x00FF);
291291
}
292292

293293
/*
@@ -315,9 +315,9 @@ PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
315315
*Returns size of special space on a page.
316316
*/
317317
staticinlineuint16
318-
PageGetSpecialSize(Pagepage)
318+
PageGetSpecialSize(constPageData*page)
319319
{
320-
return (PageGetPageSize(page)- ((PageHeader)page)->pd_special);
320+
return (PageGetPageSize(page)- ((constPageHeaderData*)page)->pd_special);
321321
}
322322

323323
/*
@@ -326,23 +326,22 @@ PageGetSpecialSize(Page page)
326326
* This is intended to catch use of the pointer before page initialization.
327327
*/
328328
staticinlinevoid
329-
PageValidateSpecialPointer(Pagepage)
329+
PageValidateSpecialPointer(constPageData*page)
330330
{
331331
Assert(page);
332-
Assert(((PageHeader)page)->pd_special <=BLCKSZ);
333-
Assert(((PageHeader)page)->pd_special >=SizeOfPageHeaderData);
332+
Assert(((constPageHeaderData*)page)->pd_special <=BLCKSZ);
333+
Assert(((constPageHeaderData*)page)->pd_special >=SizeOfPageHeaderData);
334334
}
335335

336336
/*
337337
* PageGetSpecialPointer
338338
*Returns pointer to special space on a page.
339339
*/
340-
staticinlinechar*
341-
PageGetSpecialPointer(Pagepage)
342-
{
343-
PageValidateSpecialPointer(page);
344-
return (char*)page+ ((PageHeader)page)->pd_special;
345-
}
340+
#definePageGetSpecialPointer(page) \
341+
( \
342+
PageValidateSpecialPointer(page), \
343+
((page) + ((PageHeader) (page))->pd_special) \
344+
)
346345

347346
/*
348347
* PageGetItem
@@ -353,12 +352,12 @@ PageGetSpecialPointer(Page page)
353352
*The semantics may change in the future.
354353
*/
355354
staticinlineItem
356-
PageGetItem(Pagepage,ItemIditemId)
355+
PageGetItem(constPageData*page,constItemIdData*itemId)
357356
{
358357
Assert(page);
359358
Assert(ItemIdHasStorage(itemId));
360359

361-
return (Item) (((char*)page)+ItemIdGetOffset(itemId));
360+
return (Item) (((constchar*)page)+ItemIdGetOffset(itemId));
362361
}
363362

364363
/*
@@ -371,9 +370,9 @@ PageGetItem(Page page, ItemId itemId)
371370
*return zero to ensure sane behavior.
372371
*/
373372
staticinlineOffsetNumber
374-
PageGetMaxOffsetNumber(Pagepage)
373+
PageGetMaxOffsetNumber(constPageData*page)
375374
{
376-
PageHeaderpageheader= (PageHeader)page;
375+
constPageHeaderData*pageheader= (constPageHeaderData*)page;
377376

378377
if (pageheader->pd_lower <=SizeOfPageHeaderData)
379378
return0;
@@ -385,7 +384,7 @@ PageGetMaxOffsetNumber(Page page)
385384
* Additional functions for access to page headers.
386385
*/
387386
staticinlineXLogRecPtr
388-
PageGetLSN(constchar*page)
387+
PageGetLSN(constPageData*page)
389388
{
390389
returnPageXLogRecPtrGet(((constPageHeaderData*)page)->pd_lsn);
391390
}
@@ -396,9 +395,9 @@ PageSetLSN(Page page, XLogRecPtr lsn)
396395
}
397396

398397
staticinlinebool
399-
PageHasFreeLinePointers(Pagepage)
398+
PageHasFreeLinePointers(constPageData*page)
400399
{
401-
return ((PageHeader)page)->pd_flags&PD_HAS_FREE_LINES;
400+
return ((constPageHeaderData*)page)->pd_flags&PD_HAS_FREE_LINES;
402401
}
403402
staticinlinevoid
404403
PageSetHasFreeLinePointers(Pagepage)
@@ -412,9 +411,9 @@ PageClearHasFreeLinePointers(Page page)
412411
}
413412

414413
staticinlinebool
415-
PageIsFull(Pagepage)
414+
PageIsFull(constPageData*page)
416415
{
417-
return ((PageHeader)page)->pd_flags&PD_PAGE_FULL;
416+
return ((constPageHeaderData*)page)->pd_flags&PD_PAGE_FULL;
418417
}
419418
staticinlinevoid
420419
PageSetFull(Pagepage)
@@ -428,9 +427,9 @@ PageClearFull(Page page)
428427
}
429428

430429
staticinlinebool
431-
PageIsAllVisible(Pagepage)
430+
PageIsAllVisible(constPageData*page)
432431
{
433-
return ((PageHeader)page)->pd_flags&PD_ALL_VISIBLE;
432+
return ((constPageHeaderData*)page)->pd_flags&PD_ALL_VISIBLE;
434433
}
435434
staticinlinevoid
436435
PageSetAllVisible(Pagepage)
@@ -490,19 +489,19 @@ StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)),
490489
"BLCKSZ has to be a multiple of sizeof(size_t)");
491490

492491
externvoidPageInit(Pagepage,SizepageSize,SizespecialSize);
493-
externboolPageIsVerifiedExtended(Pagepage,BlockNumberblkno,intflags);
492+
externboolPageIsVerifiedExtended(constPageData*page,BlockNumberblkno,intflags);
494493
externOffsetNumberPageAddItemExtended(Pagepage,Itemitem,Sizesize,
495494
OffsetNumberoffsetNumber,intflags);
496-
externPagePageGetTempPage(Pagepage);
497-
externPagePageGetTempPageCopy(Pagepage);
498-
externPagePageGetTempPageCopySpecial(Pagepage);
495+
externPagePageGetTempPage(constPageData*page);
496+
externPagePageGetTempPageCopy(constPageData*page);
497+
externPagePageGetTempPageCopySpecial(constPageData*page);
499498
externvoidPageRestoreTempPage(PagetempPage,PageoldPage);
500499
externvoidPageRepairFragmentation(Pagepage);
501500
externvoidPageTruncateLinePointerArray(Pagepage);
502-
externSizePageGetFreeSpace(Pagepage);
503-
externSizePageGetFreeSpaceForMultipleTuples(Pagepage,intntups);
504-
externSizePageGetExactFreeSpace(Pagepage);
505-
externSizePageGetHeapFreeSpace(Pagepage);
501+
externSizePageGetFreeSpace(constPageData*page);
502+
externSizePageGetFreeSpaceForMultipleTuples(constPageData*page,intntups);
503+
externSizePageGetExactFreeSpace(constPageData*page);
504+
externSizePageGetHeapFreeSpace(constPageData*page);
506505
externvoidPageIndexTupleDelete(Pagepage,OffsetNumberoffnum);
507506
externvoidPageIndexMultiDelete(Pagepage,OffsetNumber*itemnos,intnitems);
508507
externvoidPageIndexTupleDeleteNoCompact(Pagepage,OffsetNumberoffnum);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp