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