1--disable_warnings
2DROP TABLE IF EXISTS t1,t2,t3;
3--enable_warnings
4
5######## Running INSERT tests for DATE ########
6
7# Create tables
8CREATE TABLE t1(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME,
9                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
10                             ON UPDATE CURRENT_TIMESTAMP,
11                PRIMARY KEY(c1), UNIQUE INDEX(c2));
12CREATE TABLE t2(c1 DATE NOT NULL, c2 DATE NOT NULL, c3 DATETIME,
13                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
14                             ON UPDATE CURRENT_TIMESTAMP,
15                PRIMARY KEY(c1,c2));
16CREATE TABLE t3(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME,
17                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
18                             ON UPDATE CURRENT_TIMESTAMP,
19                UNIQUE INDEX idx(c1,c2));
20CREATE TABLE t4(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME,
21                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
22                             ON UPDATE CURRENT_TIMESTAMP);
23
24# Insert some rows with targeted values
25
26# Disabling warnings due to Bug#21276591
27--disable_warnings
28# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format
29INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
30INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
31INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
32INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
33--enable_warnings
34
35# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
36INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
37INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
38INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
39INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
40
41# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
42INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
43INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
44INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
45INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
46
47# As the result of a function
48SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
49INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
50INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
51INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
52INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
53
54# Insert duplicates for parts of the clustered key/unique index
55INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45');
56INSERT INTO t2 VALUES('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
57INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45');
58INSERT INTO t3 VALUES('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
59
60# Insert permissible NULLs
61INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
62INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
63INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
64
65# Insert duplicate NULLs to unique column
66INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
67DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
68
69# Insert empty string '', would be converted to zero value of the appropriate type
70--disable_query_log
71SET @save_sql_mode = @@SQL_MODE;
72SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
73--enable_query_log
74INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
75
76# Insert invalid dates, would be converted to zero value of the appropriate type
77INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
78INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
79
80# Insert zero dates
81INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
82INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
83
84# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
85INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */;
86--disable_query_log
87SET SQL_MODE= @save_sql_mode;
88--enable_query_log
89
90# Now select using various table access methods (full table scan, range scan, index scan etc.)
91--sorted_result
92SELECT * FROM t1;
93--sorted_result
94SELECT * FROM t2;
95--sorted_result
96SELECT * FROM t3;
97--sorted_result
98SELECT * FROM t4;
99
100# Select from table with single column primary key and single column index, with column values zero, NULL
101## Full table scan ##
102--sorted_result
103SELECT * FROM t1;
104--sorted_result
105SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
106--sorted_result
107SELECT * FROM t1 WHERE c3 = '2007-05-24';
108
109## Forward index scan, covering ##
110--sorted_result
111SELECT c1 FROM t1;
112
113## Backward index scan, covering ##
114SELECT c1 FROM t1 ORDER BY c1 DESC;
115
116## Forward index scan, non-covering ##
117SELECT * FROM t1 ORDER BY c1 LIMIT 2;
118
119## Backward index scan, non-covering ##
120SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
121
122## ref type access
123SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
124SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
125SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
126SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
127
128# Allow zero-dates
129SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=ALLOW_INVALID_DATES;
130
131## Range access, ordered ##
132SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
133SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
134SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
135SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
136SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
137SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
138SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
139SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
140SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
141SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
142SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
143SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
144SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
145SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
146SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
147SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
148SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1;
149SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2;
150SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
151SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
152SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
153SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
154
155## Range access, backwards scan ##
156SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
157SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
158SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
159SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
160SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
161SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
162SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
163SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
164SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
165SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
166SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
167SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
168SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
169SELECT * FROM t1 WHERE c1 BETWEEN '1900-01-01 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
170SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
171SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
172SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC;
173SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2;
174SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
175SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
176SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
177SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
178## Full table scan ##
179--sorted_result
180SELECT * FROM t1;
181--sorted_result
182SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
183--sorted_result
184SELECT * FROM t1 WHERE c3 = '2007-05-26';
185
186## Forward index scan, covering ##
187--sorted_result
188SELECT c1 FROM t1;
189
190## Backward index scan, covering ##
191SELECT c1 FROM t1 ORDER BY c1 DESC;
192
193## Forward index scan, non-covering ##
194SELECT * FROM t1 ORDER BY c1 LIMIT 2;
195
196## Backward index scan, non-covering ##
197SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
198
199## ref type access
200SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
201SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
202SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
203SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
204
205## Range access, ordered ##
206SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
207# Disabling warnings due to #52283
208--disable_warnings
209SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
210--enable_warnings
211SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
212--disable_warnings
213SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
214--enable_warnings
215SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
216--disable_warnings
217SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
218--enable_warnings
219SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
220SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
221SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
222SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
223SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
224SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
225SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
226--disable_warnings
227SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
228--enable_warnings
229SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
230SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
231SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
232SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
233SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
234SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
235SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
236SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
237
238## Range access, backwards scan ##
239SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
240# Disabling warnings due to #52283
241--disable_warnings
242SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
243--enable_warnings
244SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
245SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
246SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
247SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
248SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
249SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
250SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
251SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
252SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
253SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
254SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
255SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
256SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
257SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
258SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
259SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
260SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
261SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
262SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
263SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
264## Full table scan ##
265--sorted_result
266SELECT * FROM t1;
267--sorted_result
268SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
269--sorted_result
270SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
271
272## Forward index scan, covering ##
273--sorted_result
274SELECT c2 FROM t1;
275
276## Backward index scan, covering ##
277SELECT c2 FROM t1 ORDER BY c2 DESC;
278
279## Forward index scan, non-covering ##
280SELECT * FROM t1 ORDER BY c2 LIMIT 2;
281
282## Backward index scan, non-covering ##
283SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
284
285## ref type access
286SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
287SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
288SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
289SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
290
291## Range access, ordered ##
292SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
293SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
294SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
295SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
296SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
297SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
298SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
299SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
300SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
301SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
302SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
303SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
304SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
305# Disabling warnings due to #52283
306--disable_warnings
307SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
308--enable_warnings
309SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
310SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
311SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2;
312SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2;
313SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
314SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
315SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
316SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
317
318## Range access, backwards scan ##
319SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
320SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
321SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
322SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
323SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
324SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
325SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
326SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
327SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
328SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
329SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC;
330SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
331SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
332# Disabling warnings due to #52283
333--disable_warnings
334SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
335--enable_warnings
336SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
337SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
338SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC;
339SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
340SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
341SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
342SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
343SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
344
345# Select from table with clustered primary key, with column values zero, NULL
346## Full table scan ##
347--sorted_result
348SELECT * FROM t2;
349--sorted_result
350SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
351--sorted_result
352SELECT * FROM t2 WHERE c3 = '2008-01-06';
353
354## Forward index scan, covering ##
355--sorted_result
356SELECT c1,c2 FROM t2;
357
358## Backward index scan, covering ##
359SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
360
361## Forward index scan, non-covering ##
362SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
363
364## Backward index scan, non-covering ##
365SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
366
367## ref type access
368SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
369SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
370SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
371SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
372
373## Range access, ordered ##
374SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
375SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
376SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
377SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
378SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
379SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
380SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
381SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
382SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
383SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
384SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
385SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
386SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
387SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
388SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
389SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
390SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
391SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
392SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
393SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
394SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
395SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
396
397## Range access, backwards scan ##
398SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
399SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
400SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
401SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
402SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
403SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
404SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
405SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
406SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
407SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
408SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
409SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
410SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
411SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
412SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
413SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
414SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
415SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
416SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
417SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
418SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
419SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
420## Full table scan ##
421--sorted_result
422SELECT * FROM t2;
423--sorted_result
424SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
425--sorted_result
426SELECT * FROM t2 WHERE c3 = '1998-12-29';
427
428## Forward index scan, covering ##
429--sorted_result
430SELECT c1,c2 FROM t2;
431
432## Backward index scan, covering ##
433SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
434
435## Forward index scan, non-covering ##
436SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
437
438## Backward index scan, non-covering ##
439SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
440
441## ref type access
442SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
443SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
444SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
445SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
446
447## Range access, ordered ##
448SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
449# Disabling warnings due to #52283
450--disable_warnings
451SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
452--enable_warnings
453SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
454--disable_warnings
455SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
456--enable_warnings
457SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
458--disable_warnings
459SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
460--enable_warnings
461SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
462SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
463SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
464SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
465SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
466SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
467SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
468--disable_warnings
469SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
470--enable_warnings
471SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
472SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
473SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
474SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
475SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
476SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
477SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
478SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
479
480## Range access, backwards scan ##
481SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
482SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
483SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
484SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
485SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
486SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
487SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
488SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
489SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
490SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
491SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
492SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
493SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
494SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
495SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
496SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
497SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
498SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
499SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
500SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
501SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
502SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
503## Full table scan ##
504--sorted_result
505SELECT * FROM t2;
506--sorted_result
507SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
508--sorted_result
509SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
510
511## Forward index scan, covering ##
512--sorted_result
513SELECT c1,c2 FROM t2;
514
515## Backward index scan, covering ##
516SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
517
518## Forward index scan, non-covering ##
519SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
520
521## Backward index scan, non-covering ##
522SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
523
524## ref type access
525SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
526SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
527SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
528SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
529
530## Range access, ordered ##
531SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
532SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
533SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
534SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
535SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
536SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
537SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
538SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
539SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
540SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
541SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
542SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
543SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
544SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
545SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
546SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
547SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
548SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
549SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
550SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
551SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
552SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
553
554## Range access, backwards scan ##
555SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
556SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
557SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
558SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
559SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
560SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
561SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
562SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
563SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
564SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
565SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
566SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
567SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
568SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
569SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
570SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
571SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
572SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
573SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
574SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
575SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
576SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
577
578# Select from table with clustered index, with column values zero, NULL
579## Full table scan ##
580--sorted_result
581SELECT * FROM t3;
582--sorted_result
583SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
584--sorted_result
585SELECT * FROM t3 WHERE c3 = '2007-05-24';
586
587## Forward index scan, covering ##
588--sorted_result
589SELECT c1,c2 FROM t3;
590
591## Backward index scan, covering ##
592SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
593
594## Forward index scan, non-covering ##
595SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
596
597## Backward index scan, non-covering ##
598SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
599
600## ref type access
601SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
602SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
603SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
604SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
605
606## Range access, ordered ##
607SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
608SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
609SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
610SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
611SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
612SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
613SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
614SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
615SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
616SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
617SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
618SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
619SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
620SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
621SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
622SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
623SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2;
624SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
625SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
626SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
627SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
628SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
629
630## Range access, backwards scan ##
631SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
632SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
633SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
634SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
635SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
636SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
637SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
638SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
639SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
640SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
641SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
642SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
643SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
644SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
645SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
646SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
647SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
648SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
649SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
650SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
651SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
652SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
653## Full table scan ##
654--sorted_result
655SELECT * FROM t3;
656--sorted_result
657SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
658--sorted_result
659SELECT * FROM t3 WHERE c3 = '1998-12-29';
660
661## Forward index scan, covering ##
662--sorted_result
663SELECT c1,c2 FROM t3;
664
665## Backward index scan, covering ##
666SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
667
668## Forward index scan, non-covering ##
669SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
670
671## Backward index scan, non-covering ##
672SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
673
674## ref type access
675SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
676SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
677SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
678SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
679
680## Range access, ordered ##
681SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
682# Disabling warnings due to #52283
683--disable_warnings
684SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
685--enable_warnings
686SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
687--disable_warnings
688SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
689--enable_warnings
690SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
691--disable_warnings
692SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
693--enable_warnings
694SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
695SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
696SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
697SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
698SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
699SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
700SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
701--disable_warnings
702SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
703--enable_warnings
704SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
705SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
706SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
707SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
708SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
709SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
710SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
711SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
712
713## Range access, backwards scan ##
714SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
715SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
716SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
717SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
718SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
719SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
720SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
721SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
722SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
723SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
724SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
725SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
726SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
727SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
728SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
729SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
730SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
731SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
732SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
733SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
734SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
735SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
736## Full table scan ##
737--sorted_result
738SELECT * FROM t3;
739--sorted_result
740SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
741--sorted_result
742SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
743
744## Forward index scan, covering ##
745--sorted_result
746SELECT c1,c2 FROM t3;
747
748## Backward index scan, covering ##
749SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
750
751## Forward index scan, non-covering ##
752SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
753
754## Backward index scan, non-covering ##
755SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
756
757## ref type access
758SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
759SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
760SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
761SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
762
763## Range access, ordered ##
764SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
765SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
766SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
767SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
768SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
769SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
770SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
771SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
772SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
773SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
774SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
775SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
776SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
777SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
778SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
779SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
780SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
781SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
782SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
783SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
784SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
785SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
786
787## Range access, backwards scan ##
788SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
789SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
790SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
791SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
792SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
793SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
794SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
795SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
796SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
797SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
798SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
799SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
800SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
801SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
802SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
803SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
804SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
805SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
806SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
807SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
808SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
809SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
810
811SET @@SQL_MODE=@OLD_SQL_MODE;
812
813# Test Error conditions- PK constraint violation, Unique constraint violation
814
815# Insert duplicate value to pk column
816--error ER_DUP_ENTRY
817INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
818
819# Insert duplicate value to clustered pk, throws error
820--error ER_DUP_ENTRY
821INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
822
823# Insert duplicate value to unique column, throws error
824--error ER_DUP_ENTRY
825INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
826
827# Insert duplicate value to clustered unique column, throws error
828--error ER_DUP_ENTRY
829INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
830
831# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
832# Ignore pk constraint
833INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
834INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
835# Ignore unique constraint
836INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
837INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
838# Test that the rows are same
839SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
840SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
841SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
842SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
843
844# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
845SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
846INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
847SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
848
849# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
850SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
851INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
852SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
853
854# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
855SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
856INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
857SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
858
859# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
860SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
861INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
862SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
863
864# Test 'INSERT SET'
865INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
866INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
867INSERT INTO t3 SET c1='1999-01-01';
868--error ER_NO_DEFAULT_FOR_FIELD
869INSERT INTO t4 SET c2='1999-01-01';
870SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
871SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
872SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
873SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
874
875# Test 'INSERT INTO SELECT FROM'
876CREATE TABLE t5(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP, INDEX idx(c1,c2));
877
878--disable_query_log
879SET @save_sql_mode = @@SQL_MODE;
880SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
881--enable_query_log
882
883INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
884--sorted_result
885SELECT * FROM t5;
886TRUNCATE TABLE t5;
887INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
888--sorted_result
889SELECT * FROM t5;
890TRUNCATE TABLE t5;
891INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
892--sorted_result
893SELECT * FROM t5;
894TRUNCATE TABLE t5;
895DROP TABLE t5;
896
897--disable_query_log
898SET SQL_MODE= @save_sql_mode;
899--enable_query_log
900
901# Test Specific values to column types
902
903# Test insert values across range to 'DATE' columns
904INSERT INTO t1 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12');
905INSERT INTO t2 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12');
906INSERT INTO t3 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12');
907INSERT INTO t4 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12');
908
909# Insert valid dates containing a zero for the month or for the day
910--disable_query_log
911SET @save_sql_mode = @@SQL_MODE;
912SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
913--enable_query_log
914INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00');
915INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00');
916INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00');
917INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
918
919# Insert invalid dates, inserts zero values
920INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32');
921
922# Test insert NULL to non-null column
923--error ER_BAD_NULL_ERROR
924INSERT INTO t1(c1) VALUES(NULL);
925--error ER_BAD_NULL_ERROR
926INSERT INTO t2(c1) VALUES(NULL);
927--error ER_BAD_NULL_ERROR
928INSERT INTO t3 VALUES(NULL,'2008-01-14','08-01-15','08/01/16');
929--error ER_BAD_NULL_ERROR
930INSERT INTO t4 VALUES(NULL,'2008-01-14','08-01-15','08/01/16');
931
932--disable_query_log
933SET SQL_MODE= @save_sql_mode;
934--enable_query_log
935
936# Test INSERT SET with no default for not null column
937SET SQL_MODE=STRICT_ALL_TABLES;
938--error ER_NO_DEFAULT_FOR_FIELD
939INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */;
940SET SQL_MODE='';
941
942--sorted_result
943SELECT * FROM t1;
944--sorted_result
945SELECT * FROM t2;
946--sorted_result
947SELECT * FROM t3;
948--sorted_result
949SELECT * FROM t4;
950# Now select using various table access methods
951## Full table scan ##
952--sorted_result
953SELECT * FROM t1;
954--sorted_result
955SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
956--sorted_result
957SELECT * FROM t1 WHERE c3 = '2007-05-24 09:15:28';
958
959## Forward index scan, covering ##
960--sorted_result
961SELECT c1 FROM t1;
962
963## Backward index scan, covering ##
964SELECT c1 FROM t1 ORDER BY c1 DESC;
965
966## Forward index scan, non-covering ##
967SELECT * FROM t1 ORDER BY c1 LIMIT 2;
968
969## Backward index scan, non-covering ##
970SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
971
972## ref type access
973SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1;
974SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 LIMIT 2;
975SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC;
976SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC LIMIT 2;
977
978## Range access, ordered ##
979SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1;
980SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 LIMIT 2;
981SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1;
982SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 LIMIT 2;
983SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1;
984SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 LIMIT 2;
985SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1;
986SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 LIMIT 2;
987SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1;
988SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 LIMIT 2;
989SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1;
990SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 LIMIT 2;
991SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1;
992SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 LIMIT 2;
993SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1;
994SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 LIMIT 2;
995SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1;
996SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 LIMIT 2;
997SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
998SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
999SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
1000SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1001
1002## Range access, backwards scan ##
1003SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC;
1004SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1005SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC;
1006SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1007SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC;
1008SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1009SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC;
1010SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1011SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC;
1012SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1013SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC;
1014SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1015SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC;
1016SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2;
1017SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC;
1018SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC LIMIT 2;
1019SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC;
1020SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC LIMIT 2;
1021SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
1022SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1023SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1024SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1025## Full table scan ##
1026--sorted_result
1027SELECT * FROM t1;
1028--sorted_result
1029SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
1030--sorted_result
1031SELECT * FROM t1 WHERE c3 = '2007-05-26 00:00:00';
1032
1033## Forward index scan, covering ##
1034--sorted_result
1035SELECT c1 FROM t1;
1036
1037## Backward index scan, covering ##
1038SELECT c1 FROM t1 ORDER BY c1 DESC;
1039
1040## Forward index scan, non-covering ##
1041SELECT * FROM t1 ORDER BY c1 LIMIT 2;
1042
1043## Backward index scan, non-covering ##
1044SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
1045
1046## ref type access
1047SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
1048SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
1049SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
1050SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1051
1052## Range access, ordered ##
1053SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
1054SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
1055SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
1056SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
1057SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
1058SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
1059SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
1060SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
1061SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
1062SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
1063SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
1064SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
1065SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1;
1066SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 LIMIT 2;
1067SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1;
1068SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 LIMIT 2;
1069SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1;
1070SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2;
1071SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
1072SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
1073SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
1074SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1075
1076## Range access, backwards scan ##
1077SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
1078SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1079SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
1080SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1081SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
1082SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1083SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
1084SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1085SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
1086SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1087SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
1088SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1089SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC;
1090SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2;
1091SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC;
1092SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC LIMIT 2;
1093SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC;
1094SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2;
1095SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
1096SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1097SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1098SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1099## Full table scan ##
1100--sorted_result
1101SELECT * FROM t1;
1102--sorted_result
1103SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
1104--sorted_result
1105SELECT * FROM t1 WHERE c3 = '1998-12-28 00:00:00';
1106
1107## Forward index scan, covering ##
1108--sorted_result
1109SELECT c1 FROM t1;
1110
1111## Backward index scan, covering ##
1112SELECT c1 FROM t1 ORDER BY c1 DESC;
1113
1114## Forward index scan, non-covering ##
1115SELECT * FROM t1 ORDER BY c1 LIMIT 2;
1116
1117## Backward index scan, non-covering ##
1118SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
1119
1120## ref type access
1121SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1;
1122SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 LIMIT 2;
1123SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC;
1124SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1125
1126## Range access, ordered ##
1127SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1;
1128SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 LIMIT 2;
1129SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1;
1130SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 LIMIT 2;
1131SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1;
1132SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 LIMIT 2;
1133SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1;
1134SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 LIMIT 2;
1135SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1;
1136SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 LIMIT 2;
1137SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1;
1138SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 LIMIT 2;
1139SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1;
1140SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 LIMIT 2;
1141SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1;
1142SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 LIMIT 2;
1143SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1;
1144SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2;
1145SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
1146SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
1147SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
1148SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1149
1150## Range access, backwards scan ##
1151SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC;
1152SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1153SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC;
1154SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1155SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC;
1156SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1157SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC;
1158SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1159SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC;
1160SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1161SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC;
1162SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1163SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC;
1164SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1165SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC;
1166SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC LIMIT 2;
1167SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC;
1168SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2;
1169SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
1170SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1171SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1172SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1173## Full table scan ##
1174--sorted_result
1175SELECT * FROM t1;
1176--sorted_result
1177SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
1178--sorted_result
1179SELECT * FROM t1 WHERE c4 = '2009-01-29';
1180
1181## Forward index scan, covering ##
1182--sorted_result
1183SELECT c2 FROM t1;
1184
1185## Backward index scan, covering ##
1186SELECT c2 FROM t1 ORDER BY c2 DESC;
1187
1188## Forward index scan, non-covering ##
1189SELECT * FROM t1 ORDER BY c2 LIMIT 2;
1190
1191## Backward index scan, non-covering ##
1192SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
1193
1194## ref type access
1195SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2;
1196SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 LIMIT 2;
1197SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC;
1198SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1199
1200## Range access, ordered ##
1201SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2;
1202SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 LIMIT 2;
1203SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2;
1204SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 LIMIT 2;
1205SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2;
1206SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 LIMIT 2;
1207SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2;
1208SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 LIMIT 2;
1209SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2;
1210SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 LIMIT 2;
1211SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2;
1212SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 LIMIT 2;
1213SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2;
1214SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 LIMIT 2;
1215SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2;
1216SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 LIMIT 2;
1217SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2;
1218SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 LIMIT 2;
1219SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
1220SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
1221SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
1222SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
1223
1224## Range access, backwards scan ##
1225SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC;
1226SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1227SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC;
1228SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1229SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC;
1230SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1231SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC;
1232SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1233SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC;
1234SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1235SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC;
1236SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1237SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC;
1238SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1239SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC;
1240SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC LIMIT 2;
1241SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC;
1242SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1243SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
1244SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
1245SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
1246SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
1247## Full table scan ##
1248--sorted_result
1249SELECT * FROM t1;
1250--sorted_result
1251SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
1252--sorted_result
1253SELECT * FROM t1 WHERE c4 = '2008-01-05';
1254
1255## Forward index scan, covering ##
1256--sorted_result
1257SELECT c2 FROM t1;
1258
1259## Backward index scan, covering ##
1260SELECT c2 FROM t1 ORDER BY c2 DESC;
1261
1262## Forward index scan, non-covering ##
1263SELECT * FROM t1 ORDER BY c2 LIMIT 2;
1264
1265## Backward index scan, non-covering ##
1266SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
1267
1268## ref type access
1269SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2;
1270SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 LIMIT 2;
1271SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC;
1272SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1273
1274## Range access, ordered ##
1275SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2;
1276SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 LIMIT 2;
1277SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2;
1278SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 LIMIT 2;
1279SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2;
1280SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 LIMIT 2;
1281SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2;
1282SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 LIMIT 2;
1283SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2;
1284SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 LIMIT 2;
1285SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2;
1286SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 LIMIT 2;
1287SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2;
1288SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 LIMIT 2;
1289SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2;
1290SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 LIMIT 2;
1291SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2;
1292SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 LIMIT 2;
1293SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
1294SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
1295SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
1296SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
1297
1298## Range access, backwards scan ##
1299SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC;
1300SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1301SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC;
1302SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1303SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC;
1304SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1305SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC;
1306SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1307SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC;
1308SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1309SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC;
1310SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1311SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC;
1312SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1313SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC;
1314SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC LIMIT 2;
1315SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC;
1316SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC LIMIT 2;
1317SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
1318SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
1319SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
1320SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
1321
1322# Using Index-merge
1323--sorted_result
1324SELECT * FROM t1 WHERE c1='1000-00-01' OR c2='9999-12-31';
1325
1326# Using index for group-by
1327--sorted_result
1328SELECT c2 FROM t1 GROUP BY c2;
1329
1330## Full table scan ##
1331--sorted_result
1332SELECT * FROM t2;
1333--sorted_result
1334SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1335--sorted_result
1336SELECT * FROM t2 WHERE c3 = '2007-05-24 09:15:28';
1337
1338## Forward index scan, covering ##
1339--sorted_result
1340SELECT c1,c2 FROM t2;
1341
1342## Backward index scan, covering ##
1343SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1344
1345## Forward index scan, non-covering ##
1346SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1347
1348## Backward index scan, non-covering ##
1349SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1350
1351## ref type access
1352SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2;
1353SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1354SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC;
1355SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1356
1357## Range access, ordered ##
1358SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2;
1359SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1360SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2;
1361SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1362SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2;
1363SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1364SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2;
1365SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1366SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2;
1367SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1368SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2;
1369SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1370SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1371SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1372SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1373SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1374SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2;
1375SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1376SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1377SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1378SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1379SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1380
1381## Range access, backwards scan ##
1382SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC;
1383SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1384SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC;
1385SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1386SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC;
1387SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1388SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC;
1389SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1390SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC;
1391SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1392SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC;
1393SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1394SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1395SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1396SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1397SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1398SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC;
1399SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1400SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1401SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1402SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1403SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1404## Full table scan ##
1405--sorted_result
1406SELECT * FROM t2;
1407--sorted_result
1408SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1409--sorted_result
1410SELECT * FROM t2 WHERE c3 = '2007-05-26 00:00:00';
1411
1412## Forward index scan, covering ##
1413--sorted_result
1414SELECT c1,c2 FROM t2;
1415
1416## Backward index scan, covering ##
1417SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1418
1419## Forward index scan, non-covering ##
1420SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1421
1422## Backward index scan, non-covering ##
1423SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1424
1425## ref type access
1426SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
1427SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1428SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
1429SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1430
1431## Range access, ordered ##
1432SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
1433SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1434SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
1435SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1436SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
1437SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1438SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
1439SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1440SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
1441SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1442SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
1443SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1444SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2;
1445SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1446SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2;
1447SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1448SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2;
1449SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1450SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1451SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1452SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1453SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1454
1455## Range access, backwards scan ##
1456SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
1457SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1458SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
1459SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1460SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
1461SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1462SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
1463SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1464SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
1465SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1466SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
1467SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1468SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC;
1469SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1470SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC;
1471SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1472SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1473SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1474SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1475SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1476SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1477SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1478## Full table scan ##
1479--sorted_result
1480SELECT * FROM t2;
1481--sorted_result
1482SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1483--sorted_result
1484SELECT * FROM t2 WHERE c3 = '1998-12-28 00:00:00';
1485
1486## Forward index scan, covering ##
1487--sorted_result
1488SELECT c1,c2 FROM t2;
1489
1490## Backward index scan, covering ##
1491SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1492
1493## Forward index scan, non-covering ##
1494SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1495
1496## Backward index scan, non-covering ##
1497SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1498
1499## ref type access
1500SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2;
1501SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1502SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1503SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1504
1505## Range access, ordered ##
1506SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2;
1507SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1508SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2;
1509SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1510SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2;
1511SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1512SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2;
1513SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1514SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2;
1515SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1516SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2;
1517SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1518SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2;
1519SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1520SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2;
1521SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2;
1522SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2;
1523SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1524SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1525SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1526SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1527SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1528
1529## Range access, backwards scan ##
1530SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC;
1531SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1532SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC;
1533SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1534SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC;
1535SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1536SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC;
1537SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1538SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC;
1539SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1540SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC;
1541SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1542SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC;
1543SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1544SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC;
1545SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2;
1546SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1547SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1548SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1549SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1550SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1551SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1552## Full table scan ##
1553--sorted_result
1554SELECT * FROM t2;
1555--sorted_result
1556SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
1557--sorted_result
1558SELECT * FROM t2 WHERE c4 = '2009-01-29';
1559
1560## Forward index scan, covering ##
1561--sorted_result
1562SELECT c1,c2 FROM t2;
1563
1564## Backward index scan, covering ##
1565SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1566
1567## Forward index scan, non-covering ##
1568SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1569
1570## Backward index scan, non-covering ##
1571SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1572
1573## ref type access
1574SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2;
1575SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1576SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC;
1577SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1578
1579## Range access, ordered ##
1580SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2;
1581SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1582SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2;
1583SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1584SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2;
1585SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1586SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2;
1587SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1588SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2;
1589SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1590SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2;
1591SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1592SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1593SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1594SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1595SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1596SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2;
1597SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1598SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
1599SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1600SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1601SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1602
1603## Range access, backwards scan ##
1604SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC;
1605SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1606SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC;
1607SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1608SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC;
1609SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1610SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC;
1611SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1612SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC;
1613SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1614SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC;
1615SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1616SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1617SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1618SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1619SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1620SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC;
1621SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1622SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1623SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1624SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1625SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1626## Full table scan ##
1627--sorted_result
1628SELECT * FROM t2;
1629--sorted_result
1630SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
1631--sorted_result
1632SELECT * FROM t2 WHERE c4 = '2008-01-07';
1633
1634## Forward index scan, covering ##
1635--sorted_result
1636SELECT c1,c2 FROM t2;
1637
1638## Backward index scan, covering ##
1639SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1640
1641## Forward index scan, non-covering ##
1642SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1643
1644## Backward index scan, non-covering ##
1645SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1646
1647## ref type access
1648SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2;
1649SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1650SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1651SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1652
1653## Range access, ordered ##
1654SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2;
1655SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1656SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2;
1657SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1658SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2;
1659SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1660SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2;
1661SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1662SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2;
1663SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1664SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2;
1665SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1666SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2;
1667SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1668SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2;
1669SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2;
1670SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2;
1671SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1672SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
1673SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1674SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1675SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1676
1677## Range access, backwards scan ##
1678SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC;
1679SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1680SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC;
1681SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1682SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC;
1683SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1684SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC;
1685SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1686SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC;
1687SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1688SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC;
1689SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1690SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC;
1691SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1692SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC;
1693SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2;
1694SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1695SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1696SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1697SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1698SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1699SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1700## Full table scan ##
1701--sorted_result
1702SELECT * FROM t3;
1703--sorted_result
1704SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1705--sorted_result
1706SELECT * FROM t3 WHERE c3 = '2007-05-24 09:15:28';
1707
1708## Forward index scan, covering ##
1709--sorted_result
1710SELECT c1,c2 FROM t3;
1711
1712## Backward index scan, covering ##
1713SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1714
1715## Forward index scan, non-covering ##
1716SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1717
1718## Backward index scan, non-covering ##
1719SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1720
1721## ref type access
1722SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2;
1723SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1724SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC;
1725SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1726
1727## Range access, ordered ##
1728SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2;
1729SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1730SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2;
1731SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1732SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2;
1733SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1734SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2;
1735SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1736SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2;
1737SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1738SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2;
1739SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1740SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1741SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1742SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1743SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1744SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2;
1745SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1746SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1747SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1748SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1749SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1750
1751## Range access, backwards scan ##
1752SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC;
1753SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1754SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC;
1755SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1756SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC;
1757SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1758SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC;
1759SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1760SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC;
1761SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1762SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC;
1763SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1764SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1765SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1766SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1767SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1768SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC;
1769SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1770SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1771SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1772SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1773SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1774## Full table scan ##
1775--sorted_result
1776SELECT * FROM t3;
1777--sorted_result
1778SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1779--sorted_result
1780SELECT * FROM t3 WHERE c3 = '2007-05-26 00:00:00';
1781
1782## Forward index scan, covering ##
1783--sorted_result
1784SELECT c1,c2 FROM t3;
1785
1786## Backward index scan, covering ##
1787SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1788
1789## Forward index scan, non-covering ##
1790SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1791
1792## Backward index scan, non-covering ##
1793SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1794
1795## ref type access
1796SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
1797SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1798SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
1799SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1800
1801## Range access, ordered ##
1802SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
1803SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1804SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
1805SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1806SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
1807SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1808SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
1809SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1810SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
1811SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1812SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
1813SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1814SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2;
1815SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1816SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2;
1817SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1818SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2;
1819SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1820SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1821SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1822SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1823SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1824
1825## Range access, backwards scan ##
1826SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
1827SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1828SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
1829SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1830SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
1831SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1832SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
1833SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1834SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
1835SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1836SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
1837SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1838SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC;
1839SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1840SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC;
1841SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1842SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1843SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1844SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1845SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1846SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1847SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1848## Full table scan ##
1849--sorted_result
1850SELECT * FROM t3;
1851--sorted_result
1852SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1853--sorted_result
1854SELECT * FROM t3 WHERE c3 = '1998-12-28 00:00:00';
1855
1856## Forward index scan, covering ##
1857--sorted_result
1858SELECT c1,c2 FROM t3;
1859
1860## Backward index scan, covering ##
1861SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1862
1863## Forward index scan, non-covering ##
1864SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1865
1866## Backward index scan, non-covering ##
1867SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1868
1869## ref type access
1870SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2;
1871SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1872SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1873SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1874
1875## Range access, ordered ##
1876SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2;
1877SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1878SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2;
1879SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1880SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2;
1881SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1882SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2;
1883SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1884SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2;
1885SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1886SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2;
1887SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1888SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2;
1889SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1890SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2;
1891SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2;
1892SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2;
1893SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1894SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1895SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1896SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1897SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1898
1899## Range access, backwards scan ##
1900SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC;
1901SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1902SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC;
1903SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1904SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC;
1905SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1906SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC;
1907SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1908SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC;
1909SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1910SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC;
1911SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1912SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC;
1913SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1914SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC;
1915SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2;
1916SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1917SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1918SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1919SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1920SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1921SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1922## Full table scan ##
1923--sorted_result
1924SELECT * FROM t3;
1925--sorted_result
1926SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1927--sorted_result
1928SELECT * FROM t3 WHERE c4 = '2009-01-29';
1929
1930## Forward index scan, covering ##
1931--sorted_result
1932SELECT c1,c2 FROM t3;
1933
1934## Backward index scan, covering ##
1935SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1936
1937## Forward index scan, non-covering ##
1938SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1939
1940## Backward index scan, non-covering ##
1941SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1942
1943## ref type access
1944SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2;
1945SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1946SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC;
1947SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1948
1949## Range access, ordered ##
1950SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2;
1951SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1952SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2;
1953SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1954SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2;
1955SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1956SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2;
1957SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1958SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2;
1959SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1960SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2;
1961SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1962SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1963SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1964SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1965SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1966SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2;
1967SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1968SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
1969SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1970SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1971SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1972
1973## Range access, backwards scan ##
1974SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC;
1975SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1976SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC;
1977SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1978SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC;
1979SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1980SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC;
1981SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1982SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC;
1983SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1984SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC;
1985SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1986SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1987SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1988SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1989SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1990SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC;
1991SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1992SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1993SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1994SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1995SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1996## Full table scan ##
1997--sorted_result
1998SELECT * FROM t3;
1999--sorted_result
2000SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2001--sorted_result
2002SELECT * FROM t3 WHERE c4 = '2008-01-09';
2003
2004## Forward index scan, covering ##
2005--sorted_result
2006SELECT c1,c2 FROM t3;
2007
2008## Backward index scan, covering ##
2009SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2010
2011## Forward index scan, non-covering ##
2012SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2013
2014## Backward index scan, non-covering ##
2015SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2016
2017## ref type access
2018SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2;
2019SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2020SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC;
2021SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2022
2023## Range access, ordered ##
2024SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2;
2025SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2026SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2;
2027SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2028SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2;
2029SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2030SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2;
2031SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2032SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2;
2033SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2034SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2;
2035SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2036SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2;
2037SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2;
2038SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2;
2039SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2;
2040SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2;
2041SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
2042SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
2043SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
2044SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
2045SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2046
2047## Range access, backwards scan ##
2048SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC;
2049SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2050SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC;
2051SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2052SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC;
2053SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2054SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC;
2055SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2056SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC;
2057SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2058SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC;
2059SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2060SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC;
2061SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
2062SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC;
2063SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2;
2064SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC;
2065SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
2066SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
2067SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2068SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
2069SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2070
2071# Using index for group-by
2072--sorted_result
2073SELECT c1 FROM t3 GROUP BY c1;
2074--sorted_result
2075SELECT DISTINCT c1 FROM t3;
2076--sorted_result
2077SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
2078DROP TABLE t1,t2,t3,t4;
2079
2080######## Running INSERT tests for DATETIME ########
2081
2082# Create tables
2083CREATE TABLE t1(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE,
2084                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
2085                             ON UPDATE CURRENT_TIMESTAMP,
2086                PRIMARY KEY(c1), UNIQUE INDEX(c2));
2087CREATE TABLE t2(c1 DATETIME NOT NULL, c2 DATETIME NOT NULL, c3 DATE,
2088                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
2089                             ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(c1,c2));
2090CREATE TABLE t3(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE,
2091                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
2092                             ON UPDATE CURRENT_TIMESTAMP,
2093                UNIQUE INDEX idx(c1,c2));
2094CREATE TABLE t4(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE,
2095                c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
2096                             ON UPDATE CURRENT_TIMESTAMP);
2097
2098# Insert some rows with targeted values
2099
2100# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format
2101INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
2102INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
2103INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
2104INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
2105
2106# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
2107INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2108INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2109INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2110INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2111
2112# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
2113INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2114INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2115INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2116INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2117
2118# As the result of a function
2119SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
2120INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2121INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2122INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2123INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2124
2125# Insert duplicates for parts of the clustered key/unique index
2126INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
2127INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
2128
2129# Insert permissible NULLs
2130INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2131INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2132INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2133
2134# Insert duplicate NULLs to unique column
2135INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
2136DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
2137
2138# Insert empty string '', would be converted to zero value of the appropriate type
2139INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
2140
2141# Insert invalid dates, would be converted to zero value of the appropriate type
2142INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
2143INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
2144
2145# Insert zero dates
2146INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
2147INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
2148
2149# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
2150INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */;
2151
2152# Now select using various table access methods (full table scan, range scan, index scan etc.)
2153--sorted_result
2154SELECT * FROM t1;
2155--sorted_result
2156SELECT * FROM t2;
2157--sorted_result
2158SELECT * FROM t3;
2159--sorted_result
2160SELECT * FROM t4;
2161
2162# Select from table with single column primary key and single column index, with column values zero, NULL
2163## Full table scan ##
2164--sorted_result
2165SELECT * FROM t1;
2166--sorted_result
2167SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2168--sorted_result
2169SELECT * FROM t1 WHERE c3 = '2007-05-24';
2170
2171## Forward index scan, covering ##
2172--sorted_result
2173SELECT c1 FROM t1;
2174
2175## Backward index scan, covering ##
2176SELECT c1 FROM t1 ORDER BY c1 DESC;
2177
2178## Forward index scan, non-covering ##
2179SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2180
2181## Backward index scan, non-covering ##
2182SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2183
2184## ref type access
2185SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
2186SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2187SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
2188SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2189
2190## Range access, ordered ##
2191SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
2192SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2193SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
2194SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2195SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
2196SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2197SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
2198SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2199SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
2200SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2201SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
2202SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2203SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
2204SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
2205SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
2206SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
2207SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1;
2208SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2;
2209SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2210SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2211SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2212SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2213
2214## Range access, backwards scan ##
2215SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
2216SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2217SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
2218SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2219SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
2220SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2221SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
2222SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2223SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
2224SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2225SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
2226SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2227SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
2228SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
2229SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
2230SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
2231SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC;
2232SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2;
2233SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
2234SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2235SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2236SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2237## Full table scan ##
2238--sorted_result
2239SELECT * FROM t1;
2240--sorted_result
2241SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2242--sorted_result
2243SELECT * FROM t1 WHERE c3 = '2007-05-26';
2244
2245## Forward index scan, covering ##
2246--sorted_result
2247SELECT c1 FROM t1;
2248
2249## Backward index scan, covering ##
2250SELECT c1 FROM t1 ORDER BY c1 DESC;
2251
2252## Forward index scan, non-covering ##
2253SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2254
2255## Backward index scan, non-covering ##
2256SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2257
2258## ref type access
2259SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
2260SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
2261SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
2262SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2263
2264## Range access, ordered ##
2265SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
2266SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
2267SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
2268SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
2269SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
2270SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
2271SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
2272SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
2273SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
2274SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
2275SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
2276SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
2277SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
2278SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
2279SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
2280SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
2281SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
2282SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2283SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2284SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2285SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2286SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2287
2288## Range access, backwards scan ##
2289SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
2290SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2291SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
2292SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2293SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
2294SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2295SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
2296SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2297SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
2298SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2299SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
2300SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2301SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
2302SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
2303SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
2304SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
2305SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
2306SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2307SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
2308SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2309SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2310SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2311## Full table scan ##
2312--sorted_result
2313SELECT * FROM t1;
2314--sorted_result
2315SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
2316--sorted_result
2317SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
2318
2319## Forward index scan, covering ##
2320--sorted_result
2321SELECT c2 FROM t1;
2322
2323## Backward index scan, covering ##
2324SELECT c2 FROM t1 ORDER BY c2 DESC;
2325
2326## Forward index scan, non-covering ##
2327SELECT * FROM t1 ORDER BY c2 LIMIT 2;
2328
2329## Backward index scan, non-covering ##
2330SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
2331
2332## ref type access
2333SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
2334SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2335SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
2336SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2337
2338## Range access, ordered ##
2339SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
2340SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2341SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
2342SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2343SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
2344SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2345SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
2346SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2347SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
2348SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2349SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
2350SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2351SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
2352SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
2353SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
2354SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
2355SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2;
2356SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2;
2357SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
2358SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
2359SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
2360SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
2361
2362## Range access, backwards scan ##
2363SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
2364SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2365SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
2366SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2367SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
2368SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2369SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
2370SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2371SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
2372SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2373SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC;
2374SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2375SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
2376SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
2377SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
2378SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
2379SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC;
2380SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
2381SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
2382SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
2383SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
2384SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
2385
2386# Select from table with clustered primary key, with column values zero, NULL
2387## Full table scan ##
2388--sorted_result
2389SELECT * FROM t2;
2390--sorted_result
2391SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2392--sorted_result
2393SELECT * FROM t2 WHERE c3 = '2008-01-06';
2394
2395## Forward index scan, covering ##
2396--sorted_result
2397SELECT c1,c2 FROM t2;
2398
2399## Backward index scan, covering ##
2400SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2401
2402## Forward index scan, non-covering ##
2403SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2404
2405## Backward index scan, non-covering ##
2406SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2407
2408## ref type access
2409SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
2410SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2411SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2412SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2413
2414## Range access, ordered ##
2415SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
2416SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2417SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
2418SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2419SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
2420SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2421SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
2422SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2423SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
2424SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2425SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
2426SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2427SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
2428SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
2429SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
2430SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
2431SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
2432SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
2433SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
2434SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2435SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2436SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2437
2438## Range access, backwards scan ##
2439SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2440SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2441SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2442SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2443SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2444SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2445SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2446SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2447SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2448SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2449SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2450SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2451SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
2452SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
2453SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
2454SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
2455SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
2456SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
2457SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2458SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2459SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2460SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2461## Full table scan ##
2462--sorted_result
2463SELECT * FROM t2;
2464--sorted_result
2465SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2466--sorted_result
2467SELECT * FROM t2 WHERE c3 = '1998-12-29';
2468
2469## Forward index scan, covering ##
2470--sorted_result
2471SELECT c1,c2 FROM t2;
2472
2473## Backward index scan, covering ##
2474SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2475
2476## Forward index scan, non-covering ##
2477SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2478
2479## Backward index scan, non-covering ##
2480SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2481
2482## ref type access
2483SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
2484SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2485SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
2486SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2487
2488## Range access, ordered ##
2489SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
2490SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2491SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
2492SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2493SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
2494SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2495SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
2496SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2497SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
2498SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2499SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
2500SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2501SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
2502SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
2503SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
2504SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
2505SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
2506SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
2507SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
2508SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2509SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2510SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2511
2512## Range access, backwards scan ##
2513SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
2514SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2515SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
2516SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2517SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
2518SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2519SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
2520SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2521SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
2522SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2523SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
2524SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
2526SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
2527SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
2528SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
2529SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
2530SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
2531SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2532SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2533SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2534SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2535## Full table scan ##
2536--sorted_result
2537SELECT * FROM t2;
2538--sorted_result
2539SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
2540--sorted_result
2541SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
2542
2543## Forward index scan, covering ##
2544--sorted_result
2545SELECT c1,c2 FROM t2;
2546
2547## Backward index scan, covering ##
2548SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2549
2550## Forward index scan, non-covering ##
2551SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2552
2553## Backward index scan, non-covering ##
2554SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2555
2556## ref type access
2557SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
2558SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2559SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2560SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2561
2562## Range access, ordered ##
2563SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
2564SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2565SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
2566SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2567SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
2568SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2569SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
2570SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2571SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
2572SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2573SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
2574SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2575SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
2576SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
2577SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
2578SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
2579SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
2580SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
2581SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
2582SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
2583SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
2584SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2585
2586## Range access, backwards scan ##
2587SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2588SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2589SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2590SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2591SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2592SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2593SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2594SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2595SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2596SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2597SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2598SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2599SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
2600SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
2601SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
2602SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
2603SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
2604SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2605SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
2606SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2607SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
2608SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2609
2610# Select from table with clustered index, with column values zero, NULL
2611## Full table scan ##
2612--sorted_result
2613SELECT * FROM t3;
2614--sorted_result
2615SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
2616--sorted_result
2617SELECT * FROM t3 WHERE c3 = '2007-05-24';
2618
2619## Forward index scan, covering ##
2620--sorted_result
2621SELECT c1,c2 FROM t3;
2622
2623## Backward index scan, covering ##
2624SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2625
2626## Forward index scan, non-covering ##
2627SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2628
2629## Backward index scan, non-covering ##
2630SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2631
2632## ref type access
2633SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
2634SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2635SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2636SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2637
2638## Range access, ordered ##
2639SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
2640SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2641SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
2642SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2643SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
2644SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2645SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
2646SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2647SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
2648SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2649SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
2650SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2651SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
2652SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
2653SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
2654SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
2655SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2;
2656SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2657SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
2658SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2659SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2660SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2661
2662## Range access, backwards scan ##
2663SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2664SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2665SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2666SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2667SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2668SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2669SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2670SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2671SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2672SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2673SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2674SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2675SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
2676SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2677SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
2678SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
2679SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2680SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2681SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2682SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2683SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2684SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2685## Full table scan ##
2686--sorted_result
2687SELECT * FROM t3;
2688--sorted_result
2689SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
2690--sorted_result
2691SELECT * FROM t3 WHERE c3 = '1998-12-29';
2692
2693## Forward index scan, covering ##
2694--sorted_result
2695SELECT c1,c2 FROM t3;
2696
2697## Backward index scan, covering ##
2698SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2699
2700## Forward index scan, non-covering ##
2701SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2702
2703## Backward index scan, non-covering ##
2704SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2705
2706## ref type access
2707SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
2708SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2709SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
2710SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2711
2712## Range access, ordered ##
2713SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
2714SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2715SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
2716SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2717SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
2718SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2719SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
2720SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2721SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
2722SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2723SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
2724SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2725SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
2726SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
2727SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
2728SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
2729SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
2730SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
2731SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
2732SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2733SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2734SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2735
2736## Range access, backwards scan ##
2737SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
2738SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2739SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
2740SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2741SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
2742SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2743SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
2744SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2745SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
2746SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2747SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
2748SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2749SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
2750SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
2751SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
2752SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
2753SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
2754SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
2755SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2756SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2757SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2758SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2759## Full table scan ##
2760--sorted_result
2761SELECT * FROM t3;
2762--sorted_result
2763SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2764--sorted_result
2765SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
2766
2767## Forward index scan, covering ##
2768--sorted_result
2769SELECT c1,c2 FROM t3;
2770
2771## Backward index scan, covering ##
2772SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2773
2774## Forward index scan, non-covering ##
2775SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2776
2777## Backward index scan, non-covering ##
2778SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2779
2780## ref type access
2781SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
2782SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2783SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2784SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2785
2786## Range access, ordered ##
2787SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
2788SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2789SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
2790SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2791SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
2792SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2793SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
2794SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2795SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
2796SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2797SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
2798SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2799SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
2800SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
2801SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
2802SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
2803SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
2804SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
2805SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
2806SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
2807SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
2808SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2809
2810## Range access, backwards scan ##
2811SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2812SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2813SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2814SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2815SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2816SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2817SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2818SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2819SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2820SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2821SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2822SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2823SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
2824SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
2825SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
2826SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
2827SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
2828SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2829SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
2830SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2831SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
2832SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2833
2834# Test Error conditions- PK constraint violation, Unique constraint violation
2835
2836# Insert duplicate value to pk column
2837--error ER_DUP_ENTRY
2838INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
2839
2840# Insert duplicate value to clustered pk, throws error
2841--error ER_DUP_ENTRY
2842INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
2843
2844# Insert duplicate value to unique column, throws error
2845--error ER_DUP_ENTRY
2846INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
2847
2848# Insert duplicate value to clustered unique column, throws error
2849--error ER_DUP_ENTRY
2850INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
2851
2852# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
2853# Ignore pk constraint
2854INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
2855INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
2856# Ignore unique constraint
2857INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
2858INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
2859# Test that the rows are same
2860SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
2861SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
2862SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
2863SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
2864
2865# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
2866SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
2867INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
2868SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
2869
2870# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
2871SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2872INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2873SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
2874
2875# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
2876SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2877INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2878SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
2879
2880# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
2881SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2882INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2883SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
2884
2885# Test 'INSERT SET'
2886INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
2887INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
2888INSERT INTO t3 SET c1='1999-01-01';
2889INSERT INTO t4 SET c2='1999-01-01';
2890SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2891SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2892SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2893SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2894
2895# Test 'INSERT INTO SELECT FROM'
2896CREATE TABLE t5(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, INDEX idx(c1,c2));
2897INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
2898--sorted_result
2899SELECT * FROM t5;
2900TRUNCATE TABLE t5;
2901INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
2902#Following query produces different results
2903#for differenct engine/platform
2904--disable_result_log
2905--sorted_result
2906SELECT * FROM t5;
2907--enable_result_log
2908TRUNCATE TABLE t5;
2909INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
2910--sorted_result
2911SELECT * FROM t5;
2912TRUNCATE TABLE t5;
2913DROP TABLE t5;
2914
2915# Test Specific values to column types
2916
2917# Test insert range values to 'DATETIME' columns
2918INSERT INTO t1 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12');
2919INSERT INTO t2 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12');
2920INSERT INTO t3 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12');
2921INSERT INTO t4 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12');
2922
2923# Insert valid dates containing a zero for the month or for the day
2924INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00');
2925INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00');
2926INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00');
2927INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
2928
2929# Insert invalid dates, inserts zero values
2930INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32'),('2009-01-01 23:60:60'),('2009-01-01 24:59:59'),('2009-01-01 23:59:60');
2931
2932# Test insert NULL to non-null column
2933--error ER_BAD_NULL_ERROR
2934INSERT INTO t1(c1) VALUES(NULL);
2935--error ER_BAD_NULL_ERROR
2936INSERT INTO t2(c1) VALUES(NULL);
2937--error ER_BAD_NULL_ERROR
2938INSERT INTO t3 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
2939--error ER_BAD_NULL_ERROR
2940INSERT INTO t4 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
2941
2942# Test INSERT SET with no default for not null column
2943SET SQL_MODE=STRICT_ALL_TABLES;
2944--error ER_NO_DEFAULT_FOR_FIELD
2945INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */;
2946SET SQL_MODE='';
2947
2948--sorted_result
2949SELECT * FROM t1;
2950--sorted_result
2951SELECT * FROM t2;
2952--sorted_result
2953SELECT * FROM t3;
2954--sorted_result
2955SELECT * FROM t4;
2956# Now select using various table access methods
2957## Full table scan ##
2958--sorted_result
2959SELECT * FROM t1;
2960--sorted_result
2961SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2962--sorted_result
2963SELECT * FROM t1 WHERE c3 = '2007-05-24';
2964
2965## Forward index scan, covering ##
2966--sorted_result
2967SELECT c1 FROM t1;
2968
2969## Backward index scan, covering ##
2970SELECT c1 FROM t1 ORDER BY c1 DESC;
2971
2972## Forward index scan, non-covering ##
2973SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2974
2975## Backward index scan, non-covering ##
2976SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2977
2978## ref type access
2979SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1;
2980SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2981SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC;
2982SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2983
2984## Range access, ordered ##
2985SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1;
2986SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2987SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1;
2988SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2989SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1;
2990SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2991SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1;
2992SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2993SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1;
2994SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2995SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1;
2996SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2997SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1;
2998SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2;
2999SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1;
3000SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2;
3001SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1;
3002SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3003SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
3004SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3005SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
3006SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3007
3008## Range access, backwards scan ##
3009SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC;
3010SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3011SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC;
3012SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3013SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC;
3014SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3015SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC;
3016SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3017SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC;
3018SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3019SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC;
3020SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3021SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC;
3022SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2;
3023SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC;
3024SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2;
3025SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 DESC;
3026SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3027SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
3028SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3029SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3030SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3031## Full table scan ##
3032--sorted_result
3033SELECT * FROM t1;
3034--sorted_result
3035SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
3036--sorted_result
3037SELECT * FROM t1 WHERE c3 = '2007-05-26';
3038
3039## Forward index scan, covering ##
3040--sorted_result
3041SELECT c1 FROM t1;
3042
3043## Backward index scan, covering ##
3044SELECT c1 FROM t1 ORDER BY c1 DESC;
3045
3046## Forward index scan, non-covering ##
3047SELECT * FROM t1 ORDER BY c1 LIMIT 2;
3048
3049## Backward index scan, non-covering ##
3050SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
3051
3052## ref type access
3053SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
3054SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
3055SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
3056SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3057
3058## Range access, ordered ##
3059SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
3060SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
3061SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
3062SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
3063SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
3064SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
3065SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
3066SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
3067SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
3068SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
3069SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
3070SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
3071SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1;
3072SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2;
3073SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1;
3074SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2;
3075SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1;
3076SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2;
3077SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
3078SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3079SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
3080SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3081
3082## Range access, backwards scan ##
3083SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
3084SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3085SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
3086SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3087SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
3088SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3089SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
3090SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3091SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
3092SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3093SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
3094SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3095SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC;
3096SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2;
3097SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC;
3098SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2;
3099SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC;
3100SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
3101SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
3102SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3103SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3104SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3105## Full table scan ##
3106--sorted_result
3107SELECT * FROM t1;
3108--sorted_result
3109SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
3110--sorted_result
3111SELECT * FROM t1 WHERE c3 = '1998-12-28';
3112
3113## Forward index scan, covering ##
3114--sorted_result
3115SELECT c1 FROM t1;
3116
3117## Backward index scan, covering ##
3118SELECT c1 FROM t1 ORDER BY c1 DESC;
3119
3120## Forward index scan, non-covering ##
3121SELECT * FROM t1 ORDER BY c1 LIMIT 2;
3122
3123## Backward index scan, non-covering ##
3124SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
3125
3126## ref type access
3127SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1;
3128SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3129SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC;
3130SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3131
3132## Range access, ordered ##
3133SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1;
3134SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3135SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1;
3136SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3137SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1;
3138SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3139SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1;
3140SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3141SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1;
3142SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3143SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1;
3144SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3145SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1;
3146SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 LIMIT 2;
3147SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1;
3148SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 LIMIT 2;
3149SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1;
3150SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2;
3151SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
3152SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3153SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
3154SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3155
3156## Range access, backwards scan ##
3157SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC;
3158SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3159SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC;
3160SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3161SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC;
3162SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3163SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC;
3164SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3165SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC;
3166SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3167SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC;
3168SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3169SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC;
3170SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC LIMIT 2;
3171SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC;
3172SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC LIMIT 2;
3173SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC;
3174SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
3175SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
3176SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3177SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3178SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3179## Full table scan ##
3180--sorted_result
3181SELECT * FROM t1;
3182--sorted_result
3183SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
3184--sorted_result
3185SELECT * FROM t1 WHERE c4 = '2009-01-29';
3186
3187## Forward index scan, covering ##
3188--sorted_result
3189SELECT c2 FROM t1;
3190
3191## Backward index scan, covering ##
3192SELECT c2 FROM t1 ORDER BY c2 DESC;
3193
3194## Forward index scan, non-covering ##
3195SELECT * FROM t1 ORDER BY c2 LIMIT 2;
3196
3197## Backward index scan, non-covering ##
3198SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
3199
3200## ref type access
3201SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2;
3202SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3203SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC;
3204SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3205
3206## Range access, ordered ##
3207SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2;
3208SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3209SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2;
3210SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3211SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2;
3212SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3213SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2;
3214SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3215SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2;
3216SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3217SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2;
3218SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3219SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2;
3220SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3221SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2;
3222SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 LIMIT 2;
3223SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2;
3224SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3225SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
3226SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
3227SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
3228SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
3229
3230## Range access, backwards scan ##
3231SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC;
3232SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3233SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC;
3234SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3235SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC;
3236SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3237SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC;
3238SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3239SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC;
3240SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3241SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC;
3242SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3243SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC;
3244SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3245SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC;
3246SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC LIMIT 2;
3247SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 DESC;
3248SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3249SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
3250SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
3251SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
3252SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
3253## Full table scan ##
3254--sorted_result
3255SELECT * FROM t1;
3256--sorted_result
3257SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
3258--sorted_result
3259SELECT * FROM t1 WHERE c4 = '2008-01-05';
3260
3261## Forward index scan, covering ##
3262--sorted_result
3263SELECT c2 FROM t1;
3264
3265## Backward index scan, covering ##
3266SELECT c2 FROM t1 ORDER BY c2 DESC;
3267
3268## Forward index scan, non-covering ##
3269SELECT * FROM t1 ORDER BY c2 LIMIT 2;
3270
3271## Backward index scan, non-covering ##
3272SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
3273
3274## ref type access
3275SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2;
3276SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3277SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC;
3278SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3279
3280## Range access, ordered ##
3281SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2;
3282SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3283SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2;
3284SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3285SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2;
3286SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3287SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2;
3288SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3289SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2;
3290SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3291SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2;
3292SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3293SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2;
3294SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3295SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2;
3296SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2;
3297SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2;
3298SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 LIMIT 2;
3299SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
3300SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
3301SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
3302SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
3303
3304## Range access, backwards scan ##
3305SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC;
3306SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3307SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC;
3308SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3309SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC;
3310SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3311SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC;
3312SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3313SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC;
3314SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3315SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC;
3316SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3317SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC;
3318SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3319SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC;
3320SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2;
3321SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC;
3322SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
3323SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
3324SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
3325SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
3326SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
3327
3328# Using Index-merge
3329--sorted_result
3330SELECT * FROM t1 WHERE c1='1000-00-01 00:00:00' OR c2='9999-12-31 23:59:59';
3331
3332# Using index for group-by
3333--sorted_result
3334SELECT c2 FROM t1 GROUP BY c2;
3335
3336## Full table scan ##
3337--sorted_result
3338SELECT * FROM t2;
3339--sorted_result
3340SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3341--sorted_result
3342SELECT * FROM t2 WHERE c3 = '2007-05-24';
3343
3344## Forward index scan, covering ##
3345--sorted_result
3346SELECT c1,c2 FROM t2;
3347
3348## Backward index scan, covering ##
3349SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3350
3351## Forward index scan, non-covering ##
3352SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3353
3354## Backward index scan, non-covering ##
3355SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3356
3357## ref type access
3358SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3359SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3360SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3361SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3362
3363## Range access, ordered ##
3364SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2;
3365SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3366SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2;
3367SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3368SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2;
3369SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3370SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2;
3371SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3372SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2;
3373SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3374SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2;
3375SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3376SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3377SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3378SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3379SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3380SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3381SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3382SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3383SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3384SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3385SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3386
3387## Range access, backwards scan ##
3388SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3389SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3390SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3391SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3392SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3393SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3394SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3395SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3396SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3397SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3398SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3399SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3400SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3401SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3402SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3403SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3404SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3405SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3406SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3407SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3408SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3409SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3410## Full table scan ##
3411--sorted_result
3412SELECT * FROM t2;
3413--sorted_result
3414SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3415--sorted_result
3416SELECT * FROM t2 WHERE c3 = '2007-05-26';
3417
3418## Forward index scan, covering ##
3419--sorted_result
3420SELECT c1,c2 FROM t2;
3421
3422## Backward index scan, covering ##
3423SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3424
3425## Forward index scan, non-covering ##
3426SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3427
3428## Backward index scan, non-covering ##
3429SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3430
3431## ref type access
3432SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
3433SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3434SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
3435SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3436
3437## Range access, ordered ##
3438SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
3439SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3440SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
3441SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3442SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
3443SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3444SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
3445SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3446SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
3447SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3448SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
3449SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3450SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3451SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3452SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2;
3453SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3454SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3455SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3456SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3457SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3458SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3459SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3460
3461## Range access, backwards scan ##
3462SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
3463SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3464SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
3465SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3466SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
3467SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3468SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
3469SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3470SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
3471SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3472SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
3473SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3474SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3475SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3476SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3477SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3478SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3479SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3480SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3481SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3482SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3483SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3484## Full table scan ##
3485--sorted_result
3486SELECT * FROM t2;
3487--sorted_result
3488SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3489--sorted_result
3490SELECT * FROM t2 WHERE c3 = '1998-12-28';
3491
3492## Forward index scan, covering ##
3493--sorted_result
3494SELECT c1,c2 FROM t2;
3495
3496## Backward index scan, covering ##
3497SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3498
3499## Forward index scan, non-covering ##
3500SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3501
3502## Backward index scan, non-covering ##
3503SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3504
3505## ref type access
3506SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
3507SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3508SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3509SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3510
3511## Range access, ordered ##
3512SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
3513SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3514SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
3515SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3516SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
3517SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3518SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
3519SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3520SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
3521SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3522SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
3523SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3524SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2;
3525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2;
3526SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2;
3527SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2;
3528SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3529SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3530SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3531SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3532SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3533SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3534
3535## Range access, backwards scan ##
3536SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3537SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3538SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3539SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3540SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3541SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3542SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3543SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3544SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3545SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3546SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3547SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3548SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC;
3549SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2;
3550SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC;
3551SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2;
3552SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3553SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3554SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3555SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3556SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3557SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3558## Full table scan ##
3559--sorted_result
3560SELECT * FROM t2;
3561--sorted_result
3562SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
3563--sorted_result
3564SELECT * FROM t2 WHERE c4 = '2009-01-29';
3565
3566## Forward index scan, covering ##
3567--sorted_result
3568SELECT c1,c2 FROM t2;
3569
3570## Backward index scan, covering ##
3571SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3572
3573## Forward index scan, non-covering ##
3574SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3575
3576## Backward index scan, non-covering ##
3577SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3578
3579## ref type access
3580SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3581SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3582SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3583SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3584
3585## Range access, ordered ##
3586SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2;
3587SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3588SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2;
3589SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3590SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2;
3591SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3592SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2;
3593SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3594SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2;
3595SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3596SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2;
3597SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3598SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3599SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3600SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3601SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3602SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3603SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3604SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
3605SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3606SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3607SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3608
3609## Range access, backwards scan ##
3610SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3611SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3612SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3613SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3614SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3615SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3616SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3617SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3618SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3619SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3620SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3621SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3622SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3623SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3624SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3625SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3626SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3627SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3628SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3629SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3630SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3631SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3632## Full table scan ##
3633--sorted_result
3634SELECT * FROM t2;
3635--sorted_result
3636SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
3637--sorted_result
3638SELECT * FROM t2 WHERE c4 = '2008-01-07';
3639
3640## Forward index scan, covering ##
3641--sorted_result
3642SELECT c1,c2 FROM t2;
3643
3644## Backward index scan, covering ##
3645SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3646
3647## Forward index scan, non-covering ##
3648SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3649
3650## Backward index scan, non-covering ##
3651SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3652
3653## ref type access
3654SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3655SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3656SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3657SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3658
3659## Range access, ordered ##
3660SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2;
3661SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3662SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2;
3663SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3664SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2;
3665SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3666SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2;
3667SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3668SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2;
3669SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3670SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2;
3671SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3672SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
3673SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3674SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2;
3675SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
3676SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
3677SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3678SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
3679SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3680SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3681SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3682
3683## Range access, backwards scan ##
3684SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3685SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3686SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3687SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3688SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3689SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3690SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3691SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3692SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3693SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3694SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3695SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3696SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3697SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3698SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
3699SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
3700SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3701SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3702SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3703SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3704SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3705SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3706
3707## Full table scan ##
3708--sorted_result
3709SELECT * FROM t3;
3710--sorted_result
3711SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3712--sorted_result
3713SELECT * FROM t3 WHERE c3 = '2007-05-24';
3714
3715## Forward index scan, covering ##
3716--sorted_result
3717SELECT c1,c2 FROM t3;
3718
3719## Backward index scan, covering ##
3720SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3721
3722## Forward index scan, non-covering ##
3723SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3724
3725## Backward index scan, non-covering ##
3726SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3727
3728## ref type access
3729SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3730SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3731SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3732SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3733
3734## Range access, ordered ##
3735SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2;
3736SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3737SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2;
3738SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3739SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2;
3740SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3741SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2;
3742SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3743SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2;
3744SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3745SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2;
3746SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3747SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3748SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3749SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3750SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3751SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3752SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3753SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3754SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3755SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3756SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3757
3758## Range access, backwards scan ##
3759SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3760SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3761SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3762SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3763SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3764SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3765SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3766SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3767SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3768SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3769SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3770SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3771SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3772SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3773SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3774SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3775SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3776SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3777SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3778SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3779SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3780SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3781## Full table scan ##
3782--sorted_result
3783SELECT * FROM t3;
3784--sorted_result
3785SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3786--sorted_result
3787SELECT * FROM t3 WHERE c3 = '2007-05-26';
3788
3789## Forward index scan, covering ##
3790--sorted_result
3791SELECT c1,c2 FROM t3;
3792
3793## Backward index scan, covering ##
3794SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3795
3796## Forward index scan, non-covering ##
3797SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3798
3799## Backward index scan, non-covering ##
3800SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3801
3802## ref type access
3803SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
3804SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3805SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
3806SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3807
3808## Range access, ordered ##
3809SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
3810SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3811SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
3812SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3813SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
3814SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3815SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
3816SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3817SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
3818SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3819SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
3820SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3821SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3822SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3823SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2;
3824SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3825SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3826SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3827SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3828SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3829SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3830SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3831
3832## Range access, backwards scan ##
3833SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
3834SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3835SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
3836SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3837SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
3838SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3839SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
3840SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3841SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
3842SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3843SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
3844SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3845SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3846SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3847SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3848SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3849SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3850SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3851SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3852SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3853SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3854SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3855## Full table scan ##
3856--sorted_result
3857SELECT * FROM t3;
3858--sorted_result
3859SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3860--sorted_result
3861SELECT * FROM t3 WHERE c3 = '1998-12-28';
3862
3863## Forward index scan, covering ##
3864--sorted_result
3865SELECT c1,c2 FROM t3;
3866
3867## Backward index scan, covering ##
3868SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3869
3870## Forward index scan, non-covering ##
3871SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3872
3873## Backward index scan, non-covering ##
3874SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3875
3876## ref type access
3877SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
3878SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3879SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3880SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3881
3882## Range access, ordered ##
3883SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
3884SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3885SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
3886SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3887SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
3888SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3889SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
3890SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3891SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
3892SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3893SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
3894SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3895SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2;
3896SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2;
3897SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2;
3898SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2;
3899SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3900SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3901SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3902SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3903SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3904SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3905
3906## Range access, backwards scan ##
3907SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3908SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3909SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3910SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3911SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3912SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3913SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3914SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3915SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3916SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3917SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3918SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3919SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC;
3920SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2;
3921SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC;
3922SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2;
3923SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3924SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3925SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3926SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3927SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3928SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3929## Full table scan ##
3930--sorted_result
3931SELECT * FROM t3;
3932--sorted_result
3933SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3934--sorted_result
3935SELECT * FROM t3 WHERE c4 = '2009-01-29';
3936
3937## Forward index scan, covering ##
3938--sorted_result
3939SELECT c1,c2 FROM t3;
3940
3941## Backward index scan, covering ##
3942SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3943
3944## Forward index scan, non-covering ##
3945SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3946
3947## Backward index scan, non-covering ##
3948SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3949
3950## ref type access
3951SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3952SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3953SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3954SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3955
3956## Range access, ordered ##
3957SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2;
3958SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3959SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2;
3960SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3961SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2;
3962SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3963SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2;
3964SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3965SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2;
3966SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3967SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2;
3968SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3969SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3970SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3971SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3972SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3973SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3974SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3975SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
3976SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3977SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3978SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3979
3980## Range access, backwards scan ##
3981SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3982SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3983SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3984SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3985SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3986SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3987SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3988SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3989SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3990SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3991SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3992SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3993SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3994SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3995SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3996SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3997SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3998SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3999SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4000SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4001SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4002SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4003## Full table scan ##
4004--sorted_result
4005SELECT * FROM t3;
4006--sorted_result
4007SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4008--sorted_result
4009SELECT * FROM t3 WHERE c4 = '2008-01-09';
4010
4011## Forward index scan, covering ##
4012--sorted_result
4013SELECT c1,c2 FROM t3;
4014
4015## Backward index scan, covering ##
4016SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4017
4018## Forward index scan, non-covering ##
4019SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4020
4021## Backward index scan, non-covering ##
4022SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4023
4024## ref type access
4025SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
4026SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4027SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4028SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4029
4030## Range access, ordered ##
4031SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2;
4032SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4033SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2;
4034SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4035SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2;
4036SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4037SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2;
4038SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4039SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2;
4040SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4041SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2;
4042SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4043SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
4044SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4045SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2;
4046SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
4047SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
4048SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
4049SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
4050SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
4051SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
4052SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4053
4054## Range access, backwards scan ##
4055SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4056SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4057SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4058SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4059SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4060SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4061SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4062SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4063SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4064SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4065SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4066SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4067SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
4068SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4069SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
4070SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
4071SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
4072SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4073SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4074SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4075SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4076SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4077
4078# Using index for group-by
4079--sorted_result
4080SELECT c1 FROM t3 GROUP BY c1;
4081--sorted_result
4082SELECT DISTINCT c1 FROM t3;
4083--sorted_result
4084SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
4085DROP TABLE t1,t2,t3,t4;
4086
4087######## Running INSERT tests for TIMESTAMP ########
4088
4089# Create tables
4090CREATE TABLE t1(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1), UNIQUE INDEX(c2));
4091CREATE TABLE t2(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NOT NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1,c2));
4092CREATE TABLE t3(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, UNIQUE INDEX idx(c1,c2));
4093CREATE TABLE t4(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME);
4094
4095# Insert some rows with targeted values
4096
4097# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format
4098INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
4099INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
4100INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
4101INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28');
4102
4103# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
4104INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4105INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4106INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4107INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4108
4109# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
4110INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4111INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4112INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4113INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4114
4115# As the result of a function
4116SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
4117INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4118INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4119INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4120INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4121
4122# Insert duplicates for parts of the clustered key/unique index
4123INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
4124INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45');
4125
4126# Insert permissible NULLs
4127INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4128INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4129INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4130
4131# Insert duplicate NULLs to unique column
4132INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
4133DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
4134
4135# Insert empty string '', would be converted to zero value of the appropriate type
4136INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
4137
4138# Insert invalid dates, would be converted to zero value of the appropriate type
4139INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
4140INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
4141
4142# Insert zero dates
4143INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
4144INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
4145
4146# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
4147INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */;
4148
4149# Now select using various table access methods (full table scan, range scan, index scan etc.)
4150--sorted_result
4151SELECT * FROM t1;
4152--sorted_result
4153SELECT * FROM t2;
4154--sorted_result
4155SELECT * FROM t3;
4156--sorted_result
4157SELECT * FROM t4;
4158
4159# Select from table with single column primary key and single column index, with column values zero, NULL
4160## Full table scan ##
4161--sorted_result
4162SELECT * FROM t1;
4163--sorted_result
4164SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4165--sorted_result
4166SELECT * FROM t1 WHERE c3 = '2007-05-24';
4167
4168## Forward index scan, covering ##
4169--sorted_result
4170SELECT c1 FROM t1;
4171
4172## Backward index scan, covering ##
4173SELECT c1 FROM t1 ORDER BY c1 DESC;
4174
4175## Forward index scan, non-covering ##
4176SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4177
4178## Backward index scan, non-covering ##
4179SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4180
4181## ref type access
4182SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
4183SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4184SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
4185SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4186
4187## Range access, ordered ##
4188SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
4189SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4190SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
4191SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4192SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
4193SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4194SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
4195SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4196SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
4197SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4198SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
4199SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4200SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
4201SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
4202SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
4203SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
4204SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1;
4205SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2;
4206SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4207SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4208SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4209SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4210
4211## Range access, backwards scan ##
4212SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
4213SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4214SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
4215SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4216SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
4217SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4218SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
4219SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4220SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
4221SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4222SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
4223SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4224SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
4225SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
4226SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
4227SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
4228SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC;
4229SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2;
4230SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4231SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4232SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4233SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4234## Full table scan ##
4235--sorted_result
4236SELECT * FROM t1;
4237--sorted_result
4238SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4239--sorted_result
4240SELECT * FROM t1 WHERE c3 = '2007-05-26';
4241
4242## Forward index scan, covering ##
4243--sorted_result
4244SELECT c1 FROM t1;
4245
4246## Backward index scan, covering ##
4247SELECT c1 FROM t1 ORDER BY c1 DESC;
4248
4249## Forward index scan, non-covering ##
4250SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4251
4252## Backward index scan, non-covering ##
4253SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4254
4255## ref type access
4256SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
4257SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
4258SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
4259SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4260
4261## Range access, ordered ##
4262SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
4263SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
4264SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
4265SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
4266SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
4267SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
4268SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
4269SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
4270SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
4271SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
4272SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
4273SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
4274SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
4275SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
4276SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
4277SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
4278SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
4279SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4280SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4281SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4282SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4283SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4284
4285## Range access, backwards scan ##
4286SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
4287SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4288SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
4289SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4290SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
4291SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4292SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
4293SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4294SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
4295SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4296SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
4297SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4298SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
4299SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
4300SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
4301SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
4302SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
4303SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4304SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4305SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4306SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4307SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4308## Full table scan ##
4309--sorted_result
4310SELECT * FROM t1;
4311--sorted_result
4312SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
4313--sorted_result
4314SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
4315
4316## Forward index scan, covering ##
4317--sorted_result
4318SELECT c2 FROM t1;
4319
4320## Backward index scan, covering ##
4321SELECT c2 FROM t1 ORDER BY c2 DESC;
4322
4323## Forward index scan, non-covering ##
4324SELECT * FROM t1 ORDER BY c2 LIMIT 2;
4325
4326## Backward index scan, non-covering ##
4327SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
4328
4329## ref type access
4330SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
4331SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4332SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
4333SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4334
4335## Range access, ordered ##
4336SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
4337SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4338SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
4339SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4340SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
4341SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4342SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
4343SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4344SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
4345SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4346SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
4347SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4348SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
4349SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
4350SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
4351SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
4352SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2;
4353SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2;
4354SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
4355SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
4356SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
4357SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
4358
4359## Range access, backwards scan ##
4360SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
4361SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4362SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
4363SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4364SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
4365SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4366SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
4367SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4368SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
4369SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4370SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC;
4371SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4372SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
4373SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
4374SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
4375SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
4376SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC;
4377SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
4378SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
4379SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
4380SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
4381SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
4382
4383# Select from table with clustered primary key, with column values zero, NULL
4384## Full table scan ##
4385--sorted_result
4386SELECT * FROM t2;
4387--sorted_result
4388SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4389--sorted_result
4390SELECT * FROM t2 WHERE c3 = '2008-01-06';
4391
4392## Forward index scan, covering ##
4393--sorted_result
4394SELECT c1,c2 FROM t2;
4395
4396## Backward index scan, covering ##
4397SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4398
4399## Forward index scan, non-covering ##
4400SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4401
4402## Backward index scan, non-covering ##
4403SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4404
4405## ref type access
4406SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
4407SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4408SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4409SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4410
4411## Range access, ordered ##
4412SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
4413SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4414SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
4415SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4416SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
4417SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4418SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
4419SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4420SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
4421SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4422SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
4423SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4424SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
4425SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
4426SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
4427SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
4428SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
4429SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
4430SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
4431SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4432SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4433SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4434
4435## Range access, backwards scan ##
4436SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4437SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4438SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4439SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4440SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4441SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4442SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4443SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4444SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4445SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4446SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4447SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4448SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
4449SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
4450SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
4451SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
4452SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
4453SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
4454SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4455SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4456SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4457SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4458## Full table scan ##
4459--sorted_result
4460SELECT * FROM t2;
4461--sorted_result
4462SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4463--sorted_result
4464SELECT * FROM t2 WHERE c3 = '1998-12-29';
4465
4466## Forward index scan, covering ##
4467--sorted_result
4468SELECT c1,c2 FROM t2;
4469
4470## Backward index scan, covering ##
4471SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4472
4473## Forward index scan, non-covering ##
4474SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4475
4476## Backward index scan, non-covering ##
4477SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4478
4479## ref type access
4480SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
4481SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4482SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
4483SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4484
4485## Range access, ordered ##
4486SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
4487SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4488SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
4489SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4490SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
4491SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4492SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
4493SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4494SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
4495SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4496SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
4497SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4498SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
4499SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
4500SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
4501SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
4502SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
4503SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
4504SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
4505SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4506SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4507SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4508
4509## Range access, backwards scan ##
4510SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
4511SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4512SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
4513SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4514SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
4515SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4516SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
4517SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4518SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
4519SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4520SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
4521SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4522SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
4523SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
4524SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
4525SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
4526SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
4527SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
4528SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4529SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4530SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4531SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4532## Full table scan ##
4533--sorted_result
4534SELECT * FROM t2;
4535--sorted_result
4536SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
4537--sorted_result
4538SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
4539
4540## Forward index scan, covering ##
4541--sorted_result
4542SELECT c1,c2 FROM t2;
4543
4544## Backward index scan, covering ##
4545SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4546
4547## Forward index scan, non-covering ##
4548SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4549
4550## Backward index scan, non-covering ##
4551SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4552
4553## ref type access
4554SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
4555SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4556SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4557SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4558
4559## Range access, ordered ##
4560SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
4561SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4562SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
4563SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4564SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
4565SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4566SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
4567SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4568SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
4569SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4570SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
4571SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4572SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
4573SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
4574SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
4575SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
4576SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
4577SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4578SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
4579SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
4580SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
4581SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4582
4583## Range access, backwards scan ##
4584SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4585SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4586SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4587SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4588SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4589SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4590SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4591SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4592SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4593SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4594SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4595SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4596SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
4597SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2;
4598SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
4599SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
4600SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
4601SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4602SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4603SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4604SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4605SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4606
4607# Select from table with clustered index, with column values zero, NULL
4608## Full table scan ##
4609--sorted_result
4610SELECT * FROM t3;
4611--sorted_result
4612SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
4613--sorted_result
4614SELECT * FROM t3 WHERE c3 = '2007-05-24';
4615
4616## Forward index scan, covering ##
4617--sorted_result
4618SELECT c1,c2 FROM t3;
4619
4620## Backward index scan, covering ##
4621SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4622
4623## Forward index scan, non-covering ##
4624SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4625
4626## Backward index scan, non-covering ##
4627SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4628
4629## ref type access
4630SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
4631SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4632SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4633SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4634
4635## Range access, ordered ##
4636SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
4637SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4638SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
4639SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4640SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
4641SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4642SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
4643SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4644SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
4645SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4646SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
4647SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4648SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
4649SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
4650SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
4651SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
4652SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2;
4653SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4654SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
4655SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4656SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4657SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4658
4659## Range access, backwards scan ##
4660SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4661SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4662SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4663SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4664SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4665SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4666SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4667SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4668SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4669SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4670SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4671SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4672SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
4673SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4674SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
4675SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
4676SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4677SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4678SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4679SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4680SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4681SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4682## Full table scan ##
4683--sorted_result
4684SELECT * FROM t3;
4685--sorted_result
4686SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
4687--sorted_result
4688SELECT * FROM t3 WHERE c3 = '1998-12-29';
4689
4690## Forward index scan, covering ##
4691--sorted_result
4692SELECT c1,c2 FROM t3;
4693
4694## Backward index scan, covering ##
4695SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4696
4697## Forward index scan, non-covering ##
4698SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4699
4700## Backward index scan, non-covering ##
4701SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4702
4703## ref type access
4704SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
4705SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4706SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
4707SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4708
4709## Range access, ordered ##
4710SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
4711SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4712SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
4713SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4714SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
4715SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4716SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
4717SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4718SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
4719SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4720SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
4721SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4722SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
4723SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
4724SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
4725SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
4726SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
4727SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
4728SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
4729SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4730SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4731SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4732
4733## Range access, backwards scan ##
4734SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
4735SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4736SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
4737SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4738SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
4739SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4740SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
4741SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4742SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
4743SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4744SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
4745SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4746SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
4747SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
4748SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
4749SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
4750SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
4751SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
4752SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4753SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4754SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4755SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4756## Full table scan ##
4757--sorted_result
4758SELECT * FROM t3;
4759--sorted_result
4760SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4761--sorted_result
4762SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
4763
4764## Forward index scan, covering ##
4765--sorted_result
4766SELECT c1,c2 FROM t3;
4767
4768## Backward index scan, covering ##
4769SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4770
4771## Forward index scan, non-covering ##
4772SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4773
4774## Backward index scan, non-covering ##
4775SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4776
4777## ref type access
4778SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
4779SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4780SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4781SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4782
4783## Range access, ordered ##
4784SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
4785SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4786SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
4787SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4788SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
4789SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4790SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
4791SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4792SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
4793SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4794SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
4795SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4796SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
4797SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
4798SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
4799SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
4800SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
4801SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
4802SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
4803SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
4804SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
4805SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4806
4807## Range access, backwards scan ##
4808SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4809SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4810SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4811SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4812SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4813SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4814SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4815SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4816SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4817SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4818SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4819SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4820SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
4821SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2;
4822SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
4823SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
4824SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
4825SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4826SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4827SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4828SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4829SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4830
4831# Test Error conditions- PK constraint violation, Unique constraint violation
4832
4833# Insert duplicate value to pk column
4834--error ER_DUP_ENTRY
4835INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
4836
4837# Insert duplicate value to clustered pk, throws error
4838--error ER_DUP_ENTRY
4839INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
4840
4841# Insert duplicate value to unique column, throws error
4842--error ER_DUP_ENTRY
4843INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
4844
4845# Insert duplicate value to clustered unique column, throws error
4846--error ER_DUP_ENTRY
4847INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
4848
4849# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
4850# Ignore pk constraint
4851INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
4852INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
4853# Ignore unique constraint
4854INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
4855INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
4856# Test that the rows are same
4857SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
4858SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
4859SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
4860SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
4861
4862# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
4863SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
4864INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
4865SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
4866
4867# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
4868SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4869INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4870SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
4871
4872# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
4873SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4874INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4875SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
4876
4877# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
4878SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4879INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4880SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
4881
4882# Test 'INSERT SET'
4883INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
4884INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
4885INSERT INTO t3 SET c1='1999-01-01';
4886INSERT INTO t4 SET c2='1999-01-01';
4887SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4888SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4889SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4890SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4891
4892# Test 'INSERT INTO SELECT FROM'
4893CREATE TABLE t5(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, INDEX idx(c1,c2));
4894INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
4895--sorted_result
4896SELECT * FROM t5;
4897TRUNCATE TABLE t5;
4898INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
4899--sorted_result
4900SELECT * FROM t5;
4901TRUNCATE TABLE t5;
4902INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
4903--sorted_result
4904SELECT * FROM t5;
4905TRUNCATE TABLE t5;
4906DROP TABLE t5;
4907
4908# Test Specific values to column types
4909
4910# Test insert range values to 'TIMESTAMP' columns
4911INSERT INTO t1 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06');
4912INSERT INTO t2 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06');
4913INSERT INTO t3 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06');
4914INSERT INTO t4 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06');
4915
4916# Insert dates containing a zero for the month or for the day, convert to zero
4917INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
4918
4919# Insert invalid dates, inserts zero values
4920INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32'),('2009-01-01 23:60:60'),('2009-01-01 24:59:59'),('2009-01-01 23:59:60');
4921
4922# Inserting NOW() to TIMESTAMP NOT NULL field
4923DELETE FROM t1 WHERE c1=NOW() /* because the row with current timestamp exists */;
4924INSERT INTO t1 VALUES(NOW(),NOW(),NOW(),NOW());
4925SELECT * FROM t1 WHERE c1 IS NULL /* returns no rows */;
4926SELECT * FROM t1 WHERE c1=NOW() /* returns 1 row */;
4927INSERT INTO t2(c1) VALUES(NOW());
4928INSERT INTO t3 VALUES(NOW(),'2008-01-14 00:00:00','08-01-15','08/01/16');
4929INSERT INTO t4 VALUES(NOW(),'2008-01-14 00:00:00','08-01-15','08/01/16');
4930
4931# Test INSERT SET with no default
4932SET SQL_MODE=STRICT_ALL_TABLES;
4933INSERT INTO t4 SET c2='1999-01-01',c1=NOW();
4934SET SQL_MODE='';
4935
4936--sorted_result
4937SELECT * FROM t1;
4938--sorted_result
4939SELECT * FROM t2;
4940--sorted_result
4941SELECT * FROM t3;
4942--sorted_result
4943SELECT * FROM t4;
4944# Now select using various table access methods
4945## Full table scan ##
4946--sorted_result
4947SELECT * FROM t1;
4948--sorted_result
4949SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4950--sorted_result
4951SELECT * FROM t1 WHERE c3 = '2007-05-24';
4952
4953## Forward index scan, covering ##
4954--sorted_result
4955SELECT c1 FROM t1;
4956
4957## Backward index scan, covering ##
4958SELECT c1 FROM t1 ORDER BY c1 DESC;
4959
4960## Forward index scan, non-covering ##
4961SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4962
4963## Backward index scan, non-covering ##
4964SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4965
4966## ref type access
4967SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1;
4968SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4969SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC;
4970SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4971
4972## Range access, ordered ##
4973SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1;
4974SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4975SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1;
4976SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4977SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1;
4978SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4979SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1;
4980SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4981SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1;
4982SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4983SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1;
4984SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4985SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1;
4986SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2;
4987SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1;
4988SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2;
4989SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1;
4990SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2;
4991SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4992SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4993SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4994SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4995
4996## Range access, backwards scan ##
4997SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC;
4998SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4999SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC;
5000SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
5001SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC;
5002SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
5003SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC;
5004SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
5005SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC;
5006SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
5007SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC;
5008SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
5009SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC;
5010SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2;
5011SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC;
5012SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2;
5013SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 DESC;
5014SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2;
5015SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
5016SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5017SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5018SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5019## Full table scan ##
5020--sorted_result
5021SELECT * FROM t1;
5022--sorted_result
5023SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
5024--sorted_result
5025SELECT * FROM t1 WHERE c3 = '2007-05-26';
5026
5027## Forward index scan, covering ##
5028--sorted_result
5029SELECT c1 FROM t1;
5030
5031## Backward index scan, covering ##
5032SELECT c1 FROM t1 ORDER BY c1 DESC;
5033
5034## Forward index scan, non-covering ##
5035SELECT * FROM t1 ORDER BY c1 LIMIT 2;
5036
5037## Backward index scan, non-covering ##
5038SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
5039
5040## ref type access
5041SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1;
5042SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5043SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC;
5044SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5045
5046## Range access, ordered ##
5047SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1;
5048SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5049SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1;
5050SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5051SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1;
5052SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5053SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1;
5054SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5055SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1;
5056SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5057SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1;
5058SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
5059SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1;
5060SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2;
5061SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1;
5062SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2;
5063SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1;
5064SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2;
5065SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
5066SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
5067SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
5068SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
5069
5070## Range access, backwards scan ##
5071SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC;
5072SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5073SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC;
5074SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5075SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC;
5076SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5077SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC;
5078SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5079SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC;
5080SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5081SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC;
5082SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5083SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC;
5084SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2;
5085SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC;
5086SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2;
5087SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC;
5088SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5089SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
5090SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5091SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5092SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5093## Full table scan ##
5094--sorted_result
5095SELECT * FROM t1;
5096--sorted_result
5097SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
5098--sorted_result
5099SELECT * FROM t1 WHERE c3 = '1998-12-28';
5100
5101## Forward index scan, covering ##
5102--sorted_result
5103SELECT c1 FROM t1;
5104
5105## Backward index scan, covering ##
5106SELECT c1 FROM t1 ORDER BY c1 DESC;
5107
5108## Forward index scan, non-covering ##
5109SELECT * FROM t1 ORDER BY c1 LIMIT 2;
5110
5111## Backward index scan, non-covering ##
5112SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
5113
5114## ref type access
5115SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1;
5116SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5117SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC;
5118SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5119
5120## Range access, ordered ##
5121SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1;
5122SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5123SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1;
5124SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5125SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1;
5126SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5127SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1;
5128SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5129SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1;
5130SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5131SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1;
5132SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5133SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1;
5134# Disabling warnings due to #52283
5135--disable_warnings
5136SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5137--enable_warnings
5138SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1;
5139SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 LIMIT 2;
5140SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1;
5141SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2;
5142SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
5143SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
5144SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
5145SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
5146
5147## Range access, backwards scan ##
5148SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC;
5149SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5150SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC;
5151SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5152SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC;
5153SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5154SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC;
5155SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5156SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC;
5157SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5158SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC;
5159SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5160SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC;
5161SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5162SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC;
5163SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC LIMIT 2;
5164SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC;
5165SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
5166SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
5167SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5168SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5169SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5170## Full table scan ##
5171--sorted_result
5172SELECT * FROM t1;
5173--sorted_result
5174SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
5175--sorted_result
5176SELECT * FROM t1 WHERE c4 = '2009-01-29';
5177
5178## Forward index scan, covering ##
5179--sorted_result
5180SELECT c2 FROM t1;
5181
5182## Backward index scan, covering ##
5183SELECT c2 FROM t1 ORDER BY c2 DESC;
5184
5185## Forward index scan, non-covering ##
5186SELECT * FROM t1 ORDER BY c2 LIMIT 2;
5187
5188## Backward index scan, non-covering ##
5189SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
5190
5191## ref type access
5192SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2;
5193SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5194SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC;
5195SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5196
5197## Range access, ordered ##
5198SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2;
5199SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5200SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2;
5201SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5202SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2;
5203SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5204SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2;
5205SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5206SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2;
5207SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5208SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2;
5209SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5210SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2;
5211SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5212SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2;
5213SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 LIMIT 2;
5214SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2;
5215SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5216SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
5217SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
5218SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
5219SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
5220
5221## Range access, backwards scan ##
5222SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC;
5223SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5224SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC;
5225SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5226SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC;
5227SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5228SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC;
5229SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5230SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC;
5231SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5232SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC;
5233SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5234SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC;
5235SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5236SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC;
5237SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC LIMIT 2;
5238SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 DESC;
5239SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5240SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
5241SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
5242SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
5243SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
5244## Full table scan ##
5245--sorted_result
5246SELECT * FROM t1;
5247--sorted_result
5248SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
5249--sorted_result
5250SELECT * FROM t1 WHERE c4 = '2008-01-05';
5251
5252## Forward index scan, covering ##
5253--sorted_result
5254SELECT c2 FROM t1;
5255
5256## Backward index scan, covering ##
5257SELECT c2 FROM t1 ORDER BY c2 DESC;
5258
5259## Forward index scan, non-covering ##
5260SELECT * FROM t1 ORDER BY c2 LIMIT 2;
5261
5262## Backward index scan, non-covering ##
5263SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
5264
5265## ref type access
5266SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2;
5267SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5268SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC;
5269SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5270
5271## Range access, ordered ##
5272SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2;
5273SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5274SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2;
5275SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5276SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2;
5277SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5278SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2;
5279SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5280SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2;
5281SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5282SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2;
5283SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5284SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2;
5285# Disabling warnings due to #52283
5286--disable_warnings
5287SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
5288--enable_warnings
5289SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2;
5290SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2;
5291SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2;
5292SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 LIMIT 2;
5293SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
5294SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
5295SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
5296SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
5297
5298## Range access, backwards scan ##
5299SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC;
5300SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5301SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC;
5302SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5303SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC;
5304SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5305SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC;
5306SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5307SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC;
5308SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5309SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC;
5310SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5311SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC;
5312# Disabling warnings due to #52283
5313--disable_warnings
5314SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
5315--enable_warnings
5316SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC;
5317SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2;
5318SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC;
5319SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5320SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
5321SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
5322SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
5323SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
5324
5325# Using Index-merge
5326--sorted_result
5327SELECT * FROM t1 WHERE c1='1971-01-01 00:00:01' OR c2='2038-01-09 03:14:07';
5328
5329# Using index for group-by
5330--sorted_result
5331SELECT c2 FROM t1 GROUP BY c2;
5332
5333## Full table scan ##
5334--sorted_result
5335SELECT * FROM t2;
5336--sorted_result
5337SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5338--sorted_result
5339SELECT * FROM t2 WHERE c3 = '2007-05-24';
5340
5341## Forward index scan, covering ##
5342--sorted_result
5343SELECT c1,c2 FROM t2;
5344
5345## Backward index scan, covering ##
5346SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5347
5348## Forward index scan, non-covering ##
5349SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5350
5351## Backward index scan, non-covering ##
5352SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5353
5354## ref type access
5355SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2;
5356SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5357SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5358SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5359
5360## Range access, ordered ##
5361SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2;
5362SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5363SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2;
5364SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5365SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2;
5366SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5367SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2;
5368SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5369SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2;
5370SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5371SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2;
5372SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5373SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5374SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5375SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5376SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5377SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5378SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5379SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5380SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5381SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5382SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5383
5384## Range access, backwards scan ##
5385SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5386SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5387SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5388SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5389SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5390SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5391SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5392SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5393SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5394SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5395SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5396SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5397SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5398SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5399SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5400SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5401SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5402SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5403SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5404SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5405SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5406SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5407## Full table scan ##
5408--sorted_result
5409SELECT * FROM t2;
5410--sorted_result
5411SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5412--sorted_result
5413SELECT * FROM t2 WHERE c3 = '2007-05-26';
5414
5415## Forward index scan, covering ##
5416--sorted_result
5417SELECT c1,c2 FROM t2;
5418
5419## Backward index scan, covering ##
5420SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5421
5422## Forward index scan, non-covering ##
5423SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5424
5425## Backward index scan, non-covering ##
5426SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5427
5428## ref type access
5429SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
5430SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5431SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5432SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5433
5434## Range access, ordered ##
5435SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2;
5436SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5437SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2;
5438SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5439SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2;
5440SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5441SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2;
5442SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5443SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2;
5444SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5445SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2;
5446SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5447SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5448SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5449SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2;
5450SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5451SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
5452--disable_warnings
5453SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5454--enable_warnings
5455SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5456SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5457SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5458SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5459
5460## Range access, backwards scan ##
5461SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5462SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5463SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5464SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5465SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5466SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5467SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5468SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5469SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5470SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5471SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5472SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5473SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5474SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5475SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5476SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5477SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5478--disable_warnings
5479SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5480--enable_warnings
5481SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5482SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5483SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5484SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5485## Full table scan ##
5486--sorted_result
5487SELECT * FROM t2;
5488--sorted_result
5489SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5490--sorted_result
5491SELECT * FROM t2 WHERE c3 = '1998-12-28';
5492
5493## Forward index scan, covering ##
5494--sorted_result
5495SELECT c1,c2 FROM t2;
5496
5497## Backward index scan, covering ##
5498SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5499
5500## Forward index scan, non-covering ##
5501SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5502
5503## Backward index scan, non-covering ##
5504SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5505
5506## ref type access
5507SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
5508SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5509SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5510SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5511
5512## Range access, ordered ##
5513SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
5514SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5515SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
5516SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5517SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
5518SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5519SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
5520SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5521SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
5522SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5523SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
5524SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2;
5526# Disabling warnings due to #52283
5527--disable_warnings
5528SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5529--enable_warnings
5530SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2;
5531SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2;
5532SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
5533--disable_warnings
5534SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5535--enable_warnings
5536SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5537SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5538SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5539SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5540
5541## Range access, backwards scan ##
5542SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5543SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5544SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5545SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5546SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5547SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5548SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5549SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5550SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5551SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5552SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5553SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5554SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5555SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5556SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC;
5557SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5558SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5559--disable_warnings
5560SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5561--enable_warnings
5562SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5563SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5564SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5565SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5566## Full table scan ##
5567--sorted_result
5568SELECT * FROM t2;
5569--sorted_result
5570SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
5571--sorted_result
5572SELECT * FROM t2 WHERE c4 = '2009-01-29';
5573
5574## Forward index scan, covering ##
5575--sorted_result
5576SELECT c1,c2 FROM t2;
5577
5578## Backward index scan, covering ##
5579SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5580
5581## Forward index scan, non-covering ##
5582SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5583
5584## Backward index scan, non-covering ##
5585SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5586
5587## ref type access
5588SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5589SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5590SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5591SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5592
5593## Range access, ordered ##
5594SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2;
5595SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5596SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2;
5597SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5598SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2;
5599SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5600SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2;
5601SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5602SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2;
5603SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5604SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2;
5605SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5606SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5607SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5608SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5609SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5610SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5611SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5612SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
5613SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5614SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5615SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5616
5617## Range access, backwards scan ##
5618SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5619SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5620SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5621SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5622SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5623SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5624SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5625SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5626SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5627SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5628SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5629SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5630SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5631SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5632SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5633SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5634SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5635SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5636SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5637SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5638SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5639SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5640## Full table scan ##
5641--sorted_result
5642SELECT * FROM t2;
5643--sorted_result
5644SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
5645--sorted_result
5646SELECT * FROM t2 WHERE c4 = '2008-01-07';
5647
5648## Forward index scan, covering ##
5649--sorted_result
5650SELECT c1,c2 FROM t2;
5651
5652## Backward index scan, covering ##
5653SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5654
5655## Forward index scan, non-covering ##
5656SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5657
5658## Backward index scan, non-covering ##
5659SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5660
5661## ref type access
5662SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2;
5663SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5664SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5665SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5666
5667## Range access, ordered ##
5668SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2;
5669SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5670SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2;
5671SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5672SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2;
5673SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5674SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2;
5675SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5676SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2;
5677SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5678SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2;
5679SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5680SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
5681SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5682SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2;
5683SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
5684SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
5685SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5686SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
5687SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5688SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5689SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5690
5691## Range access, backwards scan ##
5692SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5693SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5694SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5695SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5696SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5697SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5698SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5699SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5700SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5701SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5702SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5703SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5704SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5705SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5706SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
5707SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5708SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5709SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5710SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5711SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5712SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5713SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5714
5715## Full table scan ##
5716--sorted_result
5717SELECT * FROM t3;
5718--sorted_result
5719SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5720--sorted_result
5721SELECT * FROM t3 WHERE c3 = '2007-05-24';
5722
5723## Forward index scan, covering ##
5724--sorted_result
5725SELECT c1,c2 FROM t3;
5726
5727## Backward index scan, covering ##
5728SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5729
5730## Forward index scan, non-covering ##
5731SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5732
5733## Backward index scan, non-covering ##
5734SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5735
5736## ref type access
5737SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2;
5738SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5739SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5740SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5741
5742## Range access, ordered ##
5743SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2;
5744SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5745SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2;
5746SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5747SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2;
5748SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5749SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2;
5750SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5751SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2;
5752SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5753SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2;
5754SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5755SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5756SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5757SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5758SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5759SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5760SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5761SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5762SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5763SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5764SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5765
5766## Range access, backwards scan ##
5767SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5768SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5769SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5770SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5771SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5772SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5773SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5774SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5775SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5776SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5777SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5778SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5779SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5780SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5781SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5782SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5783SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5784SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5785SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5786SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5787SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5788SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5789## Full table scan ##
5790--sorted_result
5791SELECT * FROM t3;
5792--sorted_result
5793SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5794--sorted_result
5795SELECT * FROM t3 WHERE c3 = '2007-05-26';
5796
5797## Forward index scan, covering ##
5798--sorted_result
5799SELECT c1,c2 FROM t3;
5800
5801## Backward index scan, covering ##
5802SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5803
5804## Forward index scan, non-covering ##
5805SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5806
5807## Backward index scan, non-covering ##
5808SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5809
5810## ref type access
5811SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
5812SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5813SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5814SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5815
5816## Range access, ordered ##
5817SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2;
5818SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5819SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2;
5820SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5821SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2;
5822SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5823SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2;
5824SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5825SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2;
5826SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5827SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2;
5828SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5829SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5830SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5831SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2;
5832SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5833SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
5834SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5835SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5836SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5837SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5838SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5839
5840## Range access, backwards scan ##
5841SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5842SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5843SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5844SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5845SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5846SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5847SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5848SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5849SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5850SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5851SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5852SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5853SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5854SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5855SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5856SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5857SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5858SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5859SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5860SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5861SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5862SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5863## Full table scan ##
5864--sorted_result
5865SELECT * FROM t3;
5866--sorted_result
5867SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5868--sorted_result
5869SELECT * FROM t3 WHERE c3 = '1998-12-28';
5870
5871## Forward index scan, covering ##
5872--sorted_result
5873SELECT c1,c2 FROM t3;
5874
5875## Backward index scan, covering ##
5876SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5877
5878## Forward index scan, non-covering ##
5879SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5880
5881## Backward index scan, non-covering ##
5882SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5883
5884## ref type access
5885SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
5886SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5887SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5888SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5889
5890## Range access, ordered ##
5891SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
5892# Disabling warnings due to #52283
5893--disable_warnings
5894SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5895--enable_warnings
5896SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
5897SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5898SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
5899SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5900SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
5901SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5902SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
5903SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5904SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
5905SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5906SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2;
5907# Disabling warnings due to #52283
5908--disable_warnings
5909SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5910--enable_warnings
5911SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2;
5912SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2;
5913SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
5914SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5915SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5916SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5917SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5918SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5919
5920## Range access, backwards scan ##
5921SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5922SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5923SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5924SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5925SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5926SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5927SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5928SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5929SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5930SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5931SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5932SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5933SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5934SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5935SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC;
5936SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5937SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5938SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5939SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5940SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5941SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5942SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5943## Full table scan ##
5944--sorted_result
5945SELECT * FROM t3;
5946--sorted_result
5947SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5948--sorted_result
5949SELECT * FROM t3 WHERE c4 = '2009-01-29';
5950
5951## Forward index scan, covering ##
5952--sorted_result
5953SELECT c1,c2 FROM t3;
5954
5955## Backward index scan, covering ##
5956SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5957
5958## Forward index scan, non-covering ##
5959SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5960
5961## Backward index scan, non-covering ##
5962SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5963
5964## ref type access
5965SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5966SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5967SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5968SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5969
5970## Range access, ordered ##
5971SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2;
5972SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5973SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2;
5974SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5975SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2;
5976SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5977SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2;
5978SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5979SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2;
5980SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5981SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2;
5982SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5983SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5984SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5985SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5986SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5987SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5988SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5989SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
5990SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5991SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5992SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5993
5994## Range access, backwards scan ##
5995SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5996SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5997SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5998SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5999SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6000SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6001SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6002SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6003SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6004SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6005SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6006SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6007SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6008SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6009SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
6010SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
6011SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
6012SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
6013SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
6014SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
6015SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
6016SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
6017## Full table scan ##
6018--sorted_result
6019SELECT * FROM t3;
6020--sorted_result
6021SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
6022--sorted_result
6023SELECT * FROM t3 WHERE c4 = '2008-01-09';
6024
6025## Forward index scan, covering ##
6026--sorted_result
6027SELECT c1,c2 FROM t3;
6028
6029## Backward index scan, covering ##
6030SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
6031
6032## Forward index scan, non-covering ##
6033SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
6034
6035## Backward index scan, non-covering ##
6036SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
6037
6038## ref type access
6039SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2;
6040SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6041SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6042SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6043
6044## Range access, ordered ##
6045SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2;
6046SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6047SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2;
6048SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6049SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2;
6050SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6051SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2;
6052SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6053SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2;
6054SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6055SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2;
6056SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6057SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
6058SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
6059SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2;
6060SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
6061SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
6062SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
6063SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
6064SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
6065SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
6066SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
6067
6068## Range access, backwards scan ##
6069SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6070SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6071SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6072SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6073SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6074SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6075SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6076SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6077SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6078SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6079SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
6080SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6081SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
6082SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6083SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
6084SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
6085SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
6086SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
6087SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
6088SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
6089SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
6090SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
6091
6092# Using index for group-by
6093--sorted_result
6094SELECT c1 FROM t3 GROUP BY c1;
6095--sorted_result
6096SELECT DISTINCT c1 FROM t3;
6097--sorted_result
6098SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
6099DROP TABLE t1,t2,t3,t4;
6100
6101