aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/hash/hash.c6
-rw-r--r--src/backend/access/hash/hash_xlog.c26
-rw-r--r--src/backend/access/hash/hashinsert.c6
-rw-r--r--src/backend/access/hash/hashovfl.c22
-rw-r--r--src/backend/access/hash/hashpage.c30
-rw-r--r--src/backend/access/hash/hashsearch.c12
-rw-r--r--src/backend/access/hash/hashutil.c4
-rw-r--r--src/backend/access/nbtree/nbtdedup.c6
-rw-r--r--src/backend/access/nbtree/nbtinsert.c46
-rw-r--r--src/backend/access/nbtree/nbtpage.c58
-rw-r--r--src/backend/access/nbtree/nbtree.c2
-rw-r--r--src/backend/access/nbtree/nbtsearch.c34
-rw-r--r--src/backend/access/nbtree/nbtsort.c12
-rw-r--r--src/backend/access/nbtree/nbtsplitloc.c2
-rw-r--r--src/backend/access/nbtree/nbtutils.c6
-rw-r--r--src/backend/access/nbtree/nbtxlog.c34
-rw-r--r--src/include/access/hash.h2
-rw-r--r--src/include/access/nbtree.h8
18 files changed, 160 insertions, 156 deletions
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index a259a301fa8..fd1a7119b6c 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -515,7 +515,7 @@ loop_top:
_hash_checkpage(rel, buf, LH_BUCKET_PAGE);
page = BufferGetPage(buf);
- bucket_opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ bucket_opaque = HashPageGetOpaque(page);
/*
* If the bucket contains tuples that are moved by split, then we need
@@ -717,7 +717,7 @@ hashbucketcleanup(Relation rel, Bucket cur_bucket, Buffer bucket_buf,
vacuum_delay_point();
page = BufferGetPage(buf);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
/* Scan each tuple in page */
maxoffno = PageGetMaxOffsetNumber(page);
@@ -884,7 +884,7 @@ hashbucketcleanup(Relation rel, Bucket cur_bucket, Buffer bucket_buf,
Page page;
page = BufferGetPage(bucket_buf);
- bucket_opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ bucket_opaque = HashPageGetOpaque(page);
/* No ereport(ERROR) until changes are logged */
START_CRIT_SECTION();
diff --git a/src/backend/access/hash/hash_xlog.c b/src/backend/access/hash/hash_xlog.c
index 55937b9a68e..62dbfc3a5d1 100644
--- a/src/backend/access/hash/hash_xlog.c
+++ b/src/backend/access/hash/hash_xlog.c
@@ -203,7 +203,7 @@ hash_xlog_add_ovfl_page(XLogReaderState *record)
true);
/* update backlink */
ovflpage = BufferGetPage(ovflbuf);
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(ovflpage);
+ ovflopaque = HashPageGetOpaque(ovflpage);
ovflopaque->hasho_prevblkno = leftblk;
PageSetLSN(ovflpage, lsn);
@@ -215,7 +215,7 @@ hash_xlog_add_ovfl_page(XLogReaderState *record)
HashPageOpaque leftopaque;
leftpage = BufferGetPage(leftbuf);
- leftopaque = (HashPageOpaque) PageGetSpecialPointer(leftpage);
+ leftopaque = HashPageGetOpaque(leftpage);
leftopaque->hasho_nextblkno = rightblk;
PageSetLSN(leftpage, lsn);
@@ -342,7 +342,7 @@ hash_xlog_split_allocate_page(XLogReaderState *record)
HashPageOpaque oldopaque;
oldpage = BufferGetPage(oldbuf);
- oldopaque = (HashPageOpaque) PageGetSpecialPointer(oldpage);
+ oldopaque = HashPageGetOpaque(oldpage);
oldopaque->hasho_flag = xlrec->old_bucket_flag;
oldopaque->hasho_prevblkno = xlrec->new_bucket;
@@ -465,7 +465,7 @@ hash_xlog_split_complete(XLogReaderState *record)
HashPageOpaque oldopaque;
oldpage = BufferGetPage(oldbuf);
- oldopaque = (HashPageOpaque) PageGetSpecialPointer(oldpage);
+ oldopaque = HashPageGetOpaque(oldpage);
oldopaque->hasho_flag = xlrec->old_bucket_flag;
@@ -488,7 +488,7 @@ hash_xlog_split_complete(XLogReaderState *record)
HashPageOpaque nopaque;
newpage = BufferGetPage(newbuf);
- nopaque = (HashPageOpaque) PageGetSpecialPointer(newpage);
+ nopaque = HashPageGetOpaque(newpage);
nopaque->hasho_flag = xlrec->new_bucket_flag;
@@ -710,7 +710,7 @@ hash_xlog_squeeze_page(XLogReaderState *record)
*/
if (xldata->is_prev_bucket_same_wrt)
{
- HashPageOpaque writeopaque = (HashPageOpaque) PageGetSpecialPointer(writepage);
+ HashPageOpaque writeopaque = HashPageGetOpaque(writepage);
writeopaque->hasho_nextblkno = xldata->nextblkno;
}
@@ -729,7 +729,7 @@ hash_xlog_squeeze_page(XLogReaderState *record)
_hash_pageinit(ovflpage, BufferGetPageSize(ovflbuf));
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(ovflpage);
+ ovflopaque = HashPageGetOpaque(ovflpage);
ovflopaque->hasho_prevblkno = InvalidBlockNumber;
ovflopaque->hasho_nextblkno = InvalidBlockNumber;
@@ -748,7 +748,7 @@ hash_xlog_squeeze_page(XLogReaderState *record)
XLogReadBufferForRedo(record, 3, &prevbuf) == BLK_NEEDS_REDO)
{
Page prevpage = BufferGetPage(prevbuf);
- HashPageOpaque prevopaque = (HashPageOpaque) PageGetSpecialPointer(prevpage);
+ HashPageOpaque prevopaque = HashPageGetOpaque(prevpage);
prevopaque->hasho_nextblkno = xldata->nextblkno;
@@ -766,7 +766,7 @@ hash_xlog_squeeze_page(XLogReaderState *record)
if (XLogReadBufferForRedo(record, 4, &nextbuf) == BLK_NEEDS_REDO)
{
Page nextpage = BufferGetPage(nextbuf);
- HashPageOpaque nextopaque = (HashPageOpaque) PageGetSpecialPointer(nextpage);
+ HashPageOpaque nextopaque = HashPageGetOpaque(nextpage);
nextopaque->hasho_prevblkno = xldata->prevblkno;
@@ -903,7 +903,7 @@ hash_xlog_delete(XLogReaderState *record)
{
HashPageOpaque pageopaque;
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
pageopaque->hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
}
@@ -933,7 +933,7 @@ hash_xlog_split_cleanup(XLogReaderState *record)
page = (Page) BufferGetPage(buffer);
- bucket_opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ bucket_opaque = HashPageGetOpaque(page);
bucket_opaque->hasho_flag &= ~LH_BUCKET_NEEDS_SPLIT_CLEANUP;
PageSetLSN(page, lsn);
MarkBufferDirty(buffer);
@@ -1024,7 +1024,7 @@ hash_xlog_vacuum_one_page(XLogReaderState *record)
* Mark the page as not containing any LP_DEAD items. See comments in
* _hash_vacuum_one_page() for details.
*/
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
pageopaque->hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
PageSetLSN(page, lsn);
@@ -1116,7 +1116,7 @@ hash_mask(char *pagedata, BlockNumber blkno)
mask_page_hint_bits(page);
mask_unused_space(page);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
pagetype = opaque->hasho_flag & LH_PAGE_TYPE;
if (pagetype == LH_UNUSED_PAGE)
diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c
index faf609c1574..4f2fecb908e 100644
--- a/src/backend/access/hash/hashinsert.c
+++ b/src/backend/access/hash/hashinsert.c
@@ -95,7 +95,7 @@ restart_insert:
bucket_buf = buf;
page = BufferGetPage(buf);
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
bucket = pageopaque->hasho_bucket;
/*
@@ -183,7 +183,7 @@ restart_insert:
/* should fit now, given test above */
Assert(PageGetFreeSpace(page) >= itemsz);
}
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
Assert((pageopaque->hasho_flag & LH_PAGE_TYPE) == LH_OVERFLOW_PAGE);
Assert(pageopaque->hasho_bucket == bucket);
}
@@ -384,7 +384,7 @@ _hash_vacuum_one_page(Relation rel, Relation hrel, Buffer metabuf, Buffer buf)
* check it. Remember that LH_PAGE_HAS_DEAD_TUPLES is only a hint
* anyway.
*/
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
pageopaque->hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
metap = HashPageGetMeta(BufferGetPage(metabuf));
diff --git a/src/backend/access/hash/hashovfl.c b/src/backend/access/hash/hashovfl.c
index 48368751963..e34cfc302d3 100644
--- a/src/backend/access/hash/hashovfl.c
+++ b/src/backend/access/hash/hashovfl.c
@@ -159,7 +159,7 @@ _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
BlockNumber nextblkno;
page = BufferGetPage(buf);
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
nextblkno = pageopaque->hasho_nextblkno;
if (!BlockNumberIsValid(nextblkno))
@@ -364,7 +364,7 @@ found:
/* initialize new overflow page */
ovflpage = BufferGetPage(ovflbuf);
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(ovflpage);
+ ovflopaque = HashPageGetOpaque(ovflpage);
ovflopaque->hasho_prevblkno = BufferGetBlockNumber(buf);
ovflopaque->hasho_nextblkno = InvalidBlockNumber;
ovflopaque->hasho_bucket = pageopaque->hasho_bucket;
@@ -516,7 +516,7 @@ _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf,
_hash_checkpage(rel, ovflbuf, LH_OVERFLOW_PAGE);
ovflblkno = BufferGetBlockNumber(ovflbuf);
ovflpage = BufferGetPage(ovflbuf);
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(ovflpage);
+ ovflopaque = HashPageGetOpaque(ovflpage);
nextblkno = ovflopaque->hasho_nextblkno;
prevblkno = ovflopaque->hasho_prevblkno;
writeblkno = BufferGetBlockNumber(wbuf);
@@ -600,7 +600,7 @@ _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf,
*/
_hash_pageinit(ovflpage, BufferGetPageSize(ovflbuf));
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(ovflpage);
+ ovflopaque = HashPageGetOpaque(ovflpage);
ovflopaque->hasho_prevblkno = InvalidBlockNumber;
ovflopaque->hasho_nextblkno = InvalidBlockNumber;
@@ -613,7 +613,7 @@ _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf,
if (BufferIsValid(prevbuf))
{
Page prevpage = BufferGetPage(prevbuf);
- HashPageOpaque prevopaque = (HashPageOpaque) PageGetSpecialPointer(prevpage);
+ HashPageOpaque prevopaque = HashPageGetOpaque(prevpage);
Assert(prevopaque->hasho_bucket == bucket);
prevopaque->hasho_nextblkno = nextblkno;
@@ -622,7 +622,7 @@ _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf,
if (BufferIsValid(nextbuf))
{
Page nextpage = BufferGetPage(nextbuf);
- HashPageOpaque nextopaque = (HashPageOpaque) PageGetSpecialPointer(nextpage);
+ HashPageOpaque nextopaque = HashPageGetOpaque(nextpage);
Assert(nextopaque->hasho_bucket == bucket);
nextopaque->hasho_prevblkno = prevblkno;
@@ -751,7 +751,7 @@ _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage)
_hash_pageinit(pg, BufferGetPageSize(buf));
/* initialize the page's special space */
- op = (HashPageOpaque) PageGetSpecialPointer(pg);
+ op = HashPageGetOpaque(pg);
op->hasho_prevblkno = InvalidBlockNumber;
op->hasho_nextblkno = InvalidBlockNumber;
op->hasho_bucket = InvalidBucket;
@@ -824,7 +824,7 @@ _hash_squeezebucket(Relation rel,
wblkno = bucket_blkno;
wbuf = bucket_buf;
wpage = BufferGetPage(wbuf);
- wopaque = (HashPageOpaque) PageGetSpecialPointer(wpage);
+ wopaque = HashPageGetOpaque(wpage);
/*
* if there aren't any overflow pages, there's nothing to squeeze. caller
@@ -855,7 +855,7 @@ _hash_squeezebucket(Relation rel,
LH_OVERFLOW_PAGE,
bstrategy);
rpage = BufferGetPage(rbuf);
- ropaque = (HashPageOpaque) PageGetSpecialPointer(rpage);
+ ropaque = HashPageGetOpaque(rpage);
Assert(ropaque->hasho_bucket == bucket);
} while (BlockNumberIsValid(ropaque->hasho_nextblkno));
@@ -1005,7 +1005,7 @@ readpage:
wbuf = next_wbuf;
wpage = BufferGetPage(wbuf);
- wopaque = (HashPageOpaque) PageGetSpecialPointer(wpage);
+ wopaque = HashPageGetOpaque(wpage);
Assert(wopaque->hasho_bucket == bucket);
retain_pin = false;
@@ -1076,7 +1076,7 @@ readpage:
LH_OVERFLOW_PAGE,
bstrategy);
rpage = BufferGetPage(rbuf);
- ropaque = (HashPageOpaque) PageGetSpecialPointer(rpage);
+ ropaque = HashPageGetOpaque(rpage);
Assert(ropaque->hasho_bucket == bucket);
}
diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c
index 28c5297a1dc..39206d19429 100644
--- a/src/backend/access/hash/hashpage.c
+++ b/src/backend/access/hash/hashpage.c
@@ -166,7 +166,7 @@ _hash_initbuf(Buffer buf, uint32 max_bucket, uint32 num_bucket, uint32 flag,
if (initpage)
_hash_pageinit(page, BufferGetPageSize(buf));
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
/*
* Set hasho_prevblkno with current hashm_maxbucket. This value will be
@@ -529,7 +529,7 @@ _hash_init_metabuffer(Buffer buf, double num_tuples, RegProcedure procid,
if (initpage)
_hash_pageinit(page, BufferGetPageSize(buf));
- pageopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ pageopaque = HashPageGetOpaque(page);
pageopaque->hasho_prevblkno = InvalidBlockNumber;
pageopaque->hasho_nextblkno = InvalidBlockNumber;
pageopaque->hasho_bucket = InvalidBucket;
@@ -693,7 +693,7 @@ restart_expand:
goto fail;
opage = BufferGetPage(buf_oblkno);
- oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
+ oopaque = HashPageGetOpaque(opage);
/*
* We want to finish the split from a bucket as there is no apparent
@@ -864,7 +864,7 @@ restart_expand:
lowmask = metap->hashm_lowmask;
opage = BufferGetPage(buf_oblkno);
- oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
+ oopaque = HashPageGetOpaque(opage);
/*
* Mark the old bucket to indicate that split is in progress. (At
@@ -883,7 +883,7 @@ restart_expand:
* initialize the new bucket's primary page and mark it to indicate that
* split is in progress.
*/
- nopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ nopaque = HashPageGetOpaque(npage);
nopaque->hasho_prevblkno = maxbucket;
nopaque->hasho_nextblkno = InvalidBlockNumber;
nopaque->hasho_bucket = new_bucket;
@@ -1010,7 +1010,7 @@ _hash_alloc_buckets(Relation rel, BlockNumber firstblock, uint32 nblocks)
*/
_hash_pageinit(page, BLCKSZ);
- ovflopaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ ovflopaque = HashPageGetOpaque(page);
ovflopaque->hasho_prevblkno = InvalidBlockNumber;
ovflopaque->hasho_nextblkno = InvalidBlockNumber;
@@ -1091,11 +1091,11 @@ _hash_splitbucket(Relation rel,
bucket_obuf = obuf;
opage = BufferGetPage(obuf);
- oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
+ oopaque = HashPageGetOpaque(opage);
bucket_nbuf = nbuf;
npage = BufferGetPage(nbuf);
- nopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ nopaque = HashPageGetOpaque(npage);
/* Copy the predicate locks from old bucket to new bucket. */
PredicateLockPageSplit(rel,
@@ -1198,7 +1198,7 @@ _hash_splitbucket(Relation rel,
/* chain to a new overflow page */
nbuf = _hash_addovflpage(rel, metabuf, nbuf, (nbuf == bucket_nbuf));
npage = BufferGetPage(nbuf);
- nopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ nopaque = HashPageGetOpaque(npage);
}
itups[nitups++] = new_itup;
@@ -1251,7 +1251,7 @@ _hash_splitbucket(Relation rel,
/* Else, advance to next old page */
obuf = _hash_getbuf(rel, oblkno, HASH_READ, LH_OVERFLOW_PAGE);
opage = BufferGetPage(obuf);
- oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
+ oopaque = HashPageGetOpaque(opage);
}
/*
@@ -1264,11 +1264,11 @@ _hash_splitbucket(Relation rel,
*/
LockBuffer(bucket_obuf, BUFFER_LOCK_EXCLUSIVE);
opage = BufferGetPage(bucket_obuf);
- oopaque = (HashPageOpaque) PageGetSpecialPointer(opage);
+ oopaque = HashPageGetOpaque(opage);
LockBuffer(bucket_nbuf, BUFFER_LOCK_EXCLUSIVE);
npage = BufferGetPage(bucket_nbuf);
- nopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ nopaque = HashPageGetOpaque(npage);
START_CRIT_SECTION();
@@ -1392,7 +1392,7 @@ _hash_finish_split(Relation rel, Buffer metabuf, Buffer obuf, Bucket obucket,
bucket_nbuf = nbuf;
npage = BufferGetPage(nbuf);
- npageopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ npageopaque = HashPageGetOpaque(npage);
/* Scan each tuple in new page */
nmaxoffnum = PageGetMaxOffsetNumber(npage);
@@ -1446,7 +1446,7 @@ _hash_finish_split(Relation rel, Buffer metabuf, Buffer obuf, Bucket obucket,
}
npage = BufferGetPage(bucket_nbuf);
- npageopaque = (HashPageOpaque) PageGetSpecialPointer(npage);
+ npageopaque = HashPageGetOpaque(npage);
nbucket = npageopaque->hasho_bucket;
_hash_splitbucket(rel, metabuf, obucket,
@@ -1587,7 +1587,7 @@ _hash_getbucketbuf_from_hashkey(Relation rel, uint32 hashkey, int access,
/* Fetch the primary bucket page for the bucket */
buf = _hash_getbuf(rel, blkno, access, LH_BUCKET_PAGE);
page = BufferGetPage(buf);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
Assert(opaque->hasho_bucket == bucket);
Assert(opaque->hasho_prevblkno != InvalidBlockNumber);
diff --git a/src/backend/access/hash/hashsearch.c b/src/backend/access/hash/hashsearch.c
index 7ca542a3fba..524af27409d 100644
--- a/src/backend/access/hash/hashsearch.c
+++ b/src/backend/access/hash/hashsearch.c
@@ -187,7 +187,7 @@ _hash_readnext(IndexScanDesc scan,
{
*pagep = BufferGetPage(*bufp);
TestForOldSnapshot(scan->xs_snapshot, rel, *pagep);
- *opaquep = (HashPageOpaque) PageGetSpecialPointer(*pagep);
+ *opaquep = HashPageGetOpaque(*pagep);
}
}
@@ -233,7 +233,7 @@ _hash_readprev(IndexScanDesc scan,
LH_BUCKET_PAGE | LH_OVERFLOW_PAGE);
*pagep = BufferGetPage(*bufp);
TestForOldSnapshot(scan->xs_snapshot, rel, *pagep);
- *opaquep = (HashPageOpaque) PageGetSpecialPointer(*pagep);
+ *opaquep = HashPageGetOpaque(*pagep);
/*
* We always maintain the pin on bucket page for whole scan operation,
@@ -258,7 +258,7 @@ _hash_readprev(IndexScanDesc scan,
LockBuffer(*bufp, BUFFER_LOCK_SHARE);
*pagep = BufferGetPage(*bufp);
- *opaquep = (HashPageOpaque) PageGetSpecialPointer(*pagep);
+ *opaquep = HashPageGetOpaque(*pagep);
/* move to the end of bucket chain */
while (BlockNumberIsValid((*opaquep)->hasho_nextblkno))
@@ -352,7 +352,7 @@ _hash_first(IndexScanDesc scan, ScanDirection dir)
PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot);
page = BufferGetPage(buf);
TestForOldSnapshot(scan->xs_snapshot, rel, page);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
bucket = opaque->hasho_bucket;
so->hashso_bucket_buf = buf;
@@ -398,7 +398,7 @@ _hash_first(IndexScanDesc scan, ScanDirection dir)
LockBuffer(buf, BUFFER_LOCK_SHARE);
page = BufferGetPage(buf);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
Assert(opaque->hasho_bucket == bucket);
if (H_BUCKET_BEING_POPULATED(opaque))
@@ -463,7 +463,7 @@ _hash_readpage(IndexScanDesc scan, Buffer *bufP, ScanDirection dir)
Assert(BufferIsValid(buf));
_hash_checkpage(rel, buf, LH_BUCKET_PAGE | LH_OVERFLOW_PAGE);
page = BufferGetPage(buf);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
so->currPos.buf = buf;
so->currPos.currPage = BufferGetBlockNumber(buf);
diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c
index edb6fa968fc..fe37bc47cbb 100644
--- a/src/backend/access/hash/hashutil.c
+++ b/src/backend/access/hash/hashutil.c
@@ -239,7 +239,7 @@ _hash_checkpage(Relation rel, Buffer buf, int flags)
if (flags)
{
- HashPageOpaque opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ HashPageOpaque opaque = HashPageGetOpaque(page);
if ((opaque->hasho_flag & flags) == 0)
ereport(ERROR,
@@ -574,7 +574,7 @@ _hash_kill_items(IndexScanDesc scan)
buf = _hash_getbuf(rel, blkno, HASH_READ, LH_OVERFLOW_PAGE);
page = BufferGetPage(buf);
- opaque = (HashPageOpaque) PageGetSpecialPointer(page);
+ opaque = HashPageGetOpaque(page);
maxoff = PageGetMaxOffsetNumber(page);
for (i = 0; i < numKilled; i++)
diff --git a/src/backend/access/nbtree/nbtdedup.c b/src/backend/access/nbtree/nbtdedup.c
index 4c48554aec3..3e11805293a 100644
--- a/src/backend/access/nbtree/nbtdedup.c
+++ b/src/backend/access/nbtree/nbtdedup.c
@@ -62,7 +62,7 @@ _bt_dedup_pass(Relation rel, Buffer buf, Relation heapRel, IndexTuple newitem,
minoff,
maxoff;
Page page = BufferGetPage(buf);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
Page newpage;
BTDedupState state;
Size pagesaving = 0;
@@ -231,7 +231,7 @@ _bt_dedup_pass(Relation rel, Buffer buf, Relation heapRel, IndexTuple newitem,
*/
if (P_HAS_GARBAGE(opaque))
{
- BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(newpage);
+ BTPageOpaque nopaque = BTPageGetOpaque(newpage);
nopaque->btpo_flags &= ~BTP_HAS_GARBAGE;
}
@@ -310,7 +310,7 @@ _bt_bottomupdel_pass(Relation rel, Buffer buf, Relation heapRel,
minoff,
maxoff;
Page page = BufferGetPage(buf);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
BTDedupState state;
TM_IndexDeleteOp delstate;
bool neverdedup;
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);
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index 6b5f01e1d07..20adb602a4d 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -85,7 +85,7 @@ _bt_initmetapage(Page page, BlockNumber rootbknum, uint32 level,
metad->btm_last_cleanup_num_heap_tuples = -1.0;
metad->btm_allequalimage = allequalimage;
- metaopaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ metaopaque = BTPageGetOpaque(page);
metaopaque->btpo_flags = BTP_META;
/*
@@ -112,7 +112,7 @@ _bt_upgrademetapage(Page page)
BTPageOpaque metaopaque PG_USED_FOR_ASSERTS_ONLY;
metad = BTPageGetMeta(page);
- metaopaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ metaopaque = BTPageGetOpaque(page);
/* It must be really a meta page of upgradable version */
Assert(metaopaque->btpo_flags & BTP_META);
@@ -148,7 +148,7 @@ _bt_getmeta(Relation rel, Buffer metabuf)
BTMetaPageData *metad;
metapg = BufferGetPage(metabuf);
- metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg);
+ metaopaque = BTPageGetOpaque(metapg);
metad = BTPageGetMeta(metapg);
/* sanity-check the metapage */
@@ -372,7 +372,7 @@ _bt_getroot(Relation rel, int access)
rootbuf = _bt_getbuf(rel, rootblkno, BT_READ);
rootpage = BufferGetPage(rootbuf);
- rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage);
+ rootopaque = BTPageGetOpaque(rootpage);
/*
* Since the cache might be stale, we check the page more carefully
@@ -440,7 +440,7 @@ _bt_getroot(Relation rel, int access)
rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE);
rootblkno = BufferGetBlockNumber(rootbuf);
rootpage = BufferGetPage(rootbuf);
- rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage);
+ rootopaque = BTPageGetOpaque(rootpage);
rootopaque->btpo_prev = rootopaque->btpo_next = P_NONE;
rootopaque->btpo_flags = (BTP_LEAF | BTP_ROOT);
rootopaque->btpo_level = 0;
@@ -534,7 +534,7 @@ _bt_getroot(Relation rel, int access)
{
rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ);
rootpage = BufferGetPage(rootbuf);
- rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage);
+ rootopaque = BTPageGetOpaque(rootpage);
if (!P_IGNORE(rootopaque))
break;
@@ -598,7 +598,7 @@ _bt_gettrueroot(Relation rel)
metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ);
metapg = BufferGetPage(metabuf);
- metaopaque = (BTPageOpaque) PageGetSpecialPointer(metapg);
+ metaopaque = BTPageGetOpaque(metapg);
metad = BTPageGetMeta(metapg);
if (!P_ISMETA(metaopaque) ||
@@ -637,7 +637,7 @@ _bt_gettrueroot(Relation rel)
{
rootbuf = _bt_relandgetbuf(rel, rootbuf, rootblkno, BT_READ);
rootpage = BufferGetPage(rootbuf);
- rootopaque = (BTPageOpaque) PageGetSpecialPointer(rootpage);
+ rootopaque = BTPageGetOpaque(rootpage);
if (!P_IGNORE(rootopaque))
break;
@@ -1220,7 +1220,7 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
* We can clear the vacuum cycle ID since this page has certainly been
* processed by the current vacuum scan.
*/
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
opaque->btpo_cycleid = 0;
/*
@@ -1338,7 +1338,7 @@ _bt_delitems_delete(Relation rel, Buffer buf, TransactionId latestRemovedXid,
* Unlike _bt_delitems_vacuum, we *must not* clear the vacuum cycle ID at
* this point. The VACUUM command alone controls vacuum cycle IDs.
*/
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* Clear the BTP_HAS_GARBAGE page flag.
@@ -1718,7 +1718,7 @@ _bt_leftsib_splitflag(Relation rel, BlockNumber leftsib, BlockNumber target)
buf = _bt_getbuf(rel, leftsib, BT_READ);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* If the left sibling was concurrently split, so that its next-pointer
@@ -1773,7 +1773,7 @@ _bt_rightsib_halfdeadflag(Relation rel, BlockNumber leafrightsib)
buf = _bt_getbuf(rel, leafrightsib, BT_READ);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISLEAF(opaque) && !P_ISDELETED(opaque));
result = P_ISHALFDEAD(opaque);
@@ -1842,7 +1842,7 @@ _bt_pagedel(Relation rel, Buffer leafbuf, BTVacState *vstate)
for (;;)
{
page = BufferGetPage(leafbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* Internal pages are never deleted directly, only as part of deleting
@@ -2099,7 +2099,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
IndexTupleData trunctuple;
page = BufferGetPage(leafbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(!P_RIGHTMOST(opaque) && !P_ISROOT(opaque) &&
P_ISLEAF(opaque) && !P_IGNORE(opaque) &&
@@ -2154,7 +2154,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
* before entering the critical section --- otherwise it'd be a PANIC.
*/
page = BufferGetPage(subtreeparent);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
#ifdef USE_ASSERT_CHECKING
@@ -2201,7 +2201,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
* nbtree/README.
*/
page = BufferGetPage(subtreeparent);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
itemid = PageGetItemId(page, poffset);
itup = (IndexTuple) PageGetItem(page, itemid);
@@ -2216,7 +2216,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
* is set to InvalidBlockNumber.
*/
page = BufferGetPage(leafbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
opaque->btpo_flags |= BTP_HALF_DEAD;
Assert(PageGetMaxOffsetNumber(page) == P_HIKEY);
@@ -2253,7 +2253,7 @@ _bt_mark_page_halfdead(Relation rel, Buffer leafbuf, BTStack stack)
XLogRegisterBuffer(1, subtreeparent, REGBUF_STANDARD);
page = BufferGetPage(leafbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
xlrec.leftblk = opaque->btpo_prev;
xlrec.rightblk = opaque->btpo_next;
@@ -2325,7 +2325,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
BlockNumber leaftopparent;
page = BufferGetPage(leafbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISLEAF(opaque) && !P_ISDELETED(opaque) && P_ISHALFDEAD(opaque));
@@ -2364,7 +2364,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
/* Fetch the block number of the target's left sibling */
buf = _bt_getbuf(rel, target, BT_READ);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
leftsib = opaque->btpo_prev;
targetlevel = opaque->btpo_level;
Assert(targetlevel > 0);
@@ -2391,7 +2391,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
{
lbuf = _bt_getbuf(rel, leftsib, BT_WRITE);
page = BufferGetPage(lbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
while (P_ISDELETED(opaque) || opaque->btpo_next != target)
{
bool leftsibvalid = true;
@@ -2441,7 +2441,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
/* step right one page */
lbuf = _bt_getbuf(rel, leftsib, BT_WRITE);
page = BufferGetPage(lbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
}
else
@@ -2450,7 +2450,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
/* Next write-lock the target page itself */
_bt_lockbuf(rel, buf, BT_WRITE);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* Check page is still empty etc, else abandon deletion. This is just for
@@ -2505,7 +2505,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
rightsib = opaque->btpo_next;
rbuf = _bt_getbuf(rel, rightsib, BT_WRITE);
page = BufferGetPage(rbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (opaque->btpo_prev != target)
ereport(ERROR,
(errcode(ERRCODE_INDEX_CORRUPTED),
@@ -2528,7 +2528,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
if (leftsib == P_NONE && rightsib_is_rightmost)
{
page = BufferGetPage(rbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_RIGHTMOST(opaque))
{
/* rightsib will be the only one left on the level */
@@ -2565,12 +2565,12 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
if (BufferIsValid(lbuf))
{
page = BufferGetPage(lbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(opaque->btpo_next == target);
opaque->btpo_next = rightsib;
}
page = BufferGetPage(rbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(opaque->btpo_prev == target);
opaque->btpo_prev = leftsib;
@@ -2599,7 +2599,7 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
* of that scan.
*/
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISHALFDEAD(opaque) || !P_ISLEAF(opaque));
/*
@@ -2814,7 +2814,7 @@ _bt_lock_subtree_parent(Relation rel, BlockNumber child, BTStack stack,
parentoffset = stack->bts_offset;
page = BufferGetPage(pbuf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
maxoff = PageGetMaxOffsetNumber(page);
leftsibparent = opaque->btpo_prev;
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index dacf3f7a587..06131f23d4b 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -1070,7 +1070,7 @@ backtrack:
if (!PageIsNew(page))
{
_bt_checkpage(rel, buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
Assert(blkno <= scanblkno);
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index 9d82d4904d8..c74543bfde2 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -134,7 +134,7 @@ _bt_search(Relation rel, BTScanInsert key, Buffer *bufP, int access,
/* if this is a leaf page, we're done */
page = BufferGetPage(*bufP);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_ISLEAF(opaque))
break;
@@ -268,7 +268,7 @@ _bt_moveright(Relation rel,
{
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_RIGHTMOST(opaque))
break;
@@ -347,7 +347,7 @@ _bt_binsrch(Relation rel,
cmpval;
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/* Requesting nextkey semantics while using scantid seems nonsensical */
Assert(!key->nextkey || key->scantid == NULL);
@@ -451,7 +451,7 @@ _bt_binsrch_insert(Relation rel, BTInsertState insertstate)
cmpval;
page = BufferGetPage(insertstate->buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISLEAF(opaque));
Assert(!key->nextkey);
@@ -659,7 +659,7 @@ _bt_compare(Relation rel,
OffsetNumber offnum)
{
TupleDesc itupdesc = RelationGetDescr(rel);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
IndexTuple itup;
ItemPointer heapTid;
ScanKey scankey;
@@ -1536,7 +1536,7 @@ _bt_readpage(IndexScanDesc scan, ScanDirection dir, OffsetNumber offnum)
Assert(BufferIsValid(so->currPos.buf));
page = BufferGetPage(so->currPos.buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/* allow next page be processed by parallel worker */
if (scan->parallel_scan)
@@ -2007,7 +2007,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
so->currPos.buf = _bt_getbuf(rel, blkno, BT_READ);
page = BufferGetPage(so->currPos.buf);
TestForOldSnapshot(scan->xs_snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/* check for deleted page */
if (!P_IGNORE(opaque))
{
@@ -2110,7 +2110,7 @@ _bt_readnextpage(IndexScanDesc scan, BlockNumber blkno, ScanDirection dir)
*/
page = BufferGetPage(so->currPos.buf);
TestForOldSnapshot(scan->xs_snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (!P_IGNORE(opaque))
{
PredicateLockPage(rel, BufferGetBlockNumber(so->currPos.buf), scan->xs_snapshot);
@@ -2191,7 +2191,7 @@ _bt_walk_left(Relation rel, Buffer buf, Snapshot snapshot)
BTPageOpaque opaque;
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
for (;;)
{
@@ -2216,7 +2216,7 @@ _bt_walk_left(Relation rel, Buffer buf, Snapshot snapshot)
buf = _bt_getbuf(rel, blkno, BT_READ);
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
/*
* If this isn't the page we want, walk right till we find what we
@@ -2243,14 +2243,14 @@ _bt_walk_left(Relation rel, Buffer buf, Snapshot snapshot)
buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ);
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
/* Return to the original page to see what's up */
buf = _bt_relandgetbuf(rel, buf, obknum, BT_READ);
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_ISDELETED(opaque))
{
/*
@@ -2268,7 +2268,7 @@ _bt_walk_left(Relation rel, Buffer buf, Snapshot snapshot)
buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ);
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (!P_ISDELETED(opaque))
break;
}
@@ -2329,7 +2329,7 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost,
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
for (;;)
{
@@ -2349,7 +2349,7 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost,
buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ);
page = BufferGetPage(buf);
TestForOldSnapshot(snapshot, rel, page);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
/* Done? */
@@ -2372,7 +2372,7 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost,
buf = _bt_relandgetbuf(rel, buf, blkno, BT_READ);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
}
return buf;
@@ -2418,7 +2418,7 @@ _bt_endpoint(IndexScanDesc scan, ScanDirection dir)
PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot);
page = BufferGetPage(buf);
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISLEAF(opaque));
if (ScanDirectionIsForward(dir))
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index 8a19de2f66c..c074513efa1 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -625,7 +625,7 @@ _bt_blnewpage(uint32 level)
_bt_pageinit(page, BLCKSZ);
/* Initialize BT opaque state */
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
opaque->btpo_prev = opaque->btpo_next = P_NONE;
opaque->btpo_level = level;
opaque->btpo_flags = (level > 0) ? 0 : BTP_LEAF;
@@ -1000,9 +1000,9 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
Assert((BTreeTupleGetNAtts(state->btps_lowkey, wstate->index) <=
IndexRelationGetNumberOfKeyAttributes(wstate->index) &&
BTreeTupleGetNAtts(state->btps_lowkey, wstate->index) > 0) ||
- P_LEFTMOST((BTPageOpaque) PageGetSpecialPointer(opage)));
+ P_LEFTMOST(BTPageGetOpaque(opage)));
Assert(BTreeTupleGetNAtts(state->btps_lowkey, wstate->index) == 0 ||
- !P_LEFTMOST((BTPageOpaque) PageGetSpecialPointer(opage)));
+ !P_LEFTMOST(BTPageGetOpaque(opage)));
BTreeTupleSetDownLink(state->btps_lowkey, oblkno);
_bt_buildadd(wstate, state->btps_next, state->btps_lowkey, 0);
pfree(state->btps_lowkey);
@@ -1017,8 +1017,8 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
* Set the sibling links for both pages.
*/
{
- BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(opage);
- BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(npage);
+ BTPageOpaque oopaque = BTPageGetOpaque(opage);
+ BTPageOpaque nopaque = BTPageGetOpaque(npage);
oopaque->btpo_next = nblkno;
nopaque->btpo_prev = oblkno;
@@ -1125,7 +1125,7 @@ _bt_uppershutdown(BTWriteState *wstate, BTPageState *state)
BTPageOpaque opaque;
blkno = s->btps_blkno;
- opaque = (BTPageOpaque) PageGetSpecialPointer(s->btps_page);
+ opaque = BTPageGetOpaque(s->btps_page);
/*
* We have to link the last page on this level to somewhere.
diff --git a/src/backend/access/nbtree/nbtsplitloc.c b/src/backend/access/nbtree/nbtsplitloc.c
index c46594e1a20..ee01ceafdac 100644
--- a/src/backend/access/nbtree/nbtsplitloc.c
+++ b/src/backend/access/nbtree/nbtsplitloc.c
@@ -152,7 +152,7 @@ _bt_findsplitloc(Relation rel,
SplitPoint leftpage,
rightpage;
- opaque = (BTPageOpaque) PageGetSpecialPointer(origpage);
+ opaque = BTPageGetOpaque(origpage);
maxoff = PageGetMaxOffsetNumber(origpage);
/* Total free space available on a btree page, after fixed overhead */
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index 84164748b3e..96c72fc4324 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -1774,7 +1774,7 @@ _bt_killitems(IndexScanDesc scan)
}
}
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
minoff = P_FIRSTDATAKEY(opaque);
maxoff = PageGetMaxOffsetNumber(page);
@@ -2474,7 +2474,7 @@ _bt_check_natts(Relation rel, bool heapkeyspace, Page page, OffsetNumber offnum)
{
int16 natts = IndexRelationGetNumberOfAttributes(rel);
int16 nkeyatts = IndexRelationGetNumberOfKeyAttributes(rel);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
IndexTuple itup;
int tupnatts;
@@ -2662,7 +2662,7 @@ _bt_check_third_page(Relation rel, Relation heap, bool needheaptidspace,
* Internal page insertions cannot fail here, because that would mean that
* an earlier leaf level insertion that should have failed didn't
*/
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (!P_ISLEAF(opaque))
elog(ERROR, "cannot insert oversized tuple of size %zu on internal page of index \"%s\"",
itemsz, RelationGetRelationName(rel));
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c
index 611f412ba8a..fba124b9404 100644
--- a/src/backend/access/nbtree/nbtxlog.c
+++ b/src/backend/access/nbtree/nbtxlog.c
@@ -115,7 +115,7 @@ _bt_restore_meta(XLogReaderState *record, uint8 block_id)
md->btm_last_cleanup_num_heap_tuples = -1.0;
md->btm_allequalimage = xlrec->allequalimage;
- pageop = (BTPageOpaque) PageGetSpecialPointer(metapg);
+ pageop = BTPageGetOpaque(metapg);
pageop->btpo_flags = BTP_META;
/*
@@ -146,7 +146,7 @@ _bt_clear_incomplete_split(XLogReaderState *record, uint8 block_id)
if (XLogReadBufferForRedo(record, block_id, &buf) == BLK_NEEDS_REDO)
{
Page page = (Page) BufferGetPage(buf);
- BTPageOpaque pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque pageop = BTPageGetOpaque(page);
Assert(P_INCOMPLETE_SPLIT(pageop));
pageop->btpo_flags &= ~BTP_INCOMPLETE_SPLIT;
@@ -292,7 +292,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
rpage = (Page) BufferGetPage(rbuf);
_bt_pageinit(rpage, BufferGetPageSize(rbuf));
- ropaque = (BTPageOpaque) PageGetSpecialPointer(rpage);
+ ropaque = BTPageGetOpaque(rpage);
ropaque->btpo_prev = origpagenumber;
ropaque->btpo_next = spagenumber;
@@ -317,7 +317,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
* same for the right page.
*/
Page origpage = (Page) BufferGetPage(buf);
- BTPageOpaque oopaque = (BTPageOpaque) PageGetSpecialPointer(origpage);
+ BTPageOpaque oopaque = BTPageGetOpaque(origpage);
OffsetNumber off;
IndexTuple newitem = NULL,
left_hikey = NULL,
@@ -442,7 +442,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
if (XLogReadBufferForRedo(record, 2, &sbuf) == BLK_NEEDS_REDO)
{
Page spage = (Page) BufferGetPage(sbuf);
- BTPageOpaque spageop = (BTPageOpaque) PageGetSpecialPointer(spage);
+ BTPageOpaque spageop = BTPageGetOpaque(spage);
spageop->btpo_prev = rightpagenumber;
@@ -473,7 +473,7 @@ btree_xlog_dedup(XLogReaderState *record)
{
char *ptr = XLogRecGetBlockData(record, 0, NULL);
Page page = (Page) BufferGetPage(buf);
- BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ BTPageOpaque opaque = BTPageGetOpaque(page);
OffsetNumber offnum,
minoff,
maxoff;
@@ -541,7 +541,7 @@ btree_xlog_dedup(XLogReaderState *record)
if (P_HAS_GARBAGE(opaque))
{
- BTPageOpaque nopaque = (BTPageOpaque) PageGetSpecialPointer(newpage);
+ BTPageOpaque nopaque = BTPageGetOpaque(newpage);
nopaque->btpo_flags &= ~BTP_HAS_GARBAGE;
}
@@ -639,7 +639,7 @@ btree_xlog_vacuum(XLogReaderState *record)
* Mark the page as not containing any LP_DEAD items --- see comments
* in _bt_delitems_vacuum().
*/
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
opaque->btpo_flags &= ~BTP_HAS_GARBAGE;
PageSetLSN(page, lsn);
@@ -699,7 +699,7 @@ btree_xlog_delete(XLogReaderState *record)
PageIndexMultiDelete(page, (OffsetNumber *) ptr, xlrec->ndeleted);
/* Mark the page as not containing any LP_DEAD items */
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
opaque->btpo_flags &= ~BTP_HAS_GARBAGE;
PageSetLSN(page, lsn);
@@ -737,7 +737,7 @@ btree_xlog_mark_page_halfdead(uint8 info, XLogReaderState *record)
BlockNumber rightsib;
page = (Page) BufferGetPage(buffer);
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
poffset = xlrec->poffset;
@@ -768,7 +768,7 @@ btree_xlog_mark_page_halfdead(uint8 info, XLogReaderState *record)
page = (Page) BufferGetPage(buffer);
_bt_pageinit(page, BufferGetPageSize(buffer));
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_prev = xlrec->leftblk;
pageop->btpo_next = xlrec->rightblk;
@@ -833,7 +833,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
if (XLogReadBufferForRedo(record, 1, &leftbuf) == BLK_NEEDS_REDO)
{
page = (Page) BufferGetPage(leftbuf);
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_next = rightsib;
PageSetLSN(page, lsn);
@@ -848,7 +848,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
page = (Page) BufferGetPage(target);
_bt_pageinit(page, BufferGetPageSize(target));
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_prev = leftsib;
pageop->btpo_next = rightsib;
@@ -865,7 +865,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
if (XLogReadBufferForRedo(record, 2, &rightbuf) == BLK_NEEDS_REDO)
{
page = (Page) BufferGetPage(rightbuf);
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_prev = leftsib;
PageSetLSN(page, lsn);
@@ -906,7 +906,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
page = (Page) BufferGetPage(leafbuf);
_bt_pageinit(page, BufferGetPageSize(leafbuf));
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_flags = BTP_HALF_DEAD | BTP_LEAF;
pageop->btpo_prev = xlrec->leafleftsib;
@@ -948,7 +948,7 @@ btree_xlog_newroot(XLogReaderState *record)
page = (Page) BufferGetPage(buffer);
_bt_pageinit(page, BufferGetPageSize(buffer));
- pageop = (BTPageOpaque) PageGetSpecialPointer(page);
+ pageop = BTPageGetOpaque(page);
pageop->btpo_flags = BTP_ROOT;
pageop->btpo_prev = pageop->btpo_next = P_NONE;
@@ -1097,7 +1097,7 @@ btree_mask(char *pagedata, BlockNumber blkno)
mask_page_hint_bits(page);
mask_unused_space(page);
- maskopaq = (BTPageOpaque) PageGetSpecialPointer(page);
+ maskopaq = BTPageGetOpaque(page);
if (P_ISLEAF(maskopaq))
{
diff --git a/src/include/access/hash.h b/src/include/access/hash.h
index cd7b2a53d8a..da372841c4b 100644
--- a/src/include/access/hash.h
+++ b/src/include/access/hash.h
@@ -85,6 +85,8 @@ typedef struct HashPageOpaqueData
typedef HashPageOpaqueData *HashPageOpaque;
+#define HashPageGetOpaque(page) ((HashPageOpaque) PageGetSpecialPointer(page))
+
#define H_NEEDS_SPLIT_CLEANUP(opaque) (((opaque)->hasho_flag & LH_BUCKET_NEEDS_SPLIT_CLEANUP) != 0)
#define H_BUCKET_BEING_SPLIT(opaque) (((opaque)->hasho_flag & LH_BUCKET_BEING_SPLIT) != 0)
#define H_BUCKET_BEING_POPULATED(opaque) (((opaque)->hasho_flag & LH_BUCKET_BEING_POPULATED) != 0)
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 9fec6fb1a8a..93f8267b483 100644
--- a/src/include/access/nbtree.h
+++ b/src/include/access/nbtree.h
@@ -70,6 +70,8 @@ typedef struct BTPageOpaqueData
typedef BTPageOpaqueData *BTPageOpaque;
+#define BTPageGetOpaque(page) ((BTPageOpaque) PageGetSpecialPointer(page))
+
/* Bits defined in btpo_flags */
#define BTP_LEAF (1 << 0) /* leaf page, i.e. not internal page */
#define BTP_ROOT (1 << 1) /* root page (has no parent) */
@@ -241,7 +243,7 @@ BTPageSetDeleted(Page page, FullTransactionId safexid)
PageHeader header;
BTDeletedPageData *contents;
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
header = ((PageHeader) page);
opaque->btpo_flags &= ~BTP_HALF_DEAD;
@@ -263,7 +265,7 @@ BTPageGetDeleteXid(Page page)
/* We only expect to be called with a deleted page */
Assert(!PageIsNew(page));
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
Assert(P_ISDELETED(opaque));
/* pg_upgrade'd deleted page -- must be safe to delete now */
@@ -294,7 +296,7 @@ BTPageIsRecyclable(Page page)
Assert(!PageIsNew(page));
/* Recycling okay iff page is deleted and safexid is old enough */
- opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+ opaque = BTPageGetOpaque(page);
if (P_ISDELETED(opaque))
{
/*