Mark ItemPointer arguments as const throughout
authorPeter Eisentraut <peter@eisentraut.org>
Thu, 30 Oct 2025 13:10:39 +0000 (14:10 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Thu, 30 Oct 2025 13:12:06 +0000 (14:12 +0100)
This is a follow up 991295f.  I searched over src/ and made all
ItemPointer arguments as const as much as possible.

Note: We cut out from the original patch the pieces that would have
created incompatibilities in the index or table AM APIs.  Those could
be considered separately.

Author: Chao Li <li.evan.chao@gmail.com>
Discussion: https://www.postgresql.org/message-id/CAEoWx2nBaypg16Z5ciHuKw66pk850RFWw9ACS2DqqJ_AkKeRsw%40mail.gmail.com

25 files changed:
src/backend/access/common/tidstore.c
src/backend/access/hash/hashsort.c
src/backend/access/heap/heapam.c
src/backend/access/nbtree/nbtdedup.c
src/backend/access/nbtree/nbtsearch.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/nbtree/nbtsplitloc.c
src/backend/access/spgist/spgdoinsert.c
src/backend/access/spgist/spgutils.c
src/backend/access/spgist/spgvacuum.c
src/backend/catalog/indexing.c
src/backend/executor/execIndexing.c
src/backend/storage/lmgr/predicate.c
src/backend/utils/adt/tid.c
src/backend/utils/sort/tuplesortvariants.c
src/include/access/hash.h
src/include/access/heapam.h
src/include/access/nbtree.h
src/include/access/spgist_private.h
src/include/access/tidstore.h
src/include/catalog/index.h
src/include/catalog/indexing.h
src/include/executor/executor.h
src/include/storage/predicate.h
src/include/utils/tuplesort.h

index 5bd75fb499cefc76f222734664849ea28110ec95..fb807d9fe5929407aff27fad1e10131bc4f60a8c 100644 (file)
@@ -418,7 +418,7 @@ TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets,
 
 /* Return true if the given TID is present in the TidStore */
 bool
-TidStoreIsMember(TidStore *ts, ItemPointer tid)
+TidStoreIsMember(TidStore *ts, const ItemPointerData *tid)
 {
    int         wordnum;
    int         bitnum;
index 6e8c0e68a92c8db855950d78e4a3678d6823c9bd..92ae3cf53f52e8cd40e757ff676ce848f7d651d0 100644 (file)
@@ -106,7 +106,7 @@ _h_spooldestroy(HSpool *hspool)
  * spool an index entry into the sort file.
  */
 void
-_h_spool(HSpool *hspool, ItemPointer self, const Datum *values, const bool *isnull)
+_h_spool(HSpool *hspool, const ItemPointerData *self, const Datum *values, const bool *isnull)
 {
    tuplesort_putindextuplevalues(hspool->sortstate, hspool->index,
                                  self, values, isnull);
index 568696333c259b643141c0df1e7b86f0db68e390..36fee9c994e43d9293e99adc49996f51f870ae6b 100644 (file)
@@ -63,7 +63,7 @@ static XLogRecPtr log_heap_update(Relation reln, Buffer oldbuf,
                                  bool all_visible_cleared, bool new_all_visible_cleared);
 #ifdef USE_ASSERT_CHECKING
 static void check_lock_if_inplace_updateable_rel(Relation relation,
-                                                ItemPointer otid,
+                                                const ItemPointerData *otid,
                                                 HeapTuple newtup);
 static void check_inplace_rel_lock(HeapTuple oldtup);
 #endif
@@ -72,7 +72,7 @@ static Bitmapset *HeapDetermineColumnsInfo(Relation relation,
                                           Bitmapset *external_cols,
                                           HeapTuple oldtup, HeapTuple newtup,
                                           bool *has_external);
-static bool heap_acquire_tuplock(Relation relation, ItemPointer tid,
+static bool heap_acquire_tuplock(Relation relation, const ItemPointerData *tid,
                                 LockTupleMode mode, LockWaitPolicy wait_policy,
                                 bool *have_tuple_lock);
 static inline BlockNumber heapgettup_advance_block(HeapScanDesc scan,
@@ -86,7 +86,7 @@ static void compute_new_xmax_infomask(TransactionId xmax, uint16 old_infomask,
                                      TransactionId *result_xmax, uint16 *result_infomask,
                                      uint16 *result_infomask2);
 static TM_Result heap_lock_updated_tuple(Relation rel, HeapTuple tuple,
-                                        ItemPointer ctid, TransactionId xid,
+                                        const ItemPointerData *ctid, TransactionId xid,
                                         LockTupleMode mode);
 static void GetMultiXactIdHintBits(MultiXactId multi, uint16 *new_infomask,
                                   uint16 *new_infomask2);
@@ -95,7 +95,7 @@ static TransactionId MultiXactIdGetUpdateXid(TransactionId xmax,
 static bool DoesMultiXactIdConflict(MultiXactId multi, uint16 infomask,
                                    LockTupleMode lockmode, bool *current_is_member);
 static void MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask,
-                           Relation rel, ItemPointer ctid, XLTW_Oper oper,
+                           Relation rel, const ItemPointerData *ctid, XLTW_Oper oper,
                            int *remaining);
 static bool ConditionalMultiXactIdWait(MultiXactId multi, MultiXactStatus status,
                                       uint16 infomask, Relation rel, int *remaining,
@@ -2786,7 +2786,7 @@ xmax_infomask_changed(uint16 new_infomask, uint16 old_infomask)
  * generated by another transaction).
  */
 TM_Result
-heap_delete(Relation relation, ItemPointer tid,
+heap_delete(Relation relation, const ItemPointerData *tid,
            CommandId cid, Snapshot crosscheck, bool wait,
            TM_FailureData *tmfd, bool changingPart)
 {
@@ -3209,7 +3209,7 @@ l1:
  * via ereport().
  */
 void
-simple_heap_delete(Relation relation, ItemPointer tid)
+simple_heap_delete(Relation relation, const ItemPointerData *tid)
 {
    TM_Result   result;
    TM_FailureData tmfd;
@@ -3255,7 +3255,7 @@ simple_heap_delete(Relation relation, ItemPointer tid)
  * generated by another transaction).
  */
 TM_Result
-heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
+heap_update(Relation relation, const ItemPointerData *otid, HeapTuple newtup,
            CommandId cid, Snapshot crosscheck, bool wait,
            TM_FailureData *tmfd, LockTupleMode *lockmode,
            TU_UpdateIndexes *update_indexes)
@@ -4238,7 +4238,7 @@ l2:
  */
 static void
 check_lock_if_inplace_updateable_rel(Relation relation,
-                                    ItemPointer otid,
+                                    const ItemPointerData *otid,
                                     HeapTuple newtup)
 {
    /* LOCKTAG_TUPLE acceptable for any catalog */
@@ -4499,7 +4499,7 @@ HeapDetermineColumnsInfo(Relation relation,
  * via ereport().
  */
 void
-simple_heap_update(Relation relation, ItemPointer otid, HeapTuple tup,
+simple_heap_update(Relation relation, const ItemPointerData *otid, HeapTuple tup,
                   TU_UpdateIndexes *update_indexes)
 {
    TM_Result   result;
@@ -5285,7 +5285,7 @@ out_unlocked:
  * wait_policy is Skip.
  */
 static bool
-heap_acquire_tuplock(Relation relation, ItemPointer tid, LockTupleMode mode,
+heap_acquire_tuplock(Relation relation, const ItemPointerData *tid, LockTupleMode mode,
                     LockWaitPolicy wait_policy, bool *have_tuple_lock)
 {
    if (*have_tuple_lock)
@@ -5706,7 +5706,7 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
  * version as well.
  */
 static TM_Result
-heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
+heap_lock_updated_tuple_rec(Relation rel, const ItemPointerData *tid, TransactionId xid,
                            LockTupleMode mode)
 {
    TM_Result   result;
@@ -6051,7 +6051,7 @@ out_unlocked:
  * levels, because that would lead to a serializability failure.
  */
 static TM_Result
-heap_lock_updated_tuple(Relation rel, HeapTuple tuple, ItemPointer ctid,
+heap_lock_updated_tuple(Relation rel, HeapTuple tuple, const ItemPointerData *ctid,
                        TransactionId xid, LockTupleMode mode)
 {
    /*
@@ -6096,7 +6096,7 @@ heap_lock_updated_tuple(Relation rel, HeapTuple tuple, ItemPointer ctid,
  * An explicit confirmation WAL record also makes logical decoding simpler.
  */
 void
-heap_finish_speculative(Relation relation, ItemPointer tid)
+heap_finish_speculative(Relation relation, const ItemPointerData *tid)
 {
    Buffer      buffer;
    Page        page;
@@ -6183,7 +6183,7 @@ heap_finish_speculative(Relation relation, ItemPointer tid)
  * confirmation records.
  */
 void
-heap_abort_speculative(Relation relation, ItemPointer tid)
+heap_abort_speculative(Relation relation, const ItemPointerData *tid)
 {
    TransactionId xid = GetCurrentTransactionId();
    ItemId      lp;
@@ -7705,7 +7705,7 @@ DoesMultiXactIdConflict(MultiXactId multi, uint16 infomask,
 static bool
 Do_MultiXactIdWait(MultiXactId multi, MultiXactStatus status,
                   uint16 infomask, bool nowait,
-                  Relation rel, ItemPointer ctid, XLTW_Oper oper,
+                  Relation rel, const ItemPointerData *ctid, XLTW_Oper oper,
                   int *remaining, bool logLockFailure)
 {
    bool        result = true;
@@ -7782,7 +7782,7 @@ Do_MultiXactIdWait(MultiXactId multi, MultiXactStatus status,
  */
 static void
 MultiXactIdWait(MultiXactId multi, MultiXactStatus status, uint16 infomask,
-               Relation rel, ItemPointer ctid, XLTW_Oper oper,
+               Relation rel, const ItemPointerData *ctid, XLTW_Oper oper,
                int *remaining)
 {
    (void) Do_MultiXactIdWait(multi, status, infomask, false,
@@ -8068,7 +8068,7 @@ index_delete_prefetch_buffer(Relation rel,
 static inline void
 index_delete_check_htid(TM_IndexDeleteOp *delstate,
                        Page page, OffsetNumber maxoff,
-                       ItemPointer htid, TM_IndexStatus *istatus)
+                       const ItemPointerData *htid, TM_IndexStatus *istatus)
 {
    OffsetNumber indexpagehoffnum = ItemPointerGetOffsetNumber(htid);
    ItemId      iid;
index 07e63962f81b4f6a78da0380972ef3f3d9dee255..a746de45dd377dc577cee43be9def5ec795e64f5 100644 (file)
@@ -859,7 +859,7 @@ _bt_singleval_fillfactor(Page page, BTDedupState state, Size newitemsz)
  * returned posting list tuple (they must be included in htids array.)
  */
 IndexTuple
-_bt_form_posting(IndexTuple base, ItemPointer htids, int nhtids)
+_bt_form_posting(IndexTuple base, const ItemPointerData *htids, int nhtids)
 {
    uint32      keysize,
                newsize;
index d69798795b43b87b58361e58a67c4ccb78565cc3..7ae2bc8b66aec753fa01f54c95d881810e1ce648 100644 (file)
@@ -37,7 +37,7 @@ static bool _bt_readpage(IndexScanDesc scan, ScanDirection dir,
 static void _bt_saveitem(BTScanOpaque so, int itemIndex,
                         OffsetNumber offnum, IndexTuple itup);
 static int _bt_setuppostingitems(BTScanOpaque so, int itemIndex,
-                                 OffsetNumber offnum, ItemPointer heapTid,
+                                 OffsetNumber offnum, const ItemPointerData *heapTid,
                                  IndexTuple itup);
 static inline void _bt_savepostingitem(BTScanOpaque so, int itemIndex,
                                       OffsetNumber offnum,
@@ -2079,7 +2079,7 @@ _bt_saveitem(BTScanOpaque so, int itemIndex,
  */
 static int
 _bt_setuppostingitems(BTScanOpaque so, int itemIndex, OffsetNumber offnum,
-                     ItemPointer heapTid, IndexTuple itup)
+                     const ItemPointerData *heapTid, IndexTuple itup)
 {
    BTScanPosItem *currItem = &so->currPos.items[itemIndex];
 
index 313fe66bc96d7315022a1886677b0a16033d1c60..e90964080ca851239f7b902ebba3735d7d3ff560 100644 (file)
@@ -257,7 +257,7 @@ typedef struct BTWriteState
 static double _bt_spools_heapscan(Relation heap, Relation index,
                                  BTBuildState *buildstate, IndexInfo *indexInfo);
 static void _bt_spooldestroy(BTSpool *btspool);
-static void _bt_spool(BTSpool *btspool, ItemPointer self,
+static void _bt_spool(BTSpool *btspool, const ItemPointerData *self,
                      Datum *values, bool *isnull);
 static void _bt_leafbuild(BTSpool *btspool, BTSpool *btspool2);
 static void _bt_build_callback(Relation index, ItemPointer tid, Datum *values,
@@ -525,7 +525,7 @@ _bt_spooldestroy(BTSpool *btspool)
  * spool an index entry into the sort file.
  */
 static void
-_bt_spool(BTSpool *btspool, ItemPointer self, Datum *values, bool *isnull)
+_bt_spool(BTSpool *btspool, const ItemPointerData *self, Datum *values, bool *isnull)
 {
    tuplesort_putindextuplevalues(btspool->sortstate, btspool->index,
                                  self, values, isnull);
index b88c396195a42b84c7d60516f53b9894ffcd8b63..f0082f88c76959ee096937109c74ccfa5e83f0dc 100644 (file)
@@ -69,7 +69,7 @@ static void _bt_deltasortsplits(FindSplitData *state, double fillfactormult,
 static int _bt_splitcmp(const void *arg1, const void *arg2);
 static bool _bt_afternewitemoff(FindSplitData *state, OffsetNumber maxoff,
                                int leaffillfactor, bool *usemult);
-static bool _bt_adjacenthtid(ItemPointer lowhtid, ItemPointer highhtid);
+static bool _bt_adjacenthtid(const ItemPointerData *lowhtid, const ItemPointerData *highhtid);
 static OffsetNumber _bt_bestsplitloc(FindSplitData *state, int perfectpenalty,
                                     bool *newitemonleft, FindSplitStrat strategy);
 static int _bt_defaultinterval(FindSplitData *state);
@@ -747,7 +747,7 @@ _bt_afternewitemoff(FindSplitData *state, OffsetNumber maxoff,
  * transaction.
  */
 static bool
-_bt_adjacenthtid(ItemPointer lowhtid, ItemPointer highhtid)
+_bt_adjacenthtid(const ItemPointerData *lowhtid, const ItemPointerData *highhtid)
 {
    BlockNumber lowblk,
                highblk;
index e00bd0e26368a9d83fddb96eacd5737485ec777d..5d84141028d0b968454ebacfa953e0359900d6d5 100644 (file)
@@ -1908,7 +1908,7 @@ spgSplitNodeAction(Relation index, SpGistState *state,
  */
 bool
 spgdoinsert(Relation index, SpGistState *state,
-           ItemPointer heapPtr, Datum *datums, bool *isnulls)
+           const ItemPointerData *heapPtr, Datum *datums, bool *isnulls)
 {
    bool        result = true;
    TupleDesc   leafDescriptor = state->leafTupDesc;
index 245ec05e4bbb9f2473156a37f85acf6fc1e6fbd2..87c31da71a52b11f83629a117930a99bbc9d47b2 100644 (file)
@@ -868,7 +868,7 @@ SpGistGetLeafTupleSize(TupleDesc tupleDescriptor,
  * Construct a leaf tuple containing the given heap TID and datum values
  */
 SpGistLeafTuple
-spgFormLeafTuple(SpGistState *state, ItemPointer heapPtr,
+spgFormLeafTuple(SpGistState *state, const ItemPointerData *heapPtr,
                 const Datum *datums, const bool *isnulls)
 {
    SpGistLeafTuple tup;
index 8f8a1ad7796aaeeca067f3c9a1ac8665ee01efff..71ef2e5036f219de968520dfd1bf090ca54a4493 100644 (file)
@@ -61,7 +61,7 @@ typedef struct spgBulkDeleteState
  * ensures that scans of the list don't miss items added during the scan.
  */
 static void
-spgAddPendingTID(spgBulkDeleteState *bds, ItemPointer tid)
+spgAddPendingTID(spgBulkDeleteState *bds, const ItemPointerData *tid)
 {
    spgVacPendingItem *pitem;
    spgVacPendingItem **listLink;
index 25c4b6bdc87f09b311af9193fb2dd45f6956617f..004c5121000fe9a21704536d20cc3bfaedde331e 100644 (file)
@@ -310,7 +310,7 @@ CatalogTuplesMultiInsertWithInfo(Relation heapRel, TupleTableSlot **slot,
  * (Use CatalogTupleUpdateWithInfo in such cases.)
  */
 void
-CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
+CatalogTupleUpdate(Relation heapRel, const ItemPointerData *otid, HeapTuple tup)
 {
    CatalogIndexState indstate;
    TU_UpdateIndexes updateIndexes = TU_All;
@@ -334,7 +334,7 @@ CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
  * so that callers needn't trouble over this ... but we don't do so today.
  */
 void
-CatalogTupleUpdateWithInfo(Relation heapRel, ItemPointer otid, HeapTuple tup,
+CatalogTupleUpdateWithInfo(Relation heapRel, const ItemPointerData *otid, HeapTuple tup,
                           CatalogIndexState indstate)
 {
    TU_UpdateIndexes updateIndexes = TU_All;
@@ -362,7 +362,7 @@ CatalogTupleUpdateWithInfo(Relation heapRel, ItemPointer otid, HeapTuple tup,
  * it might be better to do something about caching CatalogIndexState.
  */
 void
-CatalogTupleDelete(Relation heapRel, ItemPointer tid)
+CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid)
 {
    simple_heap_delete(heapRel, tid);
 }
index ca33a854278eda8a6e1b922f31063d0946626a64..401606f840ad22b065b3de9b52be506c00e01dfd 100644 (file)
@@ -128,7 +128,7 @@ typedef enum
 
 static bool check_exclusion_or_unique_constraint(Relation heap, Relation index,
                                                 IndexInfo *indexInfo,
-                                                ItemPointer tupleid,
+                                                const ItemPointerData *tupleid,
                                                 const Datum *values, const bool *isnull,
                                                 EState *estate, bool newIndex,
                                                 CEOUC_WAIT_MODE waitMode,
@@ -541,7 +541,7 @@ ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
 bool
 ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo, TupleTableSlot *slot,
                          EState *estate, ItemPointer conflictTid,
-                         ItemPointer tupleid, List *arbiterIndexes)
+                         const ItemPointerData *tupleid, List *arbiterIndexes)
 {
    int         i;
    int         numIndices;
@@ -703,7 +703,7 @@ ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo, TupleTableSlot *slot,
 static bool
 check_exclusion_or_unique_constraint(Relation heap, Relation index,
                                     IndexInfo *indexInfo,
-                                    ItemPointer tupleid,
+                                    const ItemPointerData *tupleid,
                                     const Datum *values, const bool *isnull,
                                     EState *estate, bool newIndex,
                                     CEOUC_WAIT_MODE waitMode,
@@ -955,7 +955,7 @@ retry:
 void
 check_exclusion_constraint(Relation heap, Relation index,
                           IndexInfo *indexInfo,
-                          ItemPointer tupleid,
+                          const ItemPointerData *tupleid,
                           const Datum *values, const bool *isnull,
                           EState *estate, bool newIndex)
 {
index c1d8511ad17a918bbbb2a0d23b915536492c628d..bb807d8c9cd960e9d86d69c79abaa6b2c4ea0bc2 100644 (file)
  *     PredicateLockRelation(Relation relation, Snapshot snapshot)
  *     PredicateLockPage(Relation relation, BlockNumber blkno,
  *                     Snapshot snapshot)
- *     PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
+ *     PredicateLockTID(Relation relation, const ItemPointerData *tid, Snapshot snapshot,
  *                      TransactionId tuple_xid)
  *     PredicateLockPageSplit(Relation relation, BlockNumber oldblkno,
  *                            BlockNumber newblkno)
  * conflict detection (may also trigger rollback)
  *     CheckForSerializableConflictOut(Relation relation, TransactionId xid,
  *                                     Snapshot snapshot)
- *     CheckForSerializableConflictIn(Relation relation, ItemPointer tid,
+ *     CheckForSerializableConflictIn(Relation relation, const ItemPointerData *tid,
  *                                    BlockNumber blkno)
  *     CheckTableForSerializableConflictIn(Relation relation)
  *
@@ -2618,7 +2618,7 @@ PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot)
  * Skip if this is a temporary table.
  */
 void
-PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
+PredicateLockTID(Relation relation, const ItemPointerData *tid, Snapshot snapshot,
                 TransactionId tuple_xid)
 {
    PREDICATELOCKTARGETTAG tag;
@@ -4333,7 +4333,7 @@ CheckTargetForConflictsIn(PREDICATELOCKTARGETTAG *targettag)
  * tuple itself.
  */
 void
-CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno)
+CheckForSerializableConflictIn(Relation relation, const ItemPointerData *tid, BlockNumber blkno)
 {
    PREDICATELOCKTARGETTAG targettag;
 
index 39dab3e42df588a1138f3f7f2032d500cd59fa2c..0cfb0bd3735414a6992fb722673ab9db30d19d39 100644 (file)
@@ -42,7 +42,7 @@
 #define DELIM          ','
 #define NTIDARGS       2
 
-static ItemPointer currtid_for_view(Relation viewrel, ItemPointer tid);
+static ItemPointer currtid_for_view(Relation viewrel, const ItemPointerData *tid);
 
 /* ----------------------------------------------------------------
  *     tidin
@@ -293,7 +293,7 @@ hashtidextended(PG_FUNCTION_ARGS)
  *     relation "rel".
  */
 static ItemPointer
-currtid_internal(Relation rel, ItemPointer tid)
+currtid_internal(Relation rel, const ItemPointerData *tid)
 {
    ItemPointer result;
    AclResult   aclresult;
@@ -335,7 +335,7 @@ currtid_internal(Relation rel, ItemPointer tid)
  *     correspond to the CTID of a base relation.
  */
 static ItemPointer
-currtid_for_view(Relation viewrel, ItemPointer tid)
+currtid_for_view(Relation viewrel, const ItemPointerData *tid)
 {
    TupleDesc   att = RelationGetDescr(viewrel);
    RuleLock   *rulelock;
index 890cdbe120418c2491ebbb6fa196e18804347c34..41ac4afbf495ec278267070f13f001ee3d20b90d 100644 (file)
@@ -816,7 +816,7 @@ tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup)
  */
 void
 tuplesort_putindextuplevalues(Tuplesortstate *state, Relation rel,
-                             ItemPointer self, const Datum *values,
+                             const ItemPointerData *self, const Datum *values,
                              const bool *isnull)
 {
    SortTuple   stup;
index 073ad29b19b923aaf3309ed53794639c86ac6b85..2374d5cf049962d6ba1cf0fd1f71ef7d30d2a909 100644 (file)
@@ -453,7 +453,7 @@ typedef struct HSpool HSpool;   /* opaque struct in hashsort.c */
 
 extern HSpool *_h_spoolinit(Relation heap, Relation index, uint32 num_buckets);
 extern void _h_spooldestroy(HSpool *hspool);
-extern void _h_spool(HSpool *hspool, ItemPointer self,
+extern void _h_spool(HSpool *hspool, const ItemPointerData *self,
                     const Datum *values, const bool *isnull);
 extern void _h_indexbuild(HSpool *hspool, Relation heapRel);
 
index 8cbff6ab0eb1cfd7ea71dab292415ba818caa3e6..909db73b7bbbfa0e4d066197698b09864d45a6cb 100644 (file)
@@ -316,12 +316,12 @@ extern void heap_insert(Relation relation, HeapTuple tup, CommandId cid,
 extern void heap_multi_insert(Relation relation, TupleTableSlot **slots,
                              int ntuples, CommandId cid, int options,
                              BulkInsertState bistate);
-extern TM_Result heap_delete(Relation relation, ItemPointer tid,
+extern TM_Result heap_delete(Relation relation, const ItemPointerData *tid,
                             CommandId cid, Snapshot crosscheck, bool wait,
                             TM_FailureData *tmfd, bool changingPart);
-extern void heap_finish_speculative(Relation relation, ItemPointer tid);
-extern void heap_abort_speculative(Relation relation, ItemPointer tid);
-extern TM_Result heap_update(Relation relation, ItemPointer otid,
+extern void heap_finish_speculative(Relation relation, const ItemPointerData *tid);
+extern void heap_abort_speculative(Relation relation, const ItemPointerData *tid);
+extern TM_Result heap_update(Relation relation, const ItemPointerData *otid,
                             HeapTuple newtup,
                             CommandId cid, Snapshot crosscheck, bool wait,
                             TM_FailureData *tmfd, LockTupleMode *lockmode,
@@ -358,8 +358,8 @@ extern bool heap_tuple_should_freeze(HeapTupleHeader tuple,
 extern bool heap_tuple_needs_eventual_freeze(HeapTupleHeader tuple);
 
 extern void simple_heap_insert(Relation relation, HeapTuple tup);
-extern void simple_heap_delete(Relation relation, ItemPointer tid);
-extern void simple_heap_update(Relation relation, ItemPointer otid,
+extern void simple_heap_delete(Relation relation, const ItemPointerData *tid);
+extern void simple_heap_update(Relation relation, const ItemPointerData *otid,
                               HeapTuple tup, TU_UpdateIndexes *update_indexes);
 
 extern TransactionId heap_index_delete_tuples(Relation rel,
index db1345f54c8e730a7d02bb4ace075c394f99a672..16be5c7a9c158e571238b6383b2c71caa63b2e6e 100644 (file)
@@ -1234,7 +1234,7 @@ extern void _bt_dedup_start_pending(BTDedupState state, IndexTuple base,
                                    OffsetNumber baseoff);
 extern bool _bt_dedup_save_htid(BTDedupState state, IndexTuple itup);
 extern Size _bt_dedup_finish_pending(Page newpage, BTDedupState state);
-extern IndexTuple _bt_form_posting(IndexTuple base, ItemPointer htids,
+extern IndexTuple _bt_form_posting(IndexTuple base, const ItemPointerData *htids,
                                   int nhtids);
 extern void _bt_update_posting(BTVacuumPosting vacposting);
 extern IndexTuple _bt_swap_posting(IndexTuple newitem, IndexTuple oposting,
index 781e1e12e556b970621df2fbf4f4e11f8ac4e0dc..797ef62eb3887ed76ce90482baaf402a07f6248f 100644 (file)
@@ -511,7 +511,7 @@ extern unsigned int SpGistGetInnerTypeSize(SpGistTypeDesc *att, Datum datum);
 extern Size SpGistGetLeafTupleSize(TupleDesc tupleDescriptor,
                                   const Datum *datums, const bool *isnulls);
 extern SpGistLeafTuple spgFormLeafTuple(SpGistState *state,
-                                       ItemPointer heapPtr,
+                                       const ItemPointerData *heapPtr,
                                        const Datum *datums, const bool *isnulls);
 extern SpGistNodeTuple spgFormNodeTuple(SpGistState *state,
                                        Datum label, bool isnull);
@@ -541,7 +541,7 @@ extern void spgPageIndexMultiDelete(SpGistState *state, Page page,
                                    int firststate, int reststate,
                                    BlockNumber blkno, OffsetNumber offnum);
 extern bool spgdoinsert(Relation index, SpGistState *state,
-                       ItemPointer heapPtr, Datum *datums, bool *isnulls);
+                       const ItemPointerData *heapPtr, Datum *datums, bool *isnulls);
 
 /* spgproc.c */
 extern double *spg_key_orderbys_distances(Datum key, bool isLeaf,
index 041091df2786df718f3c65c60cb2d376454e5768..048e1df0e84b9cf396726e327b566d2c6485ca5b 100644 (file)
@@ -40,7 +40,7 @@ extern void TidStoreUnlock(TidStore *ts);
 extern void TidStoreDestroy(TidStore *ts);
 extern void TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets,
                                    int num_offsets);
-extern bool TidStoreIsMember(TidStore *ts, ItemPointer tid);
+extern bool TidStoreIsMember(TidStore *ts, const ItemPointerData *tid);
 extern TidStoreIter *TidStoreBeginIterate(TidStore *ts);
 extern TidStoreIterResult *TidStoreIterateNext(TidStoreIter *iter);
 extern int TidStoreGetBlockOffsets(TidStoreIterResult *result,
index 4daa8bef5eeab5ca7c6731a77f4613babc98ce6d..dda95e54903ebed97539cad3a90ddb2d9be60386 100644 (file)
@@ -187,7 +187,7 @@ extern void IndexSetParentIndex(Relation partitionIdx, Oid parentOid);
  * As noted in validate_index(), this can be significantly faster.
  */
 static inline int64
-itemptr_encode(ItemPointer itemptr)
+itemptr_encode(const ItemPointerData *itemptr)
 {
    BlockNumber block = ItemPointerGetBlockNumber(itemptr);
    OffsetNumber offset = ItemPointerGetOffsetNumber(itemptr);
index 667aca7ace8015af19b7e418eef76af5f2c775de..77c17d3fb7acc56da8a45723f8185fd526088aad 100644 (file)
@@ -44,11 +44,11 @@ extern void CatalogTuplesMultiInsertWithInfo(Relation heapRel,
                                             TupleTableSlot **slot,
                                             int ntuples,
                                             CatalogIndexState indstate);
-extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid,
+extern void CatalogTupleUpdate(Relation heapRel, const ItemPointerData *otid,
                               HeapTuple tup);
 extern void CatalogTupleUpdateWithInfo(Relation heapRel,
-                                      ItemPointer otid, HeapTuple tup,
+                                      const ItemPointerData *otid, HeapTuple tup,
                                       CatalogIndexState indstate);
-extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
+extern void CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid);
 
 #endif                         /* INDEXING_H */
index 0ba86c2ad7231d66b5f58624fe9d09e7f577891e..26db9522d8b79c42bf9cc43fd729bf9f1af6f6d1 100644 (file)
@@ -745,11 +745,11 @@ extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
 extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
                                      TupleTableSlot *slot,
                                      EState *estate, ItemPointer conflictTid,
-                                     ItemPointer tupleid,
+                                     const ItemPointerData *tupleid,
                                      List *arbiterIndexes);
 extern void check_exclusion_constraint(Relation heap, Relation index,
                                       IndexInfo *indexInfo,
-                                      ItemPointer tupleid,
+                                      const ItemPointerData *tupleid,
                                       const Datum *values, const bool *isnull,
                                       EState *estate, bool newIndex);
 
index c1e3a4d9f64a760f0d024fa61ce9833289121784..8f5f0348a2392e64ff1c3484351656d9891c6ca9 100644 (file)
@@ -54,7 +54,7 @@ extern void SetSerializableTransactionSnapshot(Snapshot snapshot,
 extern void RegisterPredicateLockingXid(TransactionId xid);
 extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
 extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
-extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
+extern void PredicateLockTID(Relation relation, const ItemPointerData *tid, Snapshot snapshot,
                             TransactionId tuple_xid);
 extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
 extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
@@ -64,7 +64,7 @@ extern void ReleasePredicateLocks(bool isCommit, bool isReadOnlySafe);
 /* conflict detection (may also trigger rollback) */
 extern bool CheckForSerializableConflictOutNeeded(Relation relation, Snapshot snapshot);
 extern void CheckForSerializableConflictOut(Relation relation, TransactionId xid, Snapshot snapshot);
-extern void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno);
+extern void CheckForSerializableConflictIn(Relation relation, const ItemPointerData *tid, BlockNumber blkno);
 extern void CheckTableForSerializableConflictIn(Relation relation);
 
 /* final rollback checking */
index ef79f259f935fa781a16ae5ce60abe03e4e9778a..0bf55902aa1b816be40965a2fe368c0a0f04f30f 100644 (file)
@@ -458,7 +458,7 @@ extern void tuplesort_puttupleslot(Tuplesortstate *state,
                                   TupleTableSlot *slot);
 extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup);
 extern void tuplesort_putindextuplevalues(Tuplesortstate *state,
-                                         Relation rel, ItemPointer self,
+                                         Relation rel, const ItemPointerData *self,
                                          const Datum *values, const bool *isnull);
 extern void tuplesort_putbrintuple(Tuplesortstate *state, BrinTuple *tuple, Size size);
 extern void tuplesort_putgintuple(Tuplesortstate *state, GinTuple *tuple, Size size);