*** a/src/backend/utils/time/tqual.c
--- b/src/backend/utils/time/tqual.c
***************
*** 687,693 **** HeapTupleSatisfiesUpdate(HeapTupleHeader tuple, CommandId curcid,
--- 687,699 ----
  				return HeapTupleMayBeUpdated;
  
  			if (HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask))	/* not deleter */
+ 			{
+ 				if (tuple->t_infomask & HEAP_XMAX_IS_MULTI)
+ 					return HeapTupleBeingUpdated;
+ 				else if (!TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetRawXmax(tuple)))
+ 					return HeapTupleBeingUpdated;
  				return HeapTupleMayBeUpdated;
+ 			}
  
  			if (tuple->t_infomask & HEAP_XMAX_IS_MULTI)
  			{
***************
*** 700,706 **** HeapTupleSatisfiesUpdate(HeapTupleHeader tuple, CommandId curcid,
  
  				/* updating subtransaction must have aborted */
  				if (!TransactionIdIsCurrentTransactionId(xmax))
! 					return HeapTupleMayBeUpdated;
  				else
  				{
  					if (HeapTupleHeaderGetCmax(tuple) >= curcid)
--- 706,712 ----
  
  				/* updating subtransaction must have aborted */
  				if (!TransactionIdIsCurrentTransactionId(xmax))
! 					return HeapTupleBeingUpdated;
  				else
  				{
  					if (HeapTupleHeaderGetCmax(tuple) >= curcid)
