48 lines
1.2 KiB
RPMSpec
48 lines
1.2 KiB
RPMSpec
# Exercise the case where a read-only serializable transaction has
|
|
# SXACT_FLAG_RO_SAFE set in a parallel query. This variant is like
|
|
# two copies of #2 running at the same time, and exercises the case
|
|
# where another transaction has the same xmin, and it is the oldest.
|
|
|
|
setup
|
|
{
|
|
CREATE TABLE foo AS SELECT generate_series(1, 10)::int a;
|
|
ALTER TABLE foo SET (parallel_workers = 2);
|
|
}
|
|
|
|
teardown
|
|
{
|
|
DROP TABLE foo;
|
|
}
|
|
|
|
session s1
|
|
setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; }
|
|
step s1r { SELECT * FROM foo; }
|
|
step s1c { COMMIT; }
|
|
|
|
session s2
|
|
setup {
|
|
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
|
|
SET parallel_setup_cost = 0;
|
|
SET parallel_tuple_cost = 0;
|
|
}
|
|
step s2r1 { SELECT * FROM foo; }
|
|
step s2r2 { SELECT * FROM foo; }
|
|
step s2c { COMMIT; }
|
|
|
|
session s3
|
|
setup { BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; }
|
|
step s3r { SELECT * FROM foo; }
|
|
step s3c { COMMIT; }
|
|
|
|
session s4
|
|
setup {
|
|
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY;
|
|
SET parallel_setup_cost = 0;
|
|
SET parallel_tuple_cost = 0;
|
|
}
|
|
step s4r1 { SELECT * FROM foo; }
|
|
step s4r2 { SELECT * FROM foo; }
|
|
step s4c { COMMIT; }
|
|
|
|
permutation s1r s3r s2r1 s4r1 s1c s2r2 s3c s4r2 s4c s2c
|