mirror of
https://github.com/postgres/postgres.git
synced 2025-10-22 14:32:25 +03:00
Remove direct uses of ItemPointer.{ip_blkid,ip_posid}
There are no functional changes here; this simply encapsulates knowledge of the ItemPointerData struct so that a future patch can change things without more breakage. All direct users of ip_blkid and ip_posid are changed to use existing macros ItemPointerGetBlockNumber and ItemPointerGetOffsetNumber respectively. For callers where that's inappropriate (because they Assert that the itempointer is is valid-looking), add ItemPointerGetBlockNumberNoCheck and ItemPointerGetOffsetNumberNoCheck, which lack the assertion but are otherwise identical. Author: Pavan Deolasee Discussion: https://postgr.es/m/CABOikdNnFon4cJiL=h1mZH3bgUeU+sWHuU4Yr8AB=j3A2p1GiA@mail.gmail.com
This commit is contained in:
@@ -460,8 +460,8 @@ extern ItemPointer ginMergeItemPointers(ItemPointerData *a, uint32 na,
|
||||
static inline int
|
||||
ginCompareItemPointers(ItemPointer a, ItemPointer b)
|
||||
{
|
||||
uint64 ia = (uint64) a->ip_blkid.bi_hi << 32 | (uint64) a->ip_blkid.bi_lo << 16 | a->ip_posid;
|
||||
uint64 ib = (uint64) b->ip_blkid.bi_hi << 32 | (uint64) b->ip_blkid.bi_lo << 16 | b->ip_posid;
|
||||
uint64 ia = (uint64) GinItemPointerGetBlockNumber(a) << 32 | GinItemPointerGetOffsetNumber(a);
|
||||
uint64 ib = (uint64) GinItemPointerGetBlockNumber(b) << 32 | GinItemPointerGetOffsetNumber(b);
|
||||
|
||||
if (ia == ib)
|
||||
return 0;
|
||||
@@ -471,6 +471,6 @@ ginCompareItemPointers(ItemPointer a, ItemPointer b)
|
||||
return -1;
|
||||
}
|
||||
|
||||
extern int ginTraverseLock(Buffer buffer, bool searchMode);
|
||||
extern int ginTraverseLock(Buffer buffer, bool searchMode);
|
||||
|
||||
#endif /* GIN_PRIVATE_H */
|
||||
|
@@ -132,10 +132,17 @@ typedef struct GinMetaPageData
|
||||
* to avoid Asserts, since sometimes the ip_posid isn't "valid"
|
||||
*/
|
||||
#define GinItemPointerGetBlockNumber(pointer) \
|
||||
BlockIdGetBlockNumber(&(pointer)->ip_blkid)
|
||||
(ItemPointerGetBlockNumberNoCheck(pointer))
|
||||
|
||||
#define GinItemPointerGetOffsetNumber(pointer) \
|
||||
((pointer)->ip_posid)
|
||||
(ItemPointerGetOffsetNumberNoCheck(pointer))
|
||||
|
||||
#define GinItemPointerSetBlockNumber(pointer, blkno) \
|
||||
(ItemPointerSetBlockNumber((pointer), (blkno)))
|
||||
|
||||
#define GinItemPointerSetOffsetNumber(pointer, offnum) \
|
||||
(ItemPointerSetOffsetNumber((pointer), (offnum)))
|
||||
|
||||
|
||||
/*
|
||||
* Special-case item pointer values needed by the GIN search logic.
|
||||
|
@@ -422,7 +422,7 @@ do { \
|
||||
|
||||
#define HeapTupleHeaderIsSpeculative(tup) \
|
||||
( \
|
||||
(tup)->t_ctid.ip_posid == SpecTokenOffsetNumber \
|
||||
(ItemPointerGetOffsetNumberNoCheck(&(tup)->t_ctid) == SpecTokenOffsetNumber) \
|
||||
)
|
||||
|
||||
#define HeapTupleHeaderGetSpeculativeToken(tup) \
|
||||
|
@@ -151,9 +151,8 @@ typedef struct BTMetaPageData
|
||||
* within a level). - vadim 04/09/97
|
||||
*/
|
||||
#define BTTidSame(i1, i2) \
|
||||
( (i1).ip_blkid.bi_hi == (i2).ip_blkid.bi_hi && \
|
||||
(i1).ip_blkid.bi_lo == (i2).ip_blkid.bi_lo && \
|
||||
(i1).ip_posid == (i2).ip_posid )
|
||||
((ItemPointerGetBlockNumber(&(i1)) == ItemPointerGetBlockNumber(&(i2))) && \
|
||||
(ItemPointerGetOffsetNumber(&(i1)) == ItemPointerGetOffsetNumber(&(i2))))
|
||||
#define BTEntrySame(i1, i2) \
|
||||
BTTidSame((i1)->t_tid, (i2)->t_tid)
|
||||
|
||||
|
Reference in New Issue
Block a user