Convert macros to static inline functions (itemptr.h)
Reviewed-by: Amul Sul <sulamul@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/5b558da8-99fb-0a99-83dd-f72f05388517%40enterprisedb.com
This commit is contained in:
parent
e1df03b80d
commit
aeb767ca0b
@ -71,7 +71,7 @@ typedef ItemPointerData *ItemPointer;
|
|||||||
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* support macros
|
* support functions
|
||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -79,77 +79,87 @@ typedef ItemPointerData *ItemPointer;
|
|||||||
* ItemPointerIsValid
|
* ItemPointerIsValid
|
||||||
* True iff the disk item pointer is not NULL.
|
* True iff the disk item pointer is not NULL.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerIsValid(pointer) \
|
static inline bool
|
||||||
((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0)))
|
ItemPointerIsValid(const ItemPointerData *pointer)
|
||||||
|
{
|
||||||
|
return PointerIsValid(pointer) && pointer->ip_posid != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerGetBlockNumberNoCheck
|
* ItemPointerGetBlockNumberNoCheck
|
||||||
* Returns the block number of a disk item pointer.
|
* Returns the block number of a disk item pointer.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetBlockNumberNoCheck(pointer) \
|
static inline BlockNumber
|
||||||
( \
|
ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer)
|
||||||
BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
|
{
|
||||||
)
|
return BlockIdGetBlockNumber(&pointer->ip_blkid);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerGetBlockNumber
|
* ItemPointerGetBlockNumber
|
||||||
* As above, but verifies that the item pointer looks valid.
|
* As above, but verifies that the item pointer looks valid.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetBlockNumber(pointer) \
|
static inline BlockNumber
|
||||||
( \
|
ItemPointerGetBlockNumber(const ItemPointerData *pointer)
|
||||||
AssertMacro(ItemPointerIsValid(pointer)), \
|
{
|
||||||
ItemPointerGetBlockNumberNoCheck(pointer) \
|
Assert(ItemPointerIsValid(pointer));
|
||||||
)
|
return ItemPointerGetBlockNumberNoCheck(pointer);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerGetOffsetNumberNoCheck
|
* ItemPointerGetOffsetNumberNoCheck
|
||||||
* Returns the offset number of a disk item pointer.
|
* Returns the offset number of a disk item pointer.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetOffsetNumberNoCheck(pointer) \
|
static inline OffsetNumber
|
||||||
( \
|
ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
|
||||||
(pointer)->ip_posid \
|
{
|
||||||
)
|
return pointer->ip_posid;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerGetOffsetNumber
|
* ItemPointerGetOffsetNumber
|
||||||
* As above, but verifies that the item pointer looks valid.
|
* As above, but verifies that the item pointer looks valid.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerGetOffsetNumber(pointer) \
|
static inline OffsetNumber
|
||||||
( \
|
ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
|
||||||
AssertMacro(ItemPointerIsValid(pointer)), \
|
{
|
||||||
ItemPointerGetOffsetNumberNoCheck(pointer) \
|
Assert(ItemPointerIsValid(pointer));
|
||||||
)
|
return ItemPointerGetOffsetNumberNoCheck(pointer);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSet
|
* ItemPointerSet
|
||||||
* Sets a disk item pointer to the specified block and offset.
|
* Sets a disk item pointer to the specified block and offset.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSet(pointer, blockNumber, offNum) \
|
static inline void
|
||||||
( \
|
ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
|
||||||
AssertMacro(PointerIsValid(pointer)), \
|
{
|
||||||
BlockIdSet(&((pointer)->ip_blkid), blockNumber), \
|
Assert(PointerIsValid(pointer));
|
||||||
(pointer)->ip_posid = offNum \
|
BlockIdSet(&pointer->ip_blkid, blockNumber);
|
||||||
)
|
pointer->ip_posid = offNum;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetBlockNumber
|
* ItemPointerSetBlockNumber
|
||||||
* Sets a disk item pointer to the specified block.
|
* Sets a disk item pointer to the specified block.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetBlockNumber(pointer, blockNumber) \
|
static inline void
|
||||||
( \
|
ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
|
||||||
AssertMacro(PointerIsValid(pointer)), \
|
{
|
||||||
BlockIdSet(&((pointer)->ip_blkid), blockNumber) \
|
Assert(PointerIsValid(pointer));
|
||||||
)
|
BlockIdSet(&pointer->ip_blkid, blockNumber);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetOffsetNumber
|
* ItemPointerSetOffsetNumber
|
||||||
* Sets a disk item pointer to the specified offset.
|
* Sets a disk item pointer to the specified offset.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetOffsetNumber(pointer, offsetNumber) \
|
static inline void
|
||||||
( \
|
ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
|
||||||
AssertMacro(PointerIsValid(pointer)), \
|
{
|
||||||
(pointer)->ip_posid = (offsetNumber) \
|
Assert(PointerIsValid(pointer));
|
||||||
)
|
pointer->ip_posid = offsetNumber;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerCopy
|
* ItemPointerCopy
|
||||||
@ -158,42 +168,49 @@ typedef ItemPointerData *ItemPointer;
|
|||||||
* Should there ever be padding in an ItemPointer this would need to be handled
|
* Should there ever be padding in an ItemPointer this would need to be handled
|
||||||
* differently as it's used as hash key.
|
* differently as it's used as hash key.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerCopy(fromPointer, toPointer) \
|
static inline void
|
||||||
( \
|
ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
|
||||||
AssertMacro(PointerIsValid(toPointer)), \
|
{
|
||||||
AssertMacro(PointerIsValid(fromPointer)), \
|
Assert(PointerIsValid(toPointer));
|
||||||
*(toPointer) = *(fromPointer) \
|
Assert(PointerIsValid(fromPointer));
|
||||||
)
|
*toPointer = *fromPointer;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetInvalid
|
* ItemPointerSetInvalid
|
||||||
* Sets a disk item pointer to be invalid.
|
* Sets a disk item pointer to be invalid.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetInvalid(pointer) \
|
static inline void
|
||||||
( \
|
ItemPointerSetInvalid(ItemPointerData *pointer)
|
||||||
AssertMacro(PointerIsValid(pointer)), \
|
{
|
||||||
BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
|
Assert(PointerIsValid(pointer));
|
||||||
(pointer)->ip_posid = InvalidOffsetNumber \
|
BlockIdSet(&pointer->ip_blkid, InvalidBlockNumber);
|
||||||
)
|
pointer->ip_posid = InvalidOffsetNumber;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerIndicatesMovedPartitions
|
* ItemPointerIndicatesMovedPartitions
|
||||||
* True iff the block number indicates the tuple has moved to another
|
* True iff the block number indicates the tuple has moved to another
|
||||||
* partition.
|
* partition.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerIndicatesMovedPartitions(pointer) \
|
static inline bool
|
||||||
( \
|
ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
|
||||||
ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \
|
{
|
||||||
ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \
|
return
|
||||||
)
|
ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber &&
|
||||||
|
ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ItemPointerSetMovedPartitions
|
* ItemPointerSetMovedPartitions
|
||||||
* Indicate that the item referenced by the itempointer has moved into a
|
* Indicate that the item referenced by the itempointer has moved into a
|
||||||
* different partition.
|
* different partition.
|
||||||
*/
|
*/
|
||||||
#define ItemPointerSetMovedPartitions(pointer) \
|
static inline void
|
||||||
ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
|
ItemPointerSetMovedPartitions(ItemPointerData *pointer)
|
||||||
|
{
|
||||||
|
ItemPointerSet(pointer, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber);
|
||||||
|
}
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* externs
|
* externs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user