summaryrefslogtreecommitdiff
path: root/src/backend/access/nbtree/nbtinsert.c
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2022-04-01 13:24:50 +0900
committerMichael Paquier <michael@paquier.xyz>2022-04-01 13:24:50 +0900
commitd16773cdc86210493a2874cb0cf93f3883fcda73 (patch)
tree24306ded63bd036dc2eb37be6f817048c986eccd /src/backend/access/nbtree/nbtinsert.c
parent73db8f4d17ed4efb7709f1cafd5b1dd0285b0842 (diff)
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
Diffstat (limited to 'src/backend/access/nbtree/nbtinsert.c')
-rw-r--r--src/backend/access/nbtree/nbtinsert.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index 68628ec000d..f6f4af8bfe3 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -329,7 +329,7 @@ _bt_search_insert(Relation rel, BTInsertState insertstate)
_bt_checkpage(rel, insertstate->buf);
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* Check if the page is still the rightmost leaf page and has
@@ -428,7 +428,7 @@ _bt_check_unique(Relation rel, BTInsertState insertstate, Relation heapRel,
InitDirtySnapshot(SnapshotDirty);
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
maxoff = PageGetMaxOffsetNumber(page);
/*
@@ -733,7 +733,7 @@ _bt_check_unique(Relation rel, BTInsertState insertstate, Relation heapRel,
nbuf = _bt_relandgetbuf(rel, nbuf, nblkno, BT_READ);
page = BufferGetPage(nbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (!P_IGNORE(opaque))
break;
if (P_RIGHTMOST(opaque))
@@ -822,7 +822,7 @@ _bt_findinsertloc(Relation rel,
BTPageOpaque opaque;
OffsetNumber newitemoff;
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/* Check 1/3 of a page restriction */
if (unlikely(insertstate->itemsz > BTMaxItemSize(page)))
@@ -888,7 +888,7 @@ _bt_findinsertloc(Relation rel,
_bt_stepright(rel, insertstate, stack);
/* Update local state after stepping right */
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/* Assume duplicates (if checkingunique) */
uniquedup = true;
}
@@ -972,7 +972,7 @@ _bt_findinsertloc(Relation rel,
_bt_stepright(rel, insertstate, stack);
/* Update local state after stepping right */
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
}
@@ -1030,7 +1030,7 @@ _bt_stepright(Relation rel, BTInsertState insertstate, BTStack stack)
BlockNumber rblkno;
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
rbuf = InvalidBuffer;
rblkno = opaque->btpo_next;
@@ -1038,7 +1038,7 @@ _bt_stepright(Relation rel, BTInsertState insertstate, BTStack stack)
{
rbuf = _bt_relandgetbuf(rel, rbuf, rblkno, BT_WRITE);
page = BufferGetPage(rbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* If this page was incompletely split, finish the split now. We do
@@ -1120,7 +1120,7 @@ _bt_insertonpg(Relation rel,
IndexTuple nposting = NULL;
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
isleaf = P_ISLEAF(opaque);
isroot = P_ISROOT(opaque);
isrightmost = P_RIGHTMOST(opaque);
@@ -1296,7 +1296,7 @@ _bt_insertonpg(Relation rel,
if (!isleaf)
{
Page cpage = BufferGetPage(cbuf);
- BTPageOpaque cpageop = (BTPageOpaque) PageGetSpecialPointer(cpage);
+ BTPageOpaque cpageop = BTPageGetOpaque(cpage);
Assert(P_INCOMPLETE_SPLIT(cpageop));
cpageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT;
@@ -1504,7 +1504,7 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
* only workspace.
*/
origpage = BufferGetPage(buf);
- oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage);
+ oopaque = BTPageGetOpaque(origpage);
isleaf = P_ISLEAF(oopaque);
isrightmost = P_RIGHTMOST(oopaque);
maxoff = PageGetMaxOffsetNumber(origpage);
@@ -1540,7 +1540,7 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
/* Allocate temp buffer for leftpage */
leftpage = PageGetTempPage(origpage);
_bt_pageinit(leftpage, BufferGetPageSize(buf));
- lopaque = (BTPageOpaque) PageGetSpecialPointer(leftpage);
+ lopaque = BTPageGetOpaque(leftpage);
/*
* leftpage won't be the root when we're done. Also, clear the SPLIT_END
@@ -1716,7 +1716,7 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
rightpage = BufferGetPage(rbuf);
rightpagenumber = BufferGetBlockNumber(rbuf);
/* rightpage was initialized by _bt_getbuf */
- ropaque = (BTPageOpaque) PageGetSpecialPointer(rightpage);
+ ropaque = BTPageGetOpaque(rightpage);
/*
* Finish off remaining leftpage special area fields. They cannot be set
@@ -1887,7 +1887,7 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
{
sbuf = _bt_getbuf(rel, oopaque->btpo_next, BT_WRITE);
spage = BufferGetPage(sbuf);
- sopaque = (BTPageOpaque) PageGetSpecialPointer(spage);
+ sopaque = BTPageGetOpaque(spage);
if (sopaque->btpo_prev != origpagenumber)
{
memset(rightpage, 0, BufferGetPageSize(rbuf));
@@ -1952,7 +1952,7 @@ _bt_split(Relation rel, BTScanInsert itup_key, Buffer buf, Buffer cbuf,
if (!isleaf)
{
Page cpage = BufferGetPage(cbuf);
- BTPageOpaque cpageop = (BTPageOpaque) PageGetSpecialPointer(cpage);
+ BTPageOpaque cpageop = BTPageGetOpaque(cpage);
cpageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT;
MarkBufferDirty(cbuf);
@@ -2139,7 +2139,7 @@ _bt_insert_parent(Relation rel,
BTPageOpaque opaque;
elog(DEBUG2, "concurrent ROOT page split");
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* We should never reach here when a leaf page split takes place
@@ -2230,7 +2230,7 @@ void
_bt_finish_split(Relation rel, Buffer lbuf, BTStack stack)
{
Page lpage = BufferGetPage(lbuf);
- BTPageOpaque lpageop = (BTPageOpaque) PageGetSpecialPointer(lpage);
+ BTPageOpaque lpageop = BTPageGetOpaque(lpage);
Buffer rbuf;
Page rpage;
BTPageOpaque rpageop;
@@ -2242,7 +2242,7 @@ _bt_finish_split(Relation rel, Buffer lbuf, BTStack stack)
/* Lock right sibling, the one missing the downlink */
rbuf = _bt_getbuf(rel, lpageop->btpo_next, BT_WRITE);
rpage = BufferGetPage(rbuf);
- rpageop = (BTPageOpaque) PageGetSpecialPointer(rpage);
+ rpageop = BTPageGetOpaque(rpage);
/* Could this be a root split? */
if (!stack)
@@ -2320,7 +2320,7 @@ _bt_getstackbuf(Relation rel, BTStack stack, BlockNumber child)
buf = _bt_getbuf(rel, blkno, BT_WRITE);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_INCOMPLETE_SPLIT(opaque))
{
@@ -2451,7 +2451,7 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
lbkno = BufferGetBlockNumber(lbuf);
rbkno = BufferGetBlockNumber(rbuf);
lpage = BufferGetPage(lbuf);
- lopaque = (BTPageOpaque) PageGetSpecialPointer(lpage);
+ lopaque = BTPageGetOpaque(lpage);
/* get a new root page */
rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE);
@@ -2492,11 +2492,11 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
_bt_upgrademetapage(metapg);
/* set btree special data */
- rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage);
+ rootopaque = BTPageGetOpaque(rootpage);
rootopaque->btpo_prev = rootopaque->btpo_next = P_NONE;
rootopaque->btpo_flags = BTP_ROOT;
rootopaque->btpo_level =
- ((BTPageOpaque) PageGetSpecialPointer(lpage))->btpo_level + 1;
+ (BTPageGetOpaque(lpage))->btpo_level + 1;
rootopaque->btpo_cycleid = 0;
/* update metapage data */
@@ -2680,7 +2680,7 @@ _bt_delete_or_dedup_one_page(Relation rel, Relation heapRel,
Buffer buffer = insertstate->buf;
BTScanInsert itup_key = insertstate->itup_key;
Page page = BufferGetPage(buffer);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
Assert(P_ISLEAF(opaque));
Assert(simpleonly || itup_key->heapkeyspace);