*** a/src/backend/access/heap/heapam.c
--- b/src/backend/access/heap/heapam.c
***************
*** 5113,5119 **** heap_inplace_update(Relation relation, HeapTuple tuple)
   */
  bool
  heap_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
! 				  MultiXactId cutoff_multi)
  {
  	bool		changed = false;
  	TransactionId xid;
--- 5113,5119 ----
   */
  bool
  heap_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
! 				  MultiXactId cutoff_multi, Relation rel, HeapTuple tup)
  {
  	bool		changed = false;
  	TransactionId xid;
***************
*** 5122,5127 **** heap_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
--- 5122,5137 ----
  	if (TransactionIdIsNormal(xid) &&
  		TransactionIdPrecedes(xid, cutoff_xid))
  	{
+ 		/*
+ 		 * Pending predicate locks on the tuple will be made invalid; promote
+ 		 * to page granularity if relation is specified.
+ 		 */
+ 		if (rel != NULL)
+ 		{
+ 			Assert(tup != NULL);
+ 			TransferPredicateTupleLocksToPage(rel, tup);
+ 		}
+ 
  		HeapTupleHeaderSetXmin(tuple, FrozenTransactionId);
  
  		/*
***************
*** 6166,6172 **** heap_xlog_freeze(XLogRecPtr lsn, XLogRecord *record)
  			ItemId		lp = PageGetItemId(page, *offsets);
  			HeapTupleHeader tuple = (HeapTupleHeader) PageGetItem(page, lp);
  
! 			(void) heap_freeze_tuple(tuple, cutoff_xid, cutoff_multi);
  			offsets++;
  		}
  	}
--- 6176,6183 ----
  			ItemId		lp = PageGetItemId(page, *offsets);
  			HeapTupleHeader tuple = (HeapTupleHeader) PageGetItem(page, lp);
  
! 			(void) heap_freeze_tuple(tuple, cutoff_xid, cutoff_multi,
! 									 NULL, NULL);
  			offsets++;
  		}
  	}
*** a/src/backend/access/heap/rewriteheap.c
--- b/src/backend/access/heap/rewriteheap.c
***************
*** 347,353 **** rewrite_heap_tuple(RewriteState state,
  	 * very-old xmin or xmax, so that future VACUUM effort can be saved.
  	 */
  	heap_freeze_tuple(new_tuple->t_data, state->rs_freeze_xid,
! 					  state->rs_cutoff_multi);
  
  	/*
  	 * Invalid ctid means that ctid should point to the tuple itself. We'll
--- 347,353 ----
  	 * very-old xmin or xmax, so that future VACUUM effort can be saved.
  	 */
  	heap_freeze_tuple(new_tuple->t_data, state->rs_freeze_xid,
! 					  state->rs_cutoff_multi, NULL, NULL);
  
  	/*
  	 * Invalid ctid means that ctid should point to the tuple itself. We'll
*** a/src/backend/commands/vacuumlazy.c
--- b/src/backend/commands/vacuumlazy.c
***************
*** 868,874 **** lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
  				 * freezing.  Note we already have exclusive buffer lock.
  				 */
  				if (heap_freeze_tuple(tuple.t_data, FreezeLimit,
! 									  MultiXactCutoff))
  					frozen[nfrozen++] = offnum;
  			}
  		}						/* scan along page */
--- 868,874 ----
  				 * freezing.  Note we already have exclusive buffer lock.
  				 */
  				if (heap_freeze_tuple(tuple.t_data, FreezeLimit,
! 									  MultiXactCutoff, onerel, &tuple))
  					frozen[nfrozen++] = offnum;
  			}
  		}						/* scan along page */
*** a/src/backend/storage/lmgr/predicate.c
--- b/src/backend/storage/lmgr/predicate.c
***************
*** 156,165 ****
   *		PredicateLockTuple(Relation relation, HeapTuple tuple,
   *						Snapshot snapshot)
   *		PredicateLockPageSplit(Relation relation, BlockNumber oldblkno,
!  *							   BlockNumber newblkno);
   *		PredicateLockPageCombine(Relation relation, BlockNumber oldblkno,
!  *								 BlockNumber newblkno);
   *		TransferPredicateLocksToHeapRelation(Relation relation)
   *		ReleasePredicateLocks(bool isCommit)
   *
   * conflict detection (may also trigger rollback)
--- 156,166 ----
   *		PredicateLockTuple(Relation relation, HeapTuple tuple,
   *						Snapshot snapshot)
   *		PredicateLockPageSplit(Relation relation, BlockNumber oldblkno,
!  *							   BlockNumber newblkno)
   *		PredicateLockPageCombine(Relation relation, BlockNumber oldblkno,
!  *								 BlockNumber newblkno)
   *		TransferPredicateLocksToHeapRelation(Relation relation)
+  *		TransferPredicateTupleLocksToPage(Relation relation, HeapTuple tuple)
   *		ReleasePredicateLocks(bool isCommit)
   *
   * conflict detection (may also trigger rollback)
***************
*** 3014,3019 **** TransferPredicateLocksToHeapRelation(Relation relation)
--- 3015,3065 ----
  	DropAllPredicateLocksFromTable(relation, true);
  }
  
+ /*
+  * TransferPredicateTupleLocksToPage
+  *		For a particular tuple, check whether there any predicate locks, and
+  *		transfer them to the page level if found.  This is initially useful
+  *		for tuples which are being frozen while predicate locks are held.
+  */
+ void
+ TransferPredicateTupleLocksToPage(Relation relation, HeapTuple tuple)
+ {
+ 	PREDICATELOCKTARGETTAG oldtargettag;
+ 	PREDICATELOCKTARGETTAG newtargettag;
+ 	ItemPointer tid;
+ 	bool		success;
+ 
+ 	if (!PredicateLockingNeededForRelation(relation))
+ 		return;
+ 
+ 	/* This function should only be called for heap tuples. */
+ 	Assert(relation->rd_index == NULL);
+ 
+ 	tid = &(tuple->t_data->t_ctid);
+ 	SET_PREDICATELOCKTARGETTAG_TUPLE(oldtargettag,
+ 									 relation->rd_node.dbNode,
+ 									 relation->rd_id,
+ 									 ItemPointerGetBlockNumber(tid),
+ 									 ItemPointerGetOffsetNumber(tid),
+ 									 HeapTupleHeaderGetXmin(tuple->t_data));
+ 	SET_PREDICATELOCKTARGETTAG_PAGE(newtargettag,
+ 									relation->rd_node.dbNode,
+ 									relation->rd_id,
+ 									ItemPointerGetBlockNumber(tid));
+ 
+ 	LWLockAcquire(SerializablePredicateLockListLock, LW_EXCLUSIVE);
+ 
+ 	/*
+ 	 * Try copying the locks over to the new page's tag, creating it if
+ 	 * necessary.
+ 	 */
+ 	success = TransferPredicateLocksToNewTarget(oldtargettag,
+ 												newtargettag,
+ 												true);
+ 	Assert(success);
+ 
+ 	LWLockRelease(SerializablePredicateLockListLock);
+ }
  
  /*
   *		PredicateLockPageSplit
*** a/src/include/access/heapam.h
--- b/src/include/access/heapam.h
***************
*** 149,155 **** extern HTSU_Result heap_lock_tuple(Relation relation, HeapTuple tuple,
  				Buffer *buffer, HeapUpdateFailureData *hufd);
  extern void heap_inplace_update(Relation relation, HeapTuple tuple);
  extern bool heap_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
! 				  TransactionId cutoff_multi);
  extern bool heap_tuple_needs_freeze(HeapTupleHeader tuple, TransactionId cutoff_xid,
  						MultiXactId cutoff_multi, Buffer buf);
  
--- 149,155 ----
  				Buffer *buffer, HeapUpdateFailureData *hufd);
  extern void heap_inplace_update(Relation relation, HeapTuple tuple);
  extern bool heap_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
! 				  TransactionId cutoff_multi, Relation rel, HeapTuple tup);
  extern bool heap_tuple_needs_freeze(HeapTupleHeader tuple, TransactionId cutoff_xid,
  						MultiXactId cutoff_multi, Buffer buf);
  
*** a/src/include/storage/predicate.h
--- b/src/include/storage/predicate.h
***************
*** 52,57 **** extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snap
--- 52,58 ----
  extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
  extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
  extern void TransferPredicateLocksToHeapRelation(Relation relation);
+ extern void TransferPredicateTupleLocksToPage(Relation relation, HeapTuple tuple);
  extern void ReleasePredicateLocks(bool isCommit);
  
  /* conflict detection (may also trigger rollback) */
*** /dev/null
--- b/src/test/isolation/expected/freezetest.out
***************
*** 0 ****
--- 1,2507 ----
+ Parsed test spec with 3 sessions
+ 
+ starting permutation: r1 w1 c1 r2 w2 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 w1 c1 r2 w2 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 c1 r2 freeze w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 c1 freeze r2 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 r2 c1 w2 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 w1 r2 c1 w2 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 r2 c1 freeze w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 r2 w2 c1 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 w1 r2 w2 c1 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 r2 w2 c2 c1 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 w1 r2 w2 c2 freeze c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 r2 w2 freeze c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 r2 w2 freeze c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 r2 freeze c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 r2 freeze w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 r2 freeze w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 freeze c1 r2 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 freeze r2 c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 w1 freeze r2 w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 w1 freeze r2 w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 c1 w2 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w1 c1 w2 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ 
+ starting permutation: r1 r2 w1 c1 freeze w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 r2 w1 w2 c1 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w1 w2 c1 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 w2 c2 c1 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w1 w2 c2 freeze c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 w2 freeze c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 w2 freeze c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 freeze c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 r2 w1 freeze w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w1 freeze w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 w1 c1 c2 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w2 w1 c1 freeze c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 w1 c2 c1 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w2 w1 c2 freeze c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 w1 freeze c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 w1 freeze c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 c2 w1 c1 freeze
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r1 r2 w2 c2 w1 freeze c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ 
+ starting permutation: r1 r2 w2 c2 freeze w1 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r1 r2 w2 freeze w1 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 freeze w1 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 w2 freeze c2 w1 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r1 r2 freeze w1 c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 r2 freeze w1 w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 freeze w1 w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 freeze w2 w1 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 freeze w2 w1 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 r2 freeze w2 c2 w1 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r1 freeze w1 c1 r2 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ 
+ starting permutation: r1 freeze w1 r2 c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 freeze w1 r2 w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze w1 r2 w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze r2 w1 c1 w2 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r1 freeze r2 w1 w2 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze r2 w1 w2 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze r2 w2 w1 c1 c2
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze r2 w2 w1 c2 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r1 freeze r2 w2 c2 w1 c1
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 r1 w1 c1 w2 c2 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w1 c1 w2 freeze c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ 
+ starting permutation: r2 r1 w1 c1 freeze w2 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r2 r1 w1 w2 c1 c2 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w1 w2 c1 freeze c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w1 w2 c2 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w1 w2 c2 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w1 w2 freeze c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w1 w2 freeze c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w1 freeze c1 w2 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r2 r1 w1 freeze w2 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w1 freeze w2 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 w1 c1 c2 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w2 w1 c1 freeze c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 w1 c2 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w2 w1 c2 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 w1 freeze c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 w1 freeze c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 c2 w1 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 r1 w2 c2 w1 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ 
+ starting permutation: r2 r1 w2 c2 freeze w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 r1 w2 freeze w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 freeze w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 w2 freeze c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 r1 freeze w1 c1 w2 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r2 r1 freeze w1 w2 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 freeze w1 w2 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 freeze w2 w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 freeze w2 w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 r1 freeze w2 c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 r1 w1 c1 c2 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 w2 r1 w1 c1 freeze c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 w1 c2 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 w2 r1 w1 c2 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 w1 freeze c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 w1 freeze c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 c2 w1 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 w2 r1 c2 w1 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 r1 c2 freeze w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 r1 freeze w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 freeze w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 r1 freeze c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 c2 r1 w1 c1 freeze
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ 
+ starting permutation: r2 w2 c2 r1 w1 freeze c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step freeze: VACUUM FREEZE test;
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 c2 r1 freeze w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 c2 freeze r1 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 freeze r1 w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 freeze r1 w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 w2 freeze r1 c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 w2 freeze c2 r1 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step freeze: VACUUM FREEZE test;
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ 
+ starting permutation: r2 freeze r1 w1 c1 w2 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: r2 freeze r1 w1 w2 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze r1 w1 w2 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze r1 w2 w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze r1 w2 w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze r1 w2 c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 freeze w2 r1 w1 c1 c2
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze w2 r1 w1 c2 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: r2 freeze w2 r1 c2 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: r2 freeze w2 c2 r1 w1 c1
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step freeze: VACUUM FREEZE test;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ 
+ starting permutation: freeze r1 w1 c1 r2 w2 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear_xact1     
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ 
+ starting permutation: freeze r1 w1 r2 c1 w2 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: freeze r1 w1 r2 w2 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 w1 r2 w2 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 r2 w1 c1 w2 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: freeze r1 r2 w1 w2 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 r2 w1 w2 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 r2 w2 w1 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 r2 w2 w1 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r1 r2 w2 c2 w1 c1
+ step freeze: VACUUM FREEZE test;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: freeze r2 r1 w1 c1 w2 c2
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c2: COMMIT;
+ 
+ starting permutation: freeze r2 r1 w1 w2 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 r1 w1 w2 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 r1 w2 w1 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 r1 w2 w1 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 r1 w2 c2 w1 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: freeze r2 w2 r1 w1 c1 c2
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
+ step c2: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 w2 r1 w1 c2 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c2: COMMIT;
+ step c1: COMMIT;
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ 
+ starting permutation: freeze r2 w2 r1 c2 w1 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step c2: COMMIT;
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ ERROR:  could not serialize access due to read/write dependencies among transactions
+ step c1: COMMIT;
+ 
+ starting permutation: freeze r2 w2 c2 r1 w1 c1
+ step freeze: VACUUM FREEZE test;
+ step r2: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple          
+ 7              pear           
+ step w2: UPDATE test SET t = 'apple_xact2' WHERE i = 5
+ step c2: COMMIT;
+ step r1: SELECT * FROM test WHERE i IN (5, 7)
+ i              t              
+ 
+ 5              apple_xact2    
+ 7              pear           
+ step w1: UPDATE test SET t = 'pear_xact1' WHERE i = 7
+ step c1: COMMIT;
*** a/src/test/isolation/isolation_schedule
--- b/src/test/isolation/isolation_schedule
***************
*** 10,15 **** test: partial-index
--- 10,16 ----
  test: two-ids
  test: multiple-row-versions
  test: index-only-scan
+ test: freezetest
  test: fk-contention
  test: fk-deadlock
  test: fk-deadlock2
*** /dev/null
--- b/src/test/isolation/specs/freezetest.spec
***************
*** 0 ****
--- 1,38 ----
+ # Test predicate locks with freezing
+ #
+ # This test has two serializable transactions. Both select two rows
+ # from the table, and then update one of them.
+ # If these were serialized (run one at a time), the transaction that
+ # runs later would see one of the rows to be updated.
+ #
+ # This test is similar to simple-write-skew, but it forces index usage
+ # and has a third session to freeze all eligible tuples at each possible
+ # point in each permutation, so it should cover different code paths.
+ #
+ # Any overlap between the transactions must cause a serialization failure.
+ 
+ setup
+ {
+   CREATE TABLE test (i int PRIMARY KEY, t text);
+   INSERT INTO test VALUES (5, 'apple'), (7, 'pear'), (11, 'banana');
+ }
+ 
+ teardown
+ {
+   DROP TABLE test;
+ }
+ 
+ session "s1"
+ setup { BEGIN ISOLATION LEVEL SERIALIZABLE; SET LOCAL enable_seqscan=off; }
+ step "r1" { SELECT * FROM test WHERE i IN (5, 7) }
+ step "w1" { UPDATE test SET t = 'pear_xact1' WHERE i = 7 }
+ step "c1" { COMMIT; }
+ 
+ session "s2"
+ setup { BEGIN ISOLATION LEVEL SERIALIZABLE; SET LOCAL enable_seqscan=off; }
+ step "r2" { SELECT * FROM test WHERE i IN (5, 7) }
+ step "w2" { UPDATE test SET t = 'apple_xact2' WHERE i = 5 }
+ step "c2" { COMMIT; }
+ 
+ session "freezer"
+ step "freeze" { VACUUM FREEZE test; }
