# The deadlock detector has a special case for "simple" deadlocks. A simple # deadlock occurs when we attempt a lock upgrade while another process waits # for a lock upgrade on the same object; and the sought locks conflict with # those already held, so that neither process can complete its upgrade until # the other releases locks. Test this scenario. setup { CREATE TABLE a1 (); } teardown { DROP TABLE a1; } session "s1" setup { BEGIN; } step "s1as" { LOCK TABLE a1 IN ACCESS SHARE MODE; } step "s1ae" { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } step "s1c" { COMMIT; } session "s2" setup { BEGIN; } step "s2as" { LOCK TABLE a1 IN ACCESS SHARE MODE; } step "s2ae" { LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE; } step "s2c" { COMMIT; } permutation "s1as" "s2as" "s1ae" "s2ae" "s1c" "s2c"