Parsed test spec with 2 sessions starting permutation: lock assign1 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) 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 (1 row) s1: NOTICE: length(x) = 6000 step assign1: <... completed> starting permutation: lock assign2 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) 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 (1 row) s1: NOTICE: length(x) = 6000 step assign2: <... completed> starting permutation: lock assign3 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) 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 (1 row) s1: NOTICE: length(r) = 6004 step assign3: <... completed> starting permutation: lock assign4 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) 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 (1 row) s1: NOTICE: length(r) = 6004 step assign4: <... completed> starting permutation: lock assign5 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) 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 (1 row) s1: NOTICE: length(r) = 6002 step assign5: <... completed> starting permutation: lock assign6 vacuum unlock pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) step lock: SELECT pg_advisory_lock(1); pg_advisory_lock ---------------- (1 row) step assign6: do $$ declare r record; begin insert into test1 values (2, repeat('bar', 3000)); insert into test1 values (3, repeat('baz', 4000)); for r in select test1.b from test1 loop delete from test1; commit; perform pg_advisory_lock(1); raise notice 'length(r) = %', length(r::text); end loop; end; $$; step vacuum: VACUUM test1; step unlock: SELECT pg_advisory_unlock(1); pg_advisory_unlock ------------------ t (1 row) s1: NOTICE: length(r) = 6002 s1: NOTICE: length(r) = 9002 s1: NOTICE: length(r) = 12002 step assign6: <... completed> starting permutation: fetch-after-commit pg_advisory_unlock_all ---------------------- (1 row) pg_advisory_unlock_all ---------------------- (1 row) s1: NOTICE: length(t) = 6000 s1: NOTICE: length(t) = 9000 s1: NOTICE: length(t) = 12000 step fetch-after-commit: do $$ declare r record; t text; begin insert into test1 values (2, repeat('bar', 3000)); insert into test1 values (3, repeat('baz', 4000)); for r in select test1.a from test1 loop commit; select b into t from test1 where a = r.a; raise notice 'length(t) = %', length(t); end loop; end; $$;