Parsed test spec with 2 sessions starting permutation: s1l s1svp s1d s1r s2l s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; key|value ---+----- 1| 1 (1 row) step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; key|value ---+----- 1| 1 (1 row) step s1r: ROLLBACK TO f; step s2l: SELECT * FROM foo FOR UPDATE; step s1c: COMMIT; step s2l: <... completed> key|value ---+----- 1| 1 (1 row) step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; key|value ---+----- 1| 1 (1 row) step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; key|value ---+----- 1| 1 (1 row) step s2l: SELECT * FROM foo FOR UPDATE; step s1r: ROLLBACK TO f; step s1c: COMMIT; step s2l: <... completed> key|value ---+----- 1| 1 (1 row) step s2c: COMMIT; starting permutation: s1l s1svp s1d s1r s2l2 s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; key|value ---+----- 1| 1 (1 row) step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; key|value ---+----- 1| 1 (1 row) step s1r: ROLLBACK TO f; step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; key|value ---+----- 1| 1 (1 row) step s1c: COMMIT; step s2c: COMMIT; starting permutation: s1l s1svp s1d s2l2 s1r s1c s2c step s1l: SELECT * FROM foo FOR KEY SHARE; key|value ---+----- 1| 1 (1 row) step s1svp: SAVEPOINT f; step s1d: SELECT * FROM foo FOR NO KEY UPDATE; key|value ---+----- 1| 1 (1 row) step s2l2: SELECT * FROM foo FOR NO KEY UPDATE; step s1r: ROLLBACK TO f; step s2l2: <... completed> key|value ---+----- 1| 1 (1 row) step s1c: COMMIT; step s2c: COMMIT;