@ -116,12 +116,15 @@ static bool ConditionalMultiXactIdWait(MultiXactId multi,
* update them ) . This table ( and the macros below ) helps us determine the
* update them ) . This table ( and the macros below ) helps us determine the
* heavyweight lock mode and MultiXactStatus values to use for any particular
* heavyweight lock mode and MultiXactStatus values to use for any particular
* tuple lock strength .
* tuple lock strength .
*
* Don ' t look at lockstatus / updstatus directly ! Use get_mxact_status_for_lock
* instead .
*/
*/
static const struct
static const struct
{
{
LOCKMODE hwlock ;
LOCKMODE hwlock ;
MultiXactStatus lockstatus ;
int lockstatus ;
MultiXactStatus updstatus ;
int updstatus ;
}
}
tupleLockExtraInfo [ MaxLockTupleMode + 1 ] =
tupleLockExtraInfo [ MaxLockTupleMode + 1 ] =
@ -3847,7 +3850,7 @@ simple_heap_update(Relation relation, ItemPointer otid, HeapTuple tup)
static MultiXactStatus
static MultiXactStatus
get_mxact_status_for_lock ( LockTupleMode mode , bool is_update )
get_mxact_status_for_lock ( LockTupleMode mode , bool is_update )
{
{
MultiXactStatus retval ;
int retval ;
if ( is_update )
if ( is_update )
retval = tupleLockExtraInfo [ mode ] . updstatus ;
retval = tupleLockExtraInfo [ mode ] . updstatus ;
@ -3858,7 +3861,7 @@ get_mxact_status_for_lock(LockTupleMode mode, bool is_update)
elog ( ERROR , " invalid lock tuple mode %d/%s " , mode ,
elog ( ERROR , " invalid lock tuple mode %d/%s " , mode ,
is_update ? " true " : " false " ) ;
is_update ? " true " : " false " ) ;
return retval ;
return ( MultiXactStatus ) retval ;
}
}