PostgreSQL Source Code  git master
itemptr.c File Reference
#include "postgres.h"
#include "storage/itemptr.h"
Include dependency graph for itemptr.c:

Go to the source code of this file.

Functions

 StaticAssertDecl (sizeof(ItemPointerData)==3 *sizeof(uint16), "ItemPointerData struct is improperly padded")
 
bool ItemPointerEquals (ItemPointer pointer1, ItemPointer pointer2)
 
int32 ItemPointerCompare (ItemPointer arg1, ItemPointer arg2)
 
void ItemPointerInc (ItemPointer pointer)
 
void ItemPointerDec (ItemPointer pointer)
 

Function Documentation

◆ ItemPointerCompare()

int32 ItemPointerCompare ( ItemPointer  arg1,
ItemPointer  arg2 
)

Definition at line 51 of file itemptr.c.

52 {
53  /*
54  * Use ItemPointerGet{Offset,Block}NumberNoCheck to avoid asserting
55  * ip_posid != 0, which may not be true for a user-supplied TID.
56  */
59 
60  if (b1 < b2)
61  return -1;
62  else if (b1 > b2)
63  return 1;
64  else if (ItemPointerGetOffsetNumberNoCheck(arg1) <
66  return -1;
67  else if (ItemPointerGetOffsetNumberNoCheck(arg1) >
69  return 1;
70  else
71  return 0;
72 }
uint32 BlockNumber
Definition: block.h:31
static OffsetNumber ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
Definition: itemptr.h:114
static BlockNumber ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer)
Definition: itemptr.h:93

References ItemPointerGetBlockNumberNoCheck(), and ItemPointerGetOffsetNumberNoCheck().

Referenced by _bt_binsrch_posting(), _bt_check_unique(), _bt_compare(), _bt_delitems_delete_check(), _bt_load(), _bt_split(), _bt_swap_posting(), _bt_truncate(), brin_minmax_multi_distance_tid(), bt_target_page_check(), bttidcmp(), dataBeginPlaceToPageLeaf(), heap_getnextslot_tidrange(), heap_set_tidrange(), heapam_index_validate_scan(), tidcmp(), tideq(), tidge(), tidgt(), tidlarger(), tidle(), tidlt(), tidne(), TidRangeEval(), and tidsmaller().

◆ ItemPointerDec()

void ItemPointerDec ( ItemPointer  pointer)

Definition at line 114 of file itemptr.c.

115 {
118 
119  if (off == 0)
120  {
121  if (blk != 0)
122  {
123  off = PG_UINT16_MAX;
124  blk--;
125  }
126  }
127  else
128  off--;
129 
130  ItemPointerSet(pointer, blk, off);
131 }
#define PG_UINT16_MAX
Definition: c.h:587
static void ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
Definition: itemptr.h:135
uint16 OffsetNumber
Definition: off.h:24

References ItemPointerGetBlockNumberNoCheck(), ItemPointerGetOffsetNumberNoCheck(), ItemPointerSet(), and PG_UINT16_MAX.

Referenced by TidRangeEval().

◆ ItemPointerEquals()

◆ ItemPointerInc()

void ItemPointerInc ( ItemPointer  pointer)

Definition at line 84 of file itemptr.c.

85 {
88 
89  if (off == PG_UINT16_MAX)
90  {
91  if (blk != InvalidBlockNumber)
92  {
93  off = 0;
94  blk++;
95  }
96  }
97  else
98  off++;
99 
100  ItemPointerSet(pointer, blk, off);
101 }
#define InvalidBlockNumber
Definition: block.h:33

References InvalidBlockNumber, ItemPointerGetBlockNumberNoCheck(), ItemPointerGetOffsetNumberNoCheck(), ItemPointerSet(), and PG_UINT16_MAX.

Referenced by TidRangeEval().

◆ StaticAssertDecl()

StaticAssertDecl ( sizeof(ItemPointerData = =3 *sizeof(uint16),
"ItemPointerData struct is improperly padded"   
)