1eval set session autocommit=$autocommit;
2let $is_gaplock_target = `SELECT @@autocommit = 0 && '$select_lock' != '' && '$expect_gap_lock_errors' = 1`;
3
4if ($is_gaplock_target)
5{
6# rnd_init
7--error ER_UNKNOWN_ERROR
8eval select * from gap1 limit 1 $select_lock;
9--error ER_UNKNOWN_ERROR
10eval select * from gap1 where value != 100 limit 1 $select_lock;
11# index_read_map
12--error ER_UNKNOWN_ERROR
13eval select * from gap1 where id1=1 $select_lock;
14--error ER_UNKNOWN_ERROR
15eval select * from gap1 where id1=1 and id2= 1 $select_lock;
16# read_range_first
17--error ER_UNKNOWN_ERROR
18eval select * from gap1 where id1=1 and id2= 1 and id3 != 1 $select_lock;
19--error ER_UNKNOWN_ERROR
20eval select * from gap1 where id1=1 and id2= 1 and id3
21  between 1 and 3 $select_lock;
22--error ER_UNKNOWN_ERROR
23eval select * from gap1 where id1=1 and id2= 1 order by id3 asc
24  limit 1 $select_lock;
25--error ER_UNKNOWN_ERROR
26eval select * from gap1 where id1=1 and id2= 1 order by id3 desc
27  limit 1 $select_lock;
28# index_first
29--error ER_UNKNOWN_ERROR
30eval select * from gap1 order by id1 asc limit 1 $select_lock;
31--error ER_UNKNOWN_ERROR
32eval select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 $select_lock;
33# index_last
34--error ER_UNKNOWN_ERROR
35eval select * from gap1 order by id1 desc limit 1 $select_lock;
36--error ER_UNKNOWN_ERROR
37eval select * from gap1 order by id1 desc, id2 desc, id3 desc
38  limit 1 $select_lock;
39# secondary index lookup
40--error ER_UNKNOWN_ERROR
41eval select * from gap1 force index(i) where c1=1 $select_lock;
42# unique index lookup, ensure no gap lock errors as this is effectively a
43# single point select that does not lock ranges or gaps of keys
44eval select * from gap3 force index(ui) where value=1 $select_lock;
45# primary key lookup, ensure no gap lock errors as these are effectively
46# single point selects that do not lock ranges or gaps of keys
47eval select * from gap1 where id1=1 and id2=1 and id3=1 $select_lock;
48eval select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) $select_lock;
49eval select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
50  order by c1 $select_lock;
51eval select * from gap3 where id=1 $select_lock;
52eval select * from gap4 where id=1 $select_lock;
53eval select * from gap4 where id in (1, 2, 3) $select_lock;
54--error ER_UNKNOWN_ERROR
55eval select * from gap4 $select_lock;
56--error ER_UNKNOWN_ERROR
57eval select * from gap4 where id between 3 and 7 $select_lock;
58}
59
60if (!$is_gaplock_target)
61{
62eval select * from gap1 limit 1 $select_lock;
63eval select * from gap1 where value != 100 limit 1 $select_lock;
64eval select * from gap1 where id1=1 $select_lock;
65eval select * from gap1 where id1=1 and id2= 1 $select_lock;
66eval select * from gap1 where id1=1 and id2= 1 and id3 != 1 $select_lock;
67eval select * from gap1 where id1=1 and id2= 1 and id3
68  between 1 and 3 $select_lock;
69eval select * from gap1 where id1=1 and id2= 1 order by id3 asc
70  limit 1 $select_lock;
71eval select * from gap1 where id1=1 and id2= 1 order by id3 desc
72  limit 1 $select_lock;
73eval select * from gap1 order by id1 asc limit 1 $select_lock;
74eval select * from gap1 order by id1 asc, id2 asc, id3 asc limit 1 $select_lock;
75eval select * from gap1 order by id1 desc limit 1 $select_lock;
76eval select * from gap1 order by id1 desc, id2 desc, id3 desc
77  limit 1 $select_lock;
78eval select * from gap1 force index(i) where c1=1 $select_lock;
79eval select * from gap3 force index(ui) where value=1 $select_lock;
80eval select * from gap1 where id1=1 and id2=1 and id3=1 $select_lock;
81eval select * from gap1 where id1=1 and id2=1 and id3 in (1, 2, 3) $select_lock;
82eval select * from gap1 where id1=1 and id2=1 and id3=1 and value=1
83  order by c1 $select_lock;
84eval select * from gap3 where id=1 $select_lock;
85eval select * from gap4 where id=1 $select_lock;
86eval select * from gap4 where id in (1, 2, 3) $select_lock;
87eval select * from gap4 $select_lock;
88eval select * from gap4 where id between 3 and 7 $select_lock;
89}
90