setup { create extension pageinspect; create table parent (i int, c char(3)); create unique index parent_idx on parent (i); insert into parent values (1, 'AAA'); create table child (i int references parent(i)); } teardown { -- drop table child, parent; -- drop extension pageinspect; } session "s1" step "s1b" { BEGIN; select txid_current(); } step "s1i" { INSERT INTO child VALUES (1); } step "s1e" { SELECT lp, t_xmin, t_xmax, to_hex(t_infomask) as mask, to_hex(t_infomask2) as mask2 FROM heap_page_items(get_raw_page('parent', 0)); } step "s1e2" { SELECT lp, t_xmax, members.* FROM heap_page_items(get_raw_page('parent', 0)), pg_get_multixact_members(t_xmax) members where t_infomask & x'1000'::int <> 0; } step "s1c" { COMMIT; } session "s2" step "s2b" { BEGIN; select txid_current(); } step "s2u" { UPDATE parent SET c=lower(c); } # step "s2u2" { UPDATE parent SET i=i; } step "s2svu" { SAVEPOINT f; UPDATE parent SET c = 'bbb'; ROLLBACK TO f; } step "s2d" { DELETE FROM parent returning ctid; } step "s2c" { COMMIT; } permutation "s1b" "s1i" "s2b" "s2u" "s2svu" "s1e" "s1e2" "s2d" "s1e" "s1e2" "s1c" "s2c" #permutation "s1b" "s1i" "s2b" "s2u2" "s2d" "s1c" "s2c" #permutation "s1b" "s1i" "s2b" "s2d" "s1c" "s2c"