-Parsed test spec with 2 sessions
+Parsed test spec with 3 sessions
-starting permutation: rxy1 wx1 c1 rxy2 wy2 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step c1: commit;
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10050
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step c2: commit;
+starting permutation: ra1 ro2 wo1 c1 wa2 c2
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-starting permutation: rxy2 wy2 c2 rxy1 wx1 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+{1}
+step ro2: select count(*) from other_tbl;
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step c2: commit;
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10050
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step c1: commit;
-
-starting permutation: rxy3 wx3 c1 rxy4 wy4 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
-
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
-
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step c2: commit;
-
-starting permutation: rxy4 wy4 c2 rxy3 wx3 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
-
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+step wa2: insert into gin_tbl values (array[1]);
+ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
-
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c1: commit;
-starting permutation: rxy1 wx1 rxy2 c1 wy2 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: ro2 ra1 wo1 c1 wa2 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
+0
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-10000
+{1}
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+step wa2: insert into gin_tbl values (array[1]);
ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-starting permutation: rxy1 wx1 rxy2 wy2 c1 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: ro2 ra1 wo1 wa2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
+0
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+{1}
+step wo1: insert into other_tbl values (1);
+step wa2: insert into gin_tbl values (array[1]);
step c1: commit;
step c2: commit;
ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy1 wx1 rxy2 wy2 c2 c1
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
+starting permutation: ra1 ro2 wa2 wo1 c1 c2
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+{1}
+step ro2: select count(*) from other_tbl;
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step c2: commit;
+0
+step wa2: insert into gin_tbl values (array[1]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step c2: commit;
ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy1 rxy2 wx1 c1 wy2 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: rb1 ro2 wo1 c1 wb2 c2
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+1
+step ro2: select count(*) from other_tbl;
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+step wb2: insert into gin_tbl values (array[2]);
ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-starting permutation: rxy1 rxy2 wx1 wy2 c1 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: ro2 rb1 wo1 c1 wb2 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+0
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+1
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step c2: commit;
+step wb2: insert into gin_tbl values (array[2]);
ERROR: could not serialize access due to read/write dependencies among transactions
-
-starting permutation: rxy1 rxy2 wx1 wy2 c2 c1
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
step c2: commit;
-step c1: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy1 rxy2 wy2 wx1 c1 c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: ro2 rb1 wo1 wb2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+0
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+1
+step wo1: insert into other_tbl values (1);
+step wb2: insert into gin_tbl values (array[2]);
step c1: commit;
step c2: commit;
ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy1 rxy2 wy2 wx1 c2 c1
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: rb1 ro2 wb2 wo1 c1 c2
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+1
+step ro2: select count(*) from other_tbl;
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step c2: commit;
+0
+step wb2: insert into gin_tbl values (array[2]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-
-starting permutation: rxy1 rxy2 wy2 c2 wx1 c1
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
step c2: commit;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
ERROR: could not serialize access due to read/write dependencies among transactions
-step c1: commit;
-starting permutation: rxy2 rxy1 wx1 c1 wy2 c2
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+starting permutation: rc1 ro2 wo1 c1 wc2 c2
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+1
+step ro2: select count(*) from other_tbl;
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+step wc2: insert into gin_tbl values (array[800]);
ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-starting permutation: rxy2 rxy1 wx1 wy2 c1 c2
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+starting permutation: ro2 rc1 wo1 c1 wc2 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+0
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
+1
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step c2: commit;
+step wc2: insert into gin_tbl values (array[800]);
ERROR: could not serialize access due to read/write dependencies among transactions
-
-starting permutation: rxy2 rxy1 wx1 wy2 c2 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
step c2: commit;
-step c1: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy2 rxy1 wy2 wx1 c1 c2
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+starting permutation: ro2 rc1 wo1 wc2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+0
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+1
+step wo1: insert into other_tbl values (1);
+step wc2: insert into gin_tbl values (array[800]);
step c1: commit;
step c2: commit;
ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy2 rxy1 wy2 wx1 c2 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+starting permutation: rc1 ro2 wc2 wo1 c1 c2
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+1
+step ro2: select count(*) from other_tbl;
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step c2: commit;
+0
+step wc2: insert into gin_tbl values (array[800]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-
-starting permutation: rxy2 rxy1 wy2 c2 wx1 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10000
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
step c2: commit;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
ERROR: could not serialize access due to read/write dependencies among transactions
-step c1: commit;
-starting permutation: rxy2 wy2 rxy1 wx1 c1 c2
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
+starting permutation: ra1 ro2 wo1 c1 wb2 c2
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+{1}
+step ro2: select count(*) from other_tbl;
count
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wb2: insert into gin_tbl values (array[2]);
step c2: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: rxy2 wy2 rxy1 wx1 c2 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
+starting permutation: ro2 ra1 wo1 c1 wc2 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
+0
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-10000
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-step c2: commit;
+{1}
+step wo1: insert into other_tbl values (1);
step c1: commit;
-ERROR: could not serialize access due to read/write dependencies among transactions
-
-starting permutation: rxy2 wy2 rxy1 c2 wx1 c1
-step rxy2: select count(*) from gin_tbl where p @> array[5,6];
-count
-
-10000
-step wy2: insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g;
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
-count
-
-10000
+step wc2: insert into gin_tbl values (array[800]);
step c2: commit;
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
-ERROR: could not serialize access due to read/write dependencies among transactions
-step c1: commit;
-starting permutation: rxy3 wx3 rxy4 c1 wy4 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: ro2 rb1 wo1 wa2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+0
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-4
+1
+step wo1: insert into other_tbl values (1);
+step wa2: insert into gin_tbl values (array[1]);
step c1: commit;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
step c2: commit;
-starting permutation: rxy3 wx3 rxy4 wy4 c1 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: rc1 ro2 wa2 wo1 c1 c2
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+1
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+0
+step wa2: insert into gin_tbl values (array[1]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
step c2: commit;
-starting permutation: rxy3 wx3 rxy4 wy4 c2 c1
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: rb1 ro2 wo1 c1 wa2 c2
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+1
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step c2: commit;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wa2: insert into gin_tbl values (array[1]);
+step c2: commit;
-starting permutation: rxy3 rxy4 wx3 c1 wy4 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: ro2 rb1 wo1 c1 wc2 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+0
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+1
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+step wc2: insert into gin_tbl values (array[800]);
step c2: commit;
-starting permutation: rxy3 rxy4 wx3 wy4 c1 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: ro2 ra1 wo1 wb2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
+0
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+{1}
+step wo1: insert into other_tbl values (1);
+step wb2: insert into gin_tbl values (array[2]);
step c1: commit;
step c2: commit;
-starting permutation: rxy3 rxy4 wx3 wy4 c2 c1
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: rc1 ro2 wb2 wo1 c1 c2
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+1
+step ro2: select count(*) from other_tbl;
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step c2: commit;
+0
+step wb2: insert into gin_tbl values (array[2]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step c2: commit;
-starting permutation: rxy3 rxy4 wy4 wx3 c1 c2
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: rc1 ro2 wo1 c1 wa2 c2
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+1
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wa2: insert into gin_tbl values (array[1]);
step c2: commit;
-starting permutation: rxy3 rxy4 wy4 wx3 c2 c1
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+starting permutation: ro2 rc1 wo1 c1 wb2 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+0
+step rc1: select count(*) from gin_tbl where p @> array[800];
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c2: commit;
+1
+step wo1: insert into other_tbl values (1);
step c1: commit;
-
-starting permutation: rxy3 rxy4 wy4 c2 wx3 c1
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
-
-4
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
-
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+step wb2: insert into gin_tbl values (array[2]);
step c2: commit;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c1: commit;
-starting permutation: rxy4 rxy3 wx3 c1 wy4 c2
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+starting permutation: ro2 ra1 wo1 wc2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
+0
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+{1}
+step wo1: insert into other_tbl values (1);
+step wc2: insert into gin_tbl values (array[800]);
step c1: commit;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
step c2: commit;
-starting permutation: rxy4 rxy3 wx3 wy4 c1 c2
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+starting permutation: rb1 ro2 wc2 wo1 c1 c2
+step rb1: select count(*) from gin_tbl where p @> array[2];
count
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+1
+step ro2: select count(*) from other_tbl;
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+0
+step wc2: insert into gin_tbl values (array[800]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
step c2: commit;
-starting permutation: rxy4 rxy3 wx3 wy4 c2 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
+starting permutation: fu ra1 ro2 wo1 c1 wa2 c2
+step fu: alter index ginidx set (fastupdate = on);
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+{1}
+step ro2: select count(*) from other_tbl;
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step c2: commit;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wa2: insert into gin_tbl values (array[1]);
+ERROR: could not serialize access due to read/write dependencies among transactions
+step c2: commit;
-starting permutation: rxy4 rxy3 wy4 wx3 c1 c2
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
+starting permutation: fu ra1 ro2 wo1 c1 wb2 c2
+step fu: alter index ginidx set (fastupdate = on);
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+{1}
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wb2: insert into gin_tbl values (array[2]);
+ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-starting permutation: rxy4 rxy3 wy4 wx3 c2 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
+starting permutation: ra1 ro2 wo1 c1 fu wa2 c2
+step ra1: select * from gin_tbl where p @> array[1] limit 1;
+p
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+{1}
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c2: commit;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
-
-starting permutation: rxy4 rxy3 wy4 c2 wx3 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
-
-4
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
-
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
+step fu: alter index ginidx set (fastupdate = on);
+step wa2: insert into gin_tbl values (array[1]);
+ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c1: commit;
-starting permutation: rxy4 wy4 rxy3 wx3 c1 c2
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+starting permutation: rd1 ro2 wo1 c1 wd2 c2
+step rd1: select count(*) from gin_tbl where p @> array[2000];
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+0
+step ro2: select count(*) from other_tbl;
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
+step wd2: insert into gin_tbl values (array[2000]);
+ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-starting permutation: rxy4 wy4 rxy3 wx3 c2 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
+starting permutation: ro2 rd1 wo1 c1 wd2 c2
+step ro2: select count(*) from other_tbl;
count
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
+0
+step rd1: select count(*) from gin_tbl where p @> array[2000];
count
-4
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c2: commit;
+0
+step wo1: insert into other_tbl values (1);
step c1: commit;
-
-starting permutation: rxy4 wy4 rxy3 c2 wx3 c1
-step rxy4: select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000];
-count
-
-4
-step wy4: insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g;
-step rxy3: select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000];
-count
-
-4
+step wd2: insert into gin_tbl values (array[2000]);
+ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
-step wx3: insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g;
-step c1: commit;
-starting permutation: rxy1 rxy2fu wx1 c1 wy2fu c2
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: ro2 rd1 wo1 wd2 c1 c2
+step ro2: select count(*) from other_tbl;
count
-10000
-step rxy2fu: select count(*) from gin_tbl where p @> array[10000,10005];
+0
+step rd1: select count(*) from gin_tbl where p @> array[2000];
count
0
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+step wo1: insert into other_tbl values (1);
+step wd2: insert into gin_tbl values (array[2000]);
step c1: commit;
-step wy2fu: insert into gin_tbl select g, array[10000,10005] from
- generate_series(20051, 20100) g;
step c2: commit;
+ERROR: could not serialize access due to read/write dependencies among transactions
-starting permutation: fu1 rxy1 rxy2fu wx1 c1 wy2fu c2
-step fu1: alter index ginidx set (fastupdate = on);
- commit;
- begin isolation level serializable;
- set enable_seqscan=off;
-step rxy1: select count(*) from gin_tbl where p @> array[4,5];
+starting permutation: rd1 ro2 wd2 wo1 c1 c2
+step rd1: select count(*) from gin_tbl where p @> array[2000];
count
-10000
-step rxy2fu: select count(*) from gin_tbl where p @> array[10000,10005];
+0
+step ro2: select count(*) from other_tbl;
count
0
-step wx1: insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g;
+step wd2: insert into gin_tbl values (array[2000]);
+step wo1: insert into other_tbl values (1);
step c1: commit;
-step wy2fu: insert into gin_tbl select g, array[10000,10005] from
- generate_series(20051, 20100) g;
-ERROR: could not serialize access due to read/write dependencies among transactions
step c2: commit;
+ERROR: could not serialize access due to read/write dependencies among transactions
setup
{
- create table gin_tbl(id int4, p int4[]);
- insert into gin_tbl select g, array[g, g*2,g*3] from generate_series(1, 10000) g;
- insert into gin_tbl select g, array[4,5,6] from generate_series(10001, 20000) g;
+ create table gin_tbl(p int4[]);
+ insert into gin_tbl select array[1] from generate_series(1, 8192) g;
+ insert into gin_tbl select array[g] from generate_series(2, 800) g;
create index ginidx on gin_tbl using gin(p) with (fastupdate = off);
+ create table other_tbl(v int4);
}
teardown
{
drop table gin_tbl;
+ drop table other_tbl;
}
session "s1"
set enable_seqscan=off;
}
-# enable pending list for a small subset of tests
-step "fu1" { alter index ginidx set (fastupdate = on);
- commit;
- begin isolation level serializable;
- set enable_seqscan=off; }
-
-step "rxy1" { select count(*) from gin_tbl where p @> array[4,5]; }
-step "wx1" { insert into gin_tbl select g, array[5,6] from generate_series
- (20001, 20050) g; }
-step "rxy3" { select count(*) from gin_tbl where p @> array[1,2] or
- p @> array[100,200] or p @> array[500,1000] or p @> array[1000,2000]; }
-step "wx3" { insert into gin_tbl select g, array[g,g*2] from generate_series
- (1, 50) g; }
+step "ra1" { select * from gin_tbl where p @> array[1] limit 1; }
+step "rb1" { select count(*) from gin_tbl where p @> array[2]; }
+step "rc1" { select count(*) from gin_tbl where p @> array[800]; }
+step "rd1" { select count(*) from gin_tbl where p @> array[2000]; }
+
+step "wo1" { insert into other_tbl values (1); }
+
step "c1" { commit; }
session "s2"
set enable_seqscan=off;
}
-step "rxy2" { select count(*) from gin_tbl where p @> array[5,6]; }
-step "rxy2fu" { select count(*) from gin_tbl where p @> array[10000,10005]; }
-step "wy2" { insert into gin_tbl select g, array[4,5] from
- generate_series(20051, 20100) g; }
-step "wy2fu" { insert into gin_tbl select g, array[10000,10005] from
- generate_series(20051, 20100) g; }
-step "rxy4" { select count(*) from gin_tbl where p @> array[4000,8000] or
- p @> array[5000,10000] or p @> array[6000,12000] or
- p @> array[8000,16000]; }
-step "wy4" { insert into gin_tbl select g, array[g,g*2] from generate_series
- (10000, 10050) g; }
-step "c2" { commit; }
-
-
-# An index scan (from one transaction) and an index insert (from another transaction)
-# try to access the same part of the index but one transaction commits before other
-# transaction begins so no r-w conflict.
-
-permutation "rxy1" "wx1" "c1" "rxy2" "wy2" "c2"
-permutation "rxy2" "wy2" "c2" "rxy1" "wx1" "c1"
-
-# An index scan (from one transaction) and an index insert (from another transaction)
-# try to access different parts of the index and also one transaction commits before
-# other transaction begins, so no r-w conflict.
-
-permutation "rxy3" "wx3" "c1" "rxy4" "wy4" "c2"
-permutation "rxy4" "wy4" "c2" "rxy3" "wx3" "c1"
-
-
-# An index scan (from one transaction) and an index insert (from another transaction)
-# try to access the same part of the index and one transaction begins before other
-# transaction commits so there is a r-w conflict.
-
-permutation "rxy1" "wx1" "rxy2" "c1" "wy2" "c2"
-permutation "rxy1" "wx1" "rxy2" "wy2" "c1" "c2"
-permutation "rxy1" "wx1" "rxy2" "wy2" "c2" "c1"
-permutation "rxy1" "rxy2" "wx1" "c1" "wy2" "c2"
-permutation "rxy1" "rxy2" "wx1" "wy2" "c1" "c2"
-permutation "rxy1" "rxy2" "wx1" "wy2" "c2" "c1"
-permutation "rxy1" "rxy2" "wy2" "wx1" "c1" "c2"
-permutation "rxy1" "rxy2" "wy2" "wx1" "c2" "c1"
-permutation "rxy1" "rxy2" "wy2" "c2" "wx1" "c1"
-permutation "rxy2" "rxy1" "wx1" "c1" "wy2" "c2"
-permutation "rxy2" "rxy1" "wx1" "wy2" "c1" "c2"
-permutation "rxy2" "rxy1" "wx1" "wy2" "c2" "c1"
-permutation "rxy2" "rxy1" "wy2" "wx1" "c1" "c2"
-permutation "rxy2" "rxy1" "wy2" "wx1" "c2" "c1"
-permutation "rxy2" "rxy1" "wy2" "c2" "wx1" "c1"
-permutation "rxy2" "wy2" "rxy1" "wx1" "c1" "c2"
-permutation "rxy2" "wy2" "rxy1" "wx1" "c2" "c1"
-permutation "rxy2" "wy2" "rxy1" "c2" "wx1" "c1"
-
-# An index scan (from one transaction) and an index insert (from another transaction)
-# try to access different parts of the index so no r-w conflict.
-
-permutation "rxy3" "wx3" "rxy4" "c1" "wy4" "c2"
-permutation "rxy3" "wx3" "rxy4" "wy4" "c1" "c2"
-permutation "rxy3" "wx3" "rxy4" "wy4" "c2" "c1"
-permutation "rxy3" "rxy4" "wx3" "c1" "wy4" "c2"
-permutation "rxy3" "rxy4" "wx3" "wy4" "c1" "c2"
-permutation "rxy3" "rxy4" "wx3" "wy4" "c2" "c1"
-permutation "rxy3" "rxy4" "wy4" "wx3" "c1" "c2"
-permutation "rxy3" "rxy4" "wy4" "wx3" "c2" "c1"
-permutation "rxy3" "rxy4" "wy4" "c2" "wx3" "c1"
-permutation "rxy4" "rxy3" "wx3" "c1" "wy4" "c2"
-permutation "rxy4" "rxy3" "wx3" "wy4" "c1" "c2"
-permutation "rxy4" "rxy3" "wx3" "wy4" "c2" "c1"
-permutation "rxy4" "rxy3" "wy4" "wx3" "c1" "c2"
-permutation "rxy4" "rxy3" "wy4" "wx3" "c2" "c1"
-permutation "rxy4" "rxy3" "wy4" "c2" "wx3" "c1"
-permutation "rxy4" "wy4" "rxy3" "wx3" "c1" "c2"
-permutation "rxy4" "wy4" "rxy3" "wx3" "c2" "c1"
-permutation "rxy4" "wy4" "rxy3" "c2" "wx3" "c1"
-
-# Test fastupdate = on. First test should pass because fastupdate is off and
-# sessions touches different parts of index, second should fail because
-# with fastupdate on, then whole index should be under predicate lock.
-
-permutation "rxy1" "rxy2fu" "wx1" "c1" "wy2fu" "c2"
-permutation "fu1" "rxy1" "rxy2fu" "wx1" "c1" "wy2fu" "c2"
+step "ro2" { select count(*) from other_tbl; }
+
+step "wa2" { insert into gin_tbl values (array[1]); }
+step "wb2" { insert into gin_tbl values (array[2]); }
+step "wc2" { insert into gin_tbl values (array[800]); }
+step "wd2" { insert into gin_tbl values (array[2000]); }
+
+step "c2" { commit; }
+
+session "s3"
+step "fu" { alter index ginidx set (fastupdate = on); }
+
+# An index scan (from one transaction) and an index insert (from another
+# transaction) try to access the same part of the index. So, there is a
+# r-w conflict.
+
+permutation "ra1" "ro2" "wo1" "c1" "wa2" "c2"
+permutation "ro2" "ra1" "wo1" "c1" "wa2" "c2"
+permutation "ro2" "ra1" "wo1" "wa2" "c1" "c2"
+permutation "ra1" "ro2" "wa2" "wo1" "c1" "c2"
+
+permutation "rb1" "ro2" "wo1" "c1" "wb2" "c2"
+permutation "ro2" "rb1" "wo1" "c1" "wb2" "c2"
+permutation "ro2" "rb1" "wo1" "wb2" "c1" "c2"
+permutation "rb1" "ro2" "wb2" "wo1" "c1" "c2"
+
+permutation "rc1" "ro2" "wo1" "c1" "wc2" "c2"
+permutation "ro2" "rc1" "wo1" "c1" "wc2" "c2"
+permutation "ro2" "rc1" "wo1" "wc2" "c1" "c2"
+permutation "rc1" "ro2" "wc2" "wo1" "c1" "c2"
+
+# An index scan (from one transaction) and an index insert (from another
+# transaction) try to access different parts of the index. So, there is no
+# r-w conflict.
+
+permutation "ra1" "ro2" "wo1" "c1" "wb2" "c2"
+permutation "ro2" "ra1" "wo1" "c1" "wc2" "c2"
+permutation "ro2" "rb1" "wo1" "wa2" "c1" "c2"
+permutation "rc1" "ro2" "wa2" "wo1" "c1" "c2"
+
+permutation "rb1" "ro2" "wo1" "c1" "wa2" "c2"
+permutation "ro2" "rb1" "wo1" "c1" "wc2" "c2"
+permutation "ro2" "ra1" "wo1" "wb2" "c1" "c2"
+permutation "rc1" "ro2" "wb2" "wo1" "c1" "c2"
+
+permutation "rc1" "ro2" "wo1" "c1" "wa2" "c2"
+permutation "ro2" "rc1" "wo1" "c1" "wb2" "c2"
+permutation "ro2" "ra1" "wo1" "wc2" "c1" "c2"
+permutation "rb1" "ro2" "wc2" "wo1" "c1" "c2"
+
+# With fastupdate = on all index is under predicate lock. So we can't
+# distinguish particular keys.
+
+permutation "fu" "ra1" "ro2" "wo1" "c1" "wa2" "c2"
+permutation "fu" "ra1" "ro2" "wo1" "c1" "wb2" "c2"
+
+# Check fastupdate turned on concurrently.
+
+permutation "ra1" "ro2" "wo1" "c1" "fu" "wa2" "c2"
+
+# Tests for conflicts with previously non-existing key
+
+permutation "rd1" "ro2" "wo1" "c1" "wd2" "c2"
+permutation "ro2" "rd1" "wo1" "c1" "wd2" "c2"
+permutation "ro2" "rd1" "wo1" "wd2" "c1" "c2"
+permutation "rd1" "ro2" "wd2" "wo1" "c1" "c2"