| Parsed test spec with 3 sessions |
| |
| starting permutation: s1_show s1_commit s2_commit |
| step s1_show: SELECT current_setting('default_transaction_isolation') <> 'read committed'; |
| ?column? |
| -------- |
| f |
| (1 row) |
| |
| step s1_commit: COMMIT; |
| step s2_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s2_abort s3_forkeyshr s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_abort: ROLLBACK; |
| step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s1_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s2_commit s3_forkeyshr s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_commit: COMMIT; |
| step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 2 |
| (1 row) |
| |
| step s1_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s1_commit s3_forkeyshr s2_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s1_commit: COMMIT; |
| step s3_forkeyshr: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s2_abort s3_fornokeyupd s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_abort: ROLLBACK; |
| step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s1_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s2_commit s3_fornokeyupd s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_commit: COMMIT; |
| step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; |
| value |
| ----- |
| 2 |
| (1 row) |
| |
| step s1_commit: COMMIT; |
| |
| starting permutation: s1_lock s2_update s1_commit s3_fornokeyupd s2_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s1_commit: COMMIT; |
| step s3_fornokeyupd: SELECT * FROM dont_forget FOR NO KEY UPDATE; <waiting ...> |
| step s2_commit: COMMIT; |
| step s3_fornokeyupd: <... completed> |
| value |
| ----- |
| 2 |
| (1 row) |
| |
| |
| starting permutation: s1_lock s2_update s2_abort s3_forupd s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_abort: ROLLBACK; |
| step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> |
| step s1_commit: COMMIT; |
| step s3_forupd: <... completed> |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| |
| starting permutation: s1_lock s2_update s2_commit s3_forupd s1_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s2_commit: COMMIT; |
| step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> |
| step s1_commit: COMMIT; |
| step s3_forupd: <... completed> |
| value |
| ----- |
| 2 |
| (1 row) |
| |
| |
| starting permutation: s1_lock s2_update s1_commit s3_forupd s2_commit |
| step s1_lock: SELECT * FROM dont_forget FOR KEY SHARE; |
| value |
| ----- |
| 1 |
| (1 row) |
| |
| step s2_update: UPDATE dont_forget SET value = 2; |
| step s1_commit: COMMIT; |
| step s3_forupd: SELECT * FROM dont_forget FOR UPDATE; <waiting ...> |
| step s2_commit: COMMIT; |
| step s3_forupd: <... completed> |
| value |
| ----- |
| 2 |
| (1 row) |
| |