mirror of
https://github.com/postgres/postgres.git
synced 2025-08-18 12:22:09 +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:
@@ -52,20 +52,21 @@ int32
|
||||
ItemPointerCompare(ItemPointer arg1, ItemPointer arg2)
|
||||
{
|
||||
/*
|
||||
* Don't use ItemPointerGetBlockNumber or ItemPointerGetOffsetNumber here,
|
||||
* because they assert ip_posid != 0 which might not be true for a
|
||||
* user-supplied TID.
|
||||
* Use ItemPointerGet{Offset,Block}NumberNoCheck to avoid asserting
|
||||
* ip_posid != 0, which may not be true for a user-supplied TID.
|
||||
*/
|
||||
BlockNumber b1 = BlockIdGetBlockNumber(&(arg1->ip_blkid));
|
||||
BlockNumber b2 = BlockIdGetBlockNumber(&(arg2->ip_blkid));
|
||||
BlockNumber b1 = ItemPointerGetBlockNumberNoCheck(arg1);
|
||||
BlockNumber b2 = ItemPointerGetBlockNumberNoCheck(arg2);
|
||||
|
||||
if (b1 < b2)
|
||||
return -1;
|
||||
else if (b1 > b2)
|
||||
return 1;
|
||||
else if (arg1->ip_posid < arg2->ip_posid)
|
||||
else if (ItemPointerGetOffsetNumberNoCheck(arg1) <
|
||||
ItemPointerGetOffsetNumberNoCheck(arg2))
|
||||
return -1;
|
||||
else if (arg1->ip_posid > arg2->ip_posid)
|
||||
else if (ItemPointerGetOffsetNumberNoCheck(arg1) >
|
||||
ItemPointerGetOffsetNumberNoCheck(arg2))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user