43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
# When an update propagates a preexisting lock on the updated tuple, make sure
|
|
# we don't ignore the lock in subsequent operations of the new version. (The
|
|
# version with the aborted savepoint uses a slightly different code path).
|
|
setup
|
|
{
|
|
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;
|
|
}
|
|
|
|
session s1
|
|
step s1b { BEGIN; }
|
|
step s1l { INSERT INTO child VALUES (1); }
|
|
step s1c { COMMIT; }
|
|
|
|
session s2
|
|
step s2b { BEGIN; }
|
|
step s2l { INSERT INTO child VALUES (1); }
|
|
step s2c { COMMIT; }
|
|
|
|
session s3
|
|
step s3b { BEGIN; }
|
|
step s3u { UPDATE parent SET c=lower(c); } # no key update
|
|
step s3u2 { UPDATE parent SET i = i; } # key update
|
|
step s3svu { SAVEPOINT f; UPDATE parent SET c = 'bbb'; ROLLBACK TO f; }
|
|
step s3d { DELETE FROM parent; }
|
|
step s3c { COMMIT; }
|
|
|
|
permutation s1b s1l s2b s2l s3b s3u s3d s1c s2c s3c
|
|
permutation s1b s1l s2b s2l s3b s3u s3svu s3d s1c s2c s3c
|
|
permutation s1b s1l s2b s2l s3b s3u2 s3d s1c s2c s3c
|
|
permutation s1b s1l s2b s2l s3b s3u2 s3svu s3d s1c s2c s3c
|
|
permutation s1b s1l s3b s3u s3d s1c s3c
|
|
permutation s1b s1l s3b s3u s3svu s3d s1c s3c
|
|
permutation s1b s1l s3b s3u2 s3d s1c s3c
|
|
permutation s1b s1l s3b s3u2 s3svu s3d s1c s3c
|