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, c4 TIMESTAMP, PRIMARY KEY(c1), UNIQUE INDEX(c2));
9CREATE TABLE t2(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP, PRIMARY KEY(c1,c2));
10CREATE TABLE t3(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP, UNIQUE INDEX idx(c1,c2));
11CREATE TABLE t4(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP);
12
13# Insert some rows with targeted values
14
15# 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
16INSERT 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');
17INSERT 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');
18INSERT 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');
19INSERT 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');
20
21# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
22INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
23INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
24INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
25INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
26
27# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
28INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
29INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
30INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
31INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
32
33# As the result of a function
34SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
35INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
36INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
37INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
38INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
39
40# Insert duplicates for parts of the clustered key/unique index
41INSERT 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');
42INSERT 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');
43
44# Insert permissible NULLs
45INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
46INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
47INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
48
49# Insert duplicate NULLs to unique column
50INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
51DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
52
53# Insert empty string '', would be converted to zero value of the appropriate type
54INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
55
56# Insert invalid dates, would be converted to zero value of the appropriate type
57INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
58INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
59
60# Insert zero dates
61INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
62INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
63
64# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
65INSERT 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 */;
66
67# Now select using various table access methods (full table scan, range scan, index scan etc.)
68--sorted_result
69SELECT * FROM t1;
70--sorted_result
71SELECT * FROM t2;
72--sorted_result
73SELECT * FROM t3;
74--sorted_result
75SELECT * FROM t4;
76
77# Select from table with single column primary key and single column index, with column values zero, NULL
78## Full table scan ##
79--sorted_result
80SELECT * FROM t1;
81--sorted_result
82SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
83--sorted_result
84SELECT * FROM t1 WHERE c3 = '2007-05-24';
85
86## Forward index scan, covering ##
87--sorted_result
88SELECT c1 FROM t1;
89
90## Backward index scan, covering ##
91SELECT c1 FROM t1 ORDER BY c1 DESC;
92
93## Forward index scan, non-covering ##
94SELECT * FROM t1 ORDER BY c1 LIMIT 2;
95
96## Backward index scan, non-covering ##
97SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
98
99## ref type access
100SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
101SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
102SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
103SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
104
105## Range access, ordered ##
106SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
107SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
108SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
109SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
110SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
111SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
112SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
113SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
114SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
115SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
116SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
117SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
118SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
119SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
120SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
121SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
122SELECT * 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;
123SELECT * 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;
124SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
125SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
126SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
127SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
128
129## Range access, backwards scan ##
130SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
131SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
132SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
133SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
134SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
135SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
136SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
137SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
138SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
139SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
140SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
141SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
142SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
143SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
144SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
145SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
146SELECT * 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;
147SELECT * 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;
148SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
149SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
150SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
151SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
152## Full table scan ##
153--sorted_result
154SELECT * FROM t1;
155--sorted_result
156SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
157--sorted_result
158SELECT * FROM t1 WHERE c3 = '2007-05-26';
159
160## Forward index scan, covering ##
161--sorted_result
162SELECT c1 FROM t1;
163
164## Backward index scan, covering ##
165SELECT c1 FROM t1 ORDER BY c1 DESC;
166
167## Forward index scan, non-covering ##
168SELECT * FROM t1 ORDER BY c1 LIMIT 2;
169
170## Backward index scan, non-covering ##
171SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
172
173## ref type access
174SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
175SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
176SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
177SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
178
179## Range access, ordered ##
180SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
181SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
182SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
183SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
184SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
185SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
186SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
187SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
188SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
189SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
190SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
191SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
192SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
193SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
194SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
195SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
196SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
197SELECT * 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;
198SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
199SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
200SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
201SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
202
203## Range access, backwards scan ##
204SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
205SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
206SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
207SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
208SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
209SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
210SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
211SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
212SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
213SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
214SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
215SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
216SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
217SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
218SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
219SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
220SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
221SELECT * 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;
222SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
223SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
224SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
225SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
226## Full table scan ##
227--sorted_result
228SELECT * FROM t1;
229--sorted_result
230SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
231--sorted_result
232SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
233
234## Forward index scan, covering ##
235--sorted_result
236SELECT c2 FROM t1;
237
238## Backward index scan, covering ##
239SELECT c2 FROM t1 ORDER BY c2 DESC;
240
241## Forward index scan, non-covering ##
242SELECT * FROM t1 ORDER BY c2 LIMIT 2;
243
244## Backward index scan, non-covering ##
245SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
246
247## ref type access
248SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
249SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
250SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
251SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
252
253## Range access, ordered ##
254SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
255SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
256SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
257SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
258SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
259SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
260SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
261SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
262SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
263SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
264SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
265SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
266SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
267SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
268SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
269SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
270SELECT * 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;
271SELECT * 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;
272SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
273SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
274SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
275SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
276
277## Range access, backwards scan ##
278SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
279SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
280SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
281SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
282SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
283SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
284SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
285SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
286SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
287SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC 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;
290SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
291SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
292SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
293SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
294SELECT * 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;
295SELECT * 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;
296SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
297SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
298SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
299SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
300
301# Select from table with clustered primary key, with column values zero, NULL
302## Full table scan ##
303--sorted_result
304SELECT * FROM t2;
305--sorted_result
306SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
307--sorted_result
308SELECT * FROM t2 WHERE c3 = '2008-01-06';
309
310## Forward index scan, covering ##
311--sorted_result
312SELECT c1,c2 FROM t2;
313
314## Backward index scan, covering ##
315SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
316
317## Forward index scan, non-covering ##
318SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
319
320## Backward index scan, non-covering ##
321SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
322
323## ref type access
324SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
325SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
326SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
327SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
328
329## Range access, ordered ##
330SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
331SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
332SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
333SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
334SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
335SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
336SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
337SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
338SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
339SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
340SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
341SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
342SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
343SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
344SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
345SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
346SELECT * 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;
347SELECT * 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;
348SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
349SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
350SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
351SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
352
353## Range access, backwards scan ##
354SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
355SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
356SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
357SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
358SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
359SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
360SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
361SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
362SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
363SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
364SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
365SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
366SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
367SELECT * 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;
368SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
369SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
370SELECT * 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;
371SELECT * 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;
372SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
373SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
374SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
375SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
376## Full table scan ##
377--sorted_result
378SELECT * FROM t2;
379--sorted_result
380SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
381--sorted_result
382SELECT * FROM t2 WHERE c3 = '1998-12-29';
383
384## Forward index scan, covering ##
385--sorted_result
386SELECT c1,c2 FROM t2;
387
388## Backward index scan, covering ##
389SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
390
391## Forward index scan, non-covering ##
392SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
393
394## Backward index scan, non-covering ##
395SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
396
397## ref type access
398SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
399SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
400SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
401SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
402
403## Range access, ordered ##
404SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
405SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
406SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
407SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
408SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
409SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
410SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
411SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
412SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
413SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
414SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
415SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
416SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
417SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
418SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
419SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
420SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
421SELECT * 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;
422SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
423SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
424SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
425SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
426
427## Range access, backwards scan ##
428SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
429SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
430SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
431SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
432SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
433SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
434SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
435SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
436SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
437SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
438SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
439SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
440SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
441SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
442SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
443SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
444SELECT * 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;
445SELECT * 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;
446SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
447SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
448SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
449SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
450## Full table scan ##
451--sorted_result
452SELECT * FROM t2;
453--sorted_result
454SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
455--sorted_result
456SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
457
458## Forward index scan, covering ##
459--sorted_result
460SELECT c1,c2 FROM t2;
461
462## Backward index scan, covering ##
463SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
464
465## Forward index scan, non-covering ##
466SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
467
468## Backward index scan, non-covering ##
469SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
470
471## ref type access
472SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
473SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
474SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
475SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
476
477## Range access, ordered ##
478SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
479SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
480SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
481SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
482SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
483SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
484SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
485SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
486SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
487SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
488SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
489SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
490SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
491SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
492SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
493SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
494SELECT * 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;
495SELECT * 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;
496SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
497SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
498SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
499SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
500
501## Range access, backwards scan ##
502SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
503SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
504SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
505SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
506SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
507SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
508SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
509SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
510SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
511SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
512SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
513SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
514SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
515SELECT * 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;
516SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
517SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
518SELECT * 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;
519SELECT * 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;
520SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
521SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
522SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
523SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
524
525# Select from table with clustered index, with column values zero, NULL
526## Full table scan ##
527--sorted_result
528SELECT * FROM t3;
529--sorted_result
530SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
531--sorted_result
532SELECT * FROM t3 WHERE c3 = '2007-05-24';
533
534## Forward index scan, covering ##
535--sorted_result
536SELECT c1,c2 FROM t3;
537
538## Backward index scan, covering ##
539SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
540
541## Forward index scan, non-covering ##
542SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
543
544## Backward index scan, non-covering ##
545SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
546
547## ref type access
548SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
549SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
550SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
551SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
552
553## Range access, ordered ##
554SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
555SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
556SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
557SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
558SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
559SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
560SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
561SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
562SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
563SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
564SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
565SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
566SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
567SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
568SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
569SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
570SELECT * 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;
571SELECT * 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;
572SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
573SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
574SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
575SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
576
577## Range access, backwards scan ##
578SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
579SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
580SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
581SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
582SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
583SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
584SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
585SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
586SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
587SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
588SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
589SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
590SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
591SELECT * 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;
592SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
593SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
594SELECT * 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;
595SELECT * 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;
596SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
597SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
598SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
599SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
600## Full table scan ##
601--sorted_result
602SELECT * FROM t3;
603--sorted_result
604SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
605--sorted_result
606SELECT * FROM t3 WHERE c3 = '1998-12-29';
607
608## Forward index scan, covering ##
609--sorted_result
610SELECT c1,c2 FROM t3;
611
612## Backward index scan, covering ##
613SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
614
615## Forward index scan, non-covering ##
616SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
617
618## Backward index scan, non-covering ##
619SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
620
621## ref type access
622SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
623SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
624SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
625SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
626
627## Range access, ordered ##
628SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
629SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
630SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
631SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
632SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
633SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
634SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
635SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
636SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
637SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
638SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
639SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
640SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
641SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
642SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
643SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
644SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
645SELECT * 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;
646SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
647SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
648SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
649SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
650
651## Range access, backwards scan ##
652SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
653SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
654SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
655SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
656SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
657SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
658SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
659SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
660SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
661SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
662SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
663SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
664SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
665SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
666SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
667SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
668SELECT * 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;
669SELECT * 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;
670SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
671SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
672SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
673SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
674## Full table scan ##
675--sorted_result
676SELECT * FROM t3;
677--sorted_result
678SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
679--sorted_result
680SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
681
682## Forward index scan, covering ##
683--sorted_result
684SELECT c1,c2 FROM t3;
685
686## Backward index scan, covering ##
687SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
688
689## Forward index scan, non-covering ##
690SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
691
692## Backward index scan, non-covering ##
693SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
694
695## ref type access
696SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
697SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
698SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
699SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
700
701## Range access, ordered ##
702SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
703SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
704SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
705SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
706SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
707SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
708SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
709SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
710SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
711SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
712SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
713SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
714SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
715SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
716SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
717SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
718SELECT * 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;
719SELECT * 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;
720SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
721SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
722SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
723SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
724
725## Range access, backwards scan ##
726SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
727SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
728SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
729SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
730SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
731SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
732SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
733SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
734SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
735SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
736SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
737SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
738SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
739SELECT * 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;
740SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
741SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
742SELECT * 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;
743SELECT * 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;
744SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
745SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
746SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
747SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
748
749# Test Error conditions- PK constraint violation, Unique constraint violation
750
751# Insert duplicate value to pk column
752--error ER_DUP_ENTRY
753INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
754
755# Insert duplicate value to clustered pk, throws error
756--error ER_DUP_ENTRY
757INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
758
759# Insert duplicate value to unique column, throws error
760--error ER_DUP_ENTRY
761INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
762
763# Insert duplicate value to clustered unique column, throws error
764--error ER_DUP_ENTRY
765INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
766
767# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
768# Ignore pk constraint
769INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
770INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
771# Ignore unique constraint
772INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
773INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
774# Test that the rows are same
775SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
776SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
777SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
778SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
779
780# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
781SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
782INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
783SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
784
785# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
786SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
787INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
788SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
789
790# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
791SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
792INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
793SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
794
795# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
796SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
797INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
798SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
799
800# Test 'INSERT SET'
801INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
802INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
803INSERT INTO t3 SET c1='1999-01-01';
804INSERT INTO t4 SET c2='1999-01-01';
805SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
806SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
807SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
808SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
809
810# Test 'INSERT INTO SELECT FROM'
811CREATE TABLE t5(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP, INDEX idx(c1,c2));
812INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
813--sorted_result
814SELECT * FROM t5;
815TRUNCATE TABLE t5;
816INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
817--sorted_result
818SELECT * FROM t5;
819TRUNCATE TABLE t5;
820INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
821--sorted_result
822SELECT * FROM t5;
823TRUNCATE TABLE t5;
824DROP TABLE t5;
825
826# Test Specific values to column types
827
828# Test insert values across range to 'DATE' columns
829INSERT 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');
830INSERT 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');
831INSERT 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');
832INSERT 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');
833
834# Insert valid dates containing a zero for the month or for the day
835INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00');
836INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00');
837INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00');
838INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
839
840# Insert invalid dates, inserts zero values
841INSERT 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');
842
843# Test insert NULL to non-null column
844--error ER_BAD_NULL_ERROR
845INSERT INTO t1(c1) VALUES(NULL);
846--error ER_BAD_NULL_ERROR
847INSERT INTO t2(c1) VALUES(NULL);
848--error ER_BAD_NULL_ERROR
849INSERT INTO t3 VALUES(NULL,'2008-01-14','08-01-15','08/01/16');
850--error ER_BAD_NULL_ERROR
851INSERT INTO t4 VALUES(NULL,'2008-01-14','08-01-15','08/01/16');
852
853# Test INSERT SET with no default for not null column
854SET SQL_MODE=STRICT_ALL_TABLES;
855--error ER_NO_DEFAULT_FOR_FIELD
856INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */;
857SET SQL_MODE='';
858
859--sorted_result
860SELECT * FROM t1;
861--sorted_result
862SELECT * FROM t2;
863--sorted_result
864SELECT * FROM t3;
865--sorted_result
866SELECT * FROM t4;
867# Now select using various table access methods
868## Full table scan ##
869--sorted_result
870SELECT * FROM t1;
871--sorted_result
872SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
873--sorted_result
874SELECT * FROM t1 WHERE c3 = '2007-05-24 09:15:28';
875
876## Forward index scan, covering ##
877--sorted_result
878SELECT c1 FROM t1;
879
880## Backward index scan, covering ##
881SELECT c1 FROM t1 ORDER BY c1 DESC;
882
883## Forward index scan, non-covering ##
884SELECT * FROM t1 ORDER BY c1 LIMIT 2;
885
886## Backward index scan, non-covering ##
887SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
888
889## ref type access
890SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1;
891SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 LIMIT 2;
892SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC;
893SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC LIMIT 2;
894
895## Range access, ordered ##
896SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1;
897SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 LIMIT 2;
898SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1;
899SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 LIMIT 2;
900SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1;
901SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 LIMIT 2;
902SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1;
903SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 LIMIT 2;
904SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1;
905SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 LIMIT 2;
906SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1;
907SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 LIMIT 2;
908SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1;
909SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 LIMIT 2;
910SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1;
911SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 LIMIT 2;
912SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1;
913SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 LIMIT 2;
914SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
915SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
916SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
917SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
918
919## Range access, backwards scan ##
920SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC;
921SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC LIMIT 2;
922SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC;
923SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC LIMIT 2;
924SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC;
925SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC LIMIT 2;
926SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC;
927SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC LIMIT 2;
928SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC;
929SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC LIMIT 2;
930SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC;
931SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC LIMIT 2;
932SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC;
933SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2;
934SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC;
935SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC LIMIT 2;
936SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC;
937SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC LIMIT 2;
938SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
939SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
940SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
941SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
942## Full table scan ##
943--sorted_result
944SELECT * FROM t1;
945--sorted_result
946SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
947--sorted_result
948SELECT * FROM t1 WHERE c3 = '2007-05-26 00:00:00';
949
950## Forward index scan, covering ##
951--sorted_result
952SELECT c1 FROM t1;
953
954## Backward index scan, covering ##
955SELECT c1 FROM t1 ORDER BY c1 DESC;
956
957## Forward index scan, non-covering ##
958SELECT * FROM t1 ORDER BY c1 LIMIT 2;
959
960## Backward index scan, non-covering ##
961SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
962
963## ref type access
964SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
965SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
966SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
967SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
968
969## Range access, ordered ##
970SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
971SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
972SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
973SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
974SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
975SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
976SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
977SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
978SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
979SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
980SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
981SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
982SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1;
983SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 LIMIT 2;
984SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1;
985SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 LIMIT 2;
986SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1;
987SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2;
988SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
989SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
990SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
991SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
992
993## Range access, backwards scan ##
994SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
995SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
996SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
997SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
998SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
999SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1000SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
1001SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1002SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
1003SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1004SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
1005SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
1006SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC;
1007SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2;
1008SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC;
1009SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC LIMIT 2;
1010SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC;
1011SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2;
1012SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
1013SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1014SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1015SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1016## Full table scan ##
1017--sorted_result
1018SELECT * FROM t1;
1019--sorted_result
1020SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
1021--sorted_result
1022SELECT * FROM t1 WHERE c3 = '1998-12-28 00:00:00';
1023
1024## Forward index scan, covering ##
1025--sorted_result
1026SELECT c1 FROM t1;
1027
1028## Backward index scan, covering ##
1029SELECT c1 FROM t1 ORDER BY c1 DESC;
1030
1031## Forward index scan, non-covering ##
1032SELECT * FROM t1 ORDER BY c1 LIMIT 2;
1033
1034## Backward index scan, non-covering ##
1035SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
1036
1037## ref type access
1038SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1;
1039SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 LIMIT 2;
1040SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC;
1041SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1042
1043## Range access, ordered ##
1044SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1;
1045SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 LIMIT 2;
1046SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1;
1047SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 LIMIT 2;
1048SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1;
1049SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 LIMIT 2;
1050SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1;
1051SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 LIMIT 2;
1052SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1;
1053SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 LIMIT 2;
1054SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1;
1055SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 LIMIT 2;
1056SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1;
1057SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 LIMIT 2;
1058SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1;
1059SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 LIMIT 2;
1060SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1;
1061SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2;
1062SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
1063SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
1064SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
1065SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
1066
1067## Range access, backwards scan ##
1068SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC;
1069SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1070SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC;
1071SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1072SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC;
1073SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1074SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC;
1075SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1076SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC;
1077SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1078SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC;
1079SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1080SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC;
1081SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC LIMIT 2;
1082SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC;
1083SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC LIMIT 2;
1084SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC;
1085SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2;
1086SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
1087SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
1088SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
1089SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
1090## Full table scan ##
1091--sorted_result
1092SELECT * FROM t1;
1093--sorted_result
1094SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
1095--sorted_result
1096SELECT * FROM t1 WHERE c4 = '2009-01-29';
1097
1098## Forward index scan, covering ##
1099--sorted_result
1100SELECT c2 FROM t1;
1101
1102## Backward index scan, covering ##
1103SELECT c2 FROM t1 ORDER BY c2 DESC;
1104
1105## Forward index scan, non-covering ##
1106SELECT * FROM t1 ORDER BY c2 LIMIT 2;
1107
1108## Backward index scan, non-covering ##
1109SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
1110
1111## ref type access
1112SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2;
1113SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 LIMIT 2;
1114SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC;
1115SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1116
1117## Range access, ordered ##
1118SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2;
1119SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 LIMIT 2;
1120SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2;
1121SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 LIMIT 2;
1122SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2;
1123SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 LIMIT 2;
1124SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2;
1125SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 LIMIT 2;
1126SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2;
1127SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 LIMIT 2;
1128SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2;
1129SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 LIMIT 2;
1130SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2;
1131SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 LIMIT 2;
1132SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2;
1133SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 LIMIT 2;
1134SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2;
1135SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 LIMIT 2;
1136SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
1137SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
1138SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
1139SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
1140
1141## Range access, backwards scan ##
1142SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC;
1143SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1144SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC;
1145SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1146SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC;
1147SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1148SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC;
1149SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1150SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC;
1151SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1152SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC;
1153SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1154SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC;
1155SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1156SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC;
1157SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC LIMIT 2;
1158SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC;
1159SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC LIMIT 2;
1160SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
1161SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
1162SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
1163SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
1164## Full table scan ##
1165--sorted_result
1166SELECT * FROM t1;
1167--sorted_result
1168SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
1169--sorted_result
1170SELECT * FROM t1 WHERE c4 = '2008-01-05';
1171
1172## Forward index scan, covering ##
1173--sorted_result
1174SELECT c2 FROM t1;
1175
1176## Backward index scan, covering ##
1177SELECT c2 FROM t1 ORDER BY c2 DESC;
1178
1179## Forward index scan, non-covering ##
1180SELECT * FROM t1 ORDER BY c2 LIMIT 2;
1181
1182## Backward index scan, non-covering ##
1183SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
1184
1185## ref type access
1186SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2;
1187SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 LIMIT 2;
1188SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC;
1189SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1190
1191## Range access, ordered ##
1192SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2;
1193SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 LIMIT 2;
1194SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2;
1195SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 LIMIT 2;
1196SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2;
1197SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 LIMIT 2;
1198SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2;
1199SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 LIMIT 2;
1200SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2;
1201SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 LIMIT 2;
1202SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2;
1203SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 LIMIT 2;
1204SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2;
1205SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 LIMIT 2;
1206SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2;
1207SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 LIMIT 2;
1208SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2;
1209SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 LIMIT 2;
1210SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
1211SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
1212SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
1213SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
1214
1215## Range access, backwards scan ##
1216SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC;
1217SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1218SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC;
1219SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1220SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC;
1221SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1222SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC;
1223SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1224SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC;
1225SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1226SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC;
1227SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1228SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC;
1229SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC LIMIT 2;
1230SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC;
1231SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC LIMIT 2;
1232SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC;
1233SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC LIMIT 2;
1234SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
1235SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
1236SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
1237SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
1238
1239# Using Index-merge
1240--sorted_result
1241SELECT * FROM t1 WHERE c1='1000-00-01' OR c2='9999-12-31';
1242
1243# Using index for group-by
1244--sorted_result
1245SELECT c2 FROM t1 GROUP BY c2;
1246
1247## Full table scan ##
1248--sorted_result
1249SELECT * FROM t2;
1250--sorted_result
1251SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1252--sorted_result
1253SELECT * FROM t2 WHERE c3 = '2007-05-24 09:15:28';
1254
1255## Forward index scan, covering ##
1256--sorted_result
1257SELECT c1,c2 FROM t2;
1258
1259## Backward index scan, covering ##
1260SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1261
1262## Forward index scan, non-covering ##
1263SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1264
1265## Backward index scan, non-covering ##
1266SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1267
1268## ref type access
1269SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2;
1270SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1271SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC;
1272SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1273
1274## Range access, ordered ##
1275SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2;
1276SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1277SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2;
1278SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1279SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2;
1280SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1281SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2;
1282SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1283SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2;
1284SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1285SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2;
1286SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1287SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1288SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1289SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1290SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1291SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2;
1292SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1293SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1294SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1295SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1296SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1297
1298## Range access, backwards scan ##
1299SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC;
1300SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1301SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC;
1302SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1303SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC;
1304SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1305SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC;
1306SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1307SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC;
1308SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1309SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC;
1310SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1311SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1312SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1313SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1314SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1315SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC;
1316SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1317SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1318SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1319SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1320SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1321## Full table scan ##
1322--sorted_result
1323SELECT * FROM t2;
1324--sorted_result
1325SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1326--sorted_result
1327SELECT * FROM t2 WHERE c3 = '2007-05-26 00:00:00';
1328
1329## Forward index scan, covering ##
1330--sorted_result
1331SELECT c1,c2 FROM t2;
1332
1333## Backward index scan, covering ##
1334SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1335
1336## Forward index scan, non-covering ##
1337SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1338
1339## Backward index scan, non-covering ##
1340SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1341
1342## ref type access
1343SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
1344SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1345SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
1346SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1347
1348## Range access, ordered ##
1349SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
1350SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1351SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
1352SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1353SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
1354SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1355SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
1356SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1357SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
1358SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1359SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
1360SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1361SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2;
1362SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1363SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2;
1364SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1365SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2;
1366SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1367SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1368SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1369SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1370SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1371
1372## Range access, backwards scan ##
1373SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
1374SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1375SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
1376SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1377SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
1378SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1379SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
1380SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1381SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
1382SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1383SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
1384SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1385SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC;
1386SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1387SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC;
1388SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1389SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1390SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1391SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1392SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1393SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1394SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1395## Full table scan ##
1396--sorted_result
1397SELECT * FROM t2;
1398--sorted_result
1399SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
1400--sorted_result
1401SELECT * FROM t2 WHERE c3 = '1998-12-28 00:00:00';
1402
1403## Forward index scan, covering ##
1404--sorted_result
1405SELECT c1,c2 FROM t2;
1406
1407## Backward index scan, covering ##
1408SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1409
1410## Forward index scan, non-covering ##
1411SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1412
1413## Backward index scan, non-covering ##
1414SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1415
1416## ref type access
1417SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2;
1418SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1419SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1420SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1421
1422## Range access, ordered ##
1423SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2;
1424SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1425SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2;
1426SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1427SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2;
1428SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1429SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2;
1430SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1431SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2;
1432SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1433SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2;
1434SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1435SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2;
1436SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1437SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2;
1438SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2;
1439SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2;
1440SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1441SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
1442SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1443SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1444SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1445
1446## Range access, backwards scan ##
1447SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC;
1448SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1449SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC;
1450SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1451SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC;
1452SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1453SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC;
1454SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1455SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC;
1456SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1457SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC;
1458SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1459SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC;
1460SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1461SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC;
1462SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2;
1463SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1464SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1465SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1466SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1467SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1468SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1469## Full table scan ##
1470--sorted_result
1471SELECT * FROM t2;
1472--sorted_result
1473SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
1474--sorted_result
1475SELECT * FROM t2 WHERE c4 = '2009-01-29';
1476
1477## Forward index scan, covering ##
1478--sorted_result
1479SELECT c1,c2 FROM t2;
1480
1481## Backward index scan, covering ##
1482SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1483
1484## Forward index scan, non-covering ##
1485SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1486
1487## Backward index scan, non-covering ##
1488SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1489
1490## ref type access
1491SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2;
1492SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1493SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC;
1494SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1495
1496## Range access, ordered ##
1497SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2;
1498SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1499SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2;
1500SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1501SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2;
1502SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1503SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2;
1504SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1505SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2;
1506SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1507SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2;
1508SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1509SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1510SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1511SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1512SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1513SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2;
1514SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1515SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
1516SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1517SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1518SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1519
1520## Range access, backwards scan ##
1521SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC;
1522SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1523SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC;
1524SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1525SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC;
1526SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1527SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC;
1528SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1529SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC;
1530SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1531SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC;
1532SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1533SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1534SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1535SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1536SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1537SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC;
1538SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1539SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1540SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1541SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1542SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1543## Full table scan ##
1544--sorted_result
1545SELECT * FROM t2;
1546--sorted_result
1547SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
1548--sorted_result
1549SELECT * FROM t2 WHERE c4 = '2008-01-07';
1550
1551## Forward index scan, covering ##
1552--sorted_result
1553SELECT c1,c2 FROM t2;
1554
1555## Backward index scan, covering ##
1556SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
1557
1558## Forward index scan, non-covering ##
1559SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
1560
1561## Backward index scan, non-covering ##
1562SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
1563
1564## ref type access
1565SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2;
1566SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1567SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1568SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1569
1570## Range access, ordered ##
1571SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2;
1572SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1573SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2;
1574SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1575SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2;
1576SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1577SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2;
1578SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1579SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2;
1580SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1581SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2;
1582SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1583SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2;
1584SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1585SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2;
1586SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2;
1587SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2;
1588SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1589SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
1590SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1591SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1592SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1593
1594## Range access, backwards scan ##
1595SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC;
1596SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1597SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC;
1598SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1599SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC;
1600SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1601SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC;
1602SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1603SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC;
1604SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1605SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC;
1606SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1607SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC;
1608SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1609SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC;
1610SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2;
1611SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1612SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1613SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1614SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1615SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1616SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1617## Full table scan ##
1618--sorted_result
1619SELECT * FROM t3;
1620--sorted_result
1621SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1622--sorted_result
1623SELECT * FROM t3 WHERE c3 = '2007-05-24 09:15:28';
1624
1625## Forward index scan, covering ##
1626--sorted_result
1627SELECT c1,c2 FROM t3;
1628
1629## Backward index scan, covering ##
1630SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1631
1632## Forward index scan, non-covering ##
1633SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1634
1635## Backward index scan, non-covering ##
1636SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1637
1638## ref type access
1639SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2;
1640SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1641SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC;
1642SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1643
1644## Range access, ordered ##
1645SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2;
1646SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1647SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2;
1648SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1649SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2;
1650SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1651SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2;
1652SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1653SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2;
1654SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1655SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2;
1656SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1657SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1658SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1659SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1660SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1661SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2;
1662SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2;
1663SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1664SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1665SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1666SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1667
1668## Range access, backwards scan ##
1669SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC;
1670SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1671SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC;
1672SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1673SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC;
1674SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1675SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC;
1676SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1677SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC;
1678SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1679SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC;
1680SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1681SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1682SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1683SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1684SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1685SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC;
1686SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1687SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1688SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1689SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1690SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1691## Full table scan ##
1692--sorted_result
1693SELECT * FROM t3;
1694--sorted_result
1695SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1696--sorted_result
1697SELECT * FROM t3 WHERE c3 = '2007-05-26 00:00:00';
1698
1699## Forward index scan, covering ##
1700--sorted_result
1701SELECT c1,c2 FROM t3;
1702
1703## Backward index scan, covering ##
1704SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1705
1706## Forward index scan, non-covering ##
1707SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1708
1709## Backward index scan, non-covering ##
1710SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1711
1712## ref type access
1713SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
1714SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1715SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
1716SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1717
1718## Range access, ordered ##
1719SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
1720SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1721SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
1722SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1723SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
1724SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1725SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
1726SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1727SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
1728SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1729SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
1730SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
1731SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2;
1732SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1733SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2;
1734SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1735SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2;
1736SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1737SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1738SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1739SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1740SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1741
1742## Range access, backwards scan ##
1743SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
1744SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1745SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
1746SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1747SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
1748SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1749SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
1750SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1751SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
1752SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1753SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
1754SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
1755SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC;
1756SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1757SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC;
1758SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1759SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1760SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1761SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1762SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1763SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1764SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1765## Full table scan ##
1766--sorted_result
1767SELECT * FROM t3;
1768--sorted_result
1769SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
1770--sorted_result
1771SELECT * FROM t3 WHERE c3 = '1998-12-28 00:00:00';
1772
1773## Forward index scan, covering ##
1774--sorted_result
1775SELECT c1,c2 FROM t3;
1776
1777## Backward index scan, covering ##
1778SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1779
1780## Forward index scan, non-covering ##
1781SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1782
1783## Backward index scan, non-covering ##
1784SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1785
1786## ref type access
1787SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2;
1788SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1789SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1790SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1791
1792## Range access, ordered ##
1793SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2;
1794SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1795SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2;
1796SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1797SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2;
1798SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1799SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2;
1800SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1801SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2;
1802SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1803SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2;
1804SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1805SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2;
1806SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1807SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2;
1808SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2;
1809SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2;
1810SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1811SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
1812SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
1813SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
1814SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1815
1816## Range access, backwards scan ##
1817SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC;
1818SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1819SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC;
1820SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1821SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC;
1822SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1823SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC;
1824SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1825SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC;
1826SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1827SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC;
1828SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1829SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC;
1830SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1831SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC;
1832SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2;
1833SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1834SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1835SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
1836SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1837SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
1838SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1839## Full table scan ##
1840--sorted_result
1841SELECT * FROM t3;
1842--sorted_result
1843SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1844--sorted_result
1845SELECT * FROM t3 WHERE c4 = '2009-01-29';
1846
1847## Forward index scan, covering ##
1848--sorted_result
1849SELECT c1,c2 FROM t3;
1850
1851## Backward index scan, covering ##
1852SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1853
1854## Forward index scan, non-covering ##
1855SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1856
1857## Backward index scan, non-covering ##
1858SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1859
1860## ref type access
1861SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2;
1862SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1863SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC;
1864SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1865
1866## Range access, ordered ##
1867SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2;
1868SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1869SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2;
1870SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1871SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2;
1872SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1873SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2;
1874SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1875SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2;
1876SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1877SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2;
1878SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1879SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2;
1880SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1881SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2;
1882SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2;
1883SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2;
1884SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2;
1885SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
1886SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1887SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1888SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1889
1890## Range access, backwards scan ##
1891SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC;
1892SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1893SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC;
1894SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1895SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC;
1896SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1897SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC;
1898SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1899SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC;
1900SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1901SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC;
1902SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1903SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC;
1904SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1905SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC;
1906SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2;
1907SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC;
1908SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2;
1909SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1910SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1911SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1912SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1913## Full table scan ##
1914--sorted_result
1915SELECT * FROM t3;
1916--sorted_result
1917SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
1918--sorted_result
1919SELECT * FROM t3 WHERE c4 = '2008-01-09';
1920
1921## Forward index scan, covering ##
1922--sorted_result
1923SELECT c1,c2 FROM t3;
1924
1925## Backward index scan, covering ##
1926SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
1927
1928## Forward index scan, non-covering ##
1929SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
1930
1931## Backward index scan, non-covering ##
1932SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
1933
1934## ref type access
1935SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2;
1936SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1937SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC;
1938SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1939
1940## Range access, ordered ##
1941SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2;
1942SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1943SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2;
1944SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1945SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2;
1946SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1947SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2;
1948SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1949SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2;
1950SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1951SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2;
1952SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1953SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2;
1954SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2;
1955SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2;
1956SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2;
1957SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2;
1958SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2;
1959SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
1960SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
1961SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
1962SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
1963
1964## Range access, backwards scan ##
1965SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC;
1966SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1967SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC;
1968SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1969SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC;
1970SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1971SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC;
1972SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1973SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC;
1974SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1975SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC;
1976SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1977SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC;
1978SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2;
1979SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC;
1980SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2;
1981SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC;
1982SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2;
1983SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
1984SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
1985SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
1986SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
1987
1988# Using index for group-by
1989--sorted_result
1990SELECT c1 FROM t3 GROUP BY c1;
1991--sorted_result
1992SELECT DISTINCT c1 FROM t3;
1993--sorted_result
1994SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
1995DROP TABLE t1,t2,t3,t4;
1996
1997######## Running INSERT tests for DATETIME ########
1998
1999# Create tables
2000CREATE TABLE t1(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, PRIMARY KEY(c1), UNIQUE INDEX(c2));
2001CREATE TABLE t2(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, PRIMARY KEY(c1,c2));
2002CREATE TABLE t3(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, UNIQUE INDEX idx(c1,c2));
2003CREATE TABLE t4(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP);
2004
2005# Insert some rows with targeted values
2006
2007# 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
2008INSERT 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');
2009INSERT 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');
2010INSERT 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');
2011INSERT 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');
2012
2013# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
2014INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2015INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2016INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2017INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
2018
2019# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
2020INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2021INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2022INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2023INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
2024
2025# As the result of a function
2026SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
2027INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2028INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2029INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2030INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
2031
2032# Insert duplicates for parts of the clustered key/unique index
2033INSERT 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');
2034INSERT 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');
2035
2036# Insert permissible NULLs
2037INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2038INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2039INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
2040
2041# Insert duplicate NULLs to unique column
2042INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
2043DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
2044
2045# Insert empty string '', would be converted to zero value of the appropriate type
2046INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
2047
2048# Insert invalid dates, would be converted to zero value of the appropriate type
2049INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
2050INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
2051
2052# Insert zero dates
2053INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
2054INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
2055
2056# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
2057INSERT 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 */;
2058
2059# Now select using various table access methods (full table scan, range scan, index scan etc.)
2060--sorted_result
2061SELECT * FROM t1;
2062--sorted_result
2063SELECT * FROM t2;
2064--sorted_result
2065SELECT * FROM t3;
2066--sorted_result
2067SELECT * FROM t4;
2068
2069# Select from table with single column primary key and single column index, with column values zero, NULL
2070## Full table scan ##
2071--sorted_result
2072SELECT * FROM t1;
2073--sorted_result
2074SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2075--sorted_result
2076SELECT * FROM t1 WHERE c3 = '2007-05-24';
2077
2078## Forward index scan, covering ##
2079--sorted_result
2080SELECT c1 FROM t1;
2081
2082## Backward index scan, covering ##
2083SELECT c1 FROM t1 ORDER BY c1 DESC;
2084
2085## Forward index scan, non-covering ##
2086SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2087
2088## Backward index scan, non-covering ##
2089SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2090
2091## ref type access
2092SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
2093SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2094SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
2095SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2096
2097## Range access, ordered ##
2098SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
2099SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2100SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
2101SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2102SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
2103SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2104SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
2105SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2106SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
2107SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2108SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
2109SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
2110SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
2111SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
2112SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
2113SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
2114SELECT * 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;
2115SELECT * 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;
2116SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2117SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2118SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2119SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2120
2121## Range access, backwards scan ##
2122SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
2123SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2124SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
2125SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2126SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
2127SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2128SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
2129SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2130SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
2131SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2132SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
2133SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
2134SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
2135SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
2136SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
2137SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
2138SELECT * 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;
2139SELECT * 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;
2140SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
2141SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2142SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2143SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2144## Full table scan ##
2145--sorted_result
2146SELECT * FROM t1;
2147--sorted_result
2148SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2149--sorted_result
2150SELECT * FROM t1 WHERE c3 = '2007-05-26';
2151
2152## Forward index scan, covering ##
2153--sorted_result
2154SELECT c1 FROM t1;
2155
2156## Backward index scan, covering ##
2157SELECT c1 FROM t1 ORDER BY c1 DESC;
2158
2159## Forward index scan, non-covering ##
2160SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2161
2162## Backward index scan, non-covering ##
2163SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2164
2165## ref type access
2166SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
2167SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
2168SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
2169SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2170
2171## Range access, ordered ##
2172SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
2173SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
2174SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
2175SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
2176SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
2177SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
2178SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
2179SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
2180SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
2181SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
2182SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
2183SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
2184SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
2185SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
2186SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
2187SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
2188SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
2189SELECT * 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;
2190SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2191SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2192SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2193SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2194
2195## Range access, backwards scan ##
2196SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
2197SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2198SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
2199SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2200SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
2201SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2202SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
2203SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2204SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
2205SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2206SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
2207SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2208SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
2209SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
2210SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
2211SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
2212SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
2213SELECT * 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;
2214SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
2215SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2216SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2217SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2218## Full table scan ##
2219--sorted_result
2220SELECT * FROM t1;
2221--sorted_result
2222SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
2223--sorted_result
2224SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
2225
2226## Forward index scan, covering ##
2227--sorted_result
2228SELECT c2 FROM t1;
2229
2230## Backward index scan, covering ##
2231SELECT c2 FROM t1 ORDER BY c2 DESC;
2232
2233## Forward index scan, non-covering ##
2234SELECT * FROM t1 ORDER BY c2 LIMIT 2;
2235
2236## Backward index scan, non-covering ##
2237SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
2238
2239## ref type access
2240SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
2241SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2242SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
2243SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2244
2245## Range access, ordered ##
2246SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
2247SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2248SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
2249SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2250SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
2251SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2252SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
2253SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2254SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
2255SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2256SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
2257SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
2258SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
2259SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
2260SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
2261SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
2262SELECT * 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;
2263SELECT * 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;
2264SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
2265SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
2266SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
2267SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
2268
2269## Range access, backwards scan ##
2270SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
2271SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2272SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
2273SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2274SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
2275SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2276SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
2277SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2278SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
2279SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2280SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC;
2281SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
2282SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
2283SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
2284SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
2285SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
2286SELECT * 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;
2287SELECT * 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;
2288SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
2289SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
2290SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
2291SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
2292
2293# Select from table with clustered primary key, with column values zero, NULL
2294## Full table scan ##
2295--sorted_result
2296SELECT * FROM t2;
2297--sorted_result
2298SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2299--sorted_result
2300SELECT * FROM t2 WHERE c3 = '2008-01-06';
2301
2302## Forward index scan, covering ##
2303--sorted_result
2304SELECT c1,c2 FROM t2;
2305
2306## Backward index scan, covering ##
2307SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2308
2309## Forward index scan, non-covering ##
2310SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2311
2312## Backward index scan, non-covering ##
2313SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2314
2315## ref type access
2316SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
2317SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2318SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2319SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2320
2321## Range access, ordered ##
2322SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
2323SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2324SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
2325SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2326SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
2327SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2328SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
2329SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2330SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
2331SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2332SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
2333SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2334SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
2335SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
2336SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
2337SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
2338SELECT * 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;
2339SELECT * 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;
2340SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
2341SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2342SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2343SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2344
2345## Range access, backwards scan ##
2346SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2347SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2348SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2349SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2350SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2351SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2352SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2353SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2354SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2355SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2356SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2357SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2358SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
2359SELECT * 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;
2360SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
2361SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
2362SELECT * 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;
2363SELECT * 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;
2364SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2365SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2366SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2367SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2368## Full table scan ##
2369--sorted_result
2370SELECT * FROM t2;
2371--sorted_result
2372SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
2373--sorted_result
2374SELECT * FROM t2 WHERE c3 = '1998-12-29';
2375
2376## Forward index scan, covering ##
2377--sorted_result
2378SELECT c1,c2 FROM t2;
2379
2380## Backward index scan, covering ##
2381SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2382
2383## Forward index scan, non-covering ##
2384SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2385
2386## Backward index scan, non-covering ##
2387SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2388
2389## ref type access
2390SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
2391SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2392SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
2393SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2394
2395## Range access, ordered ##
2396SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
2397SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2398SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
2399SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2400SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
2401SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2402SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
2403SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2404SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
2405SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2406SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
2407SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2408SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
2409SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
2410SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
2411SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
2412SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
2413SELECT * 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;
2414SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
2415SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2416SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2417SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2418
2419## Range access, backwards scan ##
2420SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
2421SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2422SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
2423SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2424SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
2425SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2426SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
2427SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2428SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
2429SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2430SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
2431SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2432SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
2433SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
2434SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
2435SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
2436SELECT * 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;
2437SELECT * 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;
2438SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2439SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2440SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2441SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2442## Full table scan ##
2443--sorted_result
2444SELECT * FROM t2;
2445--sorted_result
2446SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
2447--sorted_result
2448SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
2449
2450## Forward index scan, covering ##
2451--sorted_result
2452SELECT c1,c2 FROM t2;
2453
2454## Backward index scan, covering ##
2455SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
2456
2457## Forward index scan, non-covering ##
2458SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
2459
2460## Backward index scan, non-covering ##
2461SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
2462
2463## ref type access
2464SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
2465SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2466SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2467SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2468
2469## Range access, ordered ##
2470SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
2471SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2472SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
2473SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2474SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
2475SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2476SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
2477SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2478SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
2479SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2480SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
2481SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
2482SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
2483SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
2484SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
2485SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
2486SELECT * 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;
2487SELECT * 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;
2488SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
2489SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
2490SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
2491SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2492
2493## Range access, backwards scan ##
2494SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2495SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2496SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2497SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2498SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2499SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2500SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2501SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2502SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2503SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2504SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
2505SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
2506SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
2507SELECT * 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;
2508SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
2509SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
2510SELECT * 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;
2511SELECT * 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;
2512SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
2513SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2514SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
2515SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2516
2517# Select from table with clustered index, with column values zero, NULL
2518## Full table scan ##
2519--sorted_result
2520SELECT * FROM t3;
2521--sorted_result
2522SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
2523--sorted_result
2524SELECT * FROM t3 WHERE c3 = '2007-05-24';
2525
2526## Forward index scan, covering ##
2527--sorted_result
2528SELECT c1,c2 FROM t3;
2529
2530## Backward index scan, covering ##
2531SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2532
2533## Forward index scan, non-covering ##
2534SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2535
2536## Backward index scan, non-covering ##
2537SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2538
2539## ref type access
2540SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
2541SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2542SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2543SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2544
2545## Range access, ordered ##
2546SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
2547SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2548SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
2549SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2550SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
2551SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2552SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
2553SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2554SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
2555SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2556SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
2557SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
2558SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
2559SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
2560SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
2561SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
2562SELECT * 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;
2563SELECT * 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;
2564SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
2565SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2566SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2567SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2568
2569## Range access, backwards scan ##
2570SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2571SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2572SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2573SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2574SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2575SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2576SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2577SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2578SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2579SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2580SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
2581SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2582SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
2583SELECT * 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;
2584SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
2585SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
2586SELECT * 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;
2587SELECT * 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;
2588SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2589SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2590SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2591SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2592## Full table scan ##
2593--sorted_result
2594SELECT * FROM t3;
2595--sorted_result
2596SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
2597--sorted_result
2598SELECT * FROM t3 WHERE c3 = '1998-12-29';
2599
2600## Forward index scan, covering ##
2601--sorted_result
2602SELECT c1,c2 FROM t3;
2603
2604## Backward index scan, covering ##
2605SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2606
2607## Forward index scan, non-covering ##
2608SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2609
2610## Backward index scan, non-covering ##
2611SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2612
2613## ref type access
2614SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
2615SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2616SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
2617SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2618
2619## Range access, ordered ##
2620SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
2621SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2622SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
2623SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2624SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
2625SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2626SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
2627SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2628SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
2629SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2630SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
2631SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
2632SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
2633SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
2634SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
2635SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
2636SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
2637SELECT * 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;
2638SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
2639SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
2640SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
2641SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2642
2643## Range access, backwards scan ##
2644SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
2645SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2646SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
2647SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2648SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
2649SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2650SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
2651SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2652SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
2653SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2654SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
2655SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
2656SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
2657SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
2658SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
2659SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
2660SELECT * 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;
2661SELECT * 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;
2662SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
2663SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2664SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
2665SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2666## Full table scan ##
2667--sorted_result
2668SELECT * FROM t3;
2669--sorted_result
2670SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
2671--sorted_result
2672SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
2673
2674## Forward index scan, covering ##
2675--sorted_result
2676SELECT c1,c2 FROM t3;
2677
2678## Backward index scan, covering ##
2679SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
2680
2681## Forward index scan, non-covering ##
2682SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
2683
2684## Backward index scan, non-covering ##
2685SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
2686
2687## ref type access
2688SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
2689SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2690SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2691SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2692
2693## Range access, ordered ##
2694SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
2695SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2696SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
2697SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2698SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
2699SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2700SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
2701SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2702SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
2703SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2704SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
2705SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
2706SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
2707SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
2708SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
2709SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
2710SELECT * 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;
2711SELECT * 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;
2712SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
2713SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
2714SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
2715SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
2716
2717## Range access, backwards scan ##
2718SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2719SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2720SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2721SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2722SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2723SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2724SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2725SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2726SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2727SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2728SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
2729SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
2730SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
2731SELECT * 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;
2732SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
2733SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
2734SELECT * 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;
2735SELECT * 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;
2736SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
2737SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
2738SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
2739SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
2740
2741# Test Error conditions- PK constraint violation, Unique constraint violation
2742
2743# Insert duplicate value to pk column
2744--error ER_DUP_ENTRY
2745INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
2746
2747# Insert duplicate value to clustered pk, throws error
2748--error ER_DUP_ENTRY
2749INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
2750
2751# Insert duplicate value to unique column, throws error
2752--error ER_DUP_ENTRY
2753INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
2754
2755# Insert duplicate value to clustered unique column, throws error
2756--error ER_DUP_ENTRY
2757INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
2758
2759# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
2760# Ignore pk constraint
2761INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
2762INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
2763# Ignore unique constraint
2764INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
2765INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
2766# Test that the rows are same
2767SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
2768SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
2769SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
2770SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
2771
2772# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
2773SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
2774INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
2775SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
2776
2777# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
2778SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2779INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2780SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
2781
2782# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
2783SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2784INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2785SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
2786
2787# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
2788SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
2789INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
2790SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
2791
2792# Test 'INSERT SET'
2793INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
2794INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
2795INSERT INTO t3 SET c1='1999-01-01';
2796INSERT INTO t4 SET c2='1999-01-01';
2797SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2798SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2799SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2800SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
2801
2802# Test 'INSERT INTO SELECT FROM'
2803CREATE TABLE t5(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, INDEX idx(c1,c2));
2804INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
2805--sorted_result
2806SELECT * FROM t5;
2807TRUNCATE TABLE t5;
2808INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
2809#Following query produces different results
2810#for differenct engine/platform
2811--disable_result_log
2812--sorted_result
2813SELECT * FROM t5;
2814--enable_result_log
2815TRUNCATE TABLE t5;
2816INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
2817--sorted_result
2818SELECT * FROM t5;
2819TRUNCATE TABLE t5;
2820DROP TABLE t5;
2821
2822# Test Specific values to column types
2823
2824# Test insert range values to 'DATETIME' columns
2825INSERT 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');
2826INSERT 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');
2827INSERT 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');
2828INSERT 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');
2829
2830# Insert valid dates containing a zero for the month or for the day
2831INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00');
2832INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00');
2833INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00');
2834INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
2835
2836# Insert invalid dates, inserts zero values
2837INSERT 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');
2838
2839# Test insert NULL to non-null column
2840--error ER_BAD_NULL_ERROR
2841INSERT INTO t1(c1) VALUES(NULL);
2842--error ER_BAD_NULL_ERROR
2843INSERT INTO t2(c1) VALUES(NULL);
2844--error ER_BAD_NULL_ERROR
2845INSERT INTO t3 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
2846--error ER_BAD_NULL_ERROR
2847INSERT INTO t4 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
2848
2849# Test INSERT SET with no default for not null column
2850SET SQL_MODE=STRICT_ALL_TABLES;
2851--error ER_NO_DEFAULT_FOR_FIELD
2852INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */;
2853SET SQL_MODE='';
2854
2855--sorted_result
2856SELECT * FROM t1;
2857--sorted_result
2858SELECT * FROM t2;
2859--sorted_result
2860SELECT * FROM t3;
2861--sorted_result
2862SELECT * FROM t4;
2863# Now select using various table access methods
2864## Full table scan ##
2865--sorted_result
2866SELECT * FROM t1;
2867--sorted_result
2868SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2869--sorted_result
2870SELECT * FROM t1 WHERE c3 = '2007-05-24';
2871
2872## Forward index scan, covering ##
2873--sorted_result
2874SELECT c1 FROM t1;
2875
2876## Backward index scan, covering ##
2877SELECT c1 FROM t1 ORDER BY c1 DESC;
2878
2879## Forward index scan, non-covering ##
2880SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2881
2882## Backward index scan, non-covering ##
2883SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2884
2885## ref type access
2886SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1;
2887SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2888SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC;
2889SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2890
2891## Range access, ordered ##
2892SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1;
2893SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2894SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1;
2895SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2896SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1;
2897SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2898SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1;
2899SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2900SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1;
2901SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2902SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1;
2903SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2;
2904SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1;
2905SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2;
2906SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1;
2907SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2;
2908SELECT * 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;
2909SELECT * 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;
2910SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2911SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2912SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2913SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2914
2915## Range access, backwards scan ##
2916SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC;
2917SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2918SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC;
2919SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2920SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC;
2921SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2922SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC;
2923SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2924SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC;
2925SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2926SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC;
2927SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
2928SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC;
2929SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2;
2930SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC;
2931SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2;
2932SELECT * 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;
2933SELECT * 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;
2934SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
2935SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
2936SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
2937SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
2938## Full table scan ##
2939--sorted_result
2940SELECT * FROM t1;
2941--sorted_result
2942SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
2943--sorted_result
2944SELECT * FROM t1 WHERE c3 = '2007-05-26';
2945
2946## Forward index scan, covering ##
2947--sorted_result
2948SELECT c1 FROM t1;
2949
2950## Backward index scan, covering ##
2951SELECT c1 FROM t1 ORDER BY c1 DESC;
2952
2953## Forward index scan, non-covering ##
2954SELECT * FROM t1 ORDER BY c1 LIMIT 2;
2955
2956## Backward index scan, non-covering ##
2957SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
2958
2959## ref type access
2960SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
2961SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
2962SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
2963SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2964
2965## Range access, ordered ##
2966SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
2967SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
2968SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
2969SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
2970SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
2971SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
2972SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
2973SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
2974SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
2975SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
2976SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
2977SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
2978SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1;
2979SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2;
2980SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1;
2981SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2;
2982SELECT * 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;
2983SELECT * 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;
2984SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
2985SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
2986SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
2987SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
2988
2989## Range access, backwards scan ##
2990SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
2991SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2992SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
2993SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2994SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
2995SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2996SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
2997SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
2998SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
2999SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3000SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
3001SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
3002SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC;
3003SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2;
3004SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC;
3005SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2;
3006SELECT * 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;
3007SELECT * 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;
3008SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
3009SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3010SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3011SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3012## Full table scan ##
3013--sorted_result
3014SELECT * FROM t1;
3015--sorted_result
3016SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
3017--sorted_result
3018SELECT * FROM t1 WHERE c3 = '1998-12-28';
3019
3020## Forward index scan, covering ##
3021--sorted_result
3022SELECT c1 FROM t1;
3023
3024## Backward index scan, covering ##
3025SELECT c1 FROM t1 ORDER BY c1 DESC;
3026
3027## Forward index scan, non-covering ##
3028SELECT * FROM t1 ORDER BY c1 LIMIT 2;
3029
3030## Backward index scan, non-covering ##
3031SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
3032
3033## ref type access
3034SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1;
3035SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3036SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC;
3037SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3038
3039## Range access, ordered ##
3040SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1;
3041SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3042SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1;
3043SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3044SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1;
3045SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3046SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1;
3047SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3048SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1;
3049SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3050SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1;
3051SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
3052SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1;
3053SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 LIMIT 2;
3054SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1;
3055SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 LIMIT 2;
3056SELECT * 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;
3057SELECT * 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;
3058SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
3059SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
3060SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
3061SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
3062
3063## Range access, backwards scan ##
3064SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC;
3065SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3066SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC;
3067SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3068SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC;
3069SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3070SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC;
3071SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3072SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC;
3073SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3074SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC;
3075SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
3076SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC;
3077SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC LIMIT 2;
3078SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC;
3079SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC LIMIT 2;
3080SELECT * 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;
3081SELECT * 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;
3082SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
3083SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
3084SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
3085SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
3086## Full table scan ##
3087--sorted_result
3088SELECT * FROM t1;
3089--sorted_result
3090SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
3091--sorted_result
3092SELECT * FROM t1 WHERE c4 = '2009-01-29';
3093
3094## Forward index scan, covering ##
3095--sorted_result
3096SELECT c2 FROM t1;
3097
3098## Backward index scan, covering ##
3099SELECT c2 FROM t1 ORDER BY c2 DESC;
3100
3101## Forward index scan, non-covering ##
3102SELECT * FROM t1 ORDER BY c2 LIMIT 2;
3103
3104## Backward index scan, non-covering ##
3105SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
3106
3107## ref type access
3108SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2;
3109SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3110SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC;
3111SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3112
3113## Range access, ordered ##
3114SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2;
3115SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3116SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2;
3117SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3118SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2;
3119SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3120SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2;
3121SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3122SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2;
3123SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3124SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2;
3125SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3126SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2;
3127SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2;
3128SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2;
3129SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 LIMIT 2;
3130SELECT * 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;
3131SELECT * 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;
3132SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
3133SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
3134SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
3135SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
3136
3137## Range access, backwards scan ##
3138SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC;
3139SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3140SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC;
3141SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3142SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC;
3143SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3144SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC;
3145SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3146SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC;
3147SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3148SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC;
3149SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3150SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC;
3151SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2;
3152SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC;
3153SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC LIMIT 2;
3154SELECT * 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;
3155SELECT * 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;
3156SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
3157SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
3158SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
3159SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
3160## Full table scan ##
3161--sorted_result
3162SELECT * FROM t1;
3163--sorted_result
3164SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
3165--sorted_result
3166SELECT * FROM t1 WHERE c4 = '2008-01-05';
3167
3168## Forward index scan, covering ##
3169--sorted_result
3170SELECT c2 FROM t1;
3171
3172## Backward index scan, covering ##
3173SELECT c2 FROM t1 ORDER BY c2 DESC;
3174
3175## Forward index scan, non-covering ##
3176SELECT * FROM t1 ORDER BY c2 LIMIT 2;
3177
3178## Backward index scan, non-covering ##
3179SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
3180
3181## ref type access
3182SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2;
3183SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3184SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC;
3185SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3186
3187## Range access, ordered ##
3188SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2;
3189SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3190SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2;
3191SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3192SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2;
3193SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3194SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2;
3195SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3196SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2;
3197SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3198SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2;
3199SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3200SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2;
3201SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
3202SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2;
3203SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2;
3204SELECT * 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;
3205SELECT * 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;
3206SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
3207SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
3208SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
3209SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
3210
3211## Range access, backwards scan ##
3212SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC;
3213SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3214SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC;
3215SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3216SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC;
3217SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3218SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC;
3219SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3220SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC;
3221SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3222SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC;
3223SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3224SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC;
3225SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
3226SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC;
3227SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2;
3228SELECT * 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;
3229SELECT * 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;
3230SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
3231SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
3232SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
3233SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
3234
3235# Using Index-merge
3236--sorted_result
3237SELECT * FROM t1 WHERE c1='1000-00-01 00:00:00' OR c2='9999-12-31 23:59:59';
3238
3239# Using index for group-by
3240--sorted_result
3241SELECT c2 FROM t1 GROUP BY c2;
3242
3243## Full table scan ##
3244--sorted_result
3245SELECT * FROM t2;
3246--sorted_result
3247SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3248--sorted_result
3249SELECT * FROM t2 WHERE c3 = '2007-05-24';
3250
3251## Forward index scan, covering ##
3252--sorted_result
3253SELECT c1,c2 FROM t2;
3254
3255## Backward index scan, covering ##
3256SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3257
3258## Forward index scan, non-covering ##
3259SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3260
3261## Backward index scan, non-covering ##
3262SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3263
3264## ref type access
3265SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3266SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3267SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3268SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3269
3270## Range access, ordered ##
3271SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2;
3272SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3273SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2;
3274SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3275SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2;
3276SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3277SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2;
3278SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3279SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2;
3280SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3281SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2;
3282SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3283SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3284SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3285SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3286SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3287SELECT * 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;
3288SELECT * 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;
3289SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3290SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3291SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3292SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3293
3294## Range access, backwards scan ##
3295SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3296SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3297SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3298SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3299SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3300SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3301SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3302SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3303SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3304SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3305SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3306SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3307SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3308SELECT * 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;
3309SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3310SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3311SELECT * 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;
3312SELECT * 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;
3313SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3314SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3315SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3316SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3317## Full table scan ##
3318--sorted_result
3319SELECT * FROM t2;
3320--sorted_result
3321SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3322--sorted_result
3323SELECT * FROM t2 WHERE c3 = '2007-05-26';
3324
3325## Forward index scan, covering ##
3326--sorted_result
3327SELECT c1,c2 FROM t2;
3328
3329## Backward index scan, covering ##
3330SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3331
3332## Forward index scan, non-covering ##
3333SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3334
3335## Backward index scan, non-covering ##
3336SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3337
3338## ref type access
3339SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
3340SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3341SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
3342SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3343
3344## Range access, ordered ##
3345SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
3346SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3347SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
3348SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3349SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
3350SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3351SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
3352SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3353SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
3354SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3355SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
3356SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3357SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3358SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3359SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2;
3360SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3361SELECT * 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;
3362SELECT * 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;
3363SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3364SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3365SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3366SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3367
3368## Range access, backwards scan ##
3369SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
3370SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3371SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
3372SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3373SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
3374SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3375SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
3376SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3377SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
3378SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3379SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
3380SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3381SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3382SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3383SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3384SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3385SELECT * 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;
3386SELECT * 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;
3387SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3388SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3389SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3390SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3391## Full table scan ##
3392--sorted_result
3393SELECT * FROM t2;
3394--sorted_result
3395SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
3396--sorted_result
3397SELECT * FROM t2 WHERE c3 = '1998-12-28';
3398
3399## Forward index scan, covering ##
3400--sorted_result
3401SELECT c1,c2 FROM t2;
3402
3403## Backward index scan, covering ##
3404SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3405
3406## Forward index scan, non-covering ##
3407SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3408
3409## Backward index scan, non-covering ##
3410SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3411
3412## ref type access
3413SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
3414SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3415SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3416SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3417
3418## Range access, ordered ##
3419SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
3420SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3421SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
3422SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3423SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
3424SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3425SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
3426SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3427SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
3428SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3429SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
3430SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3431SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2;
3432SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2;
3433SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2;
3434SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2;
3435SELECT * 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;
3436SELECT * 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;
3437SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
3438SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3439SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3440SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3441
3442## Range access, backwards scan ##
3443SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3444SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3445SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3446SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3447SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3448SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3449SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3450SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3451SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3452SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3453SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3454SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3455SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC;
3456SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2;
3457SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC;
3458SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2;
3459SELECT * 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;
3460SELECT * 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;
3461SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3462SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3463SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3464SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3465## Full table scan ##
3466--sorted_result
3467SELECT * FROM t2;
3468--sorted_result
3469SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
3470--sorted_result
3471SELECT * FROM t2 WHERE c4 = '2009-01-29';
3472
3473## Forward index scan, covering ##
3474--sorted_result
3475SELECT c1,c2 FROM t2;
3476
3477## Backward index scan, covering ##
3478SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3479
3480## Forward index scan, non-covering ##
3481SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3482
3483## Backward index scan, non-covering ##
3484SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3485
3486## ref type access
3487SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3488SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3489SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3490SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3491
3492## Range access, ordered ##
3493SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2;
3494SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3495SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2;
3496SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3497SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2;
3498SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3499SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2;
3500SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3501SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2;
3502SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3503SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2;
3504SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3505SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3506SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3507SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3508SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3509SELECT * 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;
3510SELECT * 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;
3511SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
3512SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3513SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3514SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3515
3516## Range access, backwards scan ##
3517SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3518SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3519SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3520SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3521SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3522SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3523SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3524SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3525SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3526SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3527SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3528SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3529SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3530SELECT * 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;
3531SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3532SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3533SELECT * 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;
3534SELECT * 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;
3535SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3536SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3537SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3538SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3539## Full table scan ##
3540--sorted_result
3541SELECT * FROM t2;
3542--sorted_result
3543SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
3544--sorted_result
3545SELECT * FROM t2 WHERE c4 = '2008-01-07';
3546
3547## Forward index scan, covering ##
3548--sorted_result
3549SELECT c1,c2 FROM t2;
3550
3551## Backward index scan, covering ##
3552SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
3553
3554## Forward index scan, non-covering ##
3555SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
3556
3557## Backward index scan, non-covering ##
3558SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
3559
3560## ref type access
3561SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3562SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3563SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3564SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3565
3566## Range access, ordered ##
3567SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2;
3568SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3569SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2;
3570SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3571SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2;
3572SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3573SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2;
3574SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3575SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2;
3576SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3577SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2;
3578SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3579SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
3580SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3581SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2;
3582SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
3583SELECT * 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;
3584SELECT * 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;
3585SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
3586SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3587SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3588SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3589
3590## Range access, backwards scan ##
3591SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3592SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3593SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3594SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3595SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3596SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3597SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3598SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3599SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3600SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3601SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3602SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3603SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3604SELECT * 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;
3605SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
3606SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
3607SELECT * 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;
3608SELECT * 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;
3609SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3610SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3611SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3612SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3613
3614## Full table scan ##
3615--sorted_result
3616SELECT * FROM t3;
3617--sorted_result
3618SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3619--sorted_result
3620SELECT * FROM t3 WHERE c3 = '2007-05-24';
3621
3622## Forward index scan, covering ##
3623--sorted_result
3624SELECT c1,c2 FROM t3;
3625
3626## Backward index scan, covering ##
3627SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3628
3629## Forward index scan, non-covering ##
3630SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3631
3632## Backward index scan, non-covering ##
3633SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3634
3635## ref type access
3636SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2;
3637SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3638SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3639SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3640
3641## Range access, ordered ##
3642SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2;
3643SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3644SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2;
3645SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3646SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2;
3647SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3648SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2;
3649SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3650SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2;
3651SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3652SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2;
3653SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3654SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3655SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3656SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3657SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3658SELECT * 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;
3659SELECT * 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;
3660SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3661SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3662SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3663SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3664
3665## Range access, backwards scan ##
3666SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3667SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3668SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3669SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3670SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3671SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3672SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3673SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3674SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3675SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3676SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC;
3677SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3678SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3679SELECT * 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;
3680SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3681SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3682SELECT * 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;
3683SELECT * 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;
3684SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3685SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3686SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3687SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3688## Full table scan ##
3689--sorted_result
3690SELECT * FROM t3;
3691--sorted_result
3692SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3693--sorted_result
3694SELECT * FROM t3 WHERE c3 = '2007-05-26';
3695
3696## Forward index scan, covering ##
3697--sorted_result
3698SELECT c1,c2 FROM t3;
3699
3700## Backward index scan, covering ##
3701SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3702
3703## Forward index scan, non-covering ##
3704SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3705
3706## Backward index scan, non-covering ##
3707SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3708
3709## ref type access
3710SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
3711SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3712SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
3713SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3714
3715## Range access, ordered ##
3716SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
3717SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3718SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
3719SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3720SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
3721SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3722SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
3723SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3724SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
3725SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3726SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
3727SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
3728SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3729SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3730SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2;
3731SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3732SELECT * 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;
3733SELECT * 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;
3734SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3735SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3736SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3737SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3738
3739## Range access, backwards scan ##
3740SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
3741SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3742SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
3743SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3744SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
3745SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3746SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
3747SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3748SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
3749SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3750SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
3751SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
3752SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3753SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3754SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3755SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3756SELECT * 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;
3757SELECT * 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;
3758SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3759SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3760SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3761SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3762## Full table scan ##
3763--sorted_result
3764SELECT * FROM t3;
3765--sorted_result
3766SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
3767--sorted_result
3768SELECT * FROM t3 WHERE c3 = '1998-12-28';
3769
3770## Forward index scan, covering ##
3771--sorted_result
3772SELECT c1,c2 FROM t3;
3773
3774## Backward index scan, covering ##
3775SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3776
3777## Forward index scan, non-covering ##
3778SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3779
3780## Backward index scan, non-covering ##
3781SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3782
3783## ref type access
3784SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
3785SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3786SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3787SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3788
3789## Range access, ordered ##
3790SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
3791SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3792SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
3793SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3794SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
3795SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3796SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
3797SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3798SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
3799SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3800SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
3801SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
3802SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2;
3803SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2;
3804SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2;
3805SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2;
3806SELECT * 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;
3807SELECT * 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;
3808SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
3809SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
3810SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
3811SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3812
3813## Range access, backwards scan ##
3814SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3815SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3816SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3817SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3818SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3819SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3820SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3821SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3822SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3823SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3824SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
3825SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3826SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC;
3827SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2;
3828SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC;
3829SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2;
3830SELECT * 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;
3831SELECT * 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;
3832SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
3833SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3834SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
3835SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3836## Full table scan ##
3837--sorted_result
3838SELECT * FROM t3;
3839--sorted_result
3840SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3841--sorted_result
3842SELECT * FROM t3 WHERE c4 = '2009-01-29';
3843
3844## Forward index scan, covering ##
3845--sorted_result
3846SELECT c1,c2 FROM t3;
3847
3848## Backward index scan, covering ##
3849SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3850
3851## Forward index scan, non-covering ##
3852SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3853
3854## Backward index scan, non-covering ##
3855SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3856
3857## ref type access
3858SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2;
3859SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3860SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3861SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3862
3863## Range access, ordered ##
3864SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2;
3865SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3866SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2;
3867SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3868SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2;
3869SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3870SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2;
3871SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3872SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2;
3873SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3874SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2;
3875SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3876SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2;
3877SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2;
3878SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2;
3879SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2;
3880SELECT * 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;
3881SELECT * 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;
3882SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
3883SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3884SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3885SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3886
3887## Range access, backwards scan ##
3888SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3889SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3890SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3891SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3892SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3893SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3894SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3895SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3896SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3897SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3898SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3899SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2;
3900SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC;
3901SELECT * 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;
3902SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC;
3903SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2;
3904SELECT * 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;
3905SELECT * 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;
3906SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3907SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3908SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3909SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3910## Full table scan ##
3911--sorted_result
3912SELECT * FROM t3;
3913--sorted_result
3914SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
3915--sorted_result
3916SELECT * FROM t3 WHERE c4 = '2008-01-09';
3917
3918## Forward index scan, covering ##
3919--sorted_result
3920SELECT c1,c2 FROM t3;
3921
3922## Backward index scan, covering ##
3923SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
3924
3925## Forward index scan, non-covering ##
3926SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
3927
3928## Backward index scan, non-covering ##
3929SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
3930
3931## ref type access
3932SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2;
3933SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3934SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3935SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3936
3937## Range access, ordered ##
3938SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2;
3939SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3940SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2;
3941SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3942SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2;
3943SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3944SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2;
3945SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3946SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2;
3947SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3948SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2;
3949SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3950SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
3951SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
3952SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2;
3953SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
3954SELECT * 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;
3955SELECT * 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;
3956SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
3957SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
3958SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
3959SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
3960
3961## Range access, backwards scan ##
3962SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3963SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3964SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3965SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3966SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3967SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3968SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3969SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3970SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3971SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3972SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3973SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
3974SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
3975SELECT * 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;
3976SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
3977SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
3978SELECT * 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;
3979SELECT * 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;
3980SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
3981SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
3982SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
3983SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
3984
3985# Using index for group-by
3986--sorted_result
3987SELECT c1 FROM t3 GROUP BY c1;
3988--sorted_result
3989SELECT DISTINCT c1 FROM t3;
3990--sorted_result
3991SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
3992DROP TABLE t1,t2,t3,t4;
3993
3994######## Running INSERT tests for TIMESTAMP ########
3995
3996# Create tables
3997CREATE TABLE t1(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1), UNIQUE INDEX(c2));
3998CREATE TABLE t2(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1,c2));
3999CREATE TABLE t3(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, UNIQUE INDEX idx(c1,c2));
4000CREATE TABLE t4(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME);
4001
4002# Insert some rows with targeted values
4003
4004# 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
4005INSERT 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');
4006INSERT 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');
4007INSERT 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');
4008INSERT 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');
4009
4010# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD'  format
4011INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4012INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4013INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4014INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526');
4015
4016# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format
4017INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4018INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4019INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4020INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908);
4021
4022# As the result of a function
4023SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
4024INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4025INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4026INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4027INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE);
4028
4029# Insert duplicates for parts of the clustered key/unique index
4030INSERT 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');
4031INSERT 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');
4032
4033# Insert permissible NULLs
4034INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4035INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4036INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03');
4037
4038# Insert duplicate NULLs to unique column
4039INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL);
4040DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL;
4041
4042# Insert empty string '', would be converted to zero value of the appropriate type
4043INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */;
4044
4045# Insert invalid dates, would be converted to zero value of the appropriate type
4046INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */;
4047INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */;
4048
4049# Insert zero dates
4050INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07');
4051INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9');
4052
4053# Insert non-date value(absurd values), would be converted to zero value of the appropriate type
4054INSERT 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 */;
4055
4056# Now select using various table access methods (full table scan, range scan, index scan etc.)
4057--sorted_result
4058SELECT * FROM t1;
4059--sorted_result
4060SELECT * FROM t2;
4061--sorted_result
4062SELECT * FROM t3;
4063--sorted_result
4064SELECT * FROM t4;
4065
4066# Select from table with single column primary key and single column index, with column values zero, NULL
4067## Full table scan ##
4068--sorted_result
4069SELECT * FROM t1;
4070--sorted_result
4071SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4072--sorted_result
4073SELECT * FROM t1 WHERE c3 = '2007-05-24';
4074
4075## Forward index scan, covering ##
4076--sorted_result
4077SELECT c1 FROM t1;
4078
4079## Backward index scan, covering ##
4080SELECT c1 FROM t1 ORDER BY c1 DESC;
4081
4082## Forward index scan, non-covering ##
4083SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4084
4085## Backward index scan, non-covering ##
4086SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4087
4088## ref type access
4089SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1;
4090SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4091SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
4092SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4093
4094## Range access, ordered ##
4095SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1;
4096SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4097SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1;
4098SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4099SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1;
4100SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4101SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1;
4102SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4103SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1;
4104SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4105SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1;
4106SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2;
4107SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1;
4108SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2;
4109SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1;
4110SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2;
4111SELECT * 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;
4112SELECT * 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;
4113SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4114SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4115SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4116SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4117
4118## Range access, backwards scan ##
4119SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC;
4120SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4121SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC;
4122SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4123SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC;
4124SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4125SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC;
4126SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4127SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC;
4128SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4129SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC;
4130SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2;
4131SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC;
4132SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2;
4133SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC;
4134SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2;
4135SELECT * 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;
4136SELECT * 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;
4137SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4138SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4139SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4140SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4141## Full table scan ##
4142--sorted_result
4143SELECT * FROM t1;
4144--sorted_result
4145SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4146--sorted_result
4147SELECT * FROM t1 WHERE c3 = '2007-05-26';
4148
4149## Forward index scan, covering ##
4150--sorted_result
4151SELECT c1 FROM t1;
4152
4153## Backward index scan, covering ##
4154SELECT c1 FROM t1 ORDER BY c1 DESC;
4155
4156## Forward index scan, non-covering ##
4157SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4158
4159## Backward index scan, non-covering ##
4160SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4161
4162## ref type access
4163SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1;
4164SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2;
4165SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC;
4166SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4167
4168## Range access, ordered ##
4169SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1;
4170SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2;
4171SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1;
4172SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2;
4173SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1;
4174SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2;
4175SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1;
4176SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2;
4177SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1;
4178SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2;
4179SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1;
4180SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2;
4181SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1;
4182SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2;
4183SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1;
4184SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2;
4185SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1;
4186SELECT * 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;
4187SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4188SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4189SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4190SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4191
4192## Range access, backwards scan ##
4193SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC;
4194SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4195SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC;
4196SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4197SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC;
4198SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4199SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC;
4200SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4201SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC;
4202SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4203SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC;
4204SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2;
4205SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC;
4206SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2;
4207SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC;
4208SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2;
4209SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC;
4210SELECT * 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;
4211SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4212SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4213SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4214SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4215## Full table scan ##
4216--sorted_result
4217SELECT * FROM t1;
4218--sorted_result
4219SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
4220--sorted_result
4221SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00';
4222
4223## Forward index scan, covering ##
4224--sorted_result
4225SELECT c2 FROM t1;
4226
4227## Backward index scan, covering ##
4228SELECT c2 FROM t1 ORDER BY c2 DESC;
4229
4230## Forward index scan, non-covering ##
4231SELECT * FROM t1 ORDER BY c2 LIMIT 2;
4232
4233## Backward index scan, non-covering ##
4234SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
4235
4236## ref type access
4237SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2;
4238SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4239SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC;
4240SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4241
4242## Range access, ordered ##
4243SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2;
4244SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4245SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2;
4246SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4247SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2;
4248SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4249SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2;
4250SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4251SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2;
4252SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4253SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2;
4254SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2;
4255SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2;
4256SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2;
4257SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2;
4258SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2;
4259SELECT * 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;
4260SELECT * 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;
4261SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
4262SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
4263SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
4264SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
4265
4266## Range access, backwards scan ##
4267SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC;
4268SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4269SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC;
4270SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4271SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC;
4272SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4273SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC;
4274SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4275SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC;
4276SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4277SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC;
4278SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2;
4279SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC;
4280SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2;
4281SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC;
4282SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2;
4283SELECT * 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;
4284SELECT * 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;
4285SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
4286SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
4287SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
4288SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
4289
4290# Select from table with clustered primary key, with column values zero, NULL
4291## Full table scan ##
4292--sorted_result
4293SELECT * FROM t2;
4294--sorted_result
4295SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4296--sorted_result
4297SELECT * FROM t2 WHERE c3 = '2008-01-06';
4298
4299## Forward index scan, covering ##
4300--sorted_result
4301SELECT c1,c2 FROM t2;
4302
4303## Backward index scan, covering ##
4304SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4305
4306## Forward index scan, non-covering ##
4307SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4308
4309## Backward index scan, non-covering ##
4310SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4311
4312## ref type access
4313SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2;
4314SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4315SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4316SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4317
4318## Range access, ordered ##
4319SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
4320SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4321SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2;
4322SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4323SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
4324SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4325SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2;
4326SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4327SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
4328SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4329SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
4330SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4331SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
4332SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
4333SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
4334SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
4335SELECT * 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;
4336SELECT * 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;
4337SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
4338SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4339SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4340SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4341
4342## Range access, backwards scan ##
4343SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4344SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4345SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4346SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4347SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4348SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4349SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4350SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4351SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4352SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4353SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4354SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4355SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
4356SELECT * 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;
4357SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
4358SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
4359SELECT * 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;
4360SELECT * 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;
4361SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4362SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4363SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4364SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4365## Full table scan ##
4366--sorted_result
4367SELECT * FROM t2;
4368--sorted_result
4369SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
4370--sorted_result
4371SELECT * FROM t2 WHERE c3 = '1998-12-29';
4372
4373## Forward index scan, covering ##
4374--sorted_result
4375SELECT c1,c2 FROM t2;
4376
4377## Backward index scan, covering ##
4378SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4379
4380## Forward index scan, non-covering ##
4381SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4382
4383## Backward index scan, non-covering ##
4384SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4385
4386## ref type access
4387SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
4388SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4389SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
4390SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4391
4392## Range access, ordered ##
4393SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
4394SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4395SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
4396SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4397SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
4398SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4399SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
4400SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4401SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
4402SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4403SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
4404SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4405SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
4406SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
4407SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
4408SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
4409SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2;
4410SELECT * 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;
4411SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
4412SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4413SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4414SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4415
4416## Range access, backwards scan ##
4417SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
4418SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4419SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
4420SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4421SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
4422SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4423SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
4424SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4425SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
4426SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4427SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
4428SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4429SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
4430SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
4431SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
4432SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
4433SELECT * 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;
4434SELECT * 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;
4435SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4436SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4437SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4438SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4439## Full table scan ##
4440--sorted_result
4441SELECT * FROM t2;
4442--sorted_result
4443SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
4444--sorted_result
4445SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28';
4446
4447## Forward index scan, covering ##
4448--sorted_result
4449SELECT c1,c2 FROM t2;
4450
4451## Backward index scan, covering ##
4452SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
4453
4454## Forward index scan, non-covering ##
4455SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
4456
4457## Backward index scan, non-covering ##
4458SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
4459
4460## ref type access
4461SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2;
4462SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4463SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4464SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4465
4466## Range access, ordered ##
4467SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2;
4468SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4469SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2;
4470SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4471SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2;
4472SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4473SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2;
4474SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4475SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2;
4476SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4477SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2;
4478SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2;
4479SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2;
4480SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2;
4481SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2;
4482SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2;
4483SELECT * 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;
4484SELECT * 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;
4485SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
4486SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
4487SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
4488SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4489
4490## Range access, backwards scan ##
4491SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4492SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4493SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4494SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4495SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4496SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4497SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4498SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4499SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4500SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4501SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC;
4502SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2;
4503SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC;
4504SELECT * 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;
4505SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC;
4506SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2;
4507SELECT * 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;
4508SELECT * 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;
4509SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4510SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4511SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4512SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4513
4514# Select from table with clustered index, with column values zero, NULL
4515## Full table scan ##
4516--sorted_result
4517SELECT * FROM t3;
4518--sorted_result
4519SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
4520--sorted_result
4521SELECT * FROM t3 WHERE c3 = '2007-05-24';
4522
4523## Forward index scan, covering ##
4524--sorted_result
4525SELECT c1,c2 FROM t3;
4526
4527## Backward index scan, covering ##
4528SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4529
4530## Forward index scan, non-covering ##
4531SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4532
4533## Backward index scan, non-covering ##
4534SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4535
4536## ref type access
4537SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2;
4538SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4539SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4540SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4541
4542## Range access, ordered ##
4543SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2;
4544SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4545SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2;
4546SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4547SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2;
4548SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4549SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2;
4550SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4551SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2;
4552SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4553SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2;
4554SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2;
4555SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2;
4556SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2;
4557SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2;
4558SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2;
4559SELECT * 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;
4560SELECT * 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;
4561SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
4562SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4563SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4564SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4565
4566## Range access, backwards scan ##
4567SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4568SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4569SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4570SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4571SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4572SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4573SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4574SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4575SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4576SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4577SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC;
4578SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4579SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC;
4580SELECT * 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;
4581SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC;
4582SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
4583SELECT * 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;
4584SELECT * 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;
4585SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4586SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4587SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4588SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4589## Full table scan ##
4590--sorted_result
4591SELECT * FROM t3;
4592--sorted_result
4593SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
4594--sorted_result
4595SELECT * FROM t3 WHERE c3 = '1998-12-29';
4596
4597## Forward index scan, covering ##
4598--sorted_result
4599SELECT c1,c2 FROM t3;
4600
4601## Backward index scan, covering ##
4602SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4603
4604## Forward index scan, non-covering ##
4605SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4606
4607## Backward index scan, non-covering ##
4608SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4609
4610## ref type access
4611SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2;
4612SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4613SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC;
4614SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4615
4616## Range access, ordered ##
4617SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2;
4618SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4619SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2;
4620SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4621SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2;
4622SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4623SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2;
4624SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4625SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2;
4626SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4627SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2;
4628SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2;
4629SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2;
4630SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2;
4631SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2;
4632SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2;
4633SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2;
4634SELECT * 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;
4635SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
4636SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
4637SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
4638SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4639
4640## Range access, backwards scan ##
4641SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC;
4642SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4643SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC;
4644SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4645SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC;
4646SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4647SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC;
4648SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4649SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC;
4650SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4651SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC;
4652SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2;
4653SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC;
4654SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2;
4655SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC;
4656SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2;
4657SELECT * 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;
4658SELECT * 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;
4659SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
4660SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4661SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
4662SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4663## Full table scan ##
4664--sorted_result
4665SELECT * FROM t3;
4666--sorted_result
4667SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
4668--sorted_result
4669SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28';
4670
4671## Forward index scan, covering ##
4672--sorted_result
4673SELECT c1,c2 FROM t3;
4674
4675## Backward index scan, covering ##
4676SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
4677
4678## Forward index scan, non-covering ##
4679SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
4680
4681## Backward index scan, non-covering ##
4682SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
4683
4684## ref type access
4685SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2;
4686SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4687SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4688SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4689
4690## Range access, ordered ##
4691SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2;
4692SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4693SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2;
4694SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4695SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2;
4696SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4697SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2;
4698SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4699SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2;
4700SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4701SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2;
4702SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2;
4703SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2;
4704SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2;
4705SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2;
4706SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2;
4707SELECT * 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;
4708SELECT * 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;
4709SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
4710SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
4711SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
4712SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
4713
4714## Range access, backwards scan ##
4715SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4716SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4717SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4718SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4719SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4720SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4721SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4722SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4723SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4724SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4725SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC;
4726SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
4727SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC;
4728SELECT * 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;
4729SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC;
4730SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2;
4731SELECT * 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;
4732SELECT * 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;
4733SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
4734SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
4735SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
4736SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
4737
4738# Test Error conditions- PK constraint violation, Unique constraint violation
4739
4740# Insert duplicate value to pk column
4741--error ER_DUP_ENTRY
4742INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */;
4743
4744# Insert duplicate value to clustered pk, throws error
4745--error ER_DUP_ENTRY
4746INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
4747
4748# Insert duplicate value to unique column, throws error
4749--error ER_DUP_ENTRY
4750INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */;
4751
4752# Insert duplicate value to clustered unique column, throws error
4753--error ER_DUP_ENTRY
4754INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */;
4755
4756# Test 'INSERT IGNORE' with the same rows that reported constraint violation above
4757# Ignore pk constraint
4758INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */;
4759INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
4760# Ignore unique constraint
4761INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */;
4762INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */;
4763# Test that the rows are same
4764SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */;
4765SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
4766SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */;
4767SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */;
4768
4769# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK
4770SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */;
4771INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527';
4772SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */;
4773
4774# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK
4775SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4776INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4777SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */;
4778
4779# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique
4780SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4781INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4782SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
4783
4784# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique
4785SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */;
4786INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910;
4787SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */;
4788
4789# Test 'INSERT SET'
4790INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01';
4791INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01';
4792INSERT INTO t3 SET c1='1999-01-01';
4793INSERT INTO t4 SET c2='1999-01-01';
4794SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4795SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4796SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4797SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */;
4798
4799# Test 'INSERT INTO SELECT FROM'
4800CREATE TABLE t5(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, INDEX idx(c1,c2));
4801INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528';
4802--sorted_result
4803SELECT * FROM t5;
4804TRUNCATE TABLE t5;
4805INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525';
4806--sorted_result
4807SELECT * FROM t5;
4808TRUNCATE TABLE t5;
4809INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45';
4810--sorted_result
4811SELECT * FROM t5;
4812TRUNCATE TABLE t5;
4813DROP TABLE t5;
4814
4815# Test Specific values to column types
4816
4817# Test insert range values to 'TIMESTAMP' columns
4818INSERT 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');
4819INSERT 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');
4820INSERT 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');
4821INSERT 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');
4822
4823# Insert dates containing a zero for the month or for the day, convert to zero
4824INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00');
4825
4826# Insert invalid dates, inserts zero values
4827INSERT 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');
4828
4829# Test insert NULL to non-null column
4830# Inserting NULL to TIMESTAMP NOT NULL field doesn't throw error, but records the current/set timestamp
4831
4832DELETE FROM t1 WHERE c1=NOW() /* because the row with current timestamp exists */;
4833INSERT INTO t1 VALUES(NULL,NOW(),NOW(),NOW());
4834SELECT * FROM t1 WHERE c1 IS NULL /* returns no rows */;
4835SELECT * FROM t1 WHERE c1=NOW() /* returns 1 row */;
4836INSERT INTO t2(c1) VALUES(NULL);
4837INSERT INTO t3 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
4838INSERT INTO t4 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16');
4839
4840# Test INSERT SET with no default for not null column
4841SET SQL_MODE=STRICT_ALL_TABLES;
4842INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will get the default value as current timestamp */;
4843SET SQL_MODE='';
4844
4845--sorted_result
4846SELECT * FROM t1;
4847--sorted_result
4848SELECT * FROM t2;
4849--sorted_result
4850SELECT * FROM t3;
4851--sorted_result
4852SELECT * FROM t4;
4853# Now select using various table access methods
4854## Full table scan ##
4855--sorted_result
4856SELECT * FROM t1;
4857--sorted_result
4858SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4859--sorted_result
4860SELECT * FROM t1 WHERE c3 = '2007-05-24';
4861
4862## Forward index scan, covering ##
4863--sorted_result
4864SELECT c1 FROM t1;
4865
4866## Backward index scan, covering ##
4867SELECT c1 FROM t1 ORDER BY c1 DESC;
4868
4869## Forward index scan, non-covering ##
4870SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4871
4872## Backward index scan, non-covering ##
4873SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4874
4875## ref type access
4876SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1;
4877SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4878SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC;
4879SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4880
4881## Range access, ordered ##
4882SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1;
4883SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4884SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1;
4885SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4886SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1;
4887SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4888SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1;
4889SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4890SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1;
4891SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4892SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1;
4893SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2;
4894SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1;
4895SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2;
4896SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1;
4897SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2;
4898SELECT * 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;
4899SELECT * 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;
4900SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4901SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4902SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4903SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4904
4905## Range access, backwards scan ##
4906SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC;
4907SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4908SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC;
4909SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4910SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC;
4911SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4912SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC;
4913SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4914SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC;
4915SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4916SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC;
4917SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2;
4918SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC;
4919SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2;
4920SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC;
4921SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2;
4922SELECT * 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;
4923SELECT * 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;
4924SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4925SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
4926SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
4927SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
4928## Full table scan ##
4929--sorted_result
4930SELECT * FROM t1;
4931--sorted_result
4932SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
4933--sorted_result
4934SELECT * FROM t1 WHERE c3 = '2007-05-26';
4935
4936## Forward index scan, covering ##
4937--sorted_result
4938SELECT c1 FROM t1;
4939
4940## Backward index scan, covering ##
4941SELECT c1 FROM t1 ORDER BY c1 DESC;
4942
4943## Forward index scan, non-covering ##
4944SELECT * FROM t1 ORDER BY c1 LIMIT 2;
4945
4946## Backward index scan, non-covering ##
4947SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
4948
4949## ref type access
4950SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1;
4951SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4952SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC;
4953SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4954
4955## Range access, ordered ##
4956SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1;
4957SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4958SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1;
4959SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4960SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1;
4961SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4962SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1;
4963SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4964SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1;
4965SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4966SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1;
4967SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2;
4968SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1;
4969SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2;
4970SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1;
4971SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2;
4972SELECT * 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;
4973SELECT * 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;
4974SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
4975SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
4976SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
4977SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
4978
4979## Range access, backwards scan ##
4980SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC;
4981SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4982SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC;
4983SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4984SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC;
4985SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4986SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC;
4987SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4988SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC;
4989SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4990SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC;
4991SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2;
4992SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC;
4993SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2;
4994SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC;
4995SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2;
4996SELECT * 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;
4997SELECT * 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;
4998SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
4999SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5000SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5001SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5002## Full table scan ##
5003--sorted_result
5004SELECT * FROM t1;
5005--sorted_result
5006SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
5007--sorted_result
5008SELECT * FROM t1 WHERE c3 = '1998-12-28';
5009
5010## Forward index scan, covering ##
5011--sorted_result
5012SELECT c1 FROM t1;
5013
5014## Backward index scan, covering ##
5015SELECT c1 FROM t1 ORDER BY c1 DESC;
5016
5017## Forward index scan, non-covering ##
5018SELECT * FROM t1 ORDER BY c1 LIMIT 2;
5019
5020## Backward index scan, non-covering ##
5021SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2;
5022
5023## ref type access
5024SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1;
5025SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5026SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC;
5027SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5028
5029## Range access, ordered ##
5030SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1;
5031SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5032SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1;
5033SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5034SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1;
5035SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5036SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1;
5037SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5038SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1;
5039SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5040SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1;
5041SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5042SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1;
5043SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2;
5044SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1;
5045SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 LIMIT 2;
5046SELECT * 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;
5047SELECT * 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;
5048SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1;
5049SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2;
5050SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1;
5051SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2;
5052
5053## Range access, backwards scan ##
5054SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC;
5055SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5056SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC;
5057SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5058SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC;
5059SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5060SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC;
5061SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5062SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC;
5063SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5064SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC;
5065SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5066SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC;
5067SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2;
5068SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC;
5069SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC LIMIT 2;
5070SELECT * 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;
5071SELECT * 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;
5072SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC;
5073SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2;
5074SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC;
5075SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2;
5076## Full table scan ##
5077--sorted_result
5078SELECT * FROM t1;
5079--sorted_result
5080SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
5081--sorted_result
5082SELECT * FROM t1 WHERE c4 = '2009-01-29';
5083
5084## Forward index scan, covering ##
5085--sorted_result
5086SELECT c2 FROM t1;
5087
5088## Backward index scan, covering ##
5089SELECT c2 FROM t1 ORDER BY c2 DESC;
5090
5091## Forward index scan, non-covering ##
5092SELECT * FROM t1 ORDER BY c2 LIMIT 2;
5093
5094## Backward index scan, non-covering ##
5095SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
5096
5097## ref type access
5098SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2;
5099SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5100SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC;
5101SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5102
5103## Range access, ordered ##
5104SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2;
5105SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5106SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2;
5107SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5108SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2;
5109SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5110SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2;
5111SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5112SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2;
5113SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5114SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2;
5115SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5116SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2;
5117SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2;
5118SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2;
5119SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 LIMIT 2;
5120SELECT * 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;
5121SELECT * 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;
5122SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
5123SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
5124SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
5125SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
5126
5127## Range access, backwards scan ##
5128SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC;
5129SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5130SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC;
5131SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5132SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC;
5133SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5134SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC;
5135SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5136SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC;
5137SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5138SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC;
5139SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5140SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC;
5141SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2;
5142SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC;
5143SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC LIMIT 2;
5144SELECT * 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;
5145SELECT * 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;
5146SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
5147SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
5148SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
5149SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
5150## Full table scan ##
5151--sorted_result
5152SELECT * FROM t1;
5153--sorted_result
5154SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
5155--sorted_result
5156SELECT * FROM t1 WHERE c4 = '2008-01-05';
5157
5158## Forward index scan, covering ##
5159--sorted_result
5160SELECT c2 FROM t1;
5161
5162## Backward index scan, covering ##
5163SELECT c2 FROM t1 ORDER BY c2 DESC;
5164
5165## Forward index scan, non-covering ##
5166SELECT * FROM t1 ORDER BY c2 LIMIT 2;
5167
5168## Backward index scan, non-covering ##
5169SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2;
5170
5171## ref type access
5172SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2;
5173SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5174SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC;
5175SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5176
5177## Range access, ordered ##
5178SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2;
5179SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5180SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2;
5181SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5182SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2;
5183SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5184SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2;
5185SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5186SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2;
5187SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5188SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2;
5189SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2;
5190SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2;
5191SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2;
5192SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2;
5193SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2;
5194SELECT * 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;
5195SELECT * 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;
5196SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
5197SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
5198SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2;
5199SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2;
5200
5201## Range access, backwards scan ##
5202SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC;
5203SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5204SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC;
5205SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5206SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC;
5207SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5208SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC;
5209SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5210SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC;
5211SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5212SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC;
5213SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2;
5214SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC;
5215SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2;
5216SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC;
5217SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2;
5218SELECT * 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;
5219SELECT * 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;
5220SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC;
5221SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2;
5222SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC;
5223SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2;
5224
5225# Using Index-merge
5226--sorted_result
5227SELECT * FROM t1 WHERE c1='1971-01-01 00:00:01' OR c2='2038-01-09 03:14:07';
5228
5229# Using index for group-by
5230--sorted_result
5231SELECT c2 FROM t1 GROUP BY c2;
5232
5233## Full table scan ##
5234--sorted_result
5235SELECT * FROM t2;
5236--sorted_result
5237SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5238--sorted_result
5239SELECT * FROM t2 WHERE c3 = '2007-05-24';
5240
5241## Forward index scan, covering ##
5242--sorted_result
5243SELECT c1,c2 FROM t2;
5244
5245## Backward index scan, covering ##
5246SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5247
5248## Forward index scan, non-covering ##
5249SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5250
5251## Backward index scan, non-covering ##
5252SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5253
5254## ref type access
5255SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2;
5256SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5257SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5258SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5259
5260## Range access, ordered ##
5261SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2;
5262SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5263SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2;
5264SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5265SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2;
5266SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5267SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2;
5268SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5269SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2;
5270SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5271SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2;
5272SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5273SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5274SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5275SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5276SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5277SELECT * 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;
5278SELECT * 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;
5279SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5280SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5281SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5282SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5283
5284## Range access, backwards scan ##
5285SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5286SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5287SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5288SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5289SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5290SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5291SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5292SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5293SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5294SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5295SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5296SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5297SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5298SELECT * 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;
5299SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5300SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5301SELECT * 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;
5302SELECT * 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;
5303SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5304SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5305SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5306SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5307## Full table scan ##
5308--sorted_result
5309SELECT * FROM t2;
5310--sorted_result
5311SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5312--sorted_result
5313SELECT * FROM t2 WHERE c3 = '2007-05-26';
5314
5315## Forward index scan, covering ##
5316--sorted_result
5317SELECT c1,c2 FROM t2;
5318
5319## Backward index scan, covering ##
5320SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5321
5322## Forward index scan, non-covering ##
5323SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5324
5325## Backward index scan, non-covering ##
5326SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5327
5328## ref type access
5329SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
5330SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5331SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5332SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5333
5334## Range access, ordered ##
5335SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2;
5336SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5337SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2;
5338SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5339SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2;
5340SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5341SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2;
5342SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5343SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2;
5344SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5345SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2;
5346SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5347SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5348SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5349SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2;
5350SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5351SELECT * 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;
5352SELECT * 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;
5353SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5354SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5355SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5356SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5357
5358## Range access, backwards scan ##
5359SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5360SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5361SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5362SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5363SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5364SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5365SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5366SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5367SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5368SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5369SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5370SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5371SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5372SELECT * 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;
5373SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5374SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5375SELECT * 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;
5376SELECT * 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;
5377SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5378SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5379SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5380SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5381## Full table scan ##
5382--sorted_result
5383SELECT * FROM t2;
5384--sorted_result
5385SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2;
5386--sorted_result
5387SELECT * FROM t2 WHERE c3 = '1998-12-28';
5388
5389## Forward index scan, covering ##
5390--sorted_result
5391SELECT c1,c2 FROM t2;
5392
5393## Backward index scan, covering ##
5394SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5395
5396## Forward index scan, non-covering ##
5397SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5398
5399## Backward index scan, non-covering ##
5400SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5401
5402## ref type access
5403SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
5404SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5405SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5406SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5407
5408## Range access, ordered ##
5409SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
5410SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5411SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
5412SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5413SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
5414SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5415SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
5416SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5417SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
5418SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5419SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
5420SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5421SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2;
5422SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5423SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2;
5424SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2;
5425SELECT * 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;
5426SELECT * 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;
5427SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2;
5428SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5429SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5430SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5431
5432## Range access, backwards scan ##
5433SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5434SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5435SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5436SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5437SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5438SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5439SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5440SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5441SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5442SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5443SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5444SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5445SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5446SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5447SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC;
5448SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5449SELECT * 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;
5450SELECT * 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;
5451SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5452SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5453SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5454SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5455## Full table scan ##
5456--sorted_result
5457SELECT * FROM t2;
5458--sorted_result
5459SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
5460--sorted_result
5461SELECT * FROM t2 WHERE c4 = '2009-01-29';
5462
5463## Forward index scan, covering ##
5464--sorted_result
5465SELECT c1,c2 FROM t2;
5466
5467## Backward index scan, covering ##
5468SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5469
5470## Forward index scan, non-covering ##
5471SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5472
5473## Backward index scan, non-covering ##
5474SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5475
5476## ref type access
5477SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5478SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5479SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5480SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5481
5482## Range access, ordered ##
5483SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2;
5484SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5485SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2;
5486SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5487SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2;
5488SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5489SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2;
5490SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5491SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2;
5492SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5493SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2;
5494SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5495SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5496SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5497SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5498SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5499SELECT * 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;
5500SELECT * 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;
5501SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
5502SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5503SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5504SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5505
5506## Range access, backwards scan ##
5507SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5508SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5509SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5510SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5511SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5512SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5513SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5514SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5515SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5516SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5517SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5518SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5519SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5520SELECT * 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;
5521SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5522SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5523SELECT * 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;
5524SELECT * 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;
5525SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5526SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5527SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5528SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5529## Full table scan ##
5530--sorted_result
5531SELECT * FROM t2;
5532--sorted_result
5533SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2;
5534--sorted_result
5535SELECT * FROM t2 WHERE c4 = '2008-01-07';
5536
5537## Forward index scan, covering ##
5538--sorted_result
5539SELECT c1,c2 FROM t2;
5540
5541## Backward index scan, covering ##
5542SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC;
5543
5544## Forward index scan, non-covering ##
5545SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2;
5546
5547## Backward index scan, non-covering ##
5548SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2;
5549
5550## ref type access
5551SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2;
5552SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5553SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5554SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5555
5556## Range access, ordered ##
5557SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2;
5558SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5559SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2;
5560SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5561SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2;
5562SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5563SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2;
5564SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5565SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2;
5566SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5567SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2;
5568SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5569SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
5570SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5571SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2;
5572SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
5573SELECT * 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;
5574SELECT * 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;
5575SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2;
5576SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5577SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5578SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5579
5580## Range access, backwards scan ##
5581SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5582SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5583SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5584SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5585SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5586SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5587SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5588SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5589SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5590SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5591SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5592SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5593SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5594SELECT * 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;
5595SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
5596SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5597SELECT * 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;
5598SELECT * 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;
5599SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5600SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5601SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5602SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5603
5604## Full table scan ##
5605--sorted_result
5606SELECT * FROM t3;
5607--sorted_result
5608SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5609--sorted_result
5610SELECT * FROM t3 WHERE c3 = '2007-05-24';
5611
5612## Forward index scan, covering ##
5613--sorted_result
5614SELECT c1,c2 FROM t3;
5615
5616## Backward index scan, covering ##
5617SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5618
5619## Forward index scan, non-covering ##
5620SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5621
5622## Backward index scan, non-covering ##
5623SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5624
5625## ref type access
5626SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2;
5627SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5628SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5629SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5630
5631## Range access, ordered ##
5632SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2;
5633SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5634SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2;
5635SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5636SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2;
5637SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5638SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2;
5639SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5640SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2;
5641SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5642SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2;
5643SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2;
5644SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5645SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5646SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5647SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5648SELECT * 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;
5649SELECT * 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;
5650SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5651SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5652SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5653SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5654
5655## Range access, backwards scan ##
5656SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5657SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5658SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5659SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5660SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5661SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5662SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5663SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5664SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5665SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5666SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC;
5667SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2;
5668SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5669SELECT * 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;
5670SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5671SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5672SELECT * 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;
5673SELECT * 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;
5674SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5675SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5676SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5677SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5678## Full table scan ##
5679--sorted_result
5680SELECT * FROM t3;
5681--sorted_result
5682SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5683--sorted_result
5684SELECT * FROM t3 WHERE c3 = '2007-05-26';
5685
5686## Forward index scan, covering ##
5687--sorted_result
5688SELECT c1,c2 FROM t3;
5689
5690## Backward index scan, covering ##
5691SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5692
5693## Forward index scan, non-covering ##
5694SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5695
5696## Backward index scan, non-covering ##
5697SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5698
5699## ref type access
5700SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2;
5701SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5702SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5703SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5704
5705## Range access, ordered ##
5706SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2;
5707SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5708SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2;
5709SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5710SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2;
5711SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5712SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2;
5713SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5714SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2;
5715SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5716SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2;
5717SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5718SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5719SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5720SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2;
5721SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5722SELECT * 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;
5723SELECT * 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;
5724SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5725SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5726SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5727SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5728
5729## Range access, backwards scan ##
5730SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5731SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5732SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5733SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5734SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5735SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5736SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5737SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5738SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5739SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5740SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC;
5741SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5742SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5743SELECT * 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;
5744SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5745SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5746SELECT * 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;
5747SELECT * 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;
5748SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5749SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5750SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5751SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5752## Full table scan ##
5753--sorted_result
5754SELECT * FROM t3;
5755--sorted_result
5756SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3;
5757--sorted_result
5758SELECT * FROM t3 WHERE c3 = '1998-12-28';
5759
5760## Forward index scan, covering ##
5761--sorted_result
5762SELECT c1,c2 FROM t3;
5763
5764## Backward index scan, covering ##
5765SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5766
5767## Forward index scan, non-covering ##
5768SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5769
5770## Backward index scan, non-covering ##
5771SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5772
5773## ref type access
5774SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2;
5775SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5776SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5777SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5778
5779## Range access, ordered ##
5780SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2;
5781SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5782SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2;
5783SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5784SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2;
5785SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5786SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2;
5787SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5788SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2;
5789SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5790SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2;
5791SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5792SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2;
5793SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5794SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2;
5795SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2;
5796SELECT * 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;
5797SELECT * 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;
5798SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2;
5799SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
5800SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2;
5801SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5802
5803## Range access, backwards scan ##
5804SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5805SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5806SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5807SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5808SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5809SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5810SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5811SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5812SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5813SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5814SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5815SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5816SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC;
5817SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5818SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC;
5819SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5820SELECT * 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;
5821SELECT * 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;
5822SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
5823SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5824SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
5825SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5826## Full table scan ##
5827--sorted_result
5828SELECT * FROM t3;
5829--sorted_result
5830SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5831--sorted_result
5832SELECT * FROM t3 WHERE c4 = '2009-01-29';
5833
5834## Forward index scan, covering ##
5835--sorted_result
5836SELECT c1,c2 FROM t3;
5837
5838## Backward index scan, covering ##
5839SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5840
5841## Forward index scan, non-covering ##
5842SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5843
5844## Backward index scan, non-covering ##
5845SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5846
5847## ref type access
5848SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2;
5849SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5850SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5851SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5852
5853## Range access, ordered ##
5854SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2;
5855SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5856SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2;
5857SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5858SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2;
5859SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5860SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2;
5861SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5862SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2;
5863SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5864SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2;
5865SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5866SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2;
5867SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2;
5868SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2;
5869SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2;
5870SELECT * 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;
5871SELECT * 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;
5872SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
5873SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5874SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5875SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5876
5877## Range access, backwards scan ##
5878SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5879SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5880SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5881SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5882SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5883SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5884SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5885SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5886SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5887SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5888SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5889SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2;
5890SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC;
5891SELECT * 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;
5892SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC;
5893SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2;
5894SELECT * 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;
5895SELECT * 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;
5896SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5897SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5898SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5899SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5900## Full table scan ##
5901--sorted_result
5902SELECT * FROM t3;
5903--sorted_result
5904SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3;
5905--sorted_result
5906SELECT * FROM t3 WHERE c4 = '2008-01-09';
5907
5908## Forward index scan, covering ##
5909--sorted_result
5910SELECT c1,c2 FROM t3;
5911
5912## Backward index scan, covering ##
5913SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC;
5914
5915## Forward index scan, non-covering ##
5916SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2;
5917
5918## Backward index scan, non-covering ##
5919SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2;
5920
5921## ref type access
5922SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2;
5923SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5924SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5925SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5926
5927## Range access, ordered ##
5928SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2;
5929SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5930SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2;
5931SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5932SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2;
5933SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5934SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2;
5935SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5936SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2;
5937SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5938SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2;
5939SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2;
5940SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2;
5941SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2;
5942SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2;
5943SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2;
5944SELECT * 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;
5945SELECT * 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;
5946SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2;
5947SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
5948SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2;
5949SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
5950
5951## Range access, backwards scan ##
5952SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5953SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5954SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5955SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5956SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5957SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5958SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5959SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5960SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5961SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5962SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC;
5963SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2;
5964SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC;
5965SELECT * 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;
5966SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC;
5967SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2;
5968SELECT * 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;
5969SELECT * 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;
5970SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
5971SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
5972SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
5973SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
5974
5975# Using index for group-by
5976--sorted_result
5977SELECT c1 FROM t3 GROUP BY c1;
5978--sorted_result
5979SELECT DISTINCT c1 FROM t3;
5980--sorted_result
5981SELECT c1,MIN(c2) FROM t3 GROUP BY c1;
5982DROP TABLE t1,t2,t3,t4;
5983
5984