setup { DROP TABLE IF EXISTS foo; CREATE TABLE foo ( key int PRIMARY KEY, value int ); } teardown { DROP TABLE foo; } session "s1" setup { SET log_lock_waits = on; SET client_min_messages = LOG; } step "s1-lock" { BEGIN; LOCK TABLE foo IN SHARE MODE; } step "s1-commit" { SELECT pg_sleep(1.5); COMMIT; } session "s2" setup { SET log_lock_waits = on; SET client_min_messages = LOG; } step "s2-lock" { BEGIN; LOCK TABLE foo IN SHARE MODE; } step "s2-commit" { SELECT pg_sleep(1.5); COMMIT; } session "s3" setup { SET log_lock_waits = on; SET client_min_messages = LOG; SET statement_timeout = 1100; } step "s3-lock" { BEGIN; LOCK TABLE foo IN EXCLUSIVE MODE; } step "s3-commit" { ROLLBACK; } permutation "s1-lock" "s2-lock" "s3-lock" "s1-commit" "s2-commit" "s3-commit"