@ -4183,7 +4183,9 @@ l3:
* the case , HeapTupleSatisfiesUpdate would have returned
* MayBeUpdated and we wouldn ' t be here .
*/
nmembers = GetMultiXactIdMembers ( xwait , & members , false ) ;
nmembers =
GetMultiXactIdMembers ( xwait , & members , false ,
HEAP_XMAX_IS_LOCKED_ONLY ( infomask ) ) ;
for ( i = 0 ; i < nmembers ; i + + )
{
@ -4204,7 +4206,8 @@ l3:
}
}
pfree ( members ) ;
if ( members )
pfree ( members ) ;
}
/*
@ -4353,7 +4356,9 @@ l3:
* been the case , HeapTupleSatisfiesUpdate would have returned
* MayBeUpdated and we wouldn ' t be here .
*/
nmembers = GetMultiXactIdMembers ( xwait , & members , false ) ;
nmembers =
GetMultiXactIdMembers ( xwait , & members , false ,
HEAP_XMAX_IS_LOCKED_ONLY ( infomask ) ) ;
if ( nmembers < = 0 )
{
@ -4834,7 +4839,7 @@ l5:
* MultiXactIdExpand if we weren ' t to do this , so this check is not
* incurring extra work anyhow .
*/
if ( ! MultiXactIdIsRunning ( xmax ) )
if ( ! MultiXactIdIsRunning ( xmax , HEAP_XMAX_IS_LOCKED_ONLY ( old_infomask ) ) )
{
if ( HEAP_XMAX_IS_LOCKED_ONLY ( old_infomask ) | |
TransactionIdDidAbort ( MultiXactIdGetUpdateXid ( xmax ,
@ -5175,7 +5180,8 @@ l4:
int i ;
MultiXactMember * members ;
nmembers = GetMultiXactIdMembers ( rawxmax , & members , false ) ;
nmembers = GetMultiXactIdMembers ( rawxmax , & members , false ,
HEAP_XMAX_IS_LOCKED_ONLY ( old_infomask ) ) ;
for ( i = 0 ; i < nmembers ; i + + )
{
HTSU_Result res ;
@ -5533,7 +5539,8 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
*/
Assert ( ( ! ( t_infomask & HEAP_LOCK_MASK ) & &
HEAP_XMAX_IS_LOCKED_ONLY ( t_infomask ) ) | |
! MultiXactIdIsRunning ( multi ) ) ;
! MultiXactIdIsRunning ( multi ,
HEAP_XMAX_IS_LOCKED_ONLY ( t_infomask ) ) ) ;
if ( HEAP_XMAX_IS_LOCKED_ONLY ( t_infomask ) )
{
* flags | = FRM_INVALIDATE_XMAX ;
@ -5576,7 +5583,9 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
allow_old = ! ( t_infomask & HEAP_LOCK_MASK ) & &
HEAP_XMAX_IS_LOCKED_ONLY ( t_infomask ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , allow_old ) ;
nmembers =
GetMultiXactIdMembers ( multi , & members , allow_old ,
HEAP_XMAX_IS_LOCKED_ONLY ( t_infomask ) ) ;
if ( nmembers < = 0 )
{
/* Nothing worth keeping */
@ -5983,7 +5992,7 @@ GetMultiXactIdHintBits(MultiXactId multi, uint16 *new_infomask,
* We only use this in multis we just created , so they cannot be values
* pre - pg_upgrade .
*/
nmembers = GetMultiXactIdMembers ( multi , & members , false ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , false , false ) ;
for ( i = 0 ; i < nmembers ; i + + )
{
@ -6062,7 +6071,7 @@ MultiXactIdGetUpdateXid(TransactionId xmax, uint16 t_infomask)
* Since we know the LOCK_ONLY bit is not set , this cannot be a multi from
* pre - pg_upgrade .
*/
nmembers = GetMultiXactIdMembers ( xmax , & members , false ) ;
nmembers = GetMultiXactIdMembers ( xmax , & members , false , false ) ;
if ( nmembers > 0 )
{
@ -6148,7 +6157,8 @@ Do_MultiXactIdWait(MultiXactId multi, MultiXactStatus status,
int remain = 0 ;
allow_old = ! ( infomask & HEAP_LOCK_MASK ) & & HEAP_XMAX_IS_LOCKED_ONLY ( infomask ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , allow_old ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , allow_old ,
HEAP_XMAX_IS_LOCKED_ONLY ( infomask ) ) ;
if ( nmembers > = 0 )
{
@ -6294,7 +6304,8 @@ heap_tuple_needs_freeze(HeapTupleHeader tuple, TransactionId cutoff_xid,
allow_old = ! ( tuple - > t_infomask & HEAP_LOCK_MASK ) & &
HEAP_XMAX_IS_LOCKED_ONLY ( tuple - > t_infomask ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , allow_old ) ;
nmembers = GetMultiXactIdMembers ( multi , & members , allow_old ,
HEAP_XMAX_IS_LOCKED_ONLY ( tuple - > t_infomask ) ) ;
for ( i = 0 ; i < nmembers ; i + + )
{