diff --git a/src/test/isolation/expected/fk-deadlock2_1.out b/src/test/isolation/expected/fk-deadlock2_1.out
new file mode 100644
index 0000000000000000000000000000000000000000..a68ed2e026048530b09d5f176c732197bda8dd1b
--- /dev/null
+++ b/src/test/isolation/expected/fk-deadlock2_1.out
@@ -0,0 +1,110 @@
+Parsed test spec with 2 sessions
+
+starting permutation: s1u1 s1u2 s1c s2u1 s2u2 s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1c:  COMMIT; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s1u2 s2u1 s1c s2u2 s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1c:  COMMIT; 
+step s2u1: <... completed>
+ERROR:  could not serialize access due to concurrent update
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s1u2 s2u2 s1c s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s1u2 s2u2 s2c s1c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s2u2 s1u2 s1c s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s2u2 s1u2 s2c s1c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s1u2 s2u2 s1c s2c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s1u2 s2u2 s2c s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s2u2 s1u2 s1c s2c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s2u2 s1u2 s2c s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s2u2 s1u1 s2c s1u2 s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1;  <waiting ...>
+step s2c:  COMMIT; 
+step s1u1: <... completed>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  could not serialize access due to read/write dependencies among transactions
+step s1c:  COMMIT; 
diff --git a/src/test/isolation/expected/fk-deadlock2_2.out b/src/test/isolation/expected/fk-deadlock2_2.out
new file mode 100644
index 0000000000000000000000000000000000000000..9bbf23c24821da75b0db4d37901dd26cad2409db
--- /dev/null
+++ b/src/test/isolation/expected/fk-deadlock2_2.out
@@ -0,0 +1,110 @@
+Parsed test spec with 2 sessions
+
+starting permutation: s1u1 s1u2 s1c s2u1 s2u2 s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1c:  COMMIT; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s1u2 s2u1 s1c s2u2 s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1c:  COMMIT; 
+step s2u1: <... completed>
+ERROR:  could not serialize access due to concurrent update
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s1u2 s2u2 s1c s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s1u2 s2u2 s2c s1c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s2u2 s1u2 s1c s2c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s1u1 s2u1 s2u2 s1u2 s2c s1c
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s1u2 s2u2 s1c s2c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s1u2 s2u2 s2c s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u2: <... completed>
+ERROR:  deadlock detected
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s2u2 s1u2 s1c s2c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s2u1 s1u1 s2u2 s1u2 s2c s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2;  <waiting ...>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  deadlock detected
+step s2u2: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2u1 s2u2 s1u1 s2c s1u2 s1c
+step s2u1:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s2u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+step s1u1:  UPDATE A SET Col1 = 1 WHERE AID = 1;  <waiting ...>
+step s2c:  COMMIT; 
+step s1u1: <... completed>
+step s1u2:  UPDATE B SET Col2 = 1 WHERE BID = 2; 
+ERROR:  could not serialize access due to concurrent update
+step s1c:  COMMIT; 
diff --git a/src/test/isolation/expected/fk-deadlock_1.out b/src/test/isolation/expected/fk-deadlock_1.out
new file mode 100644
index 0000000000000000000000000000000000000000..f4a43edbf50b178a7d956ac6aab91f400c279fa9
--- /dev/null
+++ b/src/test/isolation/expected/fk-deadlock_1.out
@@ -0,0 +1,71 @@
+Parsed test spec with 2 sessions
+
+starting permutation: s1i s1u s1c s2i s2u s2c
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s1u:  UPDATE parent SET aux = 'bar'; 
+step s1c:  COMMIT; 
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s2u:  UPDATE parent SET aux = 'baz'; 
+step s2c:  COMMIT; 
+
+starting permutation: s1i s1u s2i s1c s2u s2c
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s1u:  UPDATE parent SET aux = 'bar'; 
+step s2i:  INSERT INTO child VALUES (2, 1);  <waiting ...>
+step s1c:  COMMIT; 
+step s2i: <... completed>
+ERROR:  could not serialize access due to concurrent update
+step s2u:  UPDATE parent SET aux = 'baz'; 
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+step s2c:  COMMIT; 
+
+starting permutation: s1i s2i s1u s2u s1c s2c
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s1u:  UPDATE parent SET aux = 'bar';  <waiting ...>
+step s2u:  UPDATE parent SET aux = 'baz'; 
+step s1u: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s1i s2i s2u s1u s2c s1c
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s2u:  UPDATE parent SET aux = 'baz';  <waiting ...>
+step s1u:  UPDATE parent SET aux = 'bar'; 
+ERROR:  deadlock detected
+step s2u: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2i s1i s1u s2u s1c s2c
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s1u:  UPDATE parent SET aux = 'bar';  <waiting ...>
+step s2u:  UPDATE parent SET aux = 'baz'; 
+step s1u: <... completed>
+ERROR:  deadlock detected
+step s1c:  COMMIT; 
+step s2c:  COMMIT; 
+
+starting permutation: s2i s1i s2u s1u s2c s1c
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s1i:  INSERT INTO child VALUES (1, 1); 
+step s2u:  UPDATE parent SET aux = 'baz';  <waiting ...>
+step s1u:  UPDATE parent SET aux = 'bar'; 
+ERROR:  deadlock detected
+step s2u: <... completed>
+step s2c:  COMMIT; 
+step s1c:  COMMIT; 
+
+starting permutation: s2i s2u s1i s2c s1u s1c
+step s2i:  INSERT INTO child VALUES (2, 1); 
+step s2u:  UPDATE parent SET aux = 'baz'; 
+step s1i:  INSERT INTO child VALUES (1, 1);  <waiting ...>
+step s2c:  COMMIT; 
+step s1i: <... completed>
+ERROR:  could not serialize access due to concurrent update
+step s1u:  UPDATE parent SET aux = 'bar'; 
+ERROR:  current transaction is aborted, commands ignored until end of transaction block
+step s1c:  COMMIT;