|
|
|
|
@ -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; |
|
|
|
|
|