1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Add macros in hash and btree AMs to get the special area of their pages

This makes the code more consistent with SpGiST, GiST and GIN, that
already use this style, and the idea is to make easier the introduction
of more sanity checks for each of these AM-specific macros.  BRIN uses a
different set of macros to get a page's type and flags, so it has no
need for something similar.

Author: Matthias van de Meent
Discussion: https://postgr.es/m/CAEze2WjE3+tGO9Fs9+iZMU+z6mMZKo54W1Zt98WKqbEUHbHOBg@mail.gmail.com
This commit is contained in:
Michael Paquier
2022-04-01 13:24:50 +09:00
parent 73db8f4d17
commit d16773cdc8
23 changed files with 186 additions and 182 deletions

View File

@ -691,7 +691,7 @@ bt_check_level_from_leftmost(BtreeCheckState *state, BtreeLevel level)
state->target = palloc_btree_page(state, state->targetblock);
state->targetlsn = PageGetLSN(state->target);
opaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
opaque = BTPageGetOpaque(state->target);
if (P_IGNORE(opaque))
{
@ -927,7 +927,7 @@ bt_recheck_sibling_links(BtreeCheckState *state,
LockBuffer(lbuf, BT_READ);
_bt_checkpage(state->rel, lbuf);
page = BufferGetPage(lbuf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque = BTPageGetOpaque(page);
if (P_ISDELETED(opaque))
{
/*
@ -951,7 +951,7 @@ bt_recheck_sibling_links(BtreeCheckState *state,
LockBuffer(newtargetbuf, BT_READ);
_bt_checkpage(state->rel, newtargetbuf);
page = BufferGetPage(newtargetbuf);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque = BTPageGetOpaque(page);
/* btpo_prev_from_target may have changed; update it */
btpo_prev_from_target = opaque->btpo_prev;
}
@ -1049,7 +1049,7 @@ bt_target_page_check(BtreeCheckState *state)
OffsetNumber max;
BTPageOpaque topaque;
topaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
topaque = BTPageGetOpaque(state->target);
max = PageGetMaxOffsetNumber(state->target);
elog(DEBUG2, "verifying %u items on %s block %u", max,
@ -1478,7 +1478,7 @@ bt_target_page_check(BtreeCheckState *state)
/* Get fresh copy of target page */
state->target = palloc_btree_page(state, state->targetblock);
/* Note that we deliberately do not update target LSN */
topaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
topaque = BTPageGetOpaque(state->target);
/*
* All !readonly checks now performed; just return
@ -1552,7 +1552,7 @@ bt_right_page_check_scankey(BtreeCheckState *state)
OffsetNumber nline;
/* Determine target's next block number */
opaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
opaque = BTPageGetOpaque(state->target);
/* If target is already rightmost, no right sibling; nothing to do here */
if (P_RIGHTMOST(opaque))
@ -1588,7 +1588,7 @@ bt_right_page_check_scankey(BtreeCheckState *state)
CHECK_FOR_INTERRUPTS();
rightpage = palloc_btree_page(state, targetnext);
opaque = (BTPageOpaque) PageGetSpecialPointer(rightpage);
opaque = BTPageGetOpaque(rightpage);
if (!P_IGNORE(opaque) || P_RIGHTMOST(opaque))
break;
@ -1893,7 +1893,7 @@ bt_child_highkey_check(BtreeCheckState *state,
else
page = palloc_btree_page(state, blkno);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque = BTPageGetOpaque(page);
/* The first page we visit at the level should be leftmost */
if (first && !BlockNumberIsValid(state->prevrightlink) && !P_LEFTMOST(opaque))
@ -1971,7 +1971,7 @@ bt_child_highkey_check(BtreeCheckState *state,
else
pivotkey_offset = target_downlinkoffnum;
topaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
topaque = BTPageGetOpaque(state->target);
if (!offset_is_negative_infinity(topaque, pivotkey_offset))
{
@ -2128,9 +2128,9 @@ bt_child_check(BtreeCheckState *state, BTScanInsert targetkey,
* Check all items, rather than checking just the first and trusting that
* the operator class obeys the transitive law.
*/
topaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
topaque = BTPageGetOpaque(state->target);
child = palloc_btree_page(state, childblock);
copaque = (BTPageOpaque) PageGetSpecialPointer(child);
copaque = BTPageGetOpaque(child);
maxoffset = PageGetMaxOffsetNumber(child);
/*
@ -2235,7 +2235,7 @@ static void
bt_downlink_missing_check(BtreeCheckState *state, bool rightsplit,
BlockNumber blkno, Page page)
{
BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
BTPageOpaque opaque = BTPageGetOpaque(page);
ItemId itemid;
IndexTuple itup;
Page child;
@ -2319,7 +2319,7 @@ bt_downlink_missing_check(BtreeCheckState *state, bool rightsplit,
CHECK_FOR_INTERRUPTS();
child = palloc_btree_page(state, childblk);
copaque = (BTPageOpaque) PageGetSpecialPointer(child);
copaque = BTPageGetOpaque(child);
if (P_ISLEAF(copaque))
break;
@ -2780,7 +2780,7 @@ invariant_l_offset(BtreeCheckState *state, BTScanInsert key,
bool nonpivot;
ritup = (IndexTuple) PageGetItem(state->target, itemid);
topaque = (BTPageOpaque) PageGetSpecialPointer(state->target);
topaque = BTPageGetOpaque(state->target);
nonpivot = P_ISLEAF(topaque) && upperbound >= P_FIRSTDATAKEY(topaque);
/* Get number of keys + heap TID for item to the right */
@ -2895,7 +2895,7 @@ invariant_l_nontarget_offset(BtreeCheckState *state, BTScanInsert key,
bool nonpivot;
child = (IndexTuple) PageGetItem(nontarget, itemid);
copaque = (BTPageOpaque) PageGetSpecialPointer(nontarget);
copaque = BTPageGetOpaque(nontarget);
nonpivot = P_ISLEAF(copaque) && upperbound >= P_FIRSTDATAKEY(copaque);
/* Get number of keys + heap TID for child/non-target item */
@ -2954,7 +2954,7 @@ palloc_btree_page(BtreeCheckState *state, BlockNumber blocknum)
memcpy(page, BufferGetPage(buffer), BLCKSZ);
UnlockReleaseBuffer(buffer);
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque = BTPageGetOpaque(page);
if (P_ISMETA(opaque) && blocknum != BTREE_METAPAGE)
ereport(ERROR,