summaryrefslogtreecommitdiff
path: root/src/include/storage/itemptr.h
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2017-03-28 12:52:55 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2017-03-28 19:02:23 -0300
commitce96ce60ca2293f75f36c3661e4657a3c79ffd61 (patch)
tree45247e9dd84a19acd6a2d024ddcc95007e12a577 /src/include/storage/itemptr.h
parenta99f77021f0c8c1c221af4e36b64ca43abd04389 (diff)
downloadpostgresql-ce96ce60ca2293f75f36c3661e4657a3c79ffd61.tar.gz
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
Diffstat (limited to 'src/include/storage/itemptr.h')
-rw-r--r--src/include/storage/itemptr.h26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/include/storage/itemptr.h b/src/include/storage/itemptr.h
index 576aaa890b..c21d2adfcb 100644
--- a/src/include/storage/itemptr.h
+++ b/src/include/storage/itemptr.h
@@ -60,23 +60,41 @@ typedef ItemPointerData *ItemPointer;
((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0)))
/*
- * ItemPointerGetBlockNumber
+ * ItemPointerGetBlockNumberNoCheck
* Returns the block number of a disk item pointer.
*/
+#define ItemPointerGetBlockNumberNoCheck(pointer) \
+( \
+ BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
+)
+
+/*
+ * ItemPointerGetBlockNumber
+ * As above, but verifies that the item pointer looks valid.
+ */
#define ItemPointerGetBlockNumber(pointer) \
( \
AssertMacro(ItemPointerIsValid(pointer)), \
- BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
+ ItemPointerGetBlockNumberNoCheck(pointer) \
)
/*
- * ItemPointerGetOffsetNumber
+ * ItemPointerGetOffsetNumberNoCheck
* Returns the offset number of a disk item pointer.
*/
+#define ItemPointerGetOffsetNumberNoCheck(pointer) \
+( \
+ (pointer)->ip_posid \
+)
+
+/*
+ * ItemPointerGetOffsetNumber
+ * As above, but verifies that the item pointer looks valid.
+ */
#define ItemPointerGetOffsetNumber(pointer) \
( \
AssertMacro(ItemPointerIsValid(pointer)), \
- (pointer)->ip_posid \
+ ItemPointerGetOffsetNumberNoCheck(pointer) \
)
/*