aboutsummaryrefslogtreecommitdiff
path: root/src/test/isolation/specs/index-only-scan.spec
blob: 417bb02102e9d6009dc28ebc4865f72b6847a0d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# index-only scan test
#
# This test tries to expose problems with the interaction between index-only
# scans and SSI.
#
# Any overlap between the transactions must cause a serialization failure.

setup
{
  CREATE TABLE tabx (id int NOT NULL);
  INSERT INTO tabx SELECT generate_series(1,10000);
  ALTER TABLE tabx ADD PRIMARY KEY (id);
  CREATE TABLE taby (id int NOT NULL);
  INSERT INTO taby SELECT generate_series(1,10000);
  ALTER TABLE taby ADD PRIMARY KEY (id);
}
setup { VACUUM FREEZE ANALYZE tabx; }
setup { VACUUM FREEZE ANALYZE taby; }

teardown
{
  DROP TABLE tabx;
  DROP TABLE taby;
}

session "s1"
setup
{
  BEGIN ISOLATION LEVEL SERIALIZABLE;
  SET LOCAL seq_page_cost = 0.1;
  SET LOCAL random_page_cost = 0.1;
  SET LOCAL cpu_tuple_cost = 0.03;
}
step "rxwy1" { DELETE FROM taby WHERE id = (SELECT min(id) FROM tabx); }
step "c1" { COMMIT; }

session "s2"
setup
{
  BEGIN ISOLATION LEVEL SERIALIZABLE;
  SET LOCAL seq_page_cost = 0.1;
  SET LOCAL random_page_cost = 0.1;
  SET LOCAL cpu_tuple_cost = 0.03;
}
step "rywx2" { DELETE FROM tabx WHERE id = (SELECT min(id) FROM taby); }
step "c2" { COMMIT; }