lock.sql
text/plain
Filename: lock.sql
Type: text/plain
Part: 0
begin;
values ('for key share') /*, ('') */ order by random() limit 1 \gset
select pg_sleep(random() * 0.03);
select id from t where id=3 :column1 ;
select random() > .0 as update \gset
\if :update
select pg_sleep(random() * 0.03);
update t set x=x+1 where id=3;
\endif
/*
select random() > .0 as update2 \gset
\if :update2
savepoint foo;
update t set x=x+1 where id=3;
\endif
select random() > .5 as rollback_to \gset
\if :rollback_to
rollback to foo;
\endif
*/
select random() > .0 as commit \gset
\if :commit
commit;
\else
rollback;
\endif
select pg_sleep(random() * 0.03);
vacuum freeze t;