{
/* wait for multixact */
MultiXactIdWait((MultiXactId) xwait, MultiXactStatusUpdate, infomask,
- relation, &tp.t_data->t_ctid, XLTW_Delete,
+ relation, &(tp.t_self), XLTW_Delete,
NULL);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
else
{
/* wait for regular transaction to end */
- XactLockTableWait(xwait, relation, &tp.t_data->t_ctid, XLTW_Delete);
+ XactLockTableWait(xwait, relation, &(tp.t_self), XLTW_Delete);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
/*
/* wait for multixact */
MultiXactIdWait((MultiXactId) xwait, mxact_status, infomask,
- relation, &oldtup.t_data->t_ctid, XLTW_Update,
+ relation, &oldtup.t_self, XLTW_Update,
&remain);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
*/
heap_acquire_tuplock(relation, &(oldtup.t_self), *lockmode,
LockWaitBlock, &have_tuple_lock);
- XactLockTableWait(xwait, relation, &oldtup.t_data->t_ctid,
+ XactLockTableWait(xwait, relation, &oldtup.t_self,
XLTW_Update);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
{
case LockWaitBlock:
MultiXactIdWait((MultiXactId) xwait, status, infomask,
- relation, &tuple->t_data->t_ctid, XLTW_Lock, NULL);
+ relation, &tuple->t_self, XLTW_Lock, NULL);
break;
case LockWaitSkip:
if (!ConditionalMultiXactIdWait((MultiXactId) xwait,
switch (wait_policy)
{
case LockWaitBlock:
- XactLockTableWait(xwait, relation, &tuple->t_data->t_ctid,
+ XactLockTableWait(xwait, relation, &tuple->t_self,
XLTW_Lock);
break;
case LockWaitSkip:
{
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
XactLockTableWait(members[i].xid, rel,
- &mytup.t_data->t_ctid,
+ &mytup.t_self,
XLTW_LockUpdated);
pfree(members);
goto l4;
if (needwait)
{
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
- XactLockTableWait(rawxmax, rel, &mytup.t_data->t_ctid,
+ XactLockTableWait(rawxmax, rel, &mytup.t_self,
XLTW_LockUpdated);
goto l4;
}
ForwardScanDirection)) != NULL)
{
TransactionId xwait;
+ ItemPointerData ctid_wait;
Datum existing_values[INDEX_MAX_KEYS];
bool existing_isnull[INDEX_MAX_KEYS];
char *error_new;
if (TransactionIdIsValid(xwait))
{
+ ctid_wait = tup->t_data->t_ctid;
index_endscan(index_scan);
- XactLockTableWait(xwait, heap, &tup->t_data->t_ctid,
+ XactLockTableWait(xwait, heap, &ctid_wait,
XLTW_RecheckExclusionConstr);
goto retry;
}