1--disable_warnings
2DROP TABLE IF EXISTS t1,t2,t3,t4,t5;
3--enable_warnings
4SET sql_mode='NO_ENGINE_SUBSTITUTION';
5######## Running INSERT tests for TINYINT ########
6
7# Create tables
8CREATE TABLE t1(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
9CREATE TABLE t2(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6));
10CREATE TABLE t3(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7));
11
12# Insert some rows with targeted values
13INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
14INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
15INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
16
17# Insert duplicates for parts of the clustered key
18INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
19INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
20
21# Insert permissible NULLs
22INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
23INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
24INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
25
26
27# Insert empty string ''
28INSERT INTO t1 VALUES('','',17,18,19,20,21);
29INSERT INTO t2 VALUES('','',17,18,19,20,21);
30INSERT INTO t3 VALUES('','',17,18,19,20,21);
31
32# Insert negative value to unsigned integer, positive value to signed integer, zero values
33INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
34INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
35INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
36INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
37INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
38INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
39INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
40INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
41INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
42
43# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
44INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
45INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
46INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
47
48--sorted_result
49SELECT * FROM t1;
50SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
51SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
52SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
53SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
54SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
55SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
56
57# Now select using various table access methods (full table scan, range scan, index scan etc.)
58## Full table scan ##
59--sorted_result
60SELECT * FROM t2;
61--sorted_result
62SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
63--sorted_result
64SELECT * FROM t2 WHERE c2 = 102;
65
66## Forward index scan, covering ##
67--sorted_result
68SELECT c1,c6 FROM t2;
69
70## Backward index scan, covering ##
71SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
72
73## Forward index scan, non-covering ##
74SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
75
76## Backward index scan, non-covering ##
77SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
78
79## ref type access
80SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
81SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
82SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
83SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
84
85## Range access, ordered ##
86SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
87SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
88SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
89SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
90SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
91SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
92SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
93SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
94SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
95SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
96SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
97SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
98SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
99SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
100SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
101SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
102SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
103SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
104SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
105SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
106SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
107SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
108
109## Range access, backwards scan ##
110SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
111SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
112SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
113SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
114SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
115SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
116SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
117SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
118SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
119SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
120SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
121SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
122SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
123SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
124SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
125SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
126SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
127SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
128SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
129SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
130SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
131SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
132## Full table scan ##
133--sorted_result
134SELECT * FROM t2;
135--sorted_result
136SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
137--sorted_result
138SELECT * FROM t2 WHERE c2 = 102;
139
140## Forward index scan, covering ##
141--sorted_result
142SELECT c1,c6 FROM t2;
143
144## Backward index scan, covering ##
145SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
146
147## Forward index scan, non-covering ##
148SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
149
150## Backward index scan, non-covering ##
151SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
152
153## ref type access
154SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
155SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
156SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
157SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
158
159## Range access, ordered ##
160SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
161SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
162SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
163SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
164SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
165SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
166SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
167SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
168SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
169SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
170SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
171SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
172SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
173SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
174SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
175SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
176SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
177SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
178SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
179SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
180SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
181SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
182
183## Range access, backwards scan ##
184SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
185SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
186SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
187SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
188SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
189SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
190SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
191SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
192SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
193SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
194SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
195SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
196SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
197SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
198SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
199SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
200SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
201SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
202SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
203SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
204SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
205SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
206## Full table scan ##
207--sorted_result
208SELECT * FROM t3;
209--sorted_result
210SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
211--sorted_result
212SELECT * FROM t3 WHERE c1 = 108;
213
214## Forward index scan, covering ##
215--sorted_result
216SELECT c2,c7 FROM t3;
217
218## Backward index scan, covering ##
219SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
220
221## Forward index scan, non-covering ##
222SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
223
224## Backward index scan, non-covering ##
225SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
226
227## ref type access
228SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
229SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
230SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
231SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
232
233## Range access, ordered ##
234SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
235SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
236SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
237SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
238SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
239SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
240SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
241SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
242SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
243SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
244SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
245SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
246SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
247SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
248SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
249SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
250SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
251SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
252SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
253SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
254SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
255SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
256
257## Range access, backwards scan ##
258SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
259SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
260SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
261SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
262SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
263SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
264SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
265SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
266SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
267SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
268SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
269SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
270SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
271SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
272SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
273SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
274SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
275SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
276SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
277SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
278SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
279SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
280## Full table scan ##
281--sorted_result
282SELECT * FROM t3;
283--sorted_result
284SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
285--sorted_result
286SELECT * FROM t3 WHERE c1 = 108;
287
288## Forward index scan, covering ##
289--sorted_result
290SELECT c2,c7 FROM t3;
291
292## Backward index scan, covering ##
293SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
294
295## Forward index scan, non-covering ##
296SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
297
298## Backward index scan, non-covering ##
299SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
300
301## ref type access
302SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
303SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
304SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
305SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
306
307## Range access, ordered ##
308SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
309SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
310SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
311SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
312SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
313SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
314SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
315SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
316SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
317SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
318SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
319SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
320SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
321SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
322SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
323SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
324SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
325SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
326SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
327SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
328SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
329SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
330
331## Range access, backwards scan ##
332SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
333SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
334SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
335SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
336SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
337SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
338SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
339SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
340SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
341SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
342SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
343SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
344SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
345SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
346SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
347SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
348SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
349SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
350SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
351SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
352SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
353SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
354
355# Using index for group-by
356--sorted_result
357SELECT c2 FROM t3 GROUP BY c2;
358--sorted_result
359SELECT DISTINCT c2 FROM t3;
360--sorted_result
361SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
362
363# Create tables with AUTO_INCREMENT columns and unique indexes
364CREATE TABLE t4(c1 TINYINT SIGNED NOT NULL AUTO_INCREMENT, c2 TINYINT UNSIGNED NULL, c3 TINYINT UNSIGNED NOT NULL, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
365CREATE TABLE t5(c1 TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 TINYINT SIGNED NOT NULL, c3 TINYINT SIGNED NOT NULL, c4 SMALLINT, c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
366
367# Test with AUTO_INCREMENT columns
368# Insert some rows
369INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
370INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
371# Insert 0 values, increments the value
372INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
373--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
374--if (!$auto_value) {
375--die "AUTO_INCREMENT didn't work well on 0"
376}
377INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
378--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
379--if (!$auto_value) {
380--die "AUTO_INCREMENT didn't work well on 0"
381}
382# Insert NULL,  no error, increments the value
383INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
384--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
385--if (!$auto_value) {
386--die "AUTO_INCREMENT didn't work well on NULL"
387}
388INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
389--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
390--if (!$auto_value) {
391--die "AUTO_INCREMENT didn't work well on NULL"
392}
393# Insert empty strings, increments the value
394INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
395--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
396--if (!$auto_value) {
397--die "AUTO_INCREMENT didn't work well on ''"
398}
399INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
400--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
401--if (!$auto_value) {
402--die "AUTO_INCREMENT didn't work well on ''"
403}
404# Insert strings with numeric part, inserts the numeric part of the string
405INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
406--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
407--if (!$auto_value) {
408--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
409}
410INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
411--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
412--if (!$auto_value) {
413--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
414}
415# Insert negative values unsigned & positive value to signed
416INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
417--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
418--if (!$auto_value) {
419--die "AUTO_INCREMENT didn't work on negative value"
420}
421INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
422--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
423--if (!$auto_value) {
424--die "AUTO_INCREMENT didn't work for negative value on unsigned"
425}
426# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
427INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
428--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
429--if (!$auto_value) {
430--die "AUTO_INCREMENT didn't work well"
431}
432INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
433--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
434--if (!$auto_value) {
435--die "AUTO_INCREMENT didn't work well"
436}
437
438SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
439SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
440# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
441## Full table scan ##
442--sorted_result
443SELECT * FROM t4;
444--sorted_result
445SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
446--sorted_result
447SELECT * FROM t4 WHERE c4 = 104;
448
449## Forward index scan, covering ##
450--sorted_result
451SELECT c1 FROM t4;
452
453## Backward index scan, covering ##
454SELECT c1 FROM t4 ORDER BY c1 DESC;
455
456## Forward index scan, non-covering ##
457SELECT * FROM t4 ORDER BY c1 LIMIT 2;
458
459## Backward index scan, non-covering ##
460SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
461
462## ref type access
463SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
464SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
465SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
466SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
467
468## Range access, ordered ##
469SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
470SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
471SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
472SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
473SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
474SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
475SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
476SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
477SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
478SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
479SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
480SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
481SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
482SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
483SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
484SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
485SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
486SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
487SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
488SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
489SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
490SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
491
492## Range access, backwards scan ##
493SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
494SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
495SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
496SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
497SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
498SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
499SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
500SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
501SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
502SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
503SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
504SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
505SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
506SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
507SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
508SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
509SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
510SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
511SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
512SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
513SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
514SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
515## Full table scan ##
516--sorted_result
517SELECT * FROM t4;
518--sorted_result
519SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
520--sorted_result
521SELECT * FROM t4 WHERE c4 = 104;
522
523## Forward index scan, covering ##
524--sorted_result
525SELECT c1 FROM t4;
526
527## Backward index scan, covering ##
528SELECT c1 FROM t4 ORDER BY c1 DESC;
529
530## Forward index scan, non-covering ##
531SELECT * FROM t4 ORDER BY c1 LIMIT 2;
532
533## Backward index scan, non-covering ##
534SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
535
536## ref type access
537SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
538SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
539SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
540SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
541
542## Range access, ordered ##
543SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
544SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
545SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
546SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
547SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
548SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
549SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
550SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
551SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
552SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
553SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
554SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
555SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
556SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
557SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
558SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
559SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
560SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
561SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
562SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
563SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
564SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
565
566## Range access, backwards scan ##
567SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
568SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
569SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
570SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
571SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
572SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
573SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
574SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
575SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
576SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
577SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
578SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
579SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
580SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
581SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
582SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
583SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
584SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
585SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
586SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
587SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
588SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
589## Full table scan ##
590--sorted_result
591SELECT * FROM t5;
592--sorted_result
593SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
594--sorted_result
595SELECT * FROM t5 WHERE c5 = 112;
596
597## Forward index scan, covering ##
598--sorted_result
599SELECT c1 FROM t5;
600
601## Backward index scan, covering ##
602SELECT c1 FROM t5 ORDER BY c1 DESC;
603
604## Forward index scan, non-covering ##
605SELECT * FROM t5 ORDER BY c1 LIMIT 2;
606
607## Backward index scan, non-covering ##
608SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
609
610## ref type access
611SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
612SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
613SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
614SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
615
616## Range access, ordered ##
617SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
618SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
619SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
620SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
621SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
622SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
623SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
624SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
625SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
626SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
627SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
628SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
629SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
630SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
631SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
632SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
633SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
634SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
635SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
636SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
637SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
638SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
639
640## Range access, backwards scan ##
641SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
642SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
643SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
644SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
645SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
646SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
647SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
648SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
649SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
650SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
651SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
652SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
653SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
654SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
655SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
656SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
657SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
658SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
659SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
660SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
661SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
662SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
663
664# Index-merge access
665--sorted_result
666SELECT * FROM t4 WHERE c1=1 OR c2=109;
667
668# Using index for group-by
669--sorted_result
670SELECT c2 FROM t4 GROUP BY c2;
671--sorted_result
672SELECT DISTINCT c2 FROM t4;
673--sorted_result
674SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
675
676# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
677
678# Insert NULL to non-null column
679--error ER_BAD_NULL_ERROR
680INSERT INTO t2(c1) VALUES(NULL);
681--error ER_BAD_NULL_ERROR
682INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
683--error ER_BAD_NULL_ERROR
684INSERT INTO t4(c3) VALUES(NULL);
685--error ER_BAD_NULL_ERROR
686INSERT INTO t5(c3) VALUES(NULL);
687
688# Insert duplicate value to pk
689--error ER_DUP_ENTRY
690INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
691
692# Insert duplicate value to clustered pk, throws error
693--error ER_DUP_ENTRY
694INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
695--error ER_DUP_ENTRY
696INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
697
698# Insert duplicate value to unique column, throws error
699--error ER_DUP_ENTRY
700INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
701--error ER_DUP_ENTRY
702# Insert duplicate value to clustered unique column, throws error
703INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
704
705# Test 'INSERT INTO SELECT FROM'
706CREATE TABLE t6(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
707INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
708--sorted_result
709SELECT * FROM t6;
710TRUNCATE TABLE t6;
711INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
712--sorted_result
713SELECT * FROM t6;
714TRUNCATE TABLE t6;
715# Test 'INSERT INTO SELECT FROM' primary key constraint violation
716CREATE TABLE t7(c1 TINYINT UNSIGNED NOT NULL PRIMARY KEY, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
717CREATE TABLE t8(c1 TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
718INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
719INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
720--sorted_result
721SELECT * FROM t7;
722INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
723--sorted_result
724SELECT * FROM t8;
725--error ER_DUP_ENTRY
726INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
727--sorted_result
728SELECT c1 FROM t7;
729--error ER_DUP_ENTRY
730INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
731--sorted_result
732SELECT c1 FROM t8;
733TRUNCATE TABLE t6;
734TRUNCATE TABLE t7;
735INSERT INTO t6(c1) VALUES(0),(1),(2),(3),(3),(4),(4),(5);
736--error ER_DUP_ENTRY
737INSERT INTO t7(c1) SELECT c1 FROM t6;
738TRUNCATE TABLE t6;
739
740# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
741INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
742INSERT INTO t8 SELECT * FROM t6;
743SELECT LAST_INSERT_ID() AS last_insert_id;
744--sorted_result
745SELECT * FROM t8;
746TRUNCATE TABLE t8;
747INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
748--sorted_result
749SELECT * FROM t8;
750DROP TABLE t6,t7,t8;
751
752# Test 'INSERT SET'
753INSERT INTO t2 SET c3=5,c4=6;
754SET SQL_MODE=STRICT_ALL_TABLES;
755--error ER_NO_DEFAULT_FOR_FIELD
756INSERT INTO t2 SET c3=5,c4=6;
757SET SQL_MODE='';
758
759# Test insert allowable bigger values to 'TINYINT' columns
760INSERT INTO t1 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10);
761INSERT INTO t2 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10);
762INSERT INTO t3 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10);
763INSERT INTO t4 VALUES(-128,0,1,2,3,4,5,5),(127,255,6,7,8,9,10,10);
764INSERT INTO t5 VALUES(0,-128,1,2,3,4,5,5),(255,127,6,7,8,9,10,10);
765--error ER_DUP_ENTRY
766INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
767--disable_warnings
768INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
769--enable_warnings
770--sorted_result
771SELECT * FROM t4;
772
773# Insert signed value to unsigned 'TINYINT', outside range values to signed/unsigned columns
774INSERT INTO t1 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35);
775INSERT INTO t2 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35);
776INSERT INTO t3 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35);
777# Insert into t4, t5 (TBD)
778
779# Now select using various table access methods
780## Full table scan ##
781--sorted_result
782SELECT * FROM t2;
783--sorted_result
784SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
785--sorted_result
786SELECT * FROM t2 WHERE c2 = -128;
787
788## Forward index scan, covering ##
789--sorted_result
790SELECT c1,c6 FROM t2;
791
792## Backward index scan, covering ##
793SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
794
795## Forward index scan, non-covering ##
796SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
797
798## Backward index scan, non-covering ##
799SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
800
801## ref type access
802SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
803SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
804SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
805SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
806
807## Range access, ordered ##
808SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
809SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
810SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
811SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
812SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
813SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
814SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
815SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
816SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
817SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
818SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
819SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
820SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6;
821SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 LIMIT 2;
822SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6;
823SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 LIMIT 2;
824SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6;
825SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 LIMIT 2;
826SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
827SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
828SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
829SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
830
831## Range access, backwards scan ##
832SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
833SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
834SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
835SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
836SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
837SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
838SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
839SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
840SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
841SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
842SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
843SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
844SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC;
845SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC LIMIT 2;
846SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC;
847SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC LIMIT 2;
848SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC;
849SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC LIMIT 2;
850SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
851SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
852SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
853SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
854## Full table scan ##
855--sorted_result
856SELECT * FROM t2;
857--sorted_result
858SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
859--sorted_result
860SELECT * FROM t2 WHERE c2 = 127;
861
862## Forward index scan, covering ##
863--sorted_result
864SELECT c1,c6 FROM t2;
865
866## Backward index scan, covering ##
867SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
868
869## Forward index scan, non-covering ##
870SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
871
872## Backward index scan, non-covering ##
873SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
874
875## ref type access
876SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6;
877SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 LIMIT 2;
878SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 DESC;
879SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 DESC LIMIT 2;
880
881## Range access, ordered ##
882SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6;
883SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 LIMIT 2;
884SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6;
885SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 LIMIT 2;
886SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6;
887SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 LIMIT 2;
888SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6;
889SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 LIMIT 2;
890SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6;
891SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 LIMIT 2;
892SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6;
893SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 LIMIT 2;
894SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6;
895SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 LIMIT 2;
896SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6;
897SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 LIMIT 2;
898SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6;
899SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 LIMIT 2;
900SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
901SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
902SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
903SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
904
905## Range access, backwards scan ##
906SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 DESC;
907SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 DESC LIMIT 2;
908SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 DESC;
909SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 DESC LIMIT 2;
910SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 DESC;
911SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 DESC LIMIT 2;
912SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 DESC;
913SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 DESC LIMIT 2;
914SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 DESC;
915SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 DESC LIMIT 2;
916SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 DESC;
917SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 DESC LIMIT 2;
918SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC;
919SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC LIMIT 2;
920SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC;
921SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC LIMIT 2;
922SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC;
923SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC LIMIT 2;
924SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
925SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
926SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
927SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
928## Full table scan ##
929--sorted_result
930SELECT * FROM t2;
931--sorted_result
932SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
933--sorted_result
934SELECT * FROM t2 WHERE c2 = -129;
935
936## Forward index scan, covering ##
937--sorted_result
938SELECT c1,c6 FROM t2;
939
940## Backward index scan, covering ##
941SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
942
943## Forward index scan, non-covering ##
944SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
945
946## Backward index scan, non-covering ##
947SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
948
949## ref type access
950SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6;
951SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2;
952SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC;
953SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2;
954
955## Range access, ordered ##
956SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6;
957SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2;
958SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6;
959SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2;
960SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6;
961SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2;
962SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6;
963SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2;
964SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6;
965SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2;
966SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6;
967SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2;
968SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6;
969SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 LIMIT 2;
970SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6;
971SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 LIMIT 2;
972SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6;
973SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
974SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
975SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
976SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
977SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
978
979## Range access, backwards scan ##
980SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC;
981SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2;
982SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC;
983SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2;
984SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC;
985SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2;
986SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC;
987SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2;
988SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC;
989SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2;
990SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC;
991SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2;
992SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC;
993SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC LIMIT 2;
994SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC;
995SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC LIMIT 2;
996SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC;
997SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
998SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
999SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
1000SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
1001SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
1002## Full table scan ##
1003--sorted_result
1004SELECT * FROM t2;
1005--sorted_result
1006SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1007--sorted_result
1008SELECT * FROM t2 WHERE c2 = 128;
1009
1010## Forward index scan, covering ##
1011--sorted_result
1012SELECT c1,c6 FROM t2;
1013
1014## Backward index scan, covering ##
1015SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
1016
1017## Forward index scan, non-covering ##
1018SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
1019
1020## Backward index scan, non-covering ##
1021SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
1022
1023## ref type access
1024SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6;
1025SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 LIMIT 2;
1026SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 DESC;
1027SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 DESC LIMIT 2;
1028
1029## Range access, ordered ##
1030SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6;
1031SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 LIMIT 2;
1032SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6;
1033SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 LIMIT 2;
1034SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6;
1035SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 LIMIT 2;
1036SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6;
1037SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 LIMIT 2;
1038SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6;
1039SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 LIMIT 2;
1040SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6;
1041SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 LIMIT 2;
1042SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6;
1043SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 LIMIT 2;
1044SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6;
1045SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 LIMIT 2;
1046SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6;
1047SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
1048SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
1049SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
1050SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
1051SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
1052
1053## Range access, backwards scan ##
1054SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 DESC;
1055SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 DESC LIMIT 2;
1056SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 DESC;
1057SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 DESC LIMIT 2;
1058SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 DESC;
1059SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 DESC LIMIT 2;
1060SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 DESC;
1061SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 DESC LIMIT 2;
1062SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 DESC;
1063SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 DESC LIMIT 2;
1064SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 DESC;
1065SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 DESC LIMIT 2;
1066SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC;
1067SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC LIMIT 2;
1068SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC;
1069SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC LIMIT 2;
1070SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC;
1071SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
1072SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
1073SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
1074SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
1075SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
1076## Full table scan ##
1077--sorted_result
1078SELECT * FROM t3;
1079--sorted_result
1080SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1081--sorted_result
1082SELECT * FROM t3 WHERE c1 = 0;
1083
1084## Forward index scan, covering ##
1085--sorted_result
1086SELECT c2,c7 FROM t3;
1087
1088## Backward index scan, covering ##
1089SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1090
1091## Forward index scan, non-covering ##
1092SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1093
1094## Backward index scan, non-covering ##
1095SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1096
1097## ref type access
1098SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7;
1099SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 LIMIT 2;
1100SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 DESC;
1101SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 DESC LIMIT 2;
1102
1103## Range access, ordered ##
1104SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7;
1105SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 LIMIT 2;
1106SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7;
1107SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 LIMIT 2;
1108SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7;
1109SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 LIMIT 2;
1110SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7;
1111SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 LIMIT 2;
1112SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7;
1113SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 LIMIT 2;
1114SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7;
1115SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 LIMIT 2;
1116SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7;
1117SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 LIMIT 2;
1118SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7;
1119SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 LIMIT 2;
1120SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7;
1121SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 LIMIT 2;
1122SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1123SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1124SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1125SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1126
1127## Range access, backwards scan ##
1128SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 DESC;
1129SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 DESC LIMIT 2;
1130SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 DESC;
1131SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 DESC LIMIT 2;
1132SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 DESC;
1133SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 DESC LIMIT 2;
1134SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 DESC;
1135SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 DESC LIMIT 2;
1136SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 DESC;
1137SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 DESC LIMIT 2;
1138SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 DESC;
1139SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 DESC LIMIT 2;
1140SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC;
1141SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC LIMIT 2;
1142SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC;
1143SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC LIMIT 2;
1144SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC;
1145SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC LIMIT 2;
1146SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1147SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1148SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1149SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1150## Full table scan ##
1151--sorted_result
1152SELECT * FROM t3;
1153--sorted_result
1154SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1155--sorted_result
1156SELECT * FROM t3 WHERE c1 = 255;
1157
1158## Forward index scan, covering ##
1159--sorted_result
1160SELECT c2,c7 FROM t3;
1161
1162## Backward index scan, covering ##
1163SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1164
1165## Forward index scan, non-covering ##
1166SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1167
1168## Backward index scan, non-covering ##
1169SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1170
1171## ref type access
1172SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7;
1173SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 LIMIT 2;
1174SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 DESC;
1175SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 DESC LIMIT 2;
1176
1177## Range access, ordered ##
1178SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7;
1179SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 LIMIT 2;
1180SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7;
1181SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 LIMIT 2;
1182SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7;
1183SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 LIMIT 2;
1184SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7;
1185SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 LIMIT 2;
1186SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7;
1187SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 LIMIT 2;
1188SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7;
1189SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 LIMIT 2;
1190SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7;
1191SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 LIMIT 2;
1192SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7;
1193SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 LIMIT 2;
1194SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7;
1195SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 LIMIT 2;
1196SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1197SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1198SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1199SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1200
1201## Range access, backwards scan ##
1202SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 DESC;
1203SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 DESC LIMIT 2;
1204SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 DESC;
1205SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 DESC LIMIT 2;
1206SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 DESC;
1207SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 DESC LIMIT 2;
1208SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 DESC;
1209SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 DESC LIMIT 2;
1210SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 DESC;
1211SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 DESC LIMIT 2;
1212SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 DESC;
1213SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 DESC LIMIT 2;
1214SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC;
1215SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC LIMIT 2;
1216SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC;
1217SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC LIMIT 2;
1218SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC;
1219SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC LIMIT 2;
1220SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1221SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1222SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1223SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1224## Full table scan ##
1225--sorted_result
1226SELECT * FROM t3;
1227--sorted_result
1228SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1229--sorted_result
1230SELECT * FROM t3 WHERE c1 = -255;
1231
1232## Forward index scan, covering ##
1233--sorted_result
1234SELECT c2,c7 FROM t3;
1235
1236## Backward index scan, covering ##
1237SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1238
1239## Forward index scan, non-covering ##
1240SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1241
1242## Backward index scan, non-covering ##
1243SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1244
1245## ref type access
1246SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7;
1247SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 LIMIT 2;
1248SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 DESC;
1249SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 DESC LIMIT 2;
1250
1251## Range access, ordered ##
1252SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7;
1253SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 LIMIT 2;
1254SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7;
1255SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 LIMIT 2;
1256SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7;
1257SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 LIMIT 2;
1258SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7;
1259SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 LIMIT 2;
1260SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7;
1261SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 LIMIT 2;
1262SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7;
1263SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 LIMIT 2;
1264SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7;
1265SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 LIMIT 2;
1266SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7;
1267SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 LIMIT 2;
1268SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7;
1269SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
1270SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1271SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1272SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1273SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1274
1275## Range access, backwards scan ##
1276SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 DESC;
1277SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 DESC LIMIT 2;
1278SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 DESC;
1279SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 DESC LIMIT 2;
1280SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 DESC;
1281SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 DESC LIMIT 2;
1282SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 DESC;
1283SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 DESC LIMIT 2;
1284SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 DESC;
1285SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 DESC LIMIT 2;
1286SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 DESC;
1287SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 DESC LIMIT 2;
1288SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC;
1289SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC LIMIT 2;
1290SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC;
1291SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC LIMIT 2;
1292SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC;
1293SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
1294SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1295SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1296SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1297SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1298## Full table scan ##
1299--sorted_result
1300SELECT * FROM t3;
1301--sorted_result
1302SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1303--sorted_result
1304SELECT * FROM t3 WHERE c1 = 256;
1305
1306## Forward index scan, covering ##
1307--sorted_result
1308SELECT c2,c7 FROM t3;
1309
1310## Backward index scan, covering ##
1311SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1312
1313## Forward index scan, non-covering ##
1314SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1315
1316## Backward index scan, non-covering ##
1317SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1318
1319## ref type access
1320SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7;
1321SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 LIMIT 2;
1322SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 DESC;
1323SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 DESC LIMIT 2;
1324
1325## Range access, ordered ##
1326SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7;
1327SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 LIMIT 2;
1328SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7;
1329SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 LIMIT 2;
1330SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7;
1331SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 LIMIT 2;
1332SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7;
1333SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 LIMIT 2;
1334SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7;
1335SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 LIMIT 2;
1336SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7;
1337SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 LIMIT 2;
1338SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7;
1339SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 LIMIT 2;
1340SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7;
1341SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 LIMIT 2;
1342SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7;
1343SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
1344SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1345SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1346SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1347SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1348
1349## Range access, backwards scan ##
1350SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 DESC;
1351SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 DESC LIMIT 2;
1352SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 DESC;
1353SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 DESC LIMIT 2;
1354SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 DESC;
1355SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 DESC LIMIT 2;
1356SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 DESC;
1357SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 DESC LIMIT 2;
1358SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 DESC;
1359SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 DESC LIMIT 2;
1360SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 DESC;
1361SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 DESC LIMIT 2;
1362SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC;
1363SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC LIMIT 2;
1364SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC;
1365SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC LIMIT 2;
1366SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC;
1367SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
1368SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1369SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1370SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1371SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1372DROP TABLE t1,t2,t3,t4,t5;
1373
1374######## Running INSERT tests for SMALLINT ########
1375
1376# Create tables
1377CREATE TABLE t1(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
1378CREATE TABLE t2(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6));
1379CREATE TABLE t3(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7));
1380
1381# Insert some rows with targeted values
1382INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
1383INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
1384INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
1385
1386# Insert duplicates for parts of the clustered key
1387INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
1388INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
1389
1390# Insert permissible NULLs
1391INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
1392INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
1393INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
1394
1395# Insert empty string ''
1396INSERT INTO t1 VALUES('','',17,18,19,20,21);
1397INSERT INTO t2 VALUES('','',17,18,19,20,21);
1398INSERT INTO t3 VALUES('','',17,18,19,20,21);
1399
1400# Insert negative value to unsigned integer, positive value to signed integer, zero values
1401INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
1402INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
1403INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
1404INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
1405INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
1406INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
1407INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
1408INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
1409INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
1410
1411# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
1412INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
1413INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
1414INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
1415
1416--sorted_result
1417SELECT * FROM t1;
1418SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
1419SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
1420SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
1421SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
1422SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
1423SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
1424
1425# Now select using various table access methods (full table scan, range scan, index scan etc.)
1426## Full table scan ##
1427--sorted_result
1428SELECT * FROM t2;
1429--sorted_result
1430SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1431--sorted_result
1432SELECT * FROM t2 WHERE c2 = 102;
1433
1434## Forward index scan, covering ##
1435--sorted_result
1436SELECT c1,c6 FROM t2;
1437
1438## Backward index scan, covering ##
1439SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
1440
1441## Forward index scan, non-covering ##
1442SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
1443
1444## Backward index scan, non-covering ##
1445SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
1446
1447## ref type access
1448SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
1449SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
1450SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
1451SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
1452
1453## Range access, ordered ##
1454SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
1455SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
1456SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
1457SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
1458SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
1459SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
1460SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
1461SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
1462SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
1463SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
1464SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
1465SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
1466SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
1467SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
1468SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
1469SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
1470SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
1471SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
1472SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
1473SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
1474SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
1475SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
1476
1477## Range access, backwards scan ##
1478SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
1479SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
1480SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
1481SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
1482SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
1483SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
1484SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
1485SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
1486SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
1487SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
1488SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
1489SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
1490SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
1491SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
1492SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
1493SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
1494SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
1495SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
1496SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
1497SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
1498SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
1499SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
1500## Full table scan ##
1501--sorted_result
1502SELECT * FROM t2;
1503--sorted_result
1504SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1505--sorted_result
1506SELECT * FROM t2 WHERE c2 = 102;
1507
1508## Forward index scan, covering ##
1509--sorted_result
1510SELECT c1,c6 FROM t2;
1511
1512## Backward index scan, covering ##
1513SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
1514
1515## Forward index scan, non-covering ##
1516SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
1517
1518## Backward index scan, non-covering ##
1519SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
1520
1521## ref type access
1522SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
1523SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
1524SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
1525SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
1526
1527## Range access, ordered ##
1528SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
1529SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
1530SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
1531SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
1532SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
1533SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
1534SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
1535SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
1536SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
1537SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
1538SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
1539SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
1540SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
1541SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
1542SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
1543SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
1544SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
1545SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
1546SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
1547SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
1548SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
1549SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
1550
1551## Range access, backwards scan ##
1552SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
1553SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
1554SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
1555SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
1556SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
1557SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
1558SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
1559SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
1560SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
1561SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
1562SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
1563SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
1564SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
1565SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
1566SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
1567SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
1568SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
1569SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
1570SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
1571SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
1572SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
1573SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
1574## Full table scan ##
1575--sorted_result
1576SELECT * FROM t3;
1577--sorted_result
1578SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1579--sorted_result
1580SELECT * FROM t3 WHERE c1 = 108;
1581
1582## Forward index scan, covering ##
1583--sorted_result
1584SELECT c2,c7 FROM t3;
1585
1586## Backward index scan, covering ##
1587SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1588
1589## Forward index scan, non-covering ##
1590SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1591
1592## Backward index scan, non-covering ##
1593SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1594
1595## ref type access
1596SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
1597SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
1598SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
1599SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
1600
1601## Range access, ordered ##
1602SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
1603SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
1604SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
1605SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
1606SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
1607SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
1608SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
1609SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
1610SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
1611SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
1612SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
1613SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
1614SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
1615SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
1616SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
1617SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
1618SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
1619SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
1620SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1621SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1622SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1623SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1624
1625## Range access, backwards scan ##
1626SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
1627SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
1628SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
1629SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
1630SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
1631SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
1632SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
1633SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
1634SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
1635SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
1636SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
1637SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
1638SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
1639SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
1640SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
1641SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
1642SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
1643SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
1644SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1645SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1646SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1647SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1648## Full table scan ##
1649--sorted_result
1650SELECT * FROM t3;
1651--sorted_result
1652SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1653--sorted_result
1654SELECT * FROM t3 WHERE c1 = 108;
1655
1656## Forward index scan, covering ##
1657--sorted_result
1658SELECT c2,c7 FROM t3;
1659
1660## Backward index scan, covering ##
1661SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
1662
1663## Forward index scan, non-covering ##
1664SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
1665
1666## Backward index scan, non-covering ##
1667SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
1668
1669## ref type access
1670SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
1671SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
1672SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
1673SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
1674
1675## Range access, ordered ##
1676SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
1677SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
1678SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
1679SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
1680SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
1681SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
1682SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
1683SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
1684SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
1685SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
1686SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
1687SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
1688SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
1689SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
1690SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
1691SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
1692SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
1693SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
1694SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
1695SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
1696SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
1697SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
1698
1699## Range access, backwards scan ##
1700SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
1701SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
1702SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
1703SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
1704SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
1705SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
1706SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
1707SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
1708SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
1709SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
1710SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
1711SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
1712SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
1713SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
1714SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
1715SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
1716SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
1717SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
1718SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
1719SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
1720SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
1721SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
1722
1723# Using index for group-by
1724--sorted_result
1725SELECT c2 FROM t3 GROUP BY c2;
1726--sorted_result
1727SELECT DISTINCT c2 FROM t3;
1728--sorted_result
1729SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
1730
1731# Create tables with AUTO_INCREMENT columns and unique indexes
1732CREATE TABLE t4(c1 SMALLINT SIGNED NOT NULL AUTO_INCREMENT, c2 SMALLINT UNSIGNED NULL, c3 SMALLINT UNSIGNED NOT NULL, c4 TINYINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
1733CREATE TABLE t5(c1 SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 SMALLINT SIGNED NOT NULL, c3 SMALLINT SIGNED NOT NULL, c4 TINYINT, c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
1734
1735# Test with AUTO_INCREMENT columns
1736# Insert some rows
1737INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
1738INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
1739# Insert 0 values, increments the value
1740INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
1741--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
1742--if (!$auto_value) {
1743--die "AUTO_INCREMENT didn't work well on 0"
1744}
1745INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
1746--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
1747--if (!$auto_value) {
1748--die "AUTO_INCREMENT didn't work well on 0"
1749}
1750# Insert NULL,  no error, increments the value
1751INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
1752--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
1753--if (!$auto_value) {
1754--die "AUTO_INCREMENT didn't work well on NULL"
1755}
1756INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
1757--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
1758--if (!$auto_value) {
1759--die "AUTO_INCREMENT didn't work well on NULL"
1760}
1761# Insert empty strings, increments the value
1762INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
1763--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
1764--if (!$auto_value) {
1765--die "AUTO_INCREMENT didn't work well on ''"
1766}
1767INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
1768--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
1769--if (!$auto_value) {
1770--die "AUTO_INCREMENT didn't work well on ''"
1771}
1772# Insert strings with numeric part, inserts the numeric part of the string
1773INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
1774--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
1775--if (!$auto_value) {
1776--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
1777}
1778INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
1779--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
1780--if (!$auto_value) {
1781--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
1782}
1783# Insert negative values unsigned & positive value to signed
1784INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
1785--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
1786--if (!$auto_value) {
1787--die "AUTO_INCREMENT didn't work on negative value"
1788}
1789INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
1790--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
1791--if (!$auto_value) {
1792--die "AUTO_INCREMENT didn't work for negative value on unsigned"
1793}
1794# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
1795INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
1796--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
1797--if (!$auto_value) {
1798--die "AUTO_INCREMENT didn't work well"
1799}
1800INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
1801--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
1802--if (!$auto_value) {
1803--die "AUTO_INCREMENT didn't work well"
1804}
1805
1806SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
1807SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
1808# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
1809## Full table scan ##
1810--sorted_result
1811SELECT * FROM t4;
1812--sorted_result
1813SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
1814--sorted_result
1815SELECT * FROM t4 WHERE c4 = 104;
1816
1817## Forward index scan, covering ##
1818--sorted_result
1819SELECT c1 FROM t4;
1820
1821## Backward index scan, covering ##
1822SELECT c1 FROM t4 ORDER BY c1 DESC;
1823
1824## Forward index scan, non-covering ##
1825SELECT * FROM t4 ORDER BY c1 LIMIT 2;
1826
1827## Backward index scan, non-covering ##
1828SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
1829
1830## ref type access
1831SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
1832SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
1833SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
1834SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
1835
1836## Range access, ordered ##
1837SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
1838SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
1839SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
1840SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
1841SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
1842SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
1843SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
1844SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
1845SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
1846SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
1847SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
1848SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
1849SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
1850SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
1851SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
1852SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
1853SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
1854SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
1855SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
1856SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
1857SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
1858SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1859
1860## Range access, backwards scan ##
1861SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
1862SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
1863SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
1864SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
1865SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
1866SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
1867SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
1868SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
1869SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
1870SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
1871SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
1872SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
1873SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
1874SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
1875SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
1876SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
1877SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
1878SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
1879SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
1880SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1881SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1882SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1883## Full table scan ##
1884--sorted_result
1885SELECT * FROM t4;
1886--sorted_result
1887SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
1888--sorted_result
1889SELECT * FROM t4 WHERE c4 = 104;
1890
1891## Forward index scan, covering ##
1892--sorted_result
1893SELECT c1 FROM t4;
1894
1895## Backward index scan, covering ##
1896SELECT c1 FROM t4 ORDER BY c1 DESC;
1897
1898## Forward index scan, non-covering ##
1899SELECT * FROM t4 ORDER BY c1 LIMIT 2;
1900
1901## Backward index scan, non-covering ##
1902SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
1903
1904## ref type access
1905SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
1906SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
1907SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
1908SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
1909
1910## Range access, ordered ##
1911SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
1912SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
1913SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
1914SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
1915SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
1916SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
1917SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
1918SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
1919SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
1920SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
1921SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
1922SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
1923SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
1924SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
1925SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
1926SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
1927SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
1928SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
1929SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
1930SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
1931SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
1932SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1933
1934## Range access, backwards scan ##
1935SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
1936SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
1937SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
1938SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
1939SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
1940SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
1941SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
1942SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
1943SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
1944SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
1945SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
1946SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
1947SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
1948SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
1949SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
1950SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
1951SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
1952SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
1953SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
1954SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1955SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1956SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1957## Full table scan ##
1958--sorted_result
1959SELECT * FROM t5;
1960--sorted_result
1961SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
1962--sorted_result
1963SELECT * FROM t5 WHERE c5 = 112;
1964
1965## Forward index scan, covering ##
1966--sorted_result
1967SELECT c1 FROM t5;
1968
1969## Backward index scan, covering ##
1970SELECT c1 FROM t5 ORDER BY c1 DESC;
1971
1972## Forward index scan, non-covering ##
1973SELECT * FROM t5 ORDER BY c1 LIMIT 2;
1974
1975## Backward index scan, non-covering ##
1976SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
1977
1978## ref type access
1979SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
1980SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
1981SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
1982SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
1983
1984## Range access, ordered ##
1985SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
1986SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
1987SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
1988SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
1989SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
1990SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
1991SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
1992SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
1993SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
1994SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
1995SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
1996SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
1997SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
1998SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
1999SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
2000SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
2001SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
2002SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
2003SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
2004SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2005SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
2006SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2007
2008## Range access, backwards scan ##
2009SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
2010SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
2011SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
2012SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
2013SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
2014SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
2015SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
2016SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
2017SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
2018SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
2019SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
2020SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
2021SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
2022SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
2023SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
2024SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
2025SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
2026SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
2027SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
2028SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2029SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2030SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2031
2032# Index-merge access
2033--sorted_result
2034SELECT * FROM t4 WHERE c1=1 OR c2=109;
2035
2036# Using index for group-by
2037--sorted_result
2038SELECT c2 FROM t4 GROUP BY c2;
2039--sorted_result
2040SELECT DISTINCT c2 FROM t4;
2041--sorted_result
2042SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
2043
2044# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
2045
2046# Insert NULL to non-null column
2047--error ER_BAD_NULL_ERROR
2048INSERT INTO t2(c1) VALUES(NULL);
2049--error ER_BAD_NULL_ERROR
2050INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
2051--error ER_BAD_NULL_ERROR
2052INSERT INTO t4(c3) VALUES(NULL);
2053--error ER_BAD_NULL_ERROR
2054INSERT INTO t5(c3) VALUES(NULL);
2055
2056# Insert duplicate value to pk
2057--error ER_DUP_ENTRY
2058INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
2059
2060# Insert duplicate value to clustered pk, throws error
2061--error ER_DUP_ENTRY
2062INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
2063--error ER_DUP_ENTRY
2064INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
2065
2066# Insert duplicate value to unique column, throws error
2067--error ER_DUP_ENTRY
2068INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
2069--error ER_DUP_ENTRY
2070# Insert duplicate value to clustered unique column, throws error
2071INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
2072
2073# Test 'INSERT INTO SELECT FROM'
2074CREATE TABLE t6(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
2075INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
2076--sorted_result
2077SELECT * FROM t6;
2078TRUNCATE TABLE t6;
2079INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
2080--sorted_result
2081SELECT * FROM t6;
2082TRUNCATE TABLE t6;
2083# Test 'INSERT INTO SELECT FROM' primary key constraint violation
2084CREATE TABLE t7(c1 SMALLINT UNSIGNED NOT NULL PRIMARY KEY, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
2085CREATE TABLE t8(c1 SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT);
2086INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
2087INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
2088--sorted_result
2089SELECT * FROM t7;
2090INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
2091--sorted_result
2092SELECT * FROM t8;
2093--error ER_DUP_ENTRY
2094INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
2095--error ER_DUP_ENTRY
2096INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
2097TRUNCATE TABLE t6;
2098
2099# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
2100INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
2101INSERT INTO t8 SELECT * FROM t6;
2102SELECT LAST_INSERT_ID() AS last_insert_id;
2103--sorted_result
2104SELECT * FROM t8;
2105TRUNCATE TABLE t8;
2106INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
2107--sorted_result
2108SELECT * FROM t8;
2109DROP TABLE t6,t7,t8;
2110
2111# Test 'INSERT SET'
2112INSERT INTO t2 SET c3=5,c4=6;
2113SET SQL_MODE=STRICT_ALL_TABLES;
2114--error ER_NO_DEFAULT_FOR_FIELD
2115INSERT INTO t2 SET c3=5,c4=6;
2116SET SQL_MODE='';
2117
2118# Test insert allowable bigger values to 'SMALLINT' columns
2119INSERT INTO t1 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15);
2120INSERT INTO t2 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15);
2121INSERT INTO t3 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15);
2122INSERT INTO t4 VALUES(-32768,0,1,2,3,4,5,5),(-128,255,6,7,8,9,10,10),(32767,65535,11,12,13,14,15,15);
2123INSERT INTO t5 VALUES(0,-32768,1,2,3,4,5,5),(255,-128,6,7,8,9,10,10),(65535,32767,11,12,13,14,15,15);
2124--error ER_DUP_ENTRY
2125INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
2126--disable_warnings
2127INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
2128--enable_warnings
2129--sorted_result
2130SELECT * FROM t4;
2131
2132# Insert signed value to unsigned 'SMALLINT', outside range values to signed/unsigned columns
2133INSERT INTO t1 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35);
2134INSERT INTO t2 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35);
2135INSERT INTO t3 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35);
2136# Insert into t4, t5 (TBD)
2137
2138# Now select using various table access methods
2139## Full table scan ##
2140--sorted_result
2141SELECT * FROM t2;
2142--sorted_result
2143SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2144--sorted_result
2145SELECT * FROM t2 WHERE c2 = -32768;
2146
2147## Forward index scan, covering ##
2148--sorted_result
2149SELECT c1,c6 FROM t2;
2150
2151## Backward index scan, covering ##
2152SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2153
2154## Forward index scan, non-covering ##
2155SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2156
2157## Backward index scan, non-covering ##
2158SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2159
2160## ref type access
2161SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
2162SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
2163SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
2164SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
2165
2166## Range access, ordered ##
2167SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
2168SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
2169SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
2170SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
2171SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
2172SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
2173SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
2174SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
2175SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
2176SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
2177SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
2178SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
2179SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6;
2180SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 LIMIT 2;
2181SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6;
2182SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 LIMIT 2;
2183SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6;
2184SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
2185SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2186SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2187SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2188SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2189
2190## Range access, backwards scan ##
2191SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
2192SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
2193SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
2194SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
2195SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
2196SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
2197SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
2198SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
2199SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
2200SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
2201SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
2202SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
2203SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC;
2204SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC LIMIT 2;
2205SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC;
2206SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC LIMIT 2;
2207SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC;
2208SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
2209SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2210SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2211SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2212SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2213## Full table scan ##
2214--sorted_result
2215SELECT * FROM t2;
2216--sorted_result
2217SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2218--sorted_result
2219SELECT * FROM t2 WHERE c2 = 32767;
2220
2221## Forward index scan, covering ##
2222--sorted_result
2223SELECT c1,c6 FROM t2;
2224
2225## Backward index scan, covering ##
2226SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2227
2228## Forward index scan, non-covering ##
2229SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2230
2231## Backward index scan, non-covering ##
2232SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2233
2234## ref type access
2235SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6;
2236SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 LIMIT 2;
2237SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 DESC;
2238SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 DESC LIMIT 2;
2239
2240## Range access, ordered ##
2241SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6;
2242SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 LIMIT 2;
2243SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6;
2244SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 LIMIT 2;
2245SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6;
2246SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 LIMIT 2;
2247SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6;
2248SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 LIMIT 2;
2249SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6;
2250SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 LIMIT 2;
2251SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6;
2252SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 LIMIT 2;
2253SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6;
2254SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 LIMIT 2;
2255SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6;
2256SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 LIMIT 2;
2257SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6;
2258SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
2259SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2260SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2261SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2262SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2263
2264## Range access, backwards scan ##
2265SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 DESC;
2266SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 DESC LIMIT 2;
2267SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 DESC;
2268SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 DESC LIMIT 2;
2269SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 DESC;
2270SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 DESC LIMIT 2;
2271SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 DESC;
2272SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 DESC LIMIT 2;
2273SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 DESC;
2274SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 DESC LIMIT 2;
2275SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 DESC;
2276SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 DESC LIMIT 2;
2277SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC;
2278SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC LIMIT 2;
2279SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC;
2280SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC LIMIT 2;
2281SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC;
2282SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
2283SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2284SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2285SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2286SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2287## Full table scan ##
2288--sorted_result
2289SELECT * FROM t2;
2290--sorted_result
2291SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2292--sorted_result
2293SELECT * FROM t2 WHERE c2 = -32769;
2294
2295## Forward index scan, covering ##
2296--sorted_result
2297SELECT c1,c6 FROM t2;
2298
2299## Backward index scan, covering ##
2300SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2301
2302## Forward index scan, non-covering ##
2303SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2304
2305## Backward index scan, non-covering ##
2306SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2307
2308## ref type access
2309SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6;
2310SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2;
2311SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC;
2312SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2;
2313
2314## Range access, ordered ##
2315SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6;
2316SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2;
2317SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6;
2318SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2;
2319SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6;
2320SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2;
2321SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6;
2322SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2;
2323SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6;
2324SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2;
2325SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6;
2326SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2;
2327SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6;
2328SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 LIMIT 2;
2329SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6;
2330SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 LIMIT 2;
2331SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6;
2332SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
2333SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2334SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2335SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2336SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2337
2338## Range access, backwards scan ##
2339SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC;
2340SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2;
2341SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC;
2342SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2;
2343SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC;
2344SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2;
2345SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC;
2346SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2;
2347SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC;
2348SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2;
2349SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC;
2350SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2;
2351SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC;
2352SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC LIMIT 2;
2353SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC;
2354SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC LIMIT 2;
2355SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC;
2356SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
2357SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2358SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2359SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2360SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2361## Full table scan ##
2362--sorted_result
2363SELECT * FROM t2;
2364--sorted_result
2365SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2366--sorted_result
2367SELECT * FROM t2 WHERE c2 = 32768;
2368
2369## Forward index scan, covering ##
2370--sorted_result
2371SELECT c1,c6 FROM t2;
2372
2373## Backward index scan, covering ##
2374SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2375
2376## Forward index scan, non-covering ##
2377SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2378
2379## Backward index scan, non-covering ##
2380SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2381
2382## ref type access
2383SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6;
2384SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 LIMIT 2;
2385SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 DESC;
2386SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 DESC LIMIT 2;
2387
2388## Range access, ordered ##
2389SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6;
2390SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 LIMIT 2;
2391SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6;
2392SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 LIMIT 2;
2393SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6;
2394SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 LIMIT 2;
2395SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6;
2396SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 LIMIT 2;
2397SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6;
2398SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 LIMIT 2;
2399SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6;
2400SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 LIMIT 2;
2401SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6;
2402SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 LIMIT 2;
2403SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6;
2404SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 LIMIT 2;
2405SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6;
2406SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
2407SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2408SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2409SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2410SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2411
2412## Range access, backwards scan ##
2413SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 DESC;
2414SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 DESC LIMIT 2;
2415SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 DESC;
2416SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 DESC LIMIT 2;
2417SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 DESC;
2418SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 DESC LIMIT 2;
2419SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 DESC;
2420SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 DESC LIMIT 2;
2421SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 DESC;
2422SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 DESC LIMIT 2;
2423SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 DESC;
2424SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 DESC LIMIT 2;
2425SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC;
2426SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC LIMIT 2;
2427SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC;
2428SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC LIMIT 2;
2429SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC;
2430SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
2431SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2432SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2433SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2434SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2435## Full table scan ##
2436--sorted_result
2437SELECT * FROM t3;
2438--sorted_result
2439SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2440--sorted_result
2441SELECT * FROM t3 WHERE c1 = 0;
2442
2443## Forward index scan, covering ##
2444--sorted_result
2445SELECT c2,c7 FROM t3;
2446
2447## Backward index scan, covering ##
2448SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
2449
2450## Forward index scan, non-covering ##
2451SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
2452
2453## Backward index scan, non-covering ##
2454SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
2455
2456## ref type access
2457SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7;
2458SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 LIMIT 2;
2459SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 DESC;
2460SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 DESC LIMIT 2;
2461
2462## Range access, ordered ##
2463SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7;
2464SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 LIMIT 2;
2465SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7;
2466SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 LIMIT 2;
2467SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7;
2468SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 LIMIT 2;
2469SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7;
2470SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 LIMIT 2;
2471SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7;
2472SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 LIMIT 2;
2473SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7;
2474SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 LIMIT 2;
2475SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7;
2476SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 LIMIT 2;
2477SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7;
2478SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 LIMIT 2;
2479SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7;
2480SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 LIMIT 2;
2481SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
2482SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
2483SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
2484SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
2485
2486## Range access, backwards scan ##
2487SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 DESC;
2488SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 DESC LIMIT 2;
2489SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 DESC;
2490SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 DESC LIMIT 2;
2491SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 DESC;
2492SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 DESC LIMIT 2;
2493SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 DESC;
2494SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 DESC LIMIT 2;
2495SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 DESC;
2496SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 DESC LIMIT 2;
2497SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 DESC;
2498SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 DESC LIMIT 2;
2499SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC;
2500SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC LIMIT 2;
2501SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC;
2502SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC LIMIT 2;
2503SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC;
2504SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC LIMIT 2;
2505SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
2506SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
2507SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
2508SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
2509## Full table scan ##
2510--sorted_result
2511SELECT * FROM t3;
2512--sorted_result
2513SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2514--sorted_result
2515SELECT * FROM t3 WHERE c1 = 65535;
2516
2517## Forward index scan, covering ##
2518--sorted_result
2519SELECT c2,c7 FROM t3;
2520
2521## Backward index scan, covering ##
2522SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
2523
2524## Forward index scan, non-covering ##
2525SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
2526
2527## Backward index scan, non-covering ##
2528SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
2529
2530## ref type access
2531SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7;
2532SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 LIMIT 2;
2533SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 DESC;
2534SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 DESC LIMIT 2;
2535
2536## Range access, ordered ##
2537SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7;
2538SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 LIMIT 2;
2539SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7;
2540SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 LIMIT 2;
2541SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7;
2542SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 LIMIT 2;
2543SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7;
2544SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 LIMIT 2;
2545SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7;
2546SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 LIMIT 2;
2547SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7;
2548SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 LIMIT 2;
2549SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7;
2550SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 LIMIT 2;
2551SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7;
2552SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 LIMIT 2;
2553SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7;
2554SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 LIMIT 2;
2555SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
2556SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
2557SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
2558SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
2559
2560## Range access, backwards scan ##
2561SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 DESC;
2562SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 DESC LIMIT 2;
2563SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 DESC;
2564SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 DESC LIMIT 2;
2565SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 DESC;
2566SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 DESC LIMIT 2;
2567SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 DESC;
2568SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 DESC LIMIT 2;
2569SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 DESC;
2570SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 DESC LIMIT 2;
2571SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 DESC;
2572SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 DESC LIMIT 2;
2573SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC;
2574SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC LIMIT 2;
2575SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC;
2576SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC LIMIT 2;
2577SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC;
2578SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC LIMIT 2;
2579SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
2580SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
2581SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
2582SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
2583## Full table scan ##
2584--sorted_result
2585SELECT * FROM t3;
2586--sorted_result
2587SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2588--sorted_result
2589SELECT * FROM t3 WHERE c1 = -255;
2590
2591## Forward index scan, covering ##
2592--sorted_result
2593SELECT c2,c7 FROM t3;
2594
2595## Backward index scan, covering ##
2596SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
2597
2598## Forward index scan, non-covering ##
2599SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
2600
2601## Backward index scan, non-covering ##
2602SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
2603
2604## ref type access
2605SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7;
2606SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 LIMIT 2;
2607SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 DESC;
2608SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 DESC LIMIT 2;
2609
2610## Range access, ordered ##
2611SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7;
2612SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 LIMIT 2;
2613SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7;
2614SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 LIMIT 2;
2615SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7;
2616SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 LIMIT 2;
2617SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7;
2618SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 LIMIT 2;
2619SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7;
2620SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 LIMIT 2;
2621SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7;
2622SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 LIMIT 2;
2623SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7;
2624SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 LIMIT 2;
2625SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7;
2626SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 LIMIT 2;
2627SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7;
2628SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
2629SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
2630SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
2631SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
2632SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
2633
2634## Range access, backwards scan ##
2635SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 DESC;
2636SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 DESC LIMIT 2;
2637SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 DESC;
2638SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 DESC LIMIT 2;
2639SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 DESC;
2640SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 DESC LIMIT 2;
2641SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 DESC;
2642SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 DESC LIMIT 2;
2643SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 DESC;
2644SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 DESC LIMIT 2;
2645SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 DESC;
2646SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 DESC LIMIT 2;
2647SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC;
2648SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC LIMIT 2;
2649SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC;
2650SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC LIMIT 2;
2651SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC;
2652SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
2653SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
2654SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
2655SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
2656SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
2657## Full table scan ##
2658--sorted_result
2659SELECT * FROM t3;
2660--sorted_result
2661SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2662--sorted_result
2663SELECT * FROM t3 WHERE c1 = 65536;
2664
2665## Forward index scan, covering ##
2666--sorted_result
2667SELECT c2,c7 FROM t3;
2668
2669## Backward index scan, covering ##
2670SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
2671
2672## Forward index scan, non-covering ##
2673SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
2674
2675## Backward index scan, non-covering ##
2676SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
2677
2678## ref type access
2679SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7;
2680SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 LIMIT 2;
2681SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 DESC;
2682SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 DESC LIMIT 2;
2683
2684## Range access, ordered ##
2685SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7;
2686SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 LIMIT 2;
2687SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7;
2688SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 LIMIT 2;
2689SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7;
2690SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 LIMIT 2;
2691SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7;
2692SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 LIMIT 2;
2693SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7;
2694SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 LIMIT 2;
2695SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7;
2696SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 LIMIT 2;
2697SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7;
2698SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 LIMIT 2;
2699SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7;
2700SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 LIMIT 2;
2701SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7;
2702SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
2703SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
2704SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
2705SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
2706SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
2707
2708## Range access, backwards scan ##
2709SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 DESC;
2710SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 DESC LIMIT 2;
2711SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 DESC;
2712SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 DESC LIMIT 2;
2713SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 DESC;
2714SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 DESC LIMIT 2;
2715SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 DESC;
2716SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 DESC LIMIT 2;
2717SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 DESC;
2718SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 DESC LIMIT 2;
2719SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 DESC;
2720SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 DESC LIMIT 2;
2721SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC;
2722SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC LIMIT 2;
2723SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC;
2724SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC LIMIT 2;
2725SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC;
2726SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
2727SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
2728SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
2729SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
2730SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
2731DROP TABLE t1,t2,t3,t4,t5;
2732
2733######## Running INSERT tests for MEDIUMINT ########
2734
2735# Create tables
2736CREATE TABLE t1(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT);
2737CREATE TABLE t2(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6));
2738CREATE TABLE t3(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7));
2739
2740# Insert some rows with targeted values
2741INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
2742INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
2743INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
2744
2745# Insert duplicates for parts of the clustered key
2746INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
2747INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
2748
2749# Insert permissible NULLs
2750INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
2751INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
2752INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
2753
2754# Insert empty string ''
2755INSERT INTO t1 VALUES('','',17,18,19,20,21);
2756INSERT INTO t2 VALUES('','',17,18,19,20,21);
2757INSERT INTO t3 VALUES('','',17,18,19,20,21);
2758
2759# Insert negative value to unsigned integer, positive value to signed integer, zero values
2760INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
2761INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
2762INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
2763INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
2764INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
2765INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
2766INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
2767INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
2768INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
2769
2770# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
2771INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
2772INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
2773INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
2774
2775--sorted_result
2776SELECT * FROM t1;
2777SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
2778SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
2779SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
2780SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
2781SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
2782SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
2783
2784# Now select using various table access methods (full table scan, range scan, index scan etc.)
2785## Full table scan ##
2786--sorted_result
2787SELECT * FROM t2;
2788--sorted_result
2789SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2790--sorted_result
2791SELECT * FROM t2 WHERE c2 = 102;
2792
2793## Forward index scan, covering ##
2794--sorted_result
2795SELECT c1,c6 FROM t2;
2796
2797## Backward index scan, covering ##
2798SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2799
2800## Forward index scan, non-covering ##
2801SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2802
2803## Backward index scan, non-covering ##
2804SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2805
2806## ref type access
2807SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
2808SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
2809SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
2810SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
2811
2812## Range access, ordered ##
2813SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
2814SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
2815SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
2816SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
2817SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
2818SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
2819SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
2820SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
2821SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
2822SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
2823SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
2824SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
2825SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
2826SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
2827SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
2828SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
2829SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
2830SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
2831SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2832SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2833SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2834SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2835
2836## Range access, backwards scan ##
2837SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
2838SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
2839SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
2840SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
2841SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
2842SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
2843SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
2844SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
2845SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
2846SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
2847SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
2848SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
2849SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
2850SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
2851SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
2852SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
2853SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
2854SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
2855SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2856SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2857SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2858SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2859## Full table scan ##
2860--sorted_result
2861SELECT * FROM t2;
2862--sorted_result
2863SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2864--sorted_result
2865SELECT * FROM t2 WHERE c2 = 102;
2866
2867## Forward index scan, covering ##
2868--sorted_result
2869SELECT c1,c6 FROM t2;
2870
2871## Backward index scan, covering ##
2872SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
2873
2874## Forward index scan, non-covering ##
2875SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
2876
2877## Backward index scan, non-covering ##
2878SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
2879
2880## ref type access
2881SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
2882SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
2883SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
2884SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
2885
2886## Range access, ordered ##
2887SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
2888SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
2889SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
2890SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
2891SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
2892SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
2893SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
2894SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
2895SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
2896SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
2897SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
2898SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
2899SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
2900SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
2901SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
2902SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
2903SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
2904SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
2905SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
2906SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
2907SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
2908SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
2909
2910## Range access, backwards scan ##
2911SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
2912SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
2913SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
2914SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
2915SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
2916SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
2917SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
2918SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
2919SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
2920SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
2921SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
2922SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
2923SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
2924SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
2925SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
2926SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
2927SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
2928SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
2929SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
2930SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
2931SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
2932SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
2933## Full table scan ##
2934--sorted_result
2935SELECT * FROM t3;
2936--sorted_result
2937SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2938--sorted_result
2939SELECT * FROM t3 WHERE c1 = 108;
2940
2941## Forward index scan, covering ##
2942--sorted_result
2943SELECT c2,c7 FROM t3;
2944
2945## Backward index scan, covering ##
2946SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
2947
2948## Forward index scan, non-covering ##
2949SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
2950
2951## Backward index scan, non-covering ##
2952SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
2953
2954## ref type access
2955SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
2956SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
2957SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
2958SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
2959
2960## Range access, ordered ##
2961SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
2962SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
2963SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
2964SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
2965SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
2966SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
2967SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
2968SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
2969SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
2970SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
2971SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
2972SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
2973SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
2974SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
2975SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
2976SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
2977SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
2978SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
2979SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
2980SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
2981SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
2982SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
2983
2984## Range access, backwards scan ##
2985SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
2986SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
2987SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
2988SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
2989SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
2990SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
2991SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
2992SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
2993SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
2994SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
2995SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
2996SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
2997SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
2998SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
2999SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
3000SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
3001SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
3002SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
3003SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
3004SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
3005SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
3006SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
3007## Full table scan ##
3008--sorted_result
3009SELECT * FROM t3;
3010--sorted_result
3011SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3012--sorted_result
3013SELECT * FROM t3 WHERE c1 = 108;
3014
3015## Forward index scan, covering ##
3016--sorted_result
3017SELECT c2,c7 FROM t3;
3018
3019## Backward index scan, covering ##
3020SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
3021
3022## Forward index scan, non-covering ##
3023SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
3024
3025## Backward index scan, non-covering ##
3026SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
3027
3028## ref type access
3029SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
3030SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
3031SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
3032SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
3033
3034## Range access, ordered ##
3035SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
3036SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
3037SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
3038SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
3039SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
3040SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
3041SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
3042SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
3043SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
3044SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
3045SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
3046SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
3047SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
3048SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
3049SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
3050SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
3051SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
3052SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
3053SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
3054SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
3055SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
3056SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
3057
3058## Range access, backwards scan ##
3059SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
3060SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
3061SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
3062SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
3063SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
3064SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
3065SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
3066SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
3067SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
3068SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
3069SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
3070SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
3071SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
3072SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
3073SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
3074SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
3075SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
3076SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
3077SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
3078SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
3079SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
3080SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
3081
3082# Using index for group-by
3083--sorted_result
3084SELECT c2 FROM t3 GROUP BY c2;
3085--sorted_result
3086SELECT DISTINCT c2 FROM t3;
3087--sorted_result
3088SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
3089
3090# Create tables with AUTO_INCREMENT columns and unique indexes
3091CREATE TABLE t4(c1 MEDIUMINT SIGNED NOT NULL AUTO_INCREMENT, c2 MEDIUMINT UNSIGNED NULL, c3 MEDIUMINT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
3092CREATE TABLE t5(c1 MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 MEDIUMINT SIGNED NOT NULL, c3 MEDIUMINT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
3093
3094# Test with AUTO_INCREMENT columns
3095# Insert some rows
3096INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
3097INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
3098# Insert 0 values, increments the value
3099INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
3100--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
3101--if (!$auto_value) {
3102--die "AUTO_INCREMENT didn't work well on 0"
3103}
3104INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
3105--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
3106--if (!$auto_value) {
3107--die "AUTO_INCREMENT didn't work well on 0"
3108}
3109# Insert NULL,  no error, increments the value
3110INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
3111--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
3112--if (!$auto_value) {
3113--die "AUTO_INCREMENT didn't work well on NULL"
3114}
3115INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
3116--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
3117--if (!$auto_value) {
3118--die "AUTO_INCREMENT didn't work well on NULL"
3119}
3120# Insert empty strings, increments the value
3121INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
3122--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
3123--if (!$auto_value) {
3124--die "AUTO_INCREMENT didn't work well on ''"
3125}
3126INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
3127--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
3128--if (!$auto_value) {
3129--die "AUTO_INCREMENT didn't work well on ''"
3130}
3131# Insert strings with numeric part, inserts the numeric part of the string
3132INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
3133--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
3134--if (!$auto_value) {
3135--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
3136}
3137INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
3138--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
3139--if (!$auto_value) {
3140--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
3141}
3142# Insert negative values unsigned & positive value to signed
3143INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
3144--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
3145--if (!$auto_value) {
3146--die "AUTO_INCREMENT didn't work on negative value"
3147}
3148INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
3149--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
3150--if (!$auto_value) {
3151--die "AUTO_INCREMENT didn't work for negative value on unsigned"
3152}
3153# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
3154INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
3155--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
3156--if (!$auto_value) {
3157--die "AUTO_INCREMENT didn't work well"
3158}
3159INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
3160--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
3161--if (!$auto_value) {
3162--die "AUTO_INCREMENT didn't work well"
3163}
3164
3165SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
3166SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
3167# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
3168## Full table scan ##
3169--sorted_result
3170SELECT * FROM t4;
3171--sorted_result
3172SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
3173--sorted_result
3174SELECT * FROM t4 WHERE c4 = 104;
3175
3176## Forward index scan, covering ##
3177--sorted_result
3178SELECT c1 FROM t4;
3179
3180## Backward index scan, covering ##
3181SELECT c1 FROM t4 ORDER BY c1 DESC;
3182
3183## Forward index scan, non-covering ##
3184SELECT * FROM t4 ORDER BY c1 LIMIT 2;
3185
3186## Backward index scan, non-covering ##
3187SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
3188
3189## ref type access
3190SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
3191SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
3192SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
3193SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
3194
3195## Range access, ordered ##
3196SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
3197SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
3198SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
3199SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
3200SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
3201SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
3202SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
3203SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
3204SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
3205SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
3206SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
3207SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
3208SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
3209SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
3210SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
3211SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
3212SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
3213SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
3214SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
3215SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3216SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
3217SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3218
3219## Range access, backwards scan ##
3220SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
3221SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
3222SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
3223SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
3224SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
3225SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
3226SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
3227SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
3228SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
3229SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
3230SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
3231SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
3232SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
3233SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
3234SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
3235SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
3236SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
3237SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
3238SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
3239SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3240SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3241SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3242## Full table scan ##
3243--sorted_result
3244SELECT * FROM t4;
3245--sorted_result
3246SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
3247--sorted_result
3248SELECT * FROM t4 WHERE c4 = 104;
3249
3250## Forward index scan, covering ##
3251--sorted_result
3252SELECT c1 FROM t4;
3253
3254## Backward index scan, covering ##
3255SELECT c1 FROM t4 ORDER BY c1 DESC;
3256
3257## Forward index scan, non-covering ##
3258SELECT * FROM t4 ORDER BY c1 LIMIT 2;
3259
3260## Backward index scan, non-covering ##
3261SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
3262
3263## ref type access
3264SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
3265SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
3266SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
3267SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
3268
3269## Range access, ordered ##
3270SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
3271SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
3272SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
3273SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
3274SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
3275SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
3276SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
3277SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
3278SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
3279SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
3280SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
3281SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
3282SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
3283SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
3284SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
3285SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
3286SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
3287SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
3288SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
3289SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3290SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
3291SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3292
3293## Range access, backwards scan ##
3294SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
3295SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
3296SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
3297SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
3298SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
3299SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
3300SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
3301SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
3302SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
3303SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
3304SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
3305SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
3306SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
3307SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
3308SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
3309SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
3310SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
3311SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
3312SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
3313SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3314SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3315SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3316## Full table scan ##
3317--sorted_result
3318SELECT * FROM t5;
3319--sorted_result
3320SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
3321--sorted_result
3322SELECT * FROM t5 WHERE c5 = 112;
3323
3324## Forward index scan, covering ##
3325--sorted_result
3326SELECT c1 FROM t5;
3327
3328## Backward index scan, covering ##
3329SELECT c1 FROM t5 ORDER BY c1 DESC;
3330
3331## Forward index scan, non-covering ##
3332SELECT * FROM t5 ORDER BY c1 LIMIT 2;
3333
3334## Backward index scan, non-covering ##
3335SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
3336
3337## ref type access
3338SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
3339SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
3340SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
3341SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
3342
3343## Range access, ordered ##
3344SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
3345SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
3346SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
3347SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
3348SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
3349SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
3350SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
3351SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
3352SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
3353SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
3354SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
3355SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
3356SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
3357SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
3358SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
3359SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
3360SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
3361SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
3362SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
3363SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3364SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
3365SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3366
3367## Range access, backwards scan ##
3368SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
3369SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
3370SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
3371SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
3372SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
3373SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
3374SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
3375SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
3376SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
3377SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
3378SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
3379SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
3380SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
3381SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
3382SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
3383SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
3384SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
3385SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
3386SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
3387SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3388SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3389SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3390
3391# Index-merge access
3392--sorted_result
3393SELECT * FROM t4 WHERE c1=1 OR c2=109;
3394
3395# Using index for group-by
3396--sorted_result
3397SELECT c2 FROM t4 GROUP BY c2;
3398--sorted_result
3399SELECT DISTINCT c2 FROM t4;
3400--sorted_result
3401SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
3402
3403# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
3404
3405# Insert NULL to non-null column
3406--error ER_BAD_NULL_ERROR
3407INSERT INTO t2(c1) VALUES(NULL);
3408--error ER_BAD_NULL_ERROR
3409INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
3410--error ER_BAD_NULL_ERROR
3411INSERT INTO t4(c3) VALUES(NULL);
3412--error ER_BAD_NULL_ERROR
3413INSERT INTO t5(c3) VALUES(NULL);
3414
3415# Insert duplicate value to pk
3416--error ER_DUP_ENTRY
3417INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
3418
3419# Insert duplicate value to clustered pk, throws error
3420--error ER_DUP_ENTRY
3421INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
3422--error ER_DUP_ENTRY
3423INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
3424
3425# Insert duplicate value to unique column, throws error
3426--error ER_DUP_ENTRY
3427INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
3428--error ER_DUP_ENTRY
3429# Insert duplicate value to clustered unique column, throws error
3430INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
3431
3432# Test 'INSERT INTO SELECT FROM'
3433CREATE TABLE t6(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT);
3434INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
3435--sorted_result
3436SELECT * FROM t6;
3437TRUNCATE TABLE t6;
3438INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
3439--sorted_result
3440SELECT * FROM t6;
3441TRUNCATE TABLE t6;
3442# Test 'INSERT INTO SELECT FROM' primary key constraint violation
3443CREATE TABLE t7(c1 MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT);
3444CREATE TABLE t8(c1 MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT);
3445INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
3446INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
3447--sorted_result
3448SELECT * FROM t7;
3449INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
3450--sorted_result
3451SELECT * FROM t8;
3452--error ER_DUP_ENTRY
3453INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
3454--error ER_DUP_ENTRY
3455INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
3456TRUNCATE TABLE t6;
3457
3458# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
3459INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
3460INSERT INTO t8 SELECT * FROM t6;
3461SELECT LAST_INSERT_ID() AS last_insert_id;
3462--sorted_result
3463SELECT * FROM t8;
3464TRUNCATE TABLE t8;
3465INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
3466--sorted_result
3467SELECT * FROM t8;
3468DROP TABLE t6,t7,t8;
3469
3470# Test 'INSERT SET'
3471INSERT INTO t2 SET c3=5,c4=6;
3472SET SQL_MODE=STRICT_ALL_TABLES;
3473--error ER_NO_DEFAULT_FOR_FIELD
3474INSERT INTO t2 SET c3=5,c4=6;
3475SET SQL_MODE='';
3476
3477# Test insert allowable bigger values to 'MEDIUMINT' columns
3478INSERT INTO t1 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20);
3479INSERT INTO t2 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20);
3480INSERT INTO t3 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20);
3481INSERT INTO t4 VALUES(-8388608,0,1,2,3,4,5,5),(-32768,255,6,7,8,9,10,10),(-128,65535,11,12,13,14,15,15),(8388607,16777215,16,17,18,19,20,20);
3482INSERT INTO t5 VALUES(0,-8388608,1,2,3,4,5,5),(255,-32768,6,7,8,9,10,10),(65535,-128,11,12,13,14,15,15),(16777215,8388607,16,17,18,19,20,20);
3483--error ER_DUP_ENTRY
3484INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
3485--disable_warnings
3486INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
3487--enable_warnings
3488--sorted_result
3489SELECT * FROM t4;
3490
3491# Insert signed value to unsigned 'MEDIUMINT', outside range values to signed/unsigned columns
3492INSERT INTO t1 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35);
3493INSERT INTO t2 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35);
3494INSERT INTO t3 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35);
3495# Insert into t4, t5 (TBD)
3496
3497# Now select using various table access methods
3498## Full table scan ##
3499--sorted_result
3500SELECT * FROM t2;
3501--sorted_result
3502SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3503--sorted_result
3504SELECT * FROM t2 WHERE c2 = -8388608;
3505
3506## Forward index scan, covering ##
3507--sorted_result
3508SELECT c1,c6 FROM t2;
3509
3510## Backward index scan, covering ##
3511SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
3512
3513## Forward index scan, non-covering ##
3514SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
3515
3516## Backward index scan, non-covering ##
3517SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
3518
3519## ref type access
3520SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
3521SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
3522SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
3523SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
3524
3525## Range access, ordered ##
3526SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
3527SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
3528SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
3529SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
3530SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
3531SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
3532SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
3533SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
3534SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
3535SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
3536SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
3537SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
3538SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6;
3539SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 LIMIT 2;
3540SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6;
3541SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 LIMIT 2;
3542SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6;
3543SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
3544SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
3545SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
3546SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
3547SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
3548
3549## Range access, backwards scan ##
3550SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
3551SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
3552SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
3553SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
3554SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
3555SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
3556SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
3557SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
3558SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
3559SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
3560SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
3561SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
3562SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC;
3563SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3564SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC;
3565SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC LIMIT 2;
3566SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC;
3567SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
3568SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
3569SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
3570SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
3571SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
3572## Full table scan ##
3573--sorted_result
3574SELECT * FROM t2;
3575--sorted_result
3576SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3577--sorted_result
3578SELECT * FROM t2 WHERE c2 = 8388607;
3579
3580## Forward index scan, covering ##
3581--sorted_result
3582SELECT c1,c6 FROM t2;
3583
3584## Backward index scan, covering ##
3585SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
3586
3587## Forward index scan, non-covering ##
3588SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
3589
3590## Backward index scan, non-covering ##
3591SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
3592
3593## ref type access
3594SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6;
3595SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 LIMIT 2;
3596SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 DESC;
3597SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3598
3599## Range access, ordered ##
3600SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6;
3601SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 LIMIT 2;
3602SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6;
3603SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 LIMIT 2;
3604SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6;
3605SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 LIMIT 2;
3606SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6;
3607SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 LIMIT 2;
3608SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6;
3609SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 LIMIT 2;
3610SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6;
3611SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 LIMIT 2;
3612SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6;
3613SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 LIMIT 2;
3614SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6;
3615SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 LIMIT 2;
3616SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6;
3617SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
3618SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
3619SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
3620SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
3621SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
3622
3623## Range access, backwards scan ##
3624SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 DESC;
3625SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3626SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 DESC;
3627SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3628SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 DESC;
3629SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3630SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 DESC;
3631SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3632SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 DESC;
3633SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3634SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 DESC;
3635SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3636SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC;
3637SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC LIMIT 2;
3638SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC;
3639SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC LIMIT 2;
3640SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC;
3641SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
3642SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
3643SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
3644SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
3645SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
3646## Full table scan ##
3647--sorted_result
3648SELECT * FROM t2;
3649--sorted_result
3650SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3651--sorted_result
3652SELECT * FROM t2 WHERE c2 = -8388609;
3653
3654## Forward index scan, covering ##
3655--sorted_result
3656SELECT c1,c6 FROM t2;
3657
3658## Backward index scan, covering ##
3659SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
3660
3661## Forward index scan, non-covering ##
3662SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
3663
3664## Backward index scan, non-covering ##
3665SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
3666
3667## ref type access
3668SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6;
3669SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2;
3670SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC;
3671SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2;
3672
3673## Range access, ordered ##
3674SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6;
3675SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2;
3676SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6;
3677SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2;
3678SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6;
3679SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2;
3680SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6;
3681SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2;
3682SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6;
3683SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2;
3684SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6;
3685SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2;
3686SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6;
3687SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 LIMIT 2;
3688SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6;
3689SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 LIMIT 2;
3690SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6;
3691SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
3692SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
3693SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
3694SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
3695SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
3696
3697## Range access, backwards scan ##
3698SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC;
3699SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2;
3700SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC;
3701SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2;
3702SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC;
3703SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2;
3704SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC;
3705SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2;
3706SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC;
3707SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2;
3708SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC;
3709SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2;
3710SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC;
3711SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3712SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC;
3713SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC LIMIT 2;
3714SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC;
3715SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
3716SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
3717SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
3718SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
3719SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
3720## Full table scan ##
3721--sorted_result
3722SELECT * FROM t2;
3723--sorted_result
3724SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3725--sorted_result
3726SELECT * FROM t2 WHERE c2 = 8388608;
3727
3728## Forward index scan, covering ##
3729--sorted_result
3730SELECT c1,c6 FROM t2;
3731
3732## Backward index scan, covering ##
3733SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
3734
3735## Forward index scan, non-covering ##
3736SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
3737
3738## Backward index scan, non-covering ##
3739SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
3740
3741## ref type access
3742SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6;
3743SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 LIMIT 2;
3744SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 DESC;
3745SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3746
3747## Range access, ordered ##
3748SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6;
3749SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 LIMIT 2;
3750SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6;
3751SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 LIMIT 2;
3752SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6;
3753SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 LIMIT 2;
3754SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6;
3755SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 LIMIT 2;
3756SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6;
3757SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 LIMIT 2;
3758SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6;
3759SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 LIMIT 2;
3760SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6;
3761SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 LIMIT 2;
3762SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6;
3763SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 LIMIT 2;
3764SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6;
3765SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
3766SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
3767SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
3768SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
3769SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
3770
3771## Range access, backwards scan ##
3772SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 DESC;
3773SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3774SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 DESC;
3775SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3776SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 DESC;
3777SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3778SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 DESC;
3779SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3780SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 DESC;
3781SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3782SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 DESC;
3783SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3784SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC;
3785SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC LIMIT 2;
3786SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC;
3787SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC LIMIT 2;
3788SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC;
3789SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
3790SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
3791SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
3792SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
3793SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
3794## Full table scan ##
3795--sorted_result
3796SELECT * FROM t3;
3797--sorted_result
3798SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3799--sorted_result
3800SELECT * FROM t3 WHERE c1 = 0;
3801
3802## Forward index scan, covering ##
3803--sorted_result
3804SELECT c2,c7 FROM t3;
3805
3806## Backward index scan, covering ##
3807SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
3808
3809## Forward index scan, non-covering ##
3810SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
3811
3812## Backward index scan, non-covering ##
3813SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
3814
3815## ref type access
3816SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7;
3817SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 LIMIT 2;
3818SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 DESC;
3819SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3820
3821## Range access, ordered ##
3822SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7;
3823SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 LIMIT 2;
3824SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7;
3825SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 LIMIT 2;
3826SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7;
3827SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 LIMIT 2;
3828SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7;
3829SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 LIMIT 2;
3830SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7;
3831SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 LIMIT 2;
3832SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7;
3833SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 LIMIT 2;
3834SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7;
3835SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 LIMIT 2;
3836SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7;
3837SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 LIMIT 2;
3838SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7;
3839SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 LIMIT 2;
3840SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
3841SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
3842SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
3843SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
3844
3845## Range access, backwards scan ##
3846SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 DESC;
3847SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3848SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 DESC;
3849SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3850SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 DESC;
3851SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3852SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 DESC;
3853SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3854SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 DESC;
3855SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3856SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 DESC;
3857SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 DESC LIMIT 2;
3858SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC;
3859SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3860SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC;
3861SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC LIMIT 2;
3862SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC;
3863SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC LIMIT 2;
3864SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
3865SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
3866SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
3867SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
3868## Full table scan ##
3869--sorted_result
3870SELECT * FROM t3;
3871--sorted_result
3872SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3873--sorted_result
3874SELECT * FROM t3 WHERE c1 = 16777215;
3875
3876## Forward index scan, covering ##
3877--sorted_result
3878SELECT c2,c7 FROM t3;
3879
3880## Backward index scan, covering ##
3881SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
3882
3883## Forward index scan, non-covering ##
3884SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
3885
3886## Backward index scan, non-covering ##
3887SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
3888
3889## ref type access
3890SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7;
3891SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 LIMIT 2;
3892SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 DESC;
3893SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3894
3895## Range access, ordered ##
3896SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7;
3897SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 LIMIT 2;
3898SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7;
3899SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 LIMIT 2;
3900SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7;
3901SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 LIMIT 2;
3902SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7;
3903SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 LIMIT 2;
3904SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7;
3905SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 LIMIT 2;
3906SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7;
3907SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 LIMIT 2;
3908SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7;
3909SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 LIMIT 2;
3910SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7;
3911SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 LIMIT 2;
3912SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7;
3913SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 LIMIT 2;
3914SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
3915SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
3916SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
3917SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
3918
3919## Range access, backwards scan ##
3920SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 DESC;
3921SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3922SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 DESC;
3923SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3924SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 DESC;
3925SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3926SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 DESC;
3927SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3928SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 DESC;
3929SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3930SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 DESC;
3931SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3932SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC;
3933SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC LIMIT 2;
3934SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC;
3935SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC LIMIT 2;
3936SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC;
3937SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC LIMIT 2;
3938SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
3939SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
3940SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
3941SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
3942## Full table scan ##
3943--sorted_result
3944SELECT * FROM t3;
3945--sorted_result
3946SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3947--sorted_result
3948SELECT * FROM t3 WHERE c1 = -255;
3949
3950## Forward index scan, covering ##
3951--sorted_result
3952SELECT c2,c7 FROM t3;
3953
3954## Backward index scan, covering ##
3955SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
3956
3957## Forward index scan, non-covering ##
3958SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
3959
3960## Backward index scan, non-covering ##
3961SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
3962
3963## ref type access
3964SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7;
3965SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 LIMIT 2;
3966SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 DESC;
3967SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 DESC LIMIT 2;
3968
3969## Range access, ordered ##
3970SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7;
3971SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 LIMIT 2;
3972SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7;
3973SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 LIMIT 2;
3974SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7;
3975SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 LIMIT 2;
3976SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7;
3977SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 LIMIT 2;
3978SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7;
3979SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 LIMIT 2;
3980SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7;
3981SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 LIMIT 2;
3982SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7;
3983SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 LIMIT 2;
3984SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7;
3985SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 LIMIT 2;
3986SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7;
3987SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
3988SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
3989SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
3990SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
3991SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
3992
3993## Range access, backwards scan ##
3994SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 DESC;
3995SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 DESC LIMIT 2;
3996SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 DESC;
3997SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 DESC LIMIT 2;
3998SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 DESC;
3999SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 DESC LIMIT 2;
4000SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 DESC;
4001SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 DESC LIMIT 2;
4002SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 DESC;
4003SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 DESC LIMIT 2;
4004SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 DESC;
4005SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 DESC LIMIT 2;
4006SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC;
4007SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4008SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC;
4009SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC LIMIT 2;
4010SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC;
4011SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
4012SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
4013SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
4014SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
4015SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
4016## Full table scan ##
4017--sorted_result
4018SELECT * FROM t3;
4019--sorted_result
4020SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4021--sorted_result
4022SELECT * FROM t3 WHERE c1 = 16777216;
4023
4024## Forward index scan, covering ##
4025--sorted_result
4026SELECT c2,c7 FROM t3;
4027
4028## Backward index scan, covering ##
4029SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
4030
4031## Forward index scan, non-covering ##
4032SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
4033
4034## Backward index scan, non-covering ##
4035SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
4036
4037## ref type access
4038SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7;
4039SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 LIMIT 2;
4040SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 DESC;
4041SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4042
4043## Range access, ordered ##
4044SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7;
4045SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 LIMIT 2;
4046SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7;
4047SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 LIMIT 2;
4048SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7;
4049SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 LIMIT 2;
4050SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7;
4051SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 LIMIT 2;
4052SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7;
4053SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 LIMIT 2;
4054SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7;
4055SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 LIMIT 2;
4056SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7;
4057SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 LIMIT 2;
4058SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7;
4059SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 LIMIT 2;
4060SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7;
4061SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
4062SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
4063SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
4064SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
4065SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
4066
4067## Range access, backwards scan ##
4068SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 DESC;
4069SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4070SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 DESC;
4071SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4072SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 DESC;
4073SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4074SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 DESC;
4075SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4076SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 DESC;
4077SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4078SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 DESC;
4079SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4080SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC;
4081SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC LIMIT 2;
4082SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC;
4083SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC LIMIT 2;
4084SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC;
4085SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
4086SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
4087SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
4088SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
4089SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
4090DROP TABLE t1,t2,t3,t4,t5;
4091
4092######## Running INSERT tests for INT ########
4093
4094# Create tables
4095CREATE TABLE t1(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT);
4096CREATE TABLE t2(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6));
4097CREATE TABLE t3(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT, index idx(c2,c7));
4098
4099# Insert some rows with targeted values
4100INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
4101INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
4102INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
4103
4104# Insert duplicates for parts of the clustered key
4105INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
4106INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
4107
4108# Insert permissible NULLs
4109INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
4110INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
4111INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
4112
4113# Insert empty string ''
4114INSERT INTO t1 VALUES('','',17,18,19,20,21);
4115INSERT INTO t2 VALUES('','',17,18,19,20,21);
4116INSERT INTO t3 VALUES('','',17,18,19,20,21);
4117
4118# Insert negative value to unsigned integer, positive value to signed integer, zero values
4119INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
4120INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
4121INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
4122INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
4123INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
4124INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
4125INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
4126INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
4127INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
4128
4129# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
4130INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
4131INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
4132INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
4133
4134--sorted_result
4135SELECT * FROM t1;
4136SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
4137SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
4138SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
4139SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
4140SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
4141SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
4142
4143# Now select using various table access methods (full table scan, range scan, index scan etc.)
4144## Full table scan ##
4145--sorted_result
4146SELECT * FROM t2;
4147--sorted_result
4148SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4149--sorted_result
4150SELECT * FROM t2 WHERE c2 = 102;
4151
4152## Forward index scan, covering ##
4153--sorted_result
4154SELECT c1,c6 FROM t2;
4155
4156## Backward index scan, covering ##
4157SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
4158
4159## Forward index scan, non-covering ##
4160SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
4161
4162## Backward index scan, non-covering ##
4163SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
4164
4165## ref type access
4166SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
4167SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
4168SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
4169SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
4170
4171## Range access, ordered ##
4172SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
4173SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
4174SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
4175SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
4176SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
4177SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
4178SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
4179SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
4180SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
4181SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
4182SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
4183SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
4184SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
4185SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
4186SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
4187SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
4188SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
4189SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
4190SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
4191SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
4192SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
4193SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
4194
4195## Range access, backwards scan ##
4196SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
4197SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
4198SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
4199SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
4200SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
4201SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
4202SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
4203SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
4204SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
4205SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
4206SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
4207SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
4208SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
4209SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
4210SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
4211SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
4212SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
4213SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
4214SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
4215SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
4216SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
4217SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
4218## Full table scan ##
4219--sorted_result
4220SELECT * FROM t2;
4221--sorted_result
4222SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4223--sorted_result
4224SELECT * FROM t2 WHERE c2 = 102;
4225
4226## Forward index scan, covering ##
4227--sorted_result
4228SELECT c1,c6 FROM t2;
4229
4230## Backward index scan, covering ##
4231SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
4232
4233## Forward index scan, non-covering ##
4234SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
4235
4236## Backward index scan, non-covering ##
4237SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
4238
4239## ref type access
4240SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
4241SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
4242SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
4243SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
4244
4245## Range access, ordered ##
4246SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
4247SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
4248SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
4249SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
4250SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
4251SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
4252SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
4253SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
4254SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
4255SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
4256SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
4257SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
4258SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
4259SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
4260SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
4261SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
4262SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
4263SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
4264SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
4265SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
4266SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
4267SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
4268
4269## Range access, backwards scan ##
4270SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
4271SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
4272SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
4273SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
4274SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
4275SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
4276SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
4277SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
4278SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
4279SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
4280SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
4281SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
4282SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
4283SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
4284SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
4285SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
4286SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
4287SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
4288SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
4289SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
4290SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
4291SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
4292## Full table scan ##
4293--sorted_result
4294SELECT * FROM t3;
4295--sorted_result
4296SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4297--sorted_result
4298SELECT * FROM t3 WHERE c1 = 108;
4299
4300## Forward index scan, covering ##
4301--sorted_result
4302SELECT c2,c7 FROM t3;
4303
4304## Backward index scan, covering ##
4305SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
4306
4307## Forward index scan, non-covering ##
4308SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
4309
4310## Backward index scan, non-covering ##
4311SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
4312
4313## ref type access
4314SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
4315SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
4316SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
4317SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
4318
4319## Range access, ordered ##
4320SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
4321SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
4322SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
4323SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
4324SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
4325SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
4326SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
4327SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
4328SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
4329SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
4330SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
4331SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
4332SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
4333SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
4334SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
4335SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
4336SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
4337SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
4338SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
4339SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
4340SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
4341SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
4342
4343## Range access, backwards scan ##
4344SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
4345SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
4346SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
4347SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
4348SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
4349SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
4350SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
4351SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
4352SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
4353SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
4354SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
4355SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
4356SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
4357SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
4358SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
4359SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
4360SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
4361SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
4362SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
4363SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
4364SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
4365SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
4366## Full table scan ##
4367--sorted_result
4368SELECT * FROM t3;
4369--sorted_result
4370SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4371--sorted_result
4372SELECT * FROM t3 WHERE c1 = 108;
4373
4374## Forward index scan, covering ##
4375--sorted_result
4376SELECT c2,c7 FROM t3;
4377
4378## Backward index scan, covering ##
4379SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
4380
4381## Forward index scan, non-covering ##
4382SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
4383
4384## Backward index scan, non-covering ##
4385SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
4386
4387## ref type access
4388SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
4389SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
4390SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
4391SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
4392
4393## Range access, ordered ##
4394SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
4395SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
4396SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
4397SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
4398SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
4399SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
4400SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
4401SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
4402SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
4403SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
4404SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
4405SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
4406SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
4407SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
4408SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
4409SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
4410SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
4411SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
4412SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
4413SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
4414SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
4415SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
4416
4417## Range access, backwards scan ##
4418SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
4419SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
4420SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
4421SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
4422SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
4423SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
4424SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
4425SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
4426SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
4427SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
4428SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
4429SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
4430SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
4431SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
4432SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
4433SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
4434SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
4435SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
4436SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
4437SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
4438SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
4439SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
4440
4441# Using index for group-by
4442--sorted_result
4443SELECT c2 FROM t3 GROUP BY c2;
4444--sorted_result
4445SELECT DISTINCT c2 FROM t3;
4446--sorted_result
4447SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
4448
4449# Create tables with AUTO_INCREMENT columns and unique indexes
4450CREATE TABLE t4(c1 INT SIGNED NOT NULL AUTO_INCREMENT, c2 INT UNSIGNED NULL, c3 INT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
4451CREATE TABLE t5(c1 INT UNSIGNED NOT NULL AUTO_INCREMENT, c2 INT SIGNED NOT NULL, c3 INT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
4452
4453# Test with AUTO_INCREMENT columns
4454# Insert some rows
4455INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
4456INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
4457# Insert 0 values, increments the value
4458INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
4459--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
4460--if (!$auto_value) {
4461--die "AUTO_INCREMENT didn't work well on 0"
4462}
4463INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
4464--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
4465--if (!$auto_value) {
4466--die "AUTO_INCREMENT didn't work well on 0"
4467}
4468# Insert NULL,  no error, increments the value
4469INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
4470--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
4471--if (!$auto_value) {
4472--die "AUTO_INCREMENT didn't work well on NULL"
4473}
4474INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
4475--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
4476--if (!$auto_value) {
4477--die "AUTO_INCREMENT didn't work well on NULL"
4478}
4479# Insert empty strings, increments the value
4480INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
4481--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
4482--if (!$auto_value) {
4483--die "AUTO_INCREMENT didn't work well on ''"
4484}
4485INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
4486--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
4487--if (!$auto_value) {
4488--die "AUTO_INCREMENT didn't work well on ''"
4489}
4490# Insert strings with numeric part, inserts the numeric part of the string
4491INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
4492--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
4493--if (!$auto_value) {
4494--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
4495}
4496INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
4497--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
4498--if (!$auto_value) {
4499--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
4500}
4501# Insert negative values unsigned & positive value to signed
4502INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
4503--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
4504--if (!$auto_value) {
4505--die "AUTO_INCREMENT didn't work on negative value"
4506}
4507INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
4508--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
4509--if (!$auto_value) {
4510--die "AUTO_INCREMENT didn't work for negative value on unsigned"
4511}
4512# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
4513INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
4514--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
4515--if (!$auto_value) {
4516--die "AUTO_INCREMENT didn't work well"
4517}
4518INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
4519--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
4520--if (!$auto_value) {
4521--die "AUTO_INCREMENT didn't work well"
4522}
4523
4524SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
4525SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
4526# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
4527## Full table scan ##
4528--sorted_result
4529SELECT * FROM t4;
4530--sorted_result
4531SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
4532--sorted_result
4533SELECT * FROM t4 WHERE c4 = 104;
4534
4535## Forward index scan, covering ##
4536--sorted_result
4537SELECT c1 FROM t4;
4538
4539## Backward index scan, covering ##
4540SELECT c1 FROM t4 ORDER BY c1 DESC;
4541
4542## Forward index scan, non-covering ##
4543SELECT * FROM t4 ORDER BY c1 LIMIT 2;
4544
4545## Backward index scan, non-covering ##
4546SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
4547
4548## ref type access
4549SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
4550SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
4551SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
4552SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
4553
4554## Range access, ordered ##
4555SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
4556SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
4557SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
4558SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
4559SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
4560SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
4561SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
4562SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
4563SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
4564SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
4565SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
4566SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
4567SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
4568SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
4569SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
4570SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
4571SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
4572SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
4573SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
4574SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4575SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
4576SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4577
4578## Range access, backwards scan ##
4579SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
4580SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
4581SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
4582SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
4583SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
4584SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
4585SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
4586SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
4587SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
4588SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
4589SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
4590SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
4591SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
4592SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
4593SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
4594SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
4595SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
4596SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
4597SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
4598SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4599SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4600SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4601## Full table scan ##
4602--sorted_result
4603SELECT * FROM t4;
4604--sorted_result
4605SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
4606--sorted_result
4607SELECT * FROM t4 WHERE c4 = 104;
4608
4609## Forward index scan, covering ##
4610--sorted_result
4611SELECT c1 FROM t4;
4612
4613## Backward index scan, covering ##
4614SELECT c1 FROM t4 ORDER BY c1 DESC;
4615
4616## Forward index scan, non-covering ##
4617SELECT * FROM t4 ORDER BY c1 LIMIT 2;
4618
4619## Backward index scan, non-covering ##
4620SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
4621
4622## ref type access
4623SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
4624SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
4625SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
4626SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
4627
4628## Range access, ordered ##
4629SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
4630SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
4631SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
4632SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
4633SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
4634SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
4635SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
4636SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
4637SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
4638SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
4639SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
4640SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
4641SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
4642SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
4643SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
4644SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
4645SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
4646SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
4647SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
4648SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4649SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
4650SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4651
4652## Range access, backwards scan ##
4653SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
4654SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
4655SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
4656SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
4657SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
4658SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
4659SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
4660SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
4661SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
4662SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
4663SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
4664SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
4665SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
4666SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
4667SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
4668SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
4669SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
4670SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
4671SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
4672SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4673SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4674SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4675## Full table scan ##
4676--sorted_result
4677SELECT * FROM t5;
4678--sorted_result
4679SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
4680--sorted_result
4681SELECT * FROM t5 WHERE c5 = 112;
4682
4683## Forward index scan, covering ##
4684--sorted_result
4685SELECT c1 FROM t5;
4686
4687## Backward index scan, covering ##
4688SELECT c1 FROM t5 ORDER BY c1 DESC;
4689
4690## Forward index scan, non-covering ##
4691SELECT * FROM t5 ORDER BY c1 LIMIT 2;
4692
4693## Backward index scan, non-covering ##
4694SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
4695
4696## ref type access
4697SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
4698SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
4699SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
4700SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
4701
4702## Range access, ordered ##
4703SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
4704SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
4705SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
4706SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
4707SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
4708SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
4709SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
4710SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
4711SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
4712SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
4713SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
4714SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
4715SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
4716SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
4717SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
4718SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
4719SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
4720SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
4721SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
4722SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4723SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
4724SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4725
4726## Range access, backwards scan ##
4727SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
4728SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
4729SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
4730SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
4731SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
4732SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
4733SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
4734SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
4735SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
4736SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
4737SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
4738SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
4739SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
4740SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
4741SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
4742SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
4743SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
4744SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
4745SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
4746SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4747SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4748SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4749
4750# Index-merge access
4751--sorted_result
4752SELECT * FROM t4 WHERE c1=1 OR c2=109;
4753
4754# Using index for group-by
4755--sorted_result
4756SELECT c2 FROM t4 GROUP BY c2;
4757--sorted_result
4758SELECT DISTINCT c2 FROM t4;
4759--sorted_result
4760SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
4761
4762# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
4763
4764# Insert NULL to non-null column
4765--error ER_BAD_NULL_ERROR
4766INSERT INTO t2(c1) VALUES(NULL);
4767--error ER_BAD_NULL_ERROR
4768INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
4769--error ER_BAD_NULL_ERROR
4770INSERT INTO t4(c3) VALUES(NULL);
4771--error ER_BAD_NULL_ERROR
4772INSERT INTO t5(c3) VALUES(NULL);
4773
4774# Insert duplicate value to pk
4775--error ER_DUP_ENTRY
4776INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
4777
4778# Insert duplicate value to clustered pk, throws error
4779--error ER_DUP_ENTRY
4780INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
4781--error ER_DUP_ENTRY
4782INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
4783
4784# Insert duplicate value to unique column, throws error
4785--error ER_DUP_ENTRY
4786INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
4787--error ER_DUP_ENTRY
4788# Insert duplicate value to clustered unique column, throws error
4789INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
4790
4791# Test 'INSERT INTO SELECT FROM'
4792CREATE TABLE t6(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT);
4793INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
4794--sorted_result
4795SELECT * FROM t6;
4796TRUNCATE TABLE t6;
4797INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
4798--sorted_result
4799SELECT * FROM t6;
4800TRUNCATE TABLE t6;
4801# Test 'INSERT INTO SELECT FROM' primary key constraint violation
4802CREATE TABLE t7(c1 INT UNSIGNED NOT NULL PRIMARY KEY, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT);
4803CREATE TABLE t8(c1 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT);
4804INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
4805INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
4806--sorted_result
4807SELECT * FROM t7;
4808INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
4809--sorted_result
4810SELECT * FROM t8;
4811--error ER_DUP_ENTRY
4812INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
4813--error ER_DUP_ENTRY
4814INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
4815TRUNCATE TABLE t6;
4816
4817# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
4818INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
4819INSERT INTO t8 SELECT * FROM t6;
4820SELECT LAST_INSERT_ID() AS last_insert_id;
4821--sorted_result
4822SELECT * FROM t8;
4823TRUNCATE TABLE t8;
4824INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
4825--sorted_result
4826SELECT * FROM t8;
4827DROP TABLE t6,t7,t8;
4828
4829# Test 'INSERT SET'
4830INSERT INTO t2 SET c3=5,c4=6;
4831SET SQL_MODE=STRICT_ALL_TABLES;
4832--error ER_NO_DEFAULT_FOR_FIELD
4833INSERT INTO t2 SET c3=5,c4=6;
4834SET SQL_MODE='';
4835
4836# Test insert allowable bigger values to 'INT' columns
4837INSERT INTO t1 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
4838INSERT INTO t2 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
4839INSERT INTO t3 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
4840INSERT INTO t4 VALUES(-2147483648,0,1,2,3,4,5,5),(-8388608,255,6,7,8,9,10,10),(-32768,65535,11,12,13,14,15,15),(-128,16777215,16,17,18,19,20,20),(2147483647,4294967295,21,22,23,24,25,25);
4841INSERT INTO t5 VALUES(0,-2147483648,1,2,3,4,5,5),(255,-8388608,6,7,8,9,10,10),(65535,-32768,11,12,13,14,15,15),(16777215,-128,16,17,18,19,20,20),(4294967295,2147483647,21,22,23,24,25,25);
4842--error ER_DUP_ENTRY
4843INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
4844--disable_warnings
4845INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
4846--enable_warnings
4847--sorted_result
4848SELECT * FROM t4;
4849
4850# Insert signed value to unsigned 'INT', outside range values to signed/unsigned columns
4851INSERT INTO t1 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
4852INSERT INTO t2 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
4853INSERT INTO t3 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
4854# Insert into t4, t5 (TBD)
4855
4856# Now select using various table access methods
4857## Full table scan ##
4858--sorted_result
4859SELECT * FROM t2;
4860--sorted_result
4861SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4862--sorted_result
4863SELECT * FROM t2 WHERE c2 = -2147483648;
4864
4865## Forward index scan, covering ##
4866--sorted_result
4867SELECT c1,c6 FROM t2;
4868
4869## Backward index scan, covering ##
4870SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
4871
4872## Forward index scan, non-covering ##
4873SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
4874
4875## Backward index scan, non-covering ##
4876SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
4877
4878## ref type access
4879SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
4880SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
4881SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
4882SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
4883
4884## Range access, ordered ##
4885SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
4886SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
4887SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
4888SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
4889SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
4890SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
4891SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
4892SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
4893SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
4894SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
4895SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
4896SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
4897SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6;
4898SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2;
4899SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6;
4900SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2;
4901SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6;
4902SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
4903SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
4904SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
4905SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
4906SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
4907
4908## Range access, backwards scan ##
4909SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
4910SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
4911SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
4912SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
4913SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
4914SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
4915SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
4916SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
4917SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
4918SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
4919SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
4920SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
4921SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC;
4922SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4923SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC;
4924SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2;
4925SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC;
4926SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
4927SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
4928SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
4929SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
4930SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
4931## Full table scan ##
4932--sorted_result
4933SELECT * FROM t2;
4934--sorted_result
4935SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4936--sorted_result
4937SELECT * FROM t2 WHERE c2 = 2147483647;
4938
4939## Forward index scan, covering ##
4940--sorted_result
4941SELECT c1,c6 FROM t2;
4942
4943## Backward index scan, covering ##
4944SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
4945
4946## Forward index scan, non-covering ##
4947SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
4948
4949## Backward index scan, non-covering ##
4950SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
4951
4952## ref type access
4953SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6;
4954SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 LIMIT 2;
4955SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC;
4956SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4957
4958## Range access, ordered ##
4959SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6;
4960SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 LIMIT 2;
4961SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6;
4962SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 LIMIT 2;
4963SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6;
4964SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 LIMIT 2;
4965SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6;
4966SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 LIMIT 2;
4967SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6;
4968SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 LIMIT 2;
4969SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6;
4970SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 LIMIT 2;
4971SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6;
4972SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2;
4973SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6;
4974SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2;
4975SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6;
4976SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
4977SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
4978SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
4979SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
4980SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
4981
4982## Range access, backwards scan ##
4983SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC;
4984SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4985SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC;
4986SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4987SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC;
4988SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4989SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC;
4990SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4991SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC;
4992SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4993SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC;
4994SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4995SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC;
4996SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
4997SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC;
4998SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2;
4999SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC;
5000SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
5001SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
5002SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
5003SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
5004SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
5005## Full table scan ##
5006--sorted_result
5007SELECT * FROM t2;
5008--sorted_result
5009SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5010--sorted_result
5011SELECT * FROM t2 WHERE c2 = -2147483649;
5012
5013## Forward index scan, covering ##
5014--sorted_result
5015SELECT c1,c6 FROM t2;
5016
5017## Backward index scan, covering ##
5018SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
5019
5020## Forward index scan, non-covering ##
5021SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
5022
5023## Backward index scan, non-covering ##
5024SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
5025
5026## ref type access
5027SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6;
5028SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2;
5029SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC;
5030SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2;
5031
5032## Range access, ordered ##
5033SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6;
5034SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2;
5035SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6;
5036SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2;
5037SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6;
5038SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2;
5039SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6;
5040SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2;
5041SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6;
5042SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2;
5043SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6;
5044SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2;
5045SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6;
5046SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2;
5047SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6;
5048SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2;
5049SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6;
5050SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
5051SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
5052SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
5053SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
5054SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
5055
5056## Range access, backwards scan ##
5057SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC;
5058SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2;
5059SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC;
5060SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2;
5061SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC;
5062SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2;
5063SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC;
5064SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2;
5065SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC;
5066SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2;
5067SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC;
5068SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2;
5069SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC;
5070SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5071SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC;
5072SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2;
5073SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC;
5074SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
5075SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
5076SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
5077SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
5078SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
5079## Full table scan ##
5080--sorted_result
5081SELECT * FROM t2;
5082--sorted_result
5083SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5084--sorted_result
5085SELECT * FROM t2 WHERE c2 = 2147483648;
5086
5087## Forward index scan, covering ##
5088--sorted_result
5089SELECT c1,c6 FROM t2;
5090
5091## Backward index scan, covering ##
5092SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
5093
5094## Forward index scan, non-covering ##
5095SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
5096
5097## Backward index scan, non-covering ##
5098SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
5099
5100## ref type access
5101SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6;
5102SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 LIMIT 2;
5103SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC;
5104SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5105
5106## Range access, ordered ##
5107SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6;
5108SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 LIMIT 2;
5109SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6;
5110SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 LIMIT 2;
5111SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6;
5112SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 LIMIT 2;
5113SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6;
5114SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 LIMIT 2;
5115SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6;
5116SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 LIMIT 2;
5117SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6;
5118SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 LIMIT 2;
5119SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6;
5120SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2;
5121SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6;
5122SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2;
5123SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6;
5124SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
5125SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
5126SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
5127SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
5128SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
5129
5130## Range access, backwards scan ##
5131SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC;
5132SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5133SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC;
5134SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5135SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC;
5136SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5137SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC;
5138SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5139SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC;
5140SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5141SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC;
5142SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5143SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC;
5144SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
5145SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC;
5146SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2;
5147SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC;
5148SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
5149SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
5150SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
5151SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
5152SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
5153## Full table scan ##
5154--sorted_result
5155SELECT * FROM t3;
5156--sorted_result
5157SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5158--sorted_result
5159SELECT * FROM t3 WHERE c1 = 0;
5160
5161## Forward index scan, covering ##
5162--sorted_result
5163SELECT c2,c7 FROM t3;
5164
5165## Backward index scan, covering ##
5166SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5167
5168## Forward index scan, non-covering ##
5169SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5170
5171## Backward index scan, non-covering ##
5172SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5173
5174## ref type access
5175SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7;
5176SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 LIMIT 2;
5177SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC;
5178SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5179
5180## Range access, ordered ##
5181SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7;
5182SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 LIMIT 2;
5183SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7;
5184SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 LIMIT 2;
5185SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7;
5186SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 LIMIT 2;
5187SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7;
5188SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 LIMIT 2;
5189SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7;
5190SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 LIMIT 2;
5191SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7;
5192SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 LIMIT 2;
5193SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7;
5194SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2;
5195SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7;
5196SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2;
5197SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7;
5198SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
5199SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5200SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5201SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5202SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5203
5204## Range access, backwards scan ##
5205SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC;
5206SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5207SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC;
5208SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5209SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC;
5210SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5211SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC;
5212SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5213SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC;
5214SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5215SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC;
5216SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5217SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC;
5218SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5219SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC;
5220SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2;
5221SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC;
5222SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
5223SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5224SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5225SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5226SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5227## Full table scan ##
5228--sorted_result
5229SELECT * FROM t3;
5230--sorted_result
5231SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5232--sorted_result
5233SELECT * FROM t3 WHERE c1 = 4294967295;
5234
5235## Forward index scan, covering ##
5236--sorted_result
5237SELECT c2,c7 FROM t3;
5238
5239## Backward index scan, covering ##
5240SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5241
5242## Forward index scan, non-covering ##
5243SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5244
5245## Backward index scan, non-covering ##
5246SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5247
5248## ref type access
5249SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7;
5250SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 LIMIT 2;
5251SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC;
5252SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5253
5254## Range access, ordered ##
5255SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7;
5256SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 LIMIT 2;
5257SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7;
5258SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 LIMIT 2;
5259SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7;
5260SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 LIMIT 2;
5261SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7;
5262SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 LIMIT 2;
5263SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7;
5264SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 LIMIT 2;
5265SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7;
5266SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 LIMIT 2;
5267SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7;
5268SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2;
5269SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7;
5270SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2;
5271SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7;
5272SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
5273SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5274SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5275SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5276SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5277
5278## Range access, backwards scan ##
5279SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC;
5280SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5281SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC;
5282SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5283SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC;
5284SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5285SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC;
5286SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5287SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC;
5288SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5289SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC;
5290SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5291SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC;
5292SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
5293SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC;
5294SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2;
5295SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC;
5296SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
5297SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5298SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5299SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5300SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5301## Full table scan ##
5302--sorted_result
5303SELECT * FROM t3;
5304--sorted_result
5305SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5306--sorted_result
5307SELECT * FROM t3 WHERE c1 = -255;
5308
5309## Forward index scan, covering ##
5310--sorted_result
5311SELECT c2,c7 FROM t3;
5312
5313## Backward index scan, covering ##
5314SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5315
5316## Forward index scan, non-covering ##
5317SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5318
5319## Backward index scan, non-covering ##
5320SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5321
5322## ref type access
5323SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7;
5324SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 LIMIT 2;
5325SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC;
5326SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5327
5328## Range access, ordered ##
5329SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7;
5330SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 LIMIT 2;
5331SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7;
5332SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 LIMIT 2;
5333SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7;
5334SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 LIMIT 2;
5335SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7;
5336SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 LIMIT 2;
5337SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7;
5338SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 LIMIT 2;
5339SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7;
5340SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 LIMIT 2;
5341SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7;
5342SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2;
5343SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7;
5344SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2;
5345SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7;
5346SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
5347SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5348SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5349SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5350SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5351
5352## Range access, backwards scan ##
5353SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC;
5354SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5355SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC;
5356SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5357SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC;
5358SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5359SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC;
5360SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5361SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC;
5362SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5363SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC;
5364SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
5365SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC;
5366SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5367SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC;
5368SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2;
5369SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC;
5370SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
5371SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5372SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5373SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5374SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5375## Full table scan ##
5376--sorted_result
5377SELECT * FROM t3;
5378--sorted_result
5379SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5380--sorted_result
5381SELECT * FROM t3 WHERE c1 = 4294967296;
5382
5383## Forward index scan, covering ##
5384--sorted_result
5385SELECT c2,c7 FROM t3;
5386
5387## Backward index scan, covering ##
5388SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5389
5390## Forward index scan, non-covering ##
5391SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5392
5393## Backward index scan, non-covering ##
5394SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5395
5396## ref type access
5397SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7;
5398SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 LIMIT 2;
5399SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC;
5400SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5401
5402## Range access, ordered ##
5403SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7;
5404SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 LIMIT 2;
5405SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7;
5406SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 LIMIT 2;
5407SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7;
5408SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 LIMIT 2;
5409SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7;
5410SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 LIMIT 2;
5411SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7;
5412SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 LIMIT 2;
5413SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7;
5414SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 LIMIT 2;
5415SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7;
5416SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2;
5417SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7;
5418SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2;
5419SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7;
5420SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
5421SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5422SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5423SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5424SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5425
5426## Range access, backwards scan ##
5427SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC;
5428SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5429SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC;
5430SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5431SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC;
5432SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5433SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC;
5434SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5435SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC;
5436SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5437SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC;
5438SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5439SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC;
5440SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
5441SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC;
5442SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2;
5443SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC;
5444SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
5445SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5446SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5447SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5448SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5449DROP TABLE t1,t2,t3,t4,t5;
5450
5451######## Running INSERT tests for INTEGER ########
5452
5453# Create tables
5454CREATE TABLE t1(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT);
5455CREATE TABLE t2(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT, PRIMARY KEY(c1,c6));
5456CREATE TABLE t3(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT, index idx(c2,c7));
5457
5458# Insert some rows with targeted values
5459INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
5460INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
5461INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
5462
5463# Insert duplicates for parts of the clustered key
5464INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
5465INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
5466
5467# Insert permissible NULLs
5468INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
5469INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
5470INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
5471
5472# Insert empty string ''
5473INSERT INTO t1 VALUES('','',17,18,19,20,21);
5474INSERT INTO t2 VALUES('','',17,18,19,20,21);
5475INSERT INTO t3 VALUES('','',17,18,19,20,21);
5476
5477# Insert negative value to unsigned integer, positive value to signed integer, zero values
5478INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
5479INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
5480INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
5481INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
5482INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
5483INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
5484INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
5485INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
5486INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
5487
5488# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
5489INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
5490INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
5491INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
5492
5493--sorted_result
5494SELECT * FROM t1;
5495SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
5496SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
5497SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
5498SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
5499SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
5500SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
5501
5502# Now select using various table access methods (full table scan, range scan, index scan etc.)
5503## Full table scan ##
5504--sorted_result
5505SELECT * FROM t2;
5506--sorted_result
5507SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5508--sorted_result
5509SELECT * FROM t2 WHERE c2 = 102;
5510
5511## Forward index scan, covering ##
5512--sorted_result
5513SELECT c1,c6 FROM t2;
5514
5515## Backward index scan, covering ##
5516SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
5517
5518## Forward index scan, non-covering ##
5519SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
5520
5521## Backward index scan, non-covering ##
5522SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
5523
5524## ref type access
5525SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
5526SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
5527SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
5528SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
5529
5530## Range access, ordered ##
5531SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
5532SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
5533SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
5534SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
5535SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
5536SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
5537SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
5538SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
5539SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
5540SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
5541SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
5542SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
5543SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
5544SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
5545SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
5546SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
5547SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
5548SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
5549SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
5550SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
5551SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
5552SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
5553
5554## Range access, backwards scan ##
5555SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
5556SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
5557SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
5558SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
5559SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
5560SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
5561SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
5562SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
5563SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
5564SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
5565SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
5566SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
5567SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
5568SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
5569SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
5570SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
5571SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
5572SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
5573SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
5574SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
5575SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
5576SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
5577## Full table scan ##
5578--sorted_result
5579SELECT * FROM t2;
5580--sorted_result
5581SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5582--sorted_result
5583SELECT * FROM t2 WHERE c2 = 102;
5584
5585## Forward index scan, covering ##
5586--sorted_result
5587SELECT c1,c6 FROM t2;
5588
5589## Backward index scan, covering ##
5590SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
5591
5592## Forward index scan, non-covering ##
5593SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
5594
5595## Backward index scan, non-covering ##
5596SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
5597
5598## ref type access
5599SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
5600SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
5601SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
5602SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
5603
5604## Range access, ordered ##
5605SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
5606SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
5607SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
5608SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
5609SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
5610SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
5611SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
5612SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
5613SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
5614SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
5615SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
5616SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
5617SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
5618SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
5619SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
5620SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
5621SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
5622SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
5623SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
5624SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
5625SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
5626SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
5627
5628## Range access, backwards scan ##
5629SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
5630SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
5631SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
5632SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
5633SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
5634SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
5635SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
5636SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
5637SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
5638SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
5639SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
5640SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
5641SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
5642SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
5643SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
5644SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
5645SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
5646SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
5647SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
5648SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
5649SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
5650SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
5651## Full table scan ##
5652--sorted_result
5653SELECT * FROM t3;
5654--sorted_result
5655SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5656--sorted_result
5657SELECT * FROM t3 WHERE c1 = 108;
5658
5659## Forward index scan, covering ##
5660--sorted_result
5661SELECT c2,c7 FROM t3;
5662
5663## Backward index scan, covering ##
5664SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5665
5666## Forward index scan, non-covering ##
5667SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5668
5669## Backward index scan, non-covering ##
5670SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5671
5672## ref type access
5673SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
5674SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
5675SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
5676SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
5677
5678## Range access, ordered ##
5679SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
5680SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
5681SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
5682SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
5683SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
5684SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
5685SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
5686SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
5687SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
5688SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
5689SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
5690SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
5691SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
5692SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
5693SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
5694SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
5695SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
5696SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
5697SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5698SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5699SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5700SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5701
5702## Range access, backwards scan ##
5703SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
5704SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
5705SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
5706SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
5707SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
5708SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
5709SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
5710SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
5711SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
5712SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
5713SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
5714SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
5715SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
5716SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
5717SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
5718SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
5719SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
5720SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
5721SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5722SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5723SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5724SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5725## Full table scan ##
5726--sorted_result
5727SELECT * FROM t3;
5728--sorted_result
5729SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5730--sorted_result
5731SELECT * FROM t3 WHERE c1 = 108;
5732
5733## Forward index scan, covering ##
5734--sorted_result
5735SELECT c2,c7 FROM t3;
5736
5737## Backward index scan, covering ##
5738SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
5739
5740## Forward index scan, non-covering ##
5741SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
5742
5743## Backward index scan, non-covering ##
5744SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
5745
5746## ref type access
5747SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
5748SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
5749SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
5750SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
5751
5752## Range access, ordered ##
5753SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
5754SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
5755SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
5756SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
5757SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
5758SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
5759SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
5760SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
5761SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
5762SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
5763SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
5764SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
5765SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
5766SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
5767SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
5768SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
5769SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
5770SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
5771SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
5772SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
5773SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
5774SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
5775
5776## Range access, backwards scan ##
5777SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
5778SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
5779SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
5780SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
5781SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
5782SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
5783SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
5784SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
5785SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
5786SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
5787SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
5788SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
5789SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
5790SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
5791SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
5792SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
5793SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
5794SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
5795SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
5796SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
5797SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
5798SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
5799
5800# Using index for group-by
5801--sorted_result
5802SELECT c2 FROM t3 GROUP BY c2;
5803--sorted_result
5804SELECT DISTINCT c2 FROM t3;
5805--sorted_result
5806SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
5807
5808# Create tables with AUTO_INCREMENT columns and unique indexes
5809CREATE TABLE t4(c1 INTEGER SIGNED NOT NULL AUTO_INCREMENT, c2 INTEGER UNSIGNED NULL, c3 INTEGER UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
5810CREATE TABLE t5(c1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, c2 INTEGER SIGNED NOT NULL, c3 INTEGER SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
5811
5812# Test with AUTO_INCREMENT columns
5813# Insert some rows
5814INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
5815INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
5816# Insert 0 values, increments the value
5817INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
5818--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
5819--if (!$auto_value) {
5820--die "AUTO_INCREMENT didn't work well on 0"
5821}
5822INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
5823--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
5824--if (!$auto_value) {
5825--die "AUTO_INCREMENT didn't work well on 0"
5826}
5827# Insert NULL,  no error, increments the value
5828INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
5829--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
5830--if (!$auto_value) {
5831--die "AUTO_INCREMENT didn't work well on NULL"
5832}
5833INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
5834--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
5835--if (!$auto_value) {
5836--die "AUTO_INCREMENT didn't work well on NULL"
5837}
5838# Insert empty strings, increments the value
5839INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
5840--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
5841--if (!$auto_value) {
5842--die "AUTO_INCREMENT didn't work well on ''"
5843}
5844INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
5845--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
5846--if (!$auto_value) {
5847--die "AUTO_INCREMENT didn't work well on ''"
5848}
5849# Insert strings with numeric part, inserts the numeric part of the string
5850INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
5851--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
5852--if (!$auto_value) {
5853--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
5854}
5855INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
5856--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
5857--if (!$auto_value) {
5858--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
5859}
5860# Insert negative values unsigned & positive value to signed
5861INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
5862--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
5863--if (!$auto_value) {
5864--die "AUTO_INCREMENT didn't work on negative value"
5865}
5866INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
5867--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
5868--if (!$auto_value) {
5869--die "AUTO_INCREMENT didn't work for negative value on unsigned"
5870}
5871# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
5872INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
5873--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
5874--if (!$auto_value) {
5875--die "AUTO_INCREMENT didn't work well"
5876}
5877INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
5878--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
5879--if (!$auto_value) {
5880--die "AUTO_INCREMENT didn't work well"
5881}
5882
5883SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
5884SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
5885# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
5886## Full table scan ##
5887--sorted_result
5888SELECT * FROM t4;
5889--sorted_result
5890SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
5891--sorted_result
5892SELECT * FROM t4 WHERE c4 = 104;
5893
5894## Forward index scan, covering ##
5895--sorted_result
5896SELECT c1 FROM t4;
5897
5898## Backward index scan, covering ##
5899SELECT c1 FROM t4 ORDER BY c1 DESC;
5900
5901## Forward index scan, non-covering ##
5902SELECT * FROM t4 ORDER BY c1 LIMIT 2;
5903
5904## Backward index scan, non-covering ##
5905SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
5906
5907## ref type access
5908SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
5909SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
5910SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
5911SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
5912
5913## Range access, ordered ##
5914SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
5915SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
5916SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
5917SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
5918SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
5919SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
5920SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
5921SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
5922SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
5923SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
5924SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
5925SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
5926SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
5927SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
5928SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
5929SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
5930SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
5931SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
5932SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
5933SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
5934SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
5935SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
5936
5937## Range access, backwards scan ##
5938SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
5939SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
5940SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
5941SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
5942SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
5943SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
5944SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
5945SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
5946SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
5947SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
5948SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
5949SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
5950SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
5951SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
5952SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
5953SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
5954SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
5955SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
5956SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
5957SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5958SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5959SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5960## Full table scan ##
5961--sorted_result
5962SELECT * FROM t4;
5963--sorted_result
5964SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
5965--sorted_result
5966SELECT * FROM t4 WHERE c4 = 104;
5967
5968## Forward index scan, covering ##
5969--sorted_result
5970SELECT c1 FROM t4;
5971
5972## Backward index scan, covering ##
5973SELECT c1 FROM t4 ORDER BY c1 DESC;
5974
5975## Forward index scan, non-covering ##
5976SELECT * FROM t4 ORDER BY c1 LIMIT 2;
5977
5978## Backward index scan, non-covering ##
5979SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
5980
5981## ref type access
5982SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
5983SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
5984SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
5985SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
5986
5987## Range access, ordered ##
5988SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
5989SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
5990SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
5991SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
5992SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
5993SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
5994SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
5995SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
5996SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
5997SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
5998SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
5999SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
6000SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
6001SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
6002SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
6003SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
6004SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
6005SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
6006SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
6007SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
6008SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
6009SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
6010
6011## Range access, backwards scan ##
6012SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
6013SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
6014SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
6015SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
6016SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
6017SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
6018SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
6019SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
6020SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
6021SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
6022SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
6023SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
6024SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
6025SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
6026SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
6027SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
6028SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
6029SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
6030SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
6031SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
6032SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
6033SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
6034## Full table scan ##
6035--sorted_result
6036SELECT * FROM t5;
6037--sorted_result
6038SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
6039--sorted_result
6040SELECT * FROM t5 WHERE c5 = 112;
6041
6042## Forward index scan, covering ##
6043--sorted_result
6044SELECT c1 FROM t5;
6045
6046## Backward index scan, covering ##
6047SELECT c1 FROM t5 ORDER BY c1 DESC;
6048
6049## Forward index scan, non-covering ##
6050SELECT * FROM t5 ORDER BY c1 LIMIT 2;
6051
6052## Backward index scan, non-covering ##
6053SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
6054
6055## ref type access
6056SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
6057SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
6058SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
6059SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
6060
6061## Range access, ordered ##
6062SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
6063SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
6064SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
6065SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
6066SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
6067SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
6068SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
6069SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
6070SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
6071SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
6072SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
6073SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
6074SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
6075SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
6076SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
6077SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
6078SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
6079SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
6080SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
6081SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
6082SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
6083SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
6084
6085## Range access, backwards scan ##
6086SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
6087SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
6088SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
6089SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
6090SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
6091SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
6092SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
6093SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
6094SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
6095SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
6096SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
6097SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
6098SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
6099SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
6100SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
6101SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
6102SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
6103SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
6104SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
6105SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
6106SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
6107SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
6108
6109# Index-merge access
6110--sorted_result
6111SELECT * FROM t4 WHERE c1=1 OR c2=109;
6112
6113# Using index for group-by
6114--sorted_result
6115SELECT c2 FROM t4 GROUP BY c2;
6116--sorted_result
6117SELECT DISTINCT c2 FROM t4;
6118--sorted_result
6119SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
6120
6121# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
6122
6123# Insert NULL to non-null column
6124--error ER_BAD_NULL_ERROR
6125INSERT INTO t2(c1) VALUES(NULL);
6126--error ER_BAD_NULL_ERROR
6127INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
6128--error ER_BAD_NULL_ERROR
6129INSERT INTO t4(c3) VALUES(NULL);
6130--error ER_BAD_NULL_ERROR
6131INSERT INTO t5(c3) VALUES(NULL);
6132
6133# Insert duplicate value to pk
6134--error ER_DUP_ENTRY
6135INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
6136
6137# Insert duplicate value to clustered pk, throws error
6138--error ER_DUP_ENTRY
6139INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
6140--error ER_DUP_ENTRY
6141INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
6142
6143# Insert duplicate value to unique column, throws error
6144--error ER_DUP_ENTRY
6145INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
6146--error ER_DUP_ENTRY
6147# Insert duplicate value to clustered unique column, throws error
6148INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
6149
6150# Test 'INSERT INTO SELECT FROM'
6151CREATE TABLE t6(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT);
6152INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
6153--sorted_result
6154SELECT * FROM t6;
6155TRUNCATE TABLE t6;
6156INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
6157--sorted_result
6158SELECT * FROM t6;
6159TRUNCATE TABLE t6;
6160# Test 'INSERT INTO SELECT FROM' primary key constraint violation
6161CREATE TABLE t7(c1 INTEGER UNSIGNED NOT NULL PRIMARY KEY, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT);
6162CREATE TABLE t8(c1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT);
6163INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
6164INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
6165--sorted_result
6166SELECT * FROM t7;
6167INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
6168--sorted_result
6169SELECT * FROM t8;
6170--error ER_DUP_ENTRY
6171INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
6172--error ER_DUP_ENTRY
6173INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
6174TRUNCATE TABLE t6;
6175
6176# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
6177INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
6178INSERT INTO t8 SELECT * FROM t6;
6179SELECT LAST_INSERT_ID() AS last_insert_id;
6180--sorted_result
6181SELECT * FROM t8;
6182TRUNCATE TABLE t8;
6183INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
6184--sorted_result
6185SELECT * FROM t8;
6186DROP TABLE t6,t7,t8;
6187
6188# Test 'INSERT SET'
6189INSERT INTO t2 SET c3=5,c4=6;
6190SET SQL_MODE=STRICT_ALL_TABLES;
6191--error ER_NO_DEFAULT_FOR_FIELD
6192INSERT INTO t2 SET c3=5,c4=6;
6193SET SQL_MODE='';
6194
6195# Test insert allowable bigger values to 'INTEGER' columns
6196INSERT INTO t1 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
6197INSERT INTO t2 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
6198INSERT INTO t3 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25);
6199INSERT INTO t4 VALUES(-2147483648,0,1,2,3,4,5,5),(-8388608,255,6,7,8,9,10,10),(-32768,65535,11,12,13,14,15,15),(-128,16777215,16,17,18,19,20,20),(2147483647,4294967295,21,22,23,24,25,25);
6200INSERT INTO t5 VALUES(0,-2147483648,1,2,3,4,5,5),(255,-8388608,6,7,8,9,10,10),(65535,-32768,11,12,13,14,15,15),(16777215,-128,16,17,18,19,20,20),(4294967295,2147483647,21,22,23,24,25,25);
6201--error ER_DUP_ENTRY
6202INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
6203--disable_warnings
6204INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
6205--enable_warnings
6206--sorted_result
6207SELECT * FROM t4;
6208
6209# Insert signed value to unsigned 'INTEGER', outside range values to signed/unsigned columns
6210INSERT INTO t1 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
6211INSERT INTO t2 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
6212INSERT INTO t3 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35);
6213
6214# Now select using various table access methods
6215## Full table scan ##
6216--sorted_result
6217SELECT * FROM t2;
6218--sorted_result
6219SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6220--sorted_result
6221SELECT * FROM t2 WHERE c2 = -2147483648;
6222
6223## Forward index scan, covering ##
6224--sorted_result
6225SELECT c1,c6 FROM t2;
6226
6227## Backward index scan, covering ##
6228SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6229
6230## Forward index scan, non-covering ##
6231SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6232
6233## Backward index scan, non-covering ##
6234SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6235
6236## ref type access
6237SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
6238SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
6239SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
6240SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
6241
6242## Range access, ordered ##
6243SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
6244SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
6245SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
6246SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
6247SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
6248SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
6249SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
6250SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
6251SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
6252SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
6253SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
6254SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
6255SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6;
6256SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2;
6257SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6;
6258SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2;
6259SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6;
6260SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
6261SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6262SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6263SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6264SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6265
6266## Range access, backwards scan ##
6267SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
6268SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
6269SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
6270SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
6271SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
6272SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
6273SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
6274SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
6275SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
6276SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
6277SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
6278SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
6279SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC;
6280SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6281SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC;
6282SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2;
6283SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC;
6284SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
6285SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
6286SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
6287SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
6288SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
6289## Full table scan ##
6290--sorted_result
6291SELECT * FROM t2;
6292--sorted_result
6293SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6294--sorted_result
6295SELECT * FROM t2 WHERE c2 = 2147483647;
6296
6297## Forward index scan, covering ##
6298--sorted_result
6299SELECT c1,c6 FROM t2;
6300
6301## Backward index scan, covering ##
6302SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6303
6304## Forward index scan, non-covering ##
6305SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6306
6307## Backward index scan, non-covering ##
6308SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6309
6310## ref type access
6311SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6;
6312SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 LIMIT 2;
6313SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC;
6314SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6315
6316## Range access, ordered ##
6317SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6;
6318SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 LIMIT 2;
6319SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6;
6320SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 LIMIT 2;
6321SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6;
6322SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 LIMIT 2;
6323SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6;
6324SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 LIMIT 2;
6325SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6;
6326SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 LIMIT 2;
6327SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6;
6328SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 LIMIT 2;
6329SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6;
6330SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2;
6331SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6;
6332SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2;
6333SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6;
6334SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2;
6335SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6336SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6337SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6338SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6339
6340## Range access, backwards scan ##
6341SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC;
6342SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6343SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC;
6344SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6345SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC;
6346SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6347SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC;
6348SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6349SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC;
6350SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6351SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC;
6352SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6353SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC;
6354SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2;
6355SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC;
6356SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2;
6357SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC;
6358SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2;
6359SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
6360SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
6361SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
6362SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
6363## Full table scan ##
6364--sorted_result
6365SELECT * FROM t2;
6366--sorted_result
6367SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6368--sorted_result
6369SELECT * FROM t2 WHERE c2 = -2147483649;
6370
6371## Forward index scan, covering ##
6372--sorted_result
6373SELECT c1,c6 FROM t2;
6374
6375## Backward index scan, covering ##
6376SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6377
6378## Forward index scan, non-covering ##
6379SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6380
6381## Backward index scan, non-covering ##
6382SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6383
6384## ref type access
6385SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6;
6386SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2;
6387SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC;
6388SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2;
6389
6390## Range access, ordered ##
6391SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6;
6392SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2;
6393SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6;
6394SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2;
6395SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6;
6396SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2;
6397SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6;
6398SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2;
6399SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6;
6400SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2;
6401SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6;
6402SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2;
6403SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6;
6404SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2;
6405SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6;
6406SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2;
6407SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6;
6408SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
6409SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6410SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6411SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6412SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6413
6414## Range access, backwards scan ##
6415SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC;
6416SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2;
6417SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC;
6418SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2;
6419SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC;
6420SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2;
6421SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC;
6422SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2;
6423SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC;
6424SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2;
6425SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC;
6426SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2;
6427SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC;
6428SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6429SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC;
6430SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2;
6431SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC;
6432SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
6433SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
6434SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
6435SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
6436SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
6437## Full table scan ##
6438--sorted_result
6439SELECT * FROM t2;
6440--sorted_result
6441SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6442--sorted_result
6443SELECT * FROM t2 WHERE c2 = 2147483648;
6444
6445## Forward index scan, covering ##
6446--sorted_result
6447SELECT c1,c6 FROM t2;
6448
6449## Backward index scan, covering ##
6450SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6451
6452## Forward index scan, non-covering ##
6453SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6454
6455## Backward index scan, non-covering ##
6456SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6457
6458## ref type access
6459SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6;
6460SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 LIMIT 2;
6461SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC;
6462SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6463
6464## Range access, ordered ##
6465SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6;
6466SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 LIMIT 2;
6467SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6;
6468SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 LIMIT 2;
6469SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6;
6470SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 LIMIT 2;
6471SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6;
6472SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 LIMIT 2;
6473SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6;
6474SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 LIMIT 2;
6475SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6;
6476SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 LIMIT 2;
6477SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6;
6478SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2;
6479SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6;
6480SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2;
6481SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6;
6482SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2;
6483SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6484SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6485SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6486SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6487
6488## Range access, backwards scan ##
6489SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC;
6490SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6491SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC;
6492SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6493SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC;
6494SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6495SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC;
6496SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6497SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC;
6498SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6499SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC;
6500SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6501SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC;
6502SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2;
6503SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC;
6504SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2;
6505SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC;
6506SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2;
6507SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
6508SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
6509SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
6510SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
6511## Full table scan ##
6512--sorted_result
6513SELECT * FROM t3;
6514--sorted_result
6515SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
6516--sorted_result
6517SELECT * FROM t3 WHERE c1 = 0;
6518
6519## Forward index scan, covering ##
6520--sorted_result
6521SELECT c2,c7 FROM t3;
6522
6523## Backward index scan, covering ##
6524SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
6525
6526## Forward index scan, non-covering ##
6527SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
6528
6529## Backward index scan, non-covering ##
6530SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
6531
6532## ref type access
6533SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7;
6534SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 LIMIT 2;
6535SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC;
6536SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6537
6538## Range access, ordered ##
6539SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7;
6540SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 LIMIT 2;
6541SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7;
6542SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 LIMIT 2;
6543SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7;
6544SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 LIMIT 2;
6545SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7;
6546SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 LIMIT 2;
6547SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7;
6548SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 LIMIT 2;
6549SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7;
6550SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 LIMIT 2;
6551SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7;
6552SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2;
6553SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7;
6554SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2;
6555SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7;
6556SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
6557SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
6558SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
6559SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
6560SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
6561
6562## Range access, backwards scan ##
6563SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC;
6564SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6565SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC;
6566SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6567SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC;
6568SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6569SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC;
6570SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6571SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC;
6572SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6573SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC;
6574SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6575SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC;
6576SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6577SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC;
6578SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2;
6579SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC;
6580SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
6581SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
6582SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
6583SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
6584SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
6585## Full table scan ##
6586--sorted_result
6587SELECT * FROM t3;
6588--sorted_result
6589SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
6590--sorted_result
6591SELECT * FROM t3 WHERE c1 = 4294967295;
6592
6593## Forward index scan, covering ##
6594--sorted_result
6595SELECT c2,c7 FROM t3;
6596
6597## Backward index scan, covering ##
6598SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
6599
6600## Forward index scan, non-covering ##
6601SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
6602
6603## Backward index scan, non-covering ##
6604SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
6605
6606## ref type access
6607SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7;
6608SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 LIMIT 2;
6609SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC;
6610SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6611
6612## Range access, ordered ##
6613SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7;
6614SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 LIMIT 2;
6615SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7;
6616SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 LIMIT 2;
6617SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7;
6618SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 LIMIT 2;
6619SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7;
6620SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 LIMIT 2;
6621SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7;
6622SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 LIMIT 2;
6623SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7;
6624SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 LIMIT 2;
6625SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7;
6626SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2;
6627SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7;
6628SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2;
6629SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7;
6630SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
6631SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
6632SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
6633SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
6634SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
6635
6636## Range access, backwards scan ##
6637SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC;
6638SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6639SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC;
6640SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6641SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC;
6642SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6643SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC;
6644SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6645SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC;
6646SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6647SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC;
6648SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6649SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC;
6650SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2;
6651SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC;
6652SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2;
6653SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC;
6654SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
6655SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
6656SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
6657SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
6658SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
6659## Full table scan ##
6660--sorted_result
6661SELECT * FROM t3;
6662--sorted_result
6663SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
6664--sorted_result
6665SELECT * FROM t3 WHERE c1 = -255;
6666
6667## Forward index scan, covering ##
6668--sorted_result
6669SELECT c2,c7 FROM t3;
6670
6671## Backward index scan, covering ##
6672SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
6673
6674## Forward index scan, non-covering ##
6675SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
6676
6677## Backward index scan, non-covering ##
6678SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
6679
6680## ref type access
6681SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7;
6682SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 LIMIT 2;
6683SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC;
6684SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6685
6686## Range access, ordered ##
6687SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7;
6688SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 LIMIT 2;
6689SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7;
6690SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 LIMIT 2;
6691SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7;
6692SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 LIMIT 2;
6693SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7;
6694SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 LIMIT 2;
6695SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7;
6696SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 LIMIT 2;
6697SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7;
6698SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 LIMIT 2;
6699SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7;
6700SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2;
6701SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7;
6702SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2;
6703SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7;
6704SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
6705SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
6706SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
6707SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
6708SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
6709
6710## Range access, backwards scan ##
6711SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC;
6712SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6713SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC;
6714SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6715SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC;
6716SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6717SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC;
6718SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6719SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC;
6720SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6721SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC;
6722SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC LIMIT 2;
6723SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC;
6724SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6725SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC;
6726SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2;
6727SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC;
6728SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
6729SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
6730SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
6731SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
6732SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
6733## Full table scan ##
6734--sorted_result
6735SELECT * FROM t3;
6736--sorted_result
6737SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
6738--sorted_result
6739SELECT * FROM t3 WHERE c1 = 4294967296;
6740
6741## Forward index scan, covering ##
6742--sorted_result
6743SELECT c2,c7 FROM t3;
6744
6745## Backward index scan, covering ##
6746SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
6747
6748## Forward index scan, non-covering ##
6749SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
6750
6751## Backward index scan, non-covering ##
6752SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
6753
6754## ref type access
6755SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7;
6756SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 LIMIT 2;
6757SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC;
6758SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6759
6760## Range access, ordered ##
6761SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7;
6762SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 LIMIT 2;
6763SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7;
6764SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 LIMIT 2;
6765SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7;
6766SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 LIMIT 2;
6767SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7;
6768SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 LIMIT 2;
6769SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7;
6770SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 LIMIT 2;
6771SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7;
6772SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 LIMIT 2;
6773SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7;
6774SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2;
6775SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7;
6776SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2;
6777SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7;
6778SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2;
6779SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
6780SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
6781SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
6782SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
6783
6784## Range access, backwards scan ##
6785SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC;
6786SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6787SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC;
6788SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6789SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC;
6790SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6791SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC;
6792SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6793SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC;
6794SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6795SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC;
6796SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6797SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC;
6798SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2;
6799SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC;
6800SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2;
6801SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC;
6802SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2;
6803SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
6804SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
6805SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
6806SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
6807DROP TABLE t1,t2,t3,t4,t5;
6808
6809######## Running INSERT tests for BIGINT ########
6810
6811# Create tables
6812CREATE TABLE t1(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER);
6813CREATE TABLE t2(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, PRIMARY KEY(c1,c6));
6814CREATE TABLE t3(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, index idx(c2,c7));
6815
6816# Insert some rows with targeted values
6817INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
6818INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
6819INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128);
6820
6821# Insert duplicates for parts of the clustered key
6822INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114);
6823INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107);
6824
6825# Insert permissible NULLs
6826INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106);
6827INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106);
6828INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106);
6829
6830# Insert empty string ''
6831INSERT INTO t1 VALUES('','',17,18,19,20,21);
6832INSERT INTO t2 VALUES('','',17,18,19,20,21);
6833INSERT INTO t3 VALUES('','',17,18,19,20,21);
6834
6835# Insert negative value to unsigned integer, positive value to signed integer, zero values
6836INSERT INTO t1 VALUES(-1,124,22,23,24,25,26);
6837INSERT INTO t2 VALUES(-1,124,22,23,24,25,26);
6838INSERT INTO t3 VALUES(-1,124,22,23,24,25,26);
6839INSERT INTO t1 VALUES(0,124,27,28,29,30,31);
6840INSERT INTO t2 VALUES(0,124,27,28,29,30,31);
6841INSERT INTO t3 VALUES(0,124,27,28,29,30,31);
6842INSERT INTO t1 VALUES(0,0,32,32,34,35,36);
6843INSERT INTO t2 VALUES(0,0,32,32,34,35,36);
6844INSERT INTO t3 VALUES(0,0,32,32,34,35,36);
6845
6846# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part)
6847INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41);
6848INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41);
6849INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41);
6850
6851--sorted_result
6852SELECT * FROM t1;
6853SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
6854SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
6855SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
6856SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
6857SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3;
6858SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3;
6859
6860# Now select using various table access methods (full table scan, range scan, index scan etc.)
6861## Full table scan ##
6862--sorted_result
6863SELECT * FROM t2;
6864--sorted_result
6865SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6866--sorted_result
6867SELECT * FROM t2 WHERE c2 = 102;
6868
6869## Forward index scan, covering ##
6870--sorted_result
6871SELECT c1,c6 FROM t2;
6872
6873## Backward index scan, covering ##
6874SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6875
6876## Forward index scan, non-covering ##
6877SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6878
6879## Backward index scan, non-covering ##
6880SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6881
6882## ref type access
6883SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6;
6884SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2;
6885SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC;
6886SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2;
6887
6888## Range access, ordered ##
6889SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6;
6890SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2;
6891SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6;
6892SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2;
6893SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6;
6894SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2;
6895SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6;
6896SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2;
6897SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6;
6898SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2;
6899SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6;
6900SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2;
6901SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6;
6902SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2;
6903SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6;
6904SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2;
6905SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
6906SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
6907SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6908SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6909SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6910SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6911
6912## Range access, backwards scan ##
6913SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC;
6914SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2;
6915SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC;
6916SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2;
6917SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC;
6918SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2;
6919SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC;
6920SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2;
6921SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC;
6922SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2;
6923SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC;
6924SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2;
6925SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC;
6926SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
6927SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC;
6928SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2;
6929SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
6930SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
6931SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
6932SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
6933SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
6934SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
6935## Full table scan ##
6936--sorted_result
6937SELECT * FROM t2;
6938--sorted_result
6939SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
6940--sorted_result
6941SELECT * FROM t2 WHERE c2 = 102;
6942
6943## Forward index scan, covering ##
6944--sorted_result
6945SELECT c1,c6 FROM t2;
6946
6947## Backward index scan, covering ##
6948SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
6949
6950## Forward index scan, non-covering ##
6951SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
6952
6953## Backward index scan, non-covering ##
6954SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
6955
6956## ref type access
6957SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
6958SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
6959SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
6960SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
6961
6962## Range access, ordered ##
6963SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
6964SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
6965SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
6966SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
6967SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
6968SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
6969SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
6970SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
6971SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
6972SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
6973SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
6974SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
6975SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6;
6976SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2;
6977SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6;
6978SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2;
6979SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6;
6980SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2;
6981SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
6982SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
6983SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
6984SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
6985
6986## Range access, backwards scan ##
6987SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
6988SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
6989SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
6990SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
6991SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
6992SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
6993SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
6994SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
6995SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
6996SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
6997SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
6998SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
6999SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC;
7000SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2;
7001SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC;
7002SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2;
7003SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC;
7004SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2;
7005SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
7006SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
7007SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
7008SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
7009## Full table scan ##
7010--sorted_result
7011SELECT * FROM t3;
7012--sorted_result
7013SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
7014--sorted_result
7015SELECT * FROM t3 WHERE c1 = 108;
7016
7017## Forward index scan, covering ##
7018--sorted_result
7019SELECT c2,c7 FROM t3;
7020
7021## Backward index scan, covering ##
7022SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
7023
7024## Forward index scan, non-covering ##
7025SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
7026
7027## Backward index scan, non-covering ##
7028SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
7029
7030## ref type access
7031SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7;
7032SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2;
7033SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC;
7034SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2;
7035
7036## Range access, ordered ##
7037SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7;
7038SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2;
7039SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7;
7040SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2;
7041SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7;
7042SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2;
7043SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7;
7044SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2;
7045SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7;
7046SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2;
7047SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7;
7048SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2;
7049SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7;
7050SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2;
7051SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7;
7052SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2;
7053SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7;
7054SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
7055SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
7056SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
7057SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
7058SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
7059
7060## Range access, backwards scan ##
7061SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC;
7062SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2;
7063SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC;
7064SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2;
7065SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC;
7066SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2;
7067SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC;
7068SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2;
7069SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC;
7070SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2;
7071SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC;
7072SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2;
7073SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC;
7074SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2;
7075SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC;
7076SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2;
7077SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC;
7078SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
7079SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
7080SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
7081SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
7082SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
7083## Full table scan ##
7084--sorted_result
7085SELECT * FROM t3;
7086--sorted_result
7087SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
7088--sorted_result
7089SELECT * FROM t3 WHERE c1 = 108;
7090
7091## Forward index scan, covering ##
7092--sorted_result
7093SELECT c2,c7 FROM t3;
7094
7095## Backward index scan, covering ##
7096SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
7097
7098## Forward index scan, non-covering ##
7099SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
7100
7101## Backward index scan, non-covering ##
7102SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
7103
7104## ref type access
7105SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7;
7106SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2;
7107SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC;
7108SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2;
7109
7110## Range access, ordered ##
7111SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7;
7112SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2;
7113SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7;
7114SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2;
7115SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7;
7116SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2;
7117SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7;
7118SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2;
7119SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7;
7120SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2;
7121SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7;
7122SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2;
7123SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7;
7124SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2;
7125SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7;
7126SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2;
7127SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7;
7128SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2;
7129SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
7130SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
7131SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
7132SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
7133
7134## Range access, backwards scan ##
7135SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC;
7136SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2;
7137SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC;
7138SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2;
7139SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC;
7140SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2;
7141SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC;
7142SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2;
7143SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC;
7144SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2;
7145SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC;
7146SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2;
7147SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC;
7148SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2;
7149SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC;
7150SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2;
7151SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC;
7152SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2;
7153SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
7154SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
7155SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
7156SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
7157
7158# Using index for group-by
7159--sorted_result
7160SELECT c2 FROM t3 GROUP BY c2;
7161--sorted_result
7162SELECT DISTINCT c2 FROM t3;
7163--sorted_result
7164SELECT c2,MIN(c7) FROM t3 GROUP BY c2;
7165
7166# Create tables with AUTO_INCREMENT columns and unique indexes
7167CREATE TABLE t4(c1 BIGINT SIGNED NOT NULL AUTO_INCREMENT, c2 BIGINT UNSIGNED NULL, c3 BIGINT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 INTEGER, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3));
7168CREATE TABLE t5(c1 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 BIGINT SIGNED NOT NULL, c3 BIGINT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 INTEGER, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3));
7169
7170# Test with AUTO_INCREMENT columns
7171# Insert some rows
7172INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115);
7173INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115);
7174# Insert 0 values, increments the value
7175INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38);
7176--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;`
7177--if (!$auto_value) {
7178--die "AUTO_INCREMENT didn't work well on 0"
7179}
7180INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37);
7181--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;`
7182--if (!$auto_value) {
7183--die "AUTO_INCREMENT didn't work well on 0"
7184}
7185# Insert NULL,  no error, increments the value
7186INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID());
7187--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;`
7188--if (!$auto_value) {
7189--die "AUTO_INCREMENT didn't work well on NULL"
7190}
7191INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID());
7192--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;`
7193--if (!$auto_value) {
7194--die "AUTO_INCREMENT didn't work well on NULL"
7195}
7196# Insert empty strings, increments the value
7197INSERT INTO t4 VALUES('','',17,18,19,20,21,22);
7198--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;`
7199--if (!$auto_value) {
7200--die "AUTO_INCREMENT didn't work well on ''"
7201}
7202INSERT INTO t5 VALUES('','',-17,18,19,20,21,22);
7203--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;`
7204--if (!$auto_value) {
7205--die "AUTO_INCREMENT didn't work well on ''"
7206}
7207# Insert strings with numeric part, inserts the numeric part of the string
7208INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41);
7209--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;`
7210--if (!$auto_value) {
7211--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
7212}
7213INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41);
7214--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;`
7215--if (!$auto_value) {
7216--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part"
7217}
7218# Insert negative values unsigned & positive value to signed
7219INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13);
7220--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;`
7221--if (!$auto_value) {
7222--die "AUTO_INCREMENT didn't work on negative value"
7223}
7224INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12);
7225--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;`
7226--if (!$auto_value) {
7227--die "AUTO_INCREMENT didn't work for negative value on unsigned"
7228}
7229# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value
7230INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128);
7231--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;`
7232--if (!$auto_value) {
7233--die "AUTO_INCREMENT didn't work well"
7234}
7235INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128);
7236--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;`
7237--if (!$auto_value) {
7238--die "AUTO_INCREMENT didn't work well"
7239}
7240
7241SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4;
7242SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5;
7243# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.)
7244## Full table scan ##
7245--sorted_result
7246SELECT * FROM t4;
7247--sorted_result
7248SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
7249--sorted_result
7250SELECT * FROM t4 WHERE c4 = 104;
7251
7252## Forward index scan, covering ##
7253--sorted_result
7254SELECT c1 FROM t4;
7255
7256## Backward index scan, covering ##
7257SELECT c1 FROM t4 ORDER BY c1 DESC;
7258
7259## Forward index scan, non-covering ##
7260SELECT * FROM t4 ORDER BY c1 LIMIT 2;
7261
7262## Backward index scan, non-covering ##
7263SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
7264
7265## ref type access
7266SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1;
7267SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2;
7268SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC;
7269SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2;
7270
7271## Range access, ordered ##
7272SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1;
7273SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2;
7274SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1;
7275SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2;
7276SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1;
7277SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2;
7278SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1;
7279SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2;
7280SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1;
7281SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2;
7282SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1;
7283SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2;
7284SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
7285SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
7286SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
7287SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
7288SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
7289SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
7290SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
7291SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
7292SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
7293SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
7294
7295## Range access, backwards scan ##
7296SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC;
7297SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2;
7298SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC;
7299SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2;
7300SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC;
7301SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2;
7302SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC;
7303SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2;
7304SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC;
7305SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2;
7306SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC;
7307SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2;
7308SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
7309SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
7310SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
7311SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
7312SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
7313SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
7314SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
7315SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
7316SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
7317SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
7318## Full table scan ##
7319--sorted_result
7320SELECT * FROM t4;
7321--sorted_result
7322SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4;
7323--sorted_result
7324SELECT * FROM t4 WHERE c4 = 104;
7325
7326## Forward index scan, covering ##
7327--sorted_result
7328SELECT c1 FROM t4;
7329
7330## Backward index scan, covering ##
7331SELECT c1 FROM t4 ORDER BY c1 DESC;
7332
7333## Forward index scan, non-covering ##
7334SELECT * FROM t4 ORDER BY c1 LIMIT 2;
7335
7336## Backward index scan, non-covering ##
7337SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2;
7338
7339## ref type access
7340SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1;
7341SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2;
7342SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC;
7343SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2;
7344
7345## Range access, ordered ##
7346SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1;
7347SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2;
7348SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1;
7349SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2;
7350SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1;
7351SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2;
7352SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1;
7353SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2;
7354SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1;
7355SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2;
7356SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1;
7357SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2;
7358SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1;
7359SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2;
7360SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1;
7361SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2;
7362SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1;
7363SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2;
7364SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1;
7365SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
7366SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1;
7367SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
7368
7369## Range access, backwards scan ##
7370SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC;
7371SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2;
7372SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC;
7373SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2;
7374SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC;
7375SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2;
7376SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC;
7377SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2;
7378SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC;
7379SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2;
7380SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC;
7381SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2;
7382SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC;
7383SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2;
7384SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC;
7385SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2;
7386SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC;
7387SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2;
7388SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC;
7389SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
7390SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
7391SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
7392## Full table scan ##
7393--sorted_result
7394SELECT * FROM t5;
7395--sorted_result
7396SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
7397--sorted_result
7398SELECT * FROM t5 WHERE c5 = 112;
7399
7400## Forward index scan, covering ##
7401--sorted_result
7402SELECT c1 FROM t5;
7403
7404## Backward index scan, covering ##
7405SELECT c1 FROM t5 ORDER BY c1 DESC;
7406
7407## Forward index scan, non-covering ##
7408SELECT * FROM t5 ORDER BY c1 LIMIT 2;
7409
7410## Backward index scan, non-covering ##
7411SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2;
7412
7413## ref type access
7414SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1;
7415SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2;
7416SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC;
7417SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2;
7418
7419## Range access, ordered ##
7420SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1;
7421SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2;
7422SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1;
7423SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2;
7424SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1;
7425SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2;
7426SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1;
7427SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2;
7428SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1;
7429SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2;
7430SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1;
7431SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2;
7432SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1;
7433SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2;
7434SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1;
7435SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2;
7436SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1;
7437SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2;
7438SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1;
7439SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
7440SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1;
7441SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
7442
7443## Range access, backwards scan ##
7444SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC;
7445SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2;
7446SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC;
7447SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2;
7448SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC;
7449SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2;
7450SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC;
7451SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2;
7452SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC;
7453SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2;
7454SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC;
7455SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2;
7456SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC;
7457SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2;
7458SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC;
7459SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2;
7460SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC;
7461SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2;
7462SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC;
7463SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
7464SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
7465SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
7466
7467# Index-merge access
7468--sorted_result
7469SELECT * FROM t4 WHERE c1=1 OR c2=109;
7470
7471# Using index for group-by
7472--sorted_result
7473SELECT c2 FROM t4 GROUP BY c2;
7474--sorted_result
7475SELECT DISTINCT c2 FROM t4;
7476--sorted_result
7477SELECT c2,MIN(c3) FROM t4 GROUP BY c2;
7478
7479# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation
7480
7481# Insert NULL to non-null column
7482--error ER_BAD_NULL_ERROR
7483INSERT INTO t2(c1) VALUES(NULL);
7484--error ER_BAD_NULL_ERROR
7485INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6);
7486--error ER_BAD_NULL_ERROR
7487INSERT INTO t4(c3) VALUES(NULL);
7488--error ER_BAD_NULL_ERROR
7489INSERT INTO t5(c3) VALUES(NULL);
7490
7491# Insert duplicate value to pk
7492--error ER_DUP_ENTRY
7493INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */;
7494
7495# Insert duplicate value to clustered pk, throws error
7496--error ER_DUP_ENTRY
7497INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */;
7498--error ER_DUP_ENTRY
7499INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */;
7500
7501# Insert duplicate value to unique column, throws error
7502--error ER_DUP_ENTRY
7503INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */;
7504--error ER_DUP_ENTRY
7505# Insert duplicate value to clustered unique column, throws error
7506INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */;
7507
7508# Test 'INSERT INTO SELECT FROM'
7509CREATE TABLE t6(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER);
7510INSERT INTO t6 SELECT * FROM t2 where c1 >= 109;
7511--sorted_result
7512SELECT * FROM t6;
7513TRUNCATE TABLE t6;
7514INSERT INTO t6 SELECT * FROM t3 where c2 <= -116;
7515--sorted_result
7516SELECT * FROM t6;
7517TRUNCATE TABLE t6;
7518# Test 'INSERT INTO SELECT FROM' primary key constraint violation
7519CREATE TABLE t7(c1 BIGINT UNSIGNED NOT NULL PRIMARY KEY, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER);
7520CREATE TABLE t8(c1 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER);
7521INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3);
7522INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1;
7523--sorted_result
7524SELECT * FROM t7;
7525INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1;
7526--sorted_result
7527SELECT * FROM t8;
7528--error ER_DUP_ENTRY
7529INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
7530--error ER_DUP_ENTRY
7531INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */;
7532TRUNCATE TABLE t6;
7533
7534# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL
7535INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5);
7536INSERT INTO t8 SELECT * FROM t6;
7537SELECT LAST_INSERT_ID() AS last_insert_id;
7538--sorted_result
7539SELECT * FROM t8;
7540TRUNCATE TABLE t8;
7541INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6;
7542--sorted_result
7543SELECT * FROM t8;
7544DROP TABLE t6,t7,t8;
7545
7546# Test 'INSERT SET'
7547INSERT INTO t2 SET c3=5,c4=6;
7548SET SQL_MODE=STRICT_ALL_TABLES;
7549--error ER_NO_DEFAULT_FOR_FIELD
7550INSERT INTO t2 SET c3=5,c4=6;
7551SET SQL_MODE='';
7552
7553# Test insert allowable bigger values to 'BIGINT' columns
7554INSERT INTO t1 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30);
7555INSERT INTO t2 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30);
7556INSERT INTO t3 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30);
7557INSERT INTO t4 VALUES(-9223372036854775808,0,1,2,3,4,5,5),(-2147483648,255,6,7,8,9,10,10),(-8388608,65535,11,12,13,14,15,15),(-32768,16777215,16,17,18,19,20,20),(-128,4294967295,21,22,23,24,25,25),(9223372036854775807,18446744073709551615,26,27,28,29,30,30);
7558INSERT INTO t5 VALUES(0,-9223372036854775808,1,2,3,4,5,5),(255,-2147483648,6,7,8,9,10,10),(65535,-8388608,11,12,13,14,15,15),(16777215,-32768,16,17,18,19,20,20),(4294967295,-128,21,22,23,24,25,25),(18446744073709551615,9223372036854775807,26,27,28,29,30,30);
7559--error ER_DUP_ENTRY
7560INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */;
7561--error ER_AUTOINC_READ_FAILED
7562INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */;
7563--sorted_result
7564SELECT * FROM t4;
7565
7566# Insert signed value to unsigned 'BIGINT', outside range values to signed/unsigned columns
7567INSERT INTO t1 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40);
7568INSERT INTO t2 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40);
7569INSERT INTO t3 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40);
7570
7571# Now select using various table access methods
7572## Full table scan ##
7573--sorted_result
7574SELECT * FROM t2;
7575--sorted_result
7576SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
7577--sorted_result
7578SELECT * FROM t2 WHERE c2 = -9223372036854775808;
7579
7580## Forward index scan, covering ##
7581--sorted_result
7582SELECT c1,c6 FROM t2;
7583
7584## Backward index scan, covering ##
7585SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
7586
7587## Forward index scan, non-covering ##
7588SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
7589
7590## Backward index scan, non-covering ##
7591SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
7592
7593## ref type access
7594SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6;
7595SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2;
7596SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC;
7597SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2;
7598
7599## Range access, ordered ##
7600SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6;
7601SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2;
7602SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6;
7603SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2;
7604SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6;
7605SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2;
7606SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6;
7607SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2;
7608SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6;
7609SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2;
7610SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6;
7611SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2;
7612SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6;
7613SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7614SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6;
7615SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 LIMIT 2;
7616SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6;
7617SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 LIMIT 2;
7618SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
7619SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
7620SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
7621SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
7622
7623## Range access, backwards scan ##
7624SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC;
7625SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2;
7626SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC;
7627SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2;
7628SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC;
7629SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2;
7630SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC;
7631SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2;
7632SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC;
7633SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2;
7634SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC;
7635SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2;
7636SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC;
7637SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7638SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC;
7639SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC LIMIT 2;
7640SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC;
7641SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC LIMIT 2;
7642SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
7643SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
7644SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
7645SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
7646## Full table scan ##
7647--sorted_result
7648SELECT * FROM t2;
7649--sorted_result
7650SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
7651--sorted_result
7652SELECT * FROM t2 WHERE c2 = 9223372036854775807;
7653
7654## Forward index scan, covering ##
7655--sorted_result
7656SELECT c1,c6 FROM t2;
7657
7658## Backward index scan, covering ##
7659SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
7660
7661## Forward index scan, non-covering ##
7662SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
7663
7664## Backward index scan, non-covering ##
7665SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
7666
7667## ref type access
7668SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6;
7669SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7670SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 DESC;
7671SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7672
7673## Range access, ordered ##
7674SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6;
7675SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7676SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6;
7677SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7678SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6;
7679SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7680SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6;
7681SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7682SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6;
7683SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7684SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6;
7685SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7686SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6;
7687SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2;
7688SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6;
7689SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 LIMIT 2;
7690SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6;
7691SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 LIMIT 2;
7692SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
7693SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
7694SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
7695SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
7696
7697## Range access, backwards scan ##
7698SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 DESC;
7699SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7700SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 DESC;
7701SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7702SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 DESC;
7703SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7704SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 DESC;
7705SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7706SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 DESC;
7707SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7708SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 DESC;
7709SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7710SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC;
7711SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2;
7712SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC;
7713SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC LIMIT 2;
7714SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC;
7715SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC LIMIT 2;
7716SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
7717SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
7718SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
7719SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
7720## Full table scan ##
7721--sorted_result
7722SELECT * FROM t2;
7723--sorted_result
7724SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
7725--sorted_result
7726SELECT * FROM t2 WHERE c2 = -9223372036854775809;
7727
7728## Forward index scan, covering ##
7729--sorted_result
7730SELECT c1,c6 FROM t2;
7731
7732## Backward index scan, covering ##
7733SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
7734
7735## Forward index scan, non-covering ##
7736SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
7737
7738## Backward index scan, non-covering ##
7739SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
7740
7741## ref type access
7742SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6;
7743SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 LIMIT 2;
7744SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 DESC;
7745SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 DESC LIMIT 2;
7746
7747## Range access, ordered ##
7748SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6;
7749SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 LIMIT 2;
7750SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6;
7751SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 LIMIT 2;
7752SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6;
7753SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 LIMIT 2;
7754SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6;
7755SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 LIMIT 2;
7756SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6;
7757SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 LIMIT 2;
7758SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6;
7759SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 LIMIT 2;
7760SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6;
7761SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7762SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6;
7763SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 LIMIT 2;
7764SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6;
7765SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 LIMIT 2;
7766SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
7767SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
7768SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
7769SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
7770
7771## Range access, backwards scan ##
7772SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 DESC;
7773SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 DESC LIMIT 2;
7774SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 DESC;
7775SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 DESC LIMIT 2;
7776SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 DESC;
7777SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 DESC LIMIT 2;
7778SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 DESC;
7779SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 DESC LIMIT 2;
7780SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 DESC;
7781SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 DESC LIMIT 2;
7782SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 DESC;
7783SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 DESC LIMIT 2;
7784SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC;
7785SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7786SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC;
7787SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC LIMIT 2;
7788SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC;
7789SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC LIMIT 2;
7790SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
7791SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
7792SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
7793SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
7794## Full table scan ##
7795--sorted_result
7796SELECT * FROM t2;
7797--sorted_result
7798SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
7799--sorted_result
7800SELECT * FROM t2 WHERE c2 = 9223372036854775808;
7801
7802## Forward index scan, covering ##
7803--sorted_result
7804SELECT c1,c6 FROM t2;
7805
7806## Backward index scan, covering ##
7807SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC;
7808
7809## Forward index scan, non-covering ##
7810SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2;
7811
7812## Backward index scan, non-covering ##
7813SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2;
7814
7815## ref type access
7816--disable_warnings
7817SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6;
7818SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7819SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 DESC;
7820SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7821--enable_warnings
7822
7823## Range access, ordered ##
7824SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6;
7825SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7826SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6;
7827SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7828SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6;
7829SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7830SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6;
7831SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7832SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6;
7833SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7834SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6;
7835SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7836SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6;
7837SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 LIMIT 2;
7838SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6;
7839SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 LIMIT 2;
7840SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6;
7841SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 LIMIT 2;
7842SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6;
7843SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2;
7844SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6;
7845SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2;
7846
7847## Range access, backwards scan ##
7848SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 DESC;
7849SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7850SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 DESC;
7851SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7852SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 DESC;
7853SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7854SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 DESC;
7855SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7856SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 DESC;
7857SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7858SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 DESC;
7859SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7860SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC;
7861SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2;
7862SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC;
7863SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC LIMIT 2;
7864SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC;
7865SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC LIMIT 2;
7866SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC;
7867SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2;
7868SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC;
7869SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2;
7870## Full table scan ##
7871--sorted_result
7872SELECT * FROM t3;
7873--sorted_result
7874SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
7875--sorted_result
7876SELECT * FROM t3 WHERE c1 = 0;
7877
7878## Forward index scan, covering ##
7879--sorted_result
7880SELECT c2,c7 FROM t3;
7881
7882## Backward index scan, covering ##
7883SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
7884
7885## Forward index scan, non-covering ##
7886SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
7887
7888## Backward index scan, non-covering ##
7889SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
7890
7891## ref type access
7892SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7;
7893SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7894SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 DESC;
7895SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7896
7897## Range access, ordered ##
7898SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7;
7899SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7900SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7;
7901SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7902SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7;
7903SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7904SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7;
7905SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7906SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7;
7907SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7908SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7;
7909SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 LIMIT 2;
7910SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7;
7911SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7912SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7;
7913SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 LIMIT 2;
7914SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7;
7915SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
7916SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
7917SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
7918SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
7919SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
7920
7921## Range access, backwards scan ##
7922SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 DESC;
7923SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7924SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 DESC;
7925SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7926SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 DESC;
7927SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7928SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 DESC;
7929SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7930SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 DESC;
7931SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7932SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 DESC;
7933SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
7934SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC;
7935SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
7936SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC;
7937SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC LIMIT 2;
7938SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC;
7939SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
7940SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
7941SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
7942SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
7943SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
7944## Full table scan ##
7945--sorted_result
7946SELECT * FROM t3;
7947--sorted_result
7948SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
7949--sorted_result
7950SELECT * FROM t3 WHERE c1 = 18446744073709551615;
7951
7952## Forward index scan, covering ##
7953--sorted_result
7954SELECT c2,c7 FROM t3;
7955
7956## Backward index scan, covering ##
7957SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
7958
7959## Forward index scan, non-covering ##
7960SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
7961
7962## Backward index scan, non-covering ##
7963SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
7964
7965## ref type access
7966SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7;
7967SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7968SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 DESC;
7969SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
7970
7971## Range access, ordered ##
7972SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7;
7973SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7974SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7;
7975SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7976SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7;
7977SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7978SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7;
7979SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7980SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7;
7981SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7982SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7;
7983SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7984SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7;
7985SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 LIMIT 2;
7986SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7;
7987SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 LIMIT 2;
7988SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7;
7989SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 LIMIT 2;
7990SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
7991SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
7992SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
7993SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
7994
7995## Range access, backwards scan ##
7996SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 DESC;
7997SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
7998SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 DESC;
7999SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8000SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 DESC;
8001SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8002SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 DESC;
8003SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8004SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 DESC;
8005SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8006SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 DESC;
8007SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8008SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC;
8009SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2;
8010SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC;
8011SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC LIMIT 2;
8012SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC;
8013SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2;
8014SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
8015SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
8016SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
8017SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
8018## Full table scan ##
8019--sorted_result
8020SELECT * FROM t3;
8021--sorted_result
8022SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
8023--sorted_result
8024SELECT * FROM t3 WHERE c1 = -128;
8025
8026## Forward index scan, covering ##
8027--sorted_result
8028SELECT c2,c7 FROM t3;
8029
8030## Backward index scan, covering ##
8031SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
8032
8033## Forward index scan, non-covering ##
8034SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
8035
8036## Backward index scan, non-covering ##
8037SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
8038
8039## ref type access
8040SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7;
8041SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8042SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 DESC;
8043SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8044
8045## Range access, ordered ##
8046SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7;
8047SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8048SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7;
8049SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8050SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7;
8051SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8052SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7;
8053SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8054SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7;
8055SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8056SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7;
8057SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 LIMIT 2;
8058SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7;
8059SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8060SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7;
8061SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 LIMIT 2;
8062SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7;
8063SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 LIMIT 2;
8064SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
8065SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
8066SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
8067SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
8068
8069## Range access, backwards scan ##
8070SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 DESC;
8071SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8072SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 DESC;
8073SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8074SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 DESC;
8075SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8076SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 DESC;
8077SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8078SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 DESC;
8079SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8080SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 DESC;
8081SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2;
8082SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC;
8083SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8084SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC;
8085SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC LIMIT 2;
8086SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC;
8087SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC LIMIT 2;
8088SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
8089SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
8090SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
8091SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
8092## Full table scan ##
8093--sorted_result
8094SELECT * FROM t3;
8095--sorted_result
8096SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
8097--sorted_result
8098SELECT * FROM t3 WHERE c1 = 18446744073709551616;
8099
8100## Forward index scan, covering ##
8101--sorted_result
8102SELECT c2,c7 FROM t3;
8103
8104## Backward index scan, covering ##
8105SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC;
8106
8107## Forward index scan, non-covering ##
8108SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2;
8109
8110## Backward index scan, non-covering ##
8111SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2;
8112
8113## ref type access
8114SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7;
8115SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8116SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 DESC;
8117SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8118
8119## Range access, ordered ##
8120SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7;
8121SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8122SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7;
8123SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8124SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7;
8125SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8126SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7;
8127SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8128SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7;
8129SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8130SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7;
8131SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8132SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7;
8133SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 LIMIT 2;
8134SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7;
8135SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 LIMIT 2;
8136SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7;
8137SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 LIMIT 2;
8138SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7;
8139SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2;
8140SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7;
8141SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2;
8142
8143## Range access, backwards scan ##
8144SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 DESC;
8145SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8146SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 DESC;
8147SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8148SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 DESC;
8149SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8150SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 DESC;
8151SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8152SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 DESC;
8153SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8154SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 DESC;
8155SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8156SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC;
8157SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2;
8158SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC;
8159SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC LIMIT 2;
8160SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC;
8161SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC LIMIT 2;
8162SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC;
8163SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2;
8164SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC;
8165SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2;
8166DROP TABLE t1,t2,t3,t4,t5;
8167SET sql_mode=default;
8168