diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2017-03-28 12:52:55 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2017-03-28 19:02:23 -0300 |
commit | ce96ce60ca2293f75f36c3661e4657a3c79ffd61 (patch) | |
tree | 45247e9dd84a19acd6a2d024ddcc95007e12a577 /src/include/storage/itemptr.h | |
parent | a99f77021f0c8c1c221af4e36b64ca43abd04389 (diff) | |
download | postgresql-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.h | 26 |
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) \ ) /* |