Conflict graph
Nodes are the committed transactions, edges are conflicting operation pairs in the order they happened. An edge from A to B says that in any equivalent serial schedule, A must run before B.
Updated: The on-call roster empties — PostgreSQL 16 — REPEATABLE READ
Not conflict-serializable
T1 must run before T2, and T2 must run before T1 — which is impossible, so no order of these transactions one after another produces this outcome.
Conflicts
- T1 → T2read then write, key 2, steps 2→5, via a predicate read
- T2 → T1read then write, key 1, steps 3→4, via a predicate read
Nodes are the committed transactions, edges are conflicting operation pairs in the order they happened. An edge from A to B says that in any equivalent serial schedule, A must run before B.