--- /dev/null
+Parsed test spec with 4 sessions
+
+starting permutation: s1_advlock s2_update s3_update s4_update s1_chain s1_begin s1_grablock s1_advunlock s1_commit
+step s1_advlock: SELECT pg_advisory_lock(142857);
+pg_advisory_lock
+
+
+step s2_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; <waiting ...>
+step s3_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; <waiting ...>
+step s4_update: UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; <waiting ...>
+step s1_chain: UPDATE pktab SET data = DEFAULT;
+step s1_begin: BEGIN;
+step s1_grablock: SELECT * FROM pktab FOR KEY SHARE;
+id data
+
+1 2
+step s1_advunlock: SELECT pg_advisory_unlock(142857);
+pg_advisory_unlock
+
+t
+step s2_update: <... completed>
+step s3_update: <... completed>
+step s4_update: <... completed>
+step s1_commit: COMMIT;
--- /dev/null
+setup {
+ DROP TABLE IF EXISTS pktab;
+ CREATE TABLE pktab (id int PRIMARY KEY, data SERIAL NOT NULL);
+ INSERT INTO pktab VALUES (1, DEFAULT);
+}
+
+teardown {
+ DROP TABLE pktab;
+}
+
+session "s1"
+step "s1_advlock" { SELECT pg_advisory_lock(142857); }
+step "s1_chain" { UPDATE pktab SET data = DEFAULT; }
+step "s1_begin" { BEGIN; }
+step "s1_grablock" { SELECT * FROM pktab FOR KEY SHARE; }
+step "s1_advunlock" { SELECT pg_advisory_unlock(142857); }
+step "s1_commit" { COMMIT; }
+
+session "s2"
+step "s2_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; }
+
+session "s3"
+step "s3_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; }
+
+session "s4"
+step "s4_update" { UPDATE pktab SET data = DEFAULT WHERE pg_advisory_lock_shared(142857) IS NOT NULL; }
+
+permutation "s1_advlock" "s2_update" "s3_update" "s4_update" "s1_chain" "s1_begin" "s1_grablock" "s1_advunlock" "s1_commit"