Parsed test spec with 2 sessions starting permutation: lock assign1 vacuum unlock pg_advisory_unlock_all pg_advisory_unlock_all step lock: SELECT pg_advisory_lock(1); pg_advisory_lock step assign1: do $$ declare x text; begin select test1.b into x from test1; delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(x) = %', length(x); end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock t s1: NOTICE: length(x) = 6000 step assign1: <... completed> starting permutation: lock assign2 vacuum unlock pg_advisory_unlock_all pg_advisory_unlock_all step lock: SELECT pg_advisory_lock(1); pg_advisory_lock step assign2: do $$ declare x text; begin x := (select test1.b from test1); delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(x) = %', length(x); end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock t s1: NOTICE: length(x) = 6000 step assign2: <... completed> starting permutation: lock assign3 vacuum unlock pg_advisory_unlock_all pg_advisory_unlock_all step lock: SELECT pg_advisory_lock(1); pg_advisory_lock step assign3: do $$ declare r record; begin select * into r from test1; r.b := (select test1.b from test1); delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(r) = %', length(r::text); end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock t s1: NOTICE: length(r) = 6004 step assign3: <... completed> starting permutation: lock assign4 vacuum unlock pg_advisory_unlock_all pg_advisory_unlock_all step lock: SELECT pg_advisory_lock(1); pg_advisory_lock step assign4: do $$ declare r test2; begin select * into r from test1; delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(r) = %', length(r::text); end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock t s1: NOTICE: length(r) = 6004 step assign4: <... completed> starting permutation: lock assign5 vacuum unlock pg_advisory_unlock_all pg_advisory_unlock_all step lock: SELECT pg_advisory_lock(1); pg_advisory_lock step assign5: do $$ declare r record; begin for r in select test1.b from test1 loop null; end loop; delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(r) = %', length(r::text); end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock t s1: NOTICE: length(r) = 6002 step assign5: <... completed>