Parsed test spec with 5 sessions starting permutation: take-locks s1-start-operation s2-start-operation s3-start-operation show-progress release-locks-1 show-progress release-locks-2 show-progress release-locks-3 step take-locks: -- Locks for steps of sample operation in s1 SELECT pg_advisory_lock(10); SELECT pg_advisory_lock(11); SELECT pg_advisory_lock(12); -- Locks for steps of sample operation in s2 SELECT pg_advisory_lock(20); SELECT pg_advisory_lock(21); SELECT pg_advisory_lock(22); -- Locks for steps of sample operation in s3 SELECT pg_advisory_lock(30); SELECT pg_advisory_lock(31); SELECT pg_advisory_lock(32); pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) pg_advisory_lock --------------------------------------------------------------------- (1 row) step s1-start-operation: SELECT sample_operation(1337, 10, -1); step s2-start-operation: SELECT sample_operation(1337, 20, 2); step s3-start-operation: SELECT sample_operation(3778, 30, 9); step show-progress: SELECT show_progress(1337); SELECT show_progress(3778); show_progress --------------------------------------------------------------------- (0,0) (1,0) (0,0) (1,0) (4 rows) show_progress --------------------------------------------------------------------- (0,0) (1,0) (2 rows) step release-locks-1: -- Release the locks of first steps of sample operations SELECT pg_advisory_unlock(10); SELECT pg_advisory_unlock(20); SELECT pg_advisory_unlock(30); pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) step show-progress: SELECT show_progress(1337); SELECT show_progress(3778); show_progress --------------------------------------------------------------------- (0,-1) (1,0) (0,2) (1,0) (4 rows) show_progress --------------------------------------------------------------------- (0,9) (1,0) (2 rows) step release-locks-2: -- Release the locks of second steps of sample operations SELECT pg_advisory_unlock(11); SELECT pg_advisory_unlock(21); SELECT pg_advisory_unlock(31); pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) step show-progress: SELECT show_progress(1337); SELECT show_progress(3778); show_progress --------------------------------------------------------------------- (0,-1) (1,-1) (0,2) (1,2) (4 rows) show_progress --------------------------------------------------------------------- (0,9) (1,9) (2 rows) step release-locks-3: -- Release the locks of final steps of sample operations SELECT pg_advisory_unlock(12); SELECT pg_advisory_unlock(22); SELECT pg_advisory_unlock(32); pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) pg_advisory_unlock --------------------------------------------------------------------- t (1 row) step s1-start-operation: <... completed> sample_operation --------------------------------------------------------------------- (1 row) step s2-start-operation: <... completed> sample_operation --------------------------------------------------------------------- (1 row) step s3-start-operation: <... completed> sample_operation --------------------------------------------------------------------- (1 row)