1--disable_warnings 2DROP TABLE IF EXISTS t1,t2,t3; 3--enable_warnings 4 5######## Running INSERT tests for DATE ######## 6 7# Create tables 8CREATE TABLE t1(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, 9 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 10 ON UPDATE CURRENT_TIMESTAMP, 11 PRIMARY KEY(c1), UNIQUE INDEX(c2)); 12CREATE TABLE t2(c1 DATE NOT NULL, c2 DATE NOT NULL, c3 DATETIME, 13 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 14 ON UPDATE CURRENT_TIMESTAMP, 15 PRIMARY KEY(c1,c2)); 16CREATE TABLE t3(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, 17 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 18 ON UPDATE CURRENT_TIMESTAMP, 19 UNIQUE INDEX idx(c1,c2)); 20CREATE TABLE t4(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, 21 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 22 ON UPDATE CURRENT_TIMESTAMP); 23 24# Insert some rows with targeted values 25 26# Disabling warnings due to Bug#21276591 27--disable_warnings 28# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format 29INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 30INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 31INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 32INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 33--enable_warnings 34 35# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD' format 36INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 37INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 38INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 39INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 40 41# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format 42INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 43INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 44INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 45INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 46 47# As the result of a function 48SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27 49INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 50INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 51INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 52INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 53 54# Insert duplicates for parts of the clustered key/unique index 55INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'); 56INSERT INTO t2 VALUES('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 57INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'); 58INSERT INTO t3 VALUES('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 59 60# Insert permissible NULLs 61INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 62INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 63INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 64 65# Insert duplicate NULLs to unique column 66INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL); 67DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL; 68 69# Insert empty string '', would be converted to zero value of the appropriate type 70--disable_query_log 71SET @save_sql_mode = @@SQL_MODE; 72SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 73--enable_query_log 74INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */; 75 76# Insert invalid dates, would be converted to zero value of the appropriate type 77INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */; 78INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */; 79 80# Insert zero dates 81INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07'); 82INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9'); 83 84# Insert non-date value(absurd values), would be converted to zero value of the appropriate type 85INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */; 86--disable_query_log 87SET SQL_MODE= @save_sql_mode; 88--enable_query_log 89 90# Now select using various table access methods (full table scan, range scan, index scan etc.) 91--sorted_result 92SELECT * FROM t1; 93--sorted_result 94SELECT * FROM t2; 95--sorted_result 96SELECT * FROM t3; 97--sorted_result 98SELECT * FROM t4; 99 100# Select from table with single column primary key and single column index, with column values zero, NULL 101## Full table scan ## 102--sorted_result 103SELECT * FROM t1; 104--sorted_result 105SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 106--sorted_result 107SELECT * FROM t1 WHERE c3 = '2007-05-24'; 108 109## Forward index scan, covering ## 110--sorted_result 111SELECT c1 FROM t1; 112 113## Backward index scan, covering ## 114SELECT c1 FROM t1 ORDER BY c1 DESC; 115 116## Forward index scan, non-covering ## 117SELECT * FROM t1 ORDER BY c1 LIMIT 2; 118 119## Backward index scan, non-covering ## 120SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 121 122## ref type access 123SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1; 124SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 125SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 126SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 127 128# Allow zero-dates 129SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=ALLOW_INVALID_DATES; 130 131## Range access, ordered ## 132SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1; 133SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 134SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1; 135SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 136SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1; 137SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 138SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1; 139SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 140SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1; 141SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 142SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1; 143SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 144SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1; 145SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2; 146SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1; 147SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2; 148SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1; 149SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2; 150SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 151SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 152SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 153SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 154 155## Range access, backwards scan ## 156SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC; 157SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 158SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC; 159SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 160SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC; 161SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 162SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC; 163SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 164SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC; 165SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 166SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC; 167SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 168SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC; 169SELECT * FROM t1 WHERE c1 BETWEEN '1900-01-01 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2; 170SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC; 171SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2; 172SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC; 173SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2; 174SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 175SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 176SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 177SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 178## Full table scan ## 179--sorted_result 180SELECT * FROM t1; 181--sorted_result 182SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 183--sorted_result 184SELECT * FROM t1 WHERE c3 = '2007-05-26'; 185 186## Forward index scan, covering ## 187--sorted_result 188SELECT c1 FROM t1; 189 190## Backward index scan, covering ## 191SELECT c1 FROM t1 ORDER BY c1 DESC; 192 193## Forward index scan, non-covering ## 194SELECT * FROM t1 ORDER BY c1 LIMIT 2; 195 196## Backward index scan, non-covering ## 197SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 198 199## ref type access 200SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1; 201SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2; 202SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC; 203SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2; 204 205## Range access, ordered ## 206SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1; 207# Disabling warnings due to #52283 208--disable_warnings 209SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2; 210--enable_warnings 211SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1; 212--disable_warnings 213SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2; 214--enable_warnings 215SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1; 216--disable_warnings 217SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2; 218--enable_warnings 219SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1; 220SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2; 221SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1; 222SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2; 223SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1; 224SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2; 225SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1; 226--disable_warnings 227SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2; 228--enable_warnings 229SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1; 230SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2; 231SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1; 232SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 233SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 234SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 235SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 236SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 237 238## Range access, backwards scan ## 239SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC; 240# Disabling warnings due to #52283 241--disable_warnings 242SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 243--enable_warnings 244SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC; 245SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2; 246SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC; 247SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 248SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC; 249SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2; 250SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC; 251SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 252SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC; 253SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 254SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC; 255SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2; 256SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC; 257SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2; 258SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 259SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 260SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 261SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 262SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 263SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 264## Full table scan ## 265--sorted_result 266SELECT * FROM t1; 267--sorted_result 268SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 269--sorted_result 270SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00'; 271 272## Forward index scan, covering ## 273--sorted_result 274SELECT c2 FROM t1; 275 276## Backward index scan, covering ## 277SELECT c2 FROM t1 ORDER BY c2 DESC; 278 279## Forward index scan, non-covering ## 280SELECT * FROM t1 ORDER BY c2 LIMIT 2; 281 282## Backward index scan, non-covering ## 283SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 284 285## ref type access 286SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2; 287SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 288SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC; 289SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 290 291## Range access, ordered ## 292SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2; 293SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 294SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2; 295SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 296SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2; 297SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 298SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2; 299SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 300SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2; 301SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 302SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2; 303SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 304SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2; 305# Disabling warnings due to #52283 306--disable_warnings 307SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2; 308--enable_warnings 309SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2; 310SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2; 311SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2; 312SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2; 313SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 314SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 315SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 316SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 317 318## Range access, backwards scan ## 319SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC; 320SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 321SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC; 322SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 323SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC; 324SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 325SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC; 326SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 327SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC; 328SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 329SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC; 330SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 331SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC; 332# Disabling warnings due to #52283 333--disable_warnings 334SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2; 335--enable_warnings 336SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC; 337SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2; 338SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC; 339SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 340SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 341SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 342SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 343SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 344 345# Select from table with clustered primary key, with column values zero, NULL 346## Full table scan ## 347--sorted_result 348SELECT * FROM t2; 349--sorted_result 350SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 351--sorted_result 352SELECT * FROM t2 WHERE c3 = '2008-01-06'; 353 354## Forward index scan, covering ## 355--sorted_result 356SELECT c1,c2 FROM t2; 357 358## Backward index scan, covering ## 359SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 360 361## Forward index scan, non-covering ## 362SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 363 364## Backward index scan, non-covering ## 365SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 366 367## ref type access 368SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2; 369SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 370SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 371SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 372 373## Range access, ordered ## 374SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 375SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 376SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2; 377SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 378SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 379SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 380SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2; 381SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 382SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 383SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 384SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 385SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 386SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 387SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 388SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 389SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 390SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 391SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 392SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 393SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 394SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 395SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 396 397## Range access, backwards scan ## 398SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 399SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 400SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 401SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 402SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 403SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 404SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 405SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 406SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 407SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 408SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 409SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 410SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 411SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 412SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 413SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 414SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 415SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 416SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 417SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 418SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 419SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 420## Full table scan ## 421--sorted_result 422SELECT * FROM t2; 423--sorted_result 424SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 425--sorted_result 426SELECT * FROM t2 WHERE c3 = '1998-12-29'; 427 428## Forward index scan, covering ## 429--sorted_result 430SELECT c1,c2 FROM t2; 431 432## Backward index scan, covering ## 433SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 434 435## Forward index scan, non-covering ## 436SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 437 438## Backward index scan, non-covering ## 439SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 440 441## ref type access 442SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 443SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 444SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 445SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 446 447## Range access, ordered ## 448SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 449# Disabling warnings due to #52283 450--disable_warnings 451SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 452--enable_warnings 453SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 454--disable_warnings 455SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 456--enable_warnings 457SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 458--disable_warnings 459SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 460--enable_warnings 461SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 462SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 463SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 464SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 465SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 466SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 467SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 468--disable_warnings 469SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 470--enable_warnings 471SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 472SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 473SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2; 474SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 475SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 476SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 477SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 478SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 479 480## Range access, backwards scan ## 481SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 482SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 483SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 484SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 485SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 486SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 487SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 488SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 489SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 490SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 491SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 492SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 493SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 494SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 495SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 496SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 497SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 498SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 499SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 500SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 501SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 502SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 503## Full table scan ## 504--sorted_result 505SELECT * FROM t2; 506--sorted_result 507SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 508--sorted_result 509SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28'; 510 511## Forward index scan, covering ## 512--sorted_result 513SELECT c1,c2 FROM t2; 514 515## Backward index scan, covering ## 516SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 517 518## Forward index scan, non-covering ## 519SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 520 521## Backward index scan, non-covering ## 522SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 523 524## ref type access 525SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2; 526SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 527SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 528SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 529 530## Range access, ordered ## 531SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2; 532SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 533SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2; 534SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 535SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2; 536SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 537SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2; 538SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 539SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2; 540SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 541SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2; 542SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 543SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 544SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 545SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 546SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 547SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 548SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 549SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 550SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 551SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 552SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 553 554## Range access, backwards scan ## 555SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 556SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 557SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 558SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 559SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 560SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 561SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 562SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 563SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 564SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 565SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 566SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 567SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 568SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 569SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 570SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 571SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 572SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 573SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 574SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 575SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 576SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 577 578# Select from table with clustered index, with column values zero, NULL 579## Full table scan ## 580--sorted_result 581SELECT * FROM t3; 582--sorted_result 583SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 584--sorted_result 585SELECT * FROM t3 WHERE c3 = '2007-05-24'; 586 587## Forward index scan, covering ## 588--sorted_result 589SELECT c1,c2 FROM t3; 590 591## Backward index scan, covering ## 592SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 593 594## Forward index scan, non-covering ## 595SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 596 597## Backward index scan, non-covering ## 598SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 599 600## ref type access 601SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2; 602SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 603SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 604SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 605 606## Range access, ordered ## 607SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2; 608SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 609SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2; 610SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 611SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2; 612SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 613SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2; 614SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 615SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2; 616SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 617SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2; 618SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 619SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2; 620SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2; 621SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2; 622SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2; 623SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2; 624SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 625SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 626SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 627SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 628SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 629 630## Range access, backwards scan ## 631SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 632SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 633SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 634SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 635SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 636SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 637SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 638SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 639SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 640SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 641SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 642SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 643SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC; 644SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 645SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC; 646SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 647SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 648SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 649SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 650SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 651SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 652SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 653## Full table scan ## 654--sorted_result 655SELECT * FROM t3; 656--sorted_result 657SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 658--sorted_result 659SELECT * FROM t3 WHERE c3 = '1998-12-29'; 660 661## Forward index scan, covering ## 662--sorted_result 663SELECT c1,c2 FROM t3; 664 665## Backward index scan, covering ## 666SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 667 668## Forward index scan, non-covering ## 669SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 670 671## Backward index scan, non-covering ## 672SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 673 674## ref type access 675SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 676SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 677SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 678SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 679 680## Range access, ordered ## 681SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 682# Disabling warnings due to #52283 683--disable_warnings 684SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 685--enable_warnings 686SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 687--disable_warnings 688SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 689--enable_warnings 690SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 691--disable_warnings 692SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 693--enable_warnings 694SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 695SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 696SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 697SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 698SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 699SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 700SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 701--disable_warnings 702SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 703--enable_warnings 704SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 705SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 706SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 707SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 708SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 709SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 710SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 711SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 712 713## Range access, backwards scan ## 714SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 715SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 716SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 717SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 718SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 719SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 720SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 721SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 722SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 723SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 724SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 725SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 726SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 727SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 728SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 729SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 730SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 731SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 732SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 733SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 734SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 735SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 736## Full table scan ## 737--sorted_result 738SELECT * FROM t3; 739--sorted_result 740SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 741--sorted_result 742SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28'; 743 744## Forward index scan, covering ## 745--sorted_result 746SELECT c1,c2 FROM t3; 747 748## Backward index scan, covering ## 749SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 750 751## Forward index scan, non-covering ## 752SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 753 754## Backward index scan, non-covering ## 755SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 756 757## ref type access 758SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2; 759SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 760SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 761SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 762 763## Range access, ordered ## 764SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 765SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 766SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2; 767SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 768SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 769SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 770SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2; 771SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 772SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 773SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 774SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 775SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 776SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2; 777SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 778SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2; 779SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2; 780SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 781SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 782SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 783SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 784SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 785SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 786 787## Range access, backwards scan ## 788SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 789SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 790SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 791SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 792SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 793SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 794SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 795SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 796SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 797SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 798SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 799SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 800SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 801SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 802SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC; 803SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2; 804SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 805SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 806SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 807SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 808SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 809SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 810 811SET @@SQL_MODE=@OLD_SQL_MODE; 812 813# Test Error conditions- PK constraint violation, Unique constraint violation 814 815# Insert duplicate value to pk column 816--error ER_DUP_ENTRY 817INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */; 818 819# Insert duplicate value to clustered pk, throws error 820--error ER_DUP_ENTRY 821INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 822 823# Insert duplicate value to unique column, throws error 824--error ER_DUP_ENTRY 825INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */; 826 827# Insert duplicate value to clustered unique column, throws error 828--error ER_DUP_ENTRY 829INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 830 831# Test 'INSERT IGNORE' with the same rows that reported constraint violation above 832# Ignore pk constraint 833INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */; 834INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 835# Ignore unique constraint 836INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */; 837INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 838# Test that the rows are same 839SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */; 840SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 841SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */; 842SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 843 844# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK 845SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */; 846INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527'; 847SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */; 848 849# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK 850SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 851INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 852SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */; 853 854# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique 855SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 856INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 857SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 858 859# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique 860SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 861INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 862SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 863 864# Test 'INSERT SET' 865INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01'; 866INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01'; 867INSERT INTO t3 SET c1='1999-01-01'; 868--error ER_NO_DEFAULT_FOR_FIELD 869INSERT INTO t4 SET c2='1999-01-01'; 870SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 871SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 872SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */; 873SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 874 875# Test 'INSERT INTO SELECT FROM' 876CREATE TABLE t5(c1 DATE NOT NULL, c2 DATE NULL, c3 DATETIME, c4 TIMESTAMP, INDEX idx(c1,c2)); 877 878--disable_query_log 879SET @save_sql_mode = @@SQL_MODE; 880SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 881--enable_query_log 882 883INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528'; 884--sorted_result 885SELECT * FROM t5; 886TRUNCATE TABLE t5; 887INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525'; 888--sorted_result 889SELECT * FROM t5; 890TRUNCATE TABLE t5; 891INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45'; 892--sorted_result 893SELECT * FROM t5; 894TRUNCATE TABLE t5; 895DROP TABLE t5; 896 897--disable_query_log 898SET SQL_MODE= @save_sql_mode; 899--enable_query_log 900 901# Test Specific values to column types 902 903# Test insert values across range to 'DATE' columns 904INSERT INTO t1 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12'); 905INSERT INTO t2 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12'); 906INSERT INTO t3 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12'); 907INSERT INTO t4 VALUES('1000-01-01','2000-01-01','2009-01-01','2009-01-02'),('3000-01-01','4000-01-01','2009-01-03','2009-01-04'),('5000-01-01','6000-01-01','2009-01-05','2009-01-06'),('7000-01-01','8000-01-01','2009-01-07','2009-01-08'),('9000-01-01','9000-01-01','2009-01-09','2009-01-10'),('9999-12-31','9999-12-31','2009-01-11','2009-01-12'); 908 909# Insert valid dates containing a zero for the month or for the day 910--disable_query_log 911SET @save_sql_mode = @@SQL_MODE; 912SET SQL_MODE='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 913--enable_query_log 914INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00'); 915INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00'); 916INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00'); 917INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00'); 918 919# Insert invalid dates, inserts zero values 920INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32'); 921 922# Test insert NULL to non-null column 923--error ER_BAD_NULL_ERROR 924INSERT INTO t1(c1) VALUES(NULL); 925--error ER_BAD_NULL_ERROR 926INSERT INTO t2(c1) VALUES(NULL); 927--error ER_BAD_NULL_ERROR 928INSERT INTO t3 VALUES(NULL,'2008-01-14','08-01-15','08/01/16'); 929--error ER_BAD_NULL_ERROR 930INSERT INTO t4 VALUES(NULL,'2008-01-14','08-01-15','08/01/16'); 931 932--disable_query_log 933SET SQL_MODE= @save_sql_mode; 934--enable_query_log 935 936# Test INSERT SET with no default for not null column 937SET SQL_MODE=STRICT_ALL_TABLES; 938--error ER_NO_DEFAULT_FOR_FIELD 939INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */; 940SET SQL_MODE=''; 941 942--sorted_result 943SELECT * FROM t1; 944--sorted_result 945SELECT * FROM t2; 946--sorted_result 947SELECT * FROM t3; 948--sorted_result 949SELECT * FROM t4; 950# Now select using various table access methods 951## Full table scan ## 952--sorted_result 953SELECT * FROM t1; 954--sorted_result 955SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 956--sorted_result 957SELECT * FROM t1 WHERE c3 = '2007-05-24 09:15:28'; 958 959## Forward index scan, covering ## 960--sorted_result 961SELECT c1 FROM t1; 962 963## Backward index scan, covering ## 964SELECT c1 FROM t1 ORDER BY c1 DESC; 965 966## Forward index scan, non-covering ## 967SELECT * FROM t1 ORDER BY c1 LIMIT 2; 968 969## Backward index scan, non-covering ## 970SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 971 972## ref type access 973SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1; 974SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 LIMIT 2; 975SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC; 976SELECT * FROM t1 WHERE c1 = '1000-00-01' ORDER BY c1 DESC LIMIT 2; 977 978## Range access, ordered ## 979SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1; 980SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 LIMIT 2; 981SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1; 982SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 LIMIT 2; 983SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1; 984SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 LIMIT 2; 985SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1; 986SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 LIMIT 2; 987SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1; 988SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 LIMIT 2; 989SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1; 990SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 LIMIT 2; 991SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1; 992SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 LIMIT 2; 993SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1; 994SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 LIMIT 2; 995SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1; 996SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 LIMIT 2; 997SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 998SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 999SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 1000SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 1001 1002## Range access, backwards scan ## 1003SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC; 1004SELECT * FROM t1 WHERE c1 <> '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1005SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC; 1006SELECT * FROM t1 WHERE c1 > '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1007SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC; 1008SELECT * FROM t1 WHERE c1 >= '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1009SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC; 1010SELECT * FROM t1 WHERE c1 < '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1011SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC; 1012SELECT * FROM t1 WHERE c1 <= '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1013SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC; 1014SELECT * FROM t1 WHERE c1 <=> '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1015SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC; 1016SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2; 1017SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC; 1018SELECT * FROM t1 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1 DESC LIMIT 2; 1019SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC; 1020SELECT * FROM t1 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1 DESC LIMIT 2; 1021SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 1022SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 1023SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 1024SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 1025## Full table scan ## 1026--sorted_result 1027SELECT * FROM t1; 1028--sorted_result 1029SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 1030--sorted_result 1031SELECT * FROM t1 WHERE c3 = '2007-05-26 00:00:00'; 1032 1033## Forward index scan, covering ## 1034--sorted_result 1035SELECT c1 FROM t1; 1036 1037## Backward index scan, covering ## 1038SELECT c1 FROM t1 ORDER BY c1 DESC; 1039 1040## Forward index scan, non-covering ## 1041SELECT * FROM t1 ORDER BY c1 LIMIT 2; 1042 1043## Backward index scan, non-covering ## 1044SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 1045 1046## ref type access 1047SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1; 1048SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2; 1049SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC; 1050SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1051 1052## Range access, ordered ## 1053SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1; 1054SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2; 1055SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1; 1056SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2; 1057SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1; 1058SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2; 1059SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1; 1060SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2; 1061SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1; 1062SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2; 1063SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1; 1064SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2; 1065SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1; 1066SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 LIMIT 2; 1067SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1; 1068SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 LIMIT 2; 1069SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1; 1070SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2; 1071SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 1072SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 1073SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 1074SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 1075 1076## Range access, backwards scan ## 1077SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC; 1078SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1079SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC; 1080SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1081SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC; 1082SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1083SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC; 1084SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1085SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC; 1086SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1087SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC; 1088SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 1089SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC; 1090SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1 DESC LIMIT 2; 1091SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC; 1092SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1 DESC LIMIT 2; 1093SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC; 1094SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2; 1095SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 1096SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 1097SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 1098SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 1099## Full table scan ## 1100--sorted_result 1101SELECT * FROM t1; 1102--sorted_result 1103SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 1104--sorted_result 1105SELECT * FROM t1 WHERE c3 = '1998-12-28 00:00:00'; 1106 1107## Forward index scan, covering ## 1108--sorted_result 1109SELECT c1 FROM t1; 1110 1111## Backward index scan, covering ## 1112SELECT c1 FROM t1 ORDER BY c1 DESC; 1113 1114## Forward index scan, non-covering ## 1115SELECT * FROM t1 ORDER BY c1 LIMIT 2; 1116 1117## Backward index scan, non-covering ## 1118SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 1119 1120## ref type access 1121SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1; 1122SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 LIMIT 2; 1123SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC; 1124SELECT * FROM t1 WHERE c1 = '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1125 1126## Range access, ordered ## 1127SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1; 1128SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 LIMIT 2; 1129SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1; 1130SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 LIMIT 2; 1131SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1; 1132SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 LIMIT 2; 1133SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1; 1134SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 LIMIT 2; 1135SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1; 1136SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 LIMIT 2; 1137SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1; 1138SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 LIMIT 2; 1139SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1; 1140SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 LIMIT 2; 1141SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1; 1142SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 LIMIT 2; 1143SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1; 1144SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 LIMIT 2; 1145SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 1146SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 1147SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 1148SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 1149 1150## Range access, backwards scan ## 1151SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC; 1152SELECT * FROM t1 WHERE c1 <> '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1153SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC; 1154SELECT * FROM t1 WHERE c1 > '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1155SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC; 1156SELECT * FROM t1 WHERE c1 >= '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1157SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC; 1158SELECT * FROM t1 WHERE c1 < '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1159SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC; 1160SELECT * FROM t1 WHERE c1 <= '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1161SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC; 1162SELECT * FROM t1 WHERE c1 <=> '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1163SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC; 1164SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1 DESC LIMIT 2; 1165SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC; 1166SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1 DESC LIMIT 2; 1167SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC; 1168SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1 DESC LIMIT 2; 1169SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 1170SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 1171SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 1172SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 1173## Full table scan ## 1174--sorted_result 1175SELECT * FROM t1; 1176--sorted_result 1177SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 1178--sorted_result 1179SELECT * FROM t1 WHERE c4 = '2009-01-29'; 1180 1181## Forward index scan, covering ## 1182--sorted_result 1183SELECT c2 FROM t1; 1184 1185## Backward index scan, covering ## 1186SELECT c2 FROM t1 ORDER BY c2 DESC; 1187 1188## Forward index scan, non-covering ## 1189SELECT * FROM t1 ORDER BY c2 LIMIT 2; 1190 1191## Backward index scan, non-covering ## 1192SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 1193 1194## ref type access 1195SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2; 1196SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 LIMIT 2; 1197SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC; 1198SELECT * FROM t1 WHERE c2 = '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1199 1200## Range access, ordered ## 1201SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2; 1202SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 LIMIT 2; 1203SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2; 1204SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 LIMIT 2; 1205SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2; 1206SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 LIMIT 2; 1207SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2; 1208SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 LIMIT 2; 1209SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2; 1210SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 LIMIT 2; 1211SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2; 1212SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 LIMIT 2; 1213SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2; 1214SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 LIMIT 2; 1215SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2; 1216SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 LIMIT 2; 1217SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2; 1218SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 LIMIT 2; 1219SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 1220SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 1221SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 1222SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 1223 1224## Range access, backwards scan ## 1225SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC; 1226SELECT * FROM t1 WHERE c2 <> '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1227SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC; 1228SELECT * FROM t1 WHERE c2 > '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1229SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC; 1230SELECT * FROM t1 WHERE c2 >= '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1231SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC; 1232SELECT * FROM t1 WHERE c2 < '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1233SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC; 1234SELECT * FROM t1 WHERE c2 <= '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1235SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC; 1236SELECT * FROM t1 WHERE c2 <=> '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1237SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC; 1238SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1239SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC; 1240SELECT * FROM t1 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c2 DESC LIMIT 2; 1241SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC; 1242SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c2 DESC LIMIT 2; 1243SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 1244SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 1245SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 1246SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 1247## Full table scan ## 1248--sorted_result 1249SELECT * FROM t1; 1250--sorted_result 1251SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 1252--sorted_result 1253SELECT * FROM t1 WHERE c4 = '2008-01-05'; 1254 1255## Forward index scan, covering ## 1256--sorted_result 1257SELECT c2 FROM t1; 1258 1259## Backward index scan, covering ## 1260SELECT c2 FROM t1 ORDER BY c2 DESC; 1261 1262## Forward index scan, non-covering ## 1263SELECT * FROM t1 ORDER BY c2 LIMIT 2; 1264 1265## Backward index scan, non-covering ## 1266SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 1267 1268## ref type access 1269SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2; 1270SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 LIMIT 2; 1271SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC; 1272SELECT * FROM t1 WHERE c2 = '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1273 1274## Range access, ordered ## 1275SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2; 1276SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 LIMIT 2; 1277SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2; 1278SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 LIMIT 2; 1279SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2; 1280SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 LIMIT 2; 1281SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2; 1282SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 LIMIT 2; 1283SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2; 1284SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 LIMIT 2; 1285SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2; 1286SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 LIMIT 2; 1287SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2; 1288SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 LIMIT 2; 1289SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2; 1290SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 LIMIT 2; 1291SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2; 1292SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 LIMIT 2; 1293SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 1294SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 1295SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 1296SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 1297 1298## Range access, backwards scan ## 1299SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC; 1300SELECT * FROM t1 WHERE c2 <> '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1301SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC; 1302SELECT * FROM t1 WHERE c2 > '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1303SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC; 1304SELECT * FROM t1 WHERE c2 >= '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1305SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC; 1306SELECT * FROM t1 WHERE c2 < '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1307SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC; 1308SELECT * FROM t1 WHERE c2 <= '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1309SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC; 1310SELECT * FROM t1 WHERE c2 <=> '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1311SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC; 1312SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c2 DESC LIMIT 2; 1313SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC; 1314SELECT * FROM t1 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c2 DESC LIMIT 2; 1315SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC; 1316SELECT * FROM t1 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c2 DESC LIMIT 2; 1317SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 1318SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 1319SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 1320SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 1321 1322# Using Index-merge 1323--sorted_result 1324SELECT * FROM t1 WHERE c1='1000-00-01' OR c2='9999-12-31'; 1325 1326# Using index for group-by 1327--sorted_result 1328SELECT c2 FROM t1 GROUP BY c2; 1329 1330## Full table scan ## 1331--sorted_result 1332SELECT * FROM t2; 1333--sorted_result 1334SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1335--sorted_result 1336SELECT * FROM t2 WHERE c3 = '2007-05-24 09:15:28'; 1337 1338## Forward index scan, covering ## 1339--sorted_result 1340SELECT c1,c2 FROM t2; 1341 1342## Backward index scan, covering ## 1343SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 1344 1345## Forward index scan, non-covering ## 1346SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 1347 1348## Backward index scan, non-covering ## 1349SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 1350 1351## ref type access 1352SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2; 1353SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1354SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC; 1355SELECT * FROM t2 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1356 1357## Range access, ordered ## 1358SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2; 1359SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1360SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2; 1361SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1362SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2; 1363SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1364SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2; 1365SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1366SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2; 1367SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1368SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2; 1369SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1370SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2; 1371SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1372SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2; 1373SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1374SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2; 1375SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1376SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 1377SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1378SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1379SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1380 1381## Range access, backwards scan ## 1382SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC; 1383SELECT * FROM t2 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1384SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC; 1385SELECT * FROM t2 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1386SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC; 1387SELECT * FROM t2 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1388SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC; 1389SELECT * FROM t2 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1390SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC; 1391SELECT * FROM t2 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1392SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC; 1393SELECT * FROM t2 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1394SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC; 1395SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1396SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC; 1397SELECT * FROM t2 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1398SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC; 1399SELECT * FROM t2 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1400SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1401SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1402SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1403SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1404## Full table scan ## 1405--sorted_result 1406SELECT * FROM t2; 1407--sorted_result 1408SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1409--sorted_result 1410SELECT * FROM t2 WHERE c3 = '2007-05-26 00:00:00'; 1411 1412## Forward index scan, covering ## 1413--sorted_result 1414SELECT c1,c2 FROM t2; 1415 1416## Backward index scan, covering ## 1417SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 1418 1419## Forward index scan, non-covering ## 1420SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 1421 1422## Backward index scan, non-covering ## 1423SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 1424 1425## ref type access 1426SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 1427SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1428SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 1429SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1430 1431## Range access, ordered ## 1432SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 1433SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1434SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 1435SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1436SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 1437SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1438SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 1439SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1440SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 1441SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1442SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 1443SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1444SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2; 1445SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1446SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2; 1447SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1448SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2; 1449SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1450SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 1451SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1452SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1453SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1454 1455## Range access, backwards scan ## 1456SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 1457SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1458SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 1459SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1460SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 1461SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1462SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 1463SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1464SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 1465SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1466SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 1467SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1468SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC; 1469SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1470SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC; 1471SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1472SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC; 1473SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1474SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1475SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1476SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1477SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1478## Full table scan ## 1479--sorted_result 1480SELECT * FROM t2; 1481--sorted_result 1482SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1483--sorted_result 1484SELECT * FROM t2 WHERE c3 = '1998-12-28 00:00:00'; 1485 1486## Forward index scan, covering ## 1487--sorted_result 1488SELECT c1,c2 FROM t2; 1489 1490## Backward index scan, covering ## 1491SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 1492 1493## Forward index scan, non-covering ## 1494SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 1495 1496## Backward index scan, non-covering ## 1497SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 1498 1499## ref type access 1500SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2; 1501SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1502SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC; 1503SELECT * FROM t2 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1504 1505## Range access, ordered ## 1506SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2; 1507SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1508SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2; 1509SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1510SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2; 1511SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1512SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2; 1513SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1514SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2; 1515SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1516SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2; 1517SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1518SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2; 1519SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1520SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2; 1521SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2; 1522SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2; 1523SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1524SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 1525SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1526SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1527SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1528 1529## Range access, backwards scan ## 1530SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC; 1531SELECT * FROM t2 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1532SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC; 1533SELECT * FROM t2 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1534SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC; 1535SELECT * FROM t2 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1536SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC; 1537SELECT * FROM t2 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1538SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC; 1539SELECT * FROM t2 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1540SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC; 1541SELECT * FROM t2 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1542SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC; 1543SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1544SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC; 1545SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2; 1546SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC; 1547SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1548SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1549SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1550SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1551SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1552## Full table scan ## 1553--sorted_result 1554SELECT * FROM t2; 1555--sorted_result 1556SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 1557--sorted_result 1558SELECT * FROM t2 WHERE c4 = '2009-01-29'; 1559 1560## Forward index scan, covering ## 1561--sorted_result 1562SELECT c1,c2 FROM t2; 1563 1564## Backward index scan, covering ## 1565SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 1566 1567## Forward index scan, non-covering ## 1568SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 1569 1570## Backward index scan, non-covering ## 1571SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 1572 1573## ref type access 1574SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2; 1575SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1576SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC; 1577SELECT * FROM t2 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1578 1579## Range access, ordered ## 1580SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2; 1581SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1582SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2; 1583SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1584SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2; 1585SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1586SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2; 1587SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1588SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2; 1589SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1590SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2; 1591SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1592SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2; 1593SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1594SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2; 1595SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1596SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2; 1597SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1598SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 1599SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 1600SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 1601SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1602 1603## Range access, backwards scan ## 1604SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC; 1605SELECT * FROM t2 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1606SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC; 1607SELECT * FROM t2 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1608SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC; 1609SELECT * FROM t2 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1610SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC; 1611SELECT * FROM t2 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1612SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC; 1613SELECT * FROM t2 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1614SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC; 1615SELECT * FROM t2 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1616SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC; 1617SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1618SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC; 1619SELECT * FROM t2 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1620SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC; 1621SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1622SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 1623SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1624SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 1625SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1626## Full table scan ## 1627--sorted_result 1628SELECT * FROM t2; 1629--sorted_result 1630SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 1631--sorted_result 1632SELECT * FROM t2 WHERE c4 = '2008-01-07'; 1633 1634## Forward index scan, covering ## 1635--sorted_result 1636SELECT c1,c2 FROM t2; 1637 1638## Backward index scan, covering ## 1639SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 1640 1641## Forward index scan, non-covering ## 1642SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 1643 1644## Backward index scan, non-covering ## 1645SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 1646 1647## ref type access 1648SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2; 1649SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1650SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC; 1651SELECT * FROM t2 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1652 1653## Range access, ordered ## 1654SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2; 1655SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1656SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2; 1657SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1658SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2; 1659SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1660SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2; 1661SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1662SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2; 1663SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1664SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2; 1665SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1666SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2; 1667SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1668SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2; 1669SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2; 1670SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2; 1671SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1672SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 1673SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 1674SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 1675SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1676 1677## Range access, backwards scan ## 1678SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC; 1679SELECT * FROM t2 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1680SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC; 1681SELECT * FROM t2 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1682SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC; 1683SELECT * FROM t2 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1684SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC; 1685SELECT * FROM t2 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1686SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC; 1687SELECT * FROM t2 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1688SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC; 1689SELECT * FROM t2 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1690SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC; 1691SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1692SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC; 1693SELECT * FROM t2 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2; 1694SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC; 1695SELECT * FROM t2 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1696SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 1697SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1698SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 1699SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1700## Full table scan ## 1701--sorted_result 1702SELECT * FROM t3; 1703--sorted_result 1704SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 1705--sorted_result 1706SELECT * FROM t3 WHERE c3 = '2007-05-24 09:15:28'; 1707 1708## Forward index scan, covering ## 1709--sorted_result 1710SELECT c1,c2 FROM t3; 1711 1712## Backward index scan, covering ## 1713SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 1714 1715## Forward index scan, non-covering ## 1716SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 1717 1718## Backward index scan, non-covering ## 1719SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 1720 1721## ref type access 1722SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2; 1723SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1724SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC; 1725SELECT * FROM t3 WHERE c1 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1726 1727## Range access, ordered ## 1728SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2; 1729SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1730SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2; 1731SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1732SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2; 1733SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1734SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2; 1735SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1736SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2; 1737SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1738SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2; 1739SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1740SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2; 1741SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1742SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2; 1743SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1744SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2; 1745SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 LIMIT 2; 1746SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 1747SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1748SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1749SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1750 1751## Range access, backwards scan ## 1752SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC; 1753SELECT * FROM t3 WHERE c1 <> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1754SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC; 1755SELECT * FROM t3 WHERE c1 > '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1756SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC; 1757SELECT * FROM t3 WHERE c1 >= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1758SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC; 1759SELECT * FROM t3 WHERE c1 < '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1760SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC; 1761SELECT * FROM t3 WHERE c1 <= '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1762SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC; 1763SELECT * FROM t3 WHERE c1 <=> '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1764SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC; 1765SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1766SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC; 1767SELECT * FROM t3 WHERE c1 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1768SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC; 1769SELECT * FROM t3 WHERE c1 >= '1000-00-01' AND c1 < '9999-12-31' AND c2 = '1000-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1770SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1771SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1772SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1773SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1774## Full table scan ## 1775--sorted_result 1776SELECT * FROM t3; 1777--sorted_result 1778SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 1779--sorted_result 1780SELECT * FROM t3 WHERE c3 = '2007-05-26 00:00:00'; 1781 1782## Forward index scan, covering ## 1783--sorted_result 1784SELECT c1,c2 FROM t3; 1785 1786## Backward index scan, covering ## 1787SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 1788 1789## Forward index scan, non-covering ## 1790SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 1791 1792## Backward index scan, non-covering ## 1793SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 1794 1795## ref type access 1796SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 1797SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1798SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 1799SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1800 1801## Range access, ordered ## 1802SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 1803SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1804SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 1805SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1806SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 1807SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1808SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 1809SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1810SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 1811SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1812SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 1813SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 1814SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2; 1815SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1816SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2; 1817SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1818SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2; 1819SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1820SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 1821SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1822SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1823SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1824 1825## Range access, backwards scan ## 1826SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 1827SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1828SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 1829SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1830SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 1831SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1832SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 1833SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1834SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 1835SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1836SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 1837SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 1838SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC; 1839SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1840SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC; 1841SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1842SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC; 1843SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1844SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1845SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1846SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1847SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1848## Full table scan ## 1849--sorted_result 1850SELECT * FROM t3; 1851--sorted_result 1852SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 1853--sorted_result 1854SELECT * FROM t3 WHERE c3 = '1998-12-28 00:00:00'; 1855 1856## Forward index scan, covering ## 1857--sorted_result 1858SELECT c1,c2 FROM t3; 1859 1860## Backward index scan, covering ## 1861SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 1862 1863## Forward index scan, non-covering ## 1864SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 1865 1866## Backward index scan, non-covering ## 1867SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 1868 1869## ref type access 1870SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2; 1871SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1872SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC; 1873SELECT * FROM t3 WHERE c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1874 1875## Range access, ordered ## 1876SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2; 1877SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1878SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2; 1879SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1880SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2; 1881SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1882SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2; 1883SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1884SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2; 1885SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1886SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2; 1887SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1888SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2; 1889SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 LIMIT 2; 1890SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2; 1891SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 LIMIT 2; 1892SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2; 1893SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 1894SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 1895SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 1896SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 1897SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1898 1899## Range access, backwards scan ## 1900SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC; 1901SELECT * FROM t3 WHERE c1 <> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1902SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC; 1903SELECT * FROM t3 WHERE c1 > '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1904SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC; 1905SELECT * FROM t3 WHERE c1 >= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1906SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC; 1907SELECT * FROM t3 WHERE c1 < '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1908SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC; 1909SELECT * FROM t3 WHERE c1 <= '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1910SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC; 1911SELECT * FROM t3 WHERE c1 <=> '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1912SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC; 1913SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 1914SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC; 1915SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01') ORDER BY c1,c2 DESC LIMIT 2; 1916SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC; 1917SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01' AND c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 1918SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 1919SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1920SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 1921SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1922## Full table scan ## 1923--sorted_result 1924SELECT * FROM t3; 1925--sorted_result 1926SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1927--sorted_result 1928SELECT * FROM t3 WHERE c4 = '2009-01-29'; 1929 1930## Forward index scan, covering ## 1931--sorted_result 1932SELECT c1,c2 FROM t3; 1933 1934## Backward index scan, covering ## 1935SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 1936 1937## Forward index scan, non-covering ## 1938SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 1939 1940## Backward index scan, non-covering ## 1941SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 1942 1943## ref type access 1944SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2; 1945SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1946SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC; 1947SELECT * FROM t3 WHERE c2 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1948 1949## Range access, ordered ## 1950SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2; 1951SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1952SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2; 1953SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1954SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2; 1955SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1956SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2; 1957SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1958SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2; 1959SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1960SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2; 1961SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1962SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2; 1963SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1964SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2; 1965SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 LIMIT 2; 1966SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2; 1967SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 LIMIT 2; 1968SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 1969SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 1970SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 1971SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 1972 1973## Range access, backwards scan ## 1974SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC; 1975SELECT * FROM t3 WHERE c2 <> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1976SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC; 1977SELECT * FROM t3 WHERE c2 > '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1978SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC; 1979SELECT * FROM t3 WHERE c2 >= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1980SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC; 1981SELECT * FROM t3 WHERE c2 < '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1982SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC; 1983SELECT * FROM t3 WHERE c2 <= '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1984SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC; 1985SELECT * FROM t3 WHERE c2 <=> '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1986SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC; 1987SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1988SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC; 1989SELECT * FROM t3 WHERE c2 IN ('1000-00-01','9999-12-31') ORDER BY c1,c2 DESC LIMIT 2; 1990SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC; 1991SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '9999-12-31' AND c1 = '9999-12-31' ORDER BY c1,c2 DESC LIMIT 2; 1992SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 1993SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 1994SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 1995SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 1996## Full table scan ## 1997--sorted_result 1998SELECT * FROM t3; 1999--sorted_result 2000SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2001--sorted_result 2002SELECT * FROM t3 WHERE c4 = '2008-01-09'; 2003 2004## Forward index scan, covering ## 2005--sorted_result 2006SELECT c1,c2 FROM t3; 2007 2008## Backward index scan, covering ## 2009SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 2010 2011## Forward index scan, non-covering ## 2012SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 2013 2014## Backward index scan, non-covering ## 2015SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 2016 2017## ref type access 2018SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2; 2019SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2020SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC; 2021SELECT * FROM t3 WHERE c2 = '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2022 2023## Range access, ordered ## 2024SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2; 2025SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2026SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2; 2027SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2028SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2; 2029SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2030SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2; 2031SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2032SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2; 2033SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2034SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2; 2035SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2036SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2; 2037SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 LIMIT 2; 2038SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2; 2039SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 LIMIT 2; 2040SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2; 2041SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 LIMIT 2; 2042SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 2043SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 2044SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 2045SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2046 2047## Range access, backwards scan ## 2048SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC; 2049SELECT * FROM t3 WHERE c2 <> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2050SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC; 2051SELECT * FROM t3 WHERE c2 > '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2052SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC; 2053SELECT * FROM t3 WHERE c2 >= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2054SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC; 2055SELECT * FROM t3 WHERE c2 < '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2056SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC; 2057SELECT * FROM t3 WHERE c2 <= '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2058SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC; 2059SELECT * FROM t3 WHERE c2 <=> '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2060SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC; 2061SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01' AND '2010-10-00' ORDER BY c1,c2 DESC LIMIT 2; 2062SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC; 2063SELECT * FROM t3 WHERE c2 IN ('1000-00-01','2010-10-00') ORDER BY c1,c2 DESC LIMIT 2; 2064SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC; 2065SELECT * FROM t3 WHERE c2 >= '1000-00-01' AND c2 < '2010-10-00' AND c1 = '2010-00-01' ORDER BY c1,c2 DESC LIMIT 2; 2066SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 2067SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2068SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 2069SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2070 2071# Using index for group-by 2072--sorted_result 2073SELECT c1 FROM t3 GROUP BY c1; 2074--sorted_result 2075SELECT DISTINCT c1 FROM t3; 2076--sorted_result 2077SELECT c1,MIN(c2) FROM t3 GROUP BY c1; 2078DROP TABLE t1,t2,t3,t4; 2079 2080######## Running INSERT tests for DATETIME ######## 2081 2082# Create tables 2083CREATE TABLE t1(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, 2084 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 2085 ON UPDATE CURRENT_TIMESTAMP, 2086 PRIMARY KEY(c1), UNIQUE INDEX(c2)); 2087CREATE TABLE t2(c1 DATETIME NOT NULL, c2 DATETIME NOT NULL, c3 DATE, 2088 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 2089 ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(c1,c2)); 2090CREATE TABLE t3(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, 2091 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 2092 ON UPDATE CURRENT_TIMESTAMP, 2093 UNIQUE INDEX idx(c1,c2)); 2094CREATE TABLE t4(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, 2095 c4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 2096 ON UPDATE CURRENT_TIMESTAMP); 2097 2098# Insert some rows with targeted values 2099 2100# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format 2101INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 2102INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 2103INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 2104INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 2105 2106# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD' format 2107INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 2108INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 2109INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 2110INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 2111 2112# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format 2113INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 2114INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 2115INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 2116INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 2117 2118# As the result of a function 2119SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27 2120INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 2121INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 2122INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 2123INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 2124 2125# Insert duplicates for parts of the clustered key/unique index 2126INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 2127INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 2128 2129# Insert permissible NULLs 2130INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 2131INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 2132INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 2133 2134# Insert duplicate NULLs to unique column 2135INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL); 2136DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL; 2137 2138# Insert empty string '', would be converted to zero value of the appropriate type 2139INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */; 2140 2141# Insert invalid dates, would be converted to zero value of the appropriate type 2142INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */; 2143INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */; 2144 2145# Insert zero dates 2146INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07'); 2147INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9'); 2148 2149# Insert non-date value(absurd values), would be converted to zero value of the appropriate type 2150INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */; 2151 2152# Now select using various table access methods (full table scan, range scan, index scan etc.) 2153--sorted_result 2154SELECT * FROM t1; 2155--sorted_result 2156SELECT * FROM t2; 2157--sorted_result 2158SELECT * FROM t3; 2159--sorted_result 2160SELECT * FROM t4; 2161 2162# Select from table with single column primary key and single column index, with column values zero, NULL 2163## Full table scan ## 2164--sorted_result 2165SELECT * FROM t1; 2166--sorted_result 2167SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 2168--sorted_result 2169SELECT * FROM t1 WHERE c3 = '2007-05-24'; 2170 2171## Forward index scan, covering ## 2172--sorted_result 2173SELECT c1 FROM t1; 2174 2175## Backward index scan, covering ## 2176SELECT c1 FROM t1 ORDER BY c1 DESC; 2177 2178## Forward index scan, non-covering ## 2179SELECT * FROM t1 ORDER BY c1 LIMIT 2; 2180 2181## Backward index scan, non-covering ## 2182SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 2183 2184## ref type access 2185SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1; 2186SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2187SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 2188SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2189 2190## Range access, ordered ## 2191SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1; 2192SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2193SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1; 2194SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2195SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1; 2196SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2197SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1; 2198SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2199SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1; 2200SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2201SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1; 2202SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2203SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1; 2204SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2; 2205SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1; 2206SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2; 2207SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1; 2208SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2; 2209SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 2210SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 2211SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 2212SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 2213 2214## Range access, backwards scan ## 2215SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC; 2216SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2217SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC; 2218SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2219SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC; 2220SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2221SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC; 2222SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2223SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC; 2224SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2225SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC; 2226SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2227SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC; 2228SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2; 2229SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC; 2230SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2; 2231SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC; 2232SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2; 2233SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 2234SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 2235SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 2236SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 2237## Full table scan ## 2238--sorted_result 2239SELECT * FROM t1; 2240--sorted_result 2241SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 2242--sorted_result 2243SELECT * FROM t1 WHERE c3 = '2007-05-26'; 2244 2245## Forward index scan, covering ## 2246--sorted_result 2247SELECT c1 FROM t1; 2248 2249## Backward index scan, covering ## 2250SELECT c1 FROM t1 ORDER BY c1 DESC; 2251 2252## Forward index scan, non-covering ## 2253SELECT * FROM t1 ORDER BY c1 LIMIT 2; 2254 2255## Backward index scan, non-covering ## 2256SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 2257 2258## ref type access 2259SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1; 2260SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2; 2261SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC; 2262SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2263 2264## Range access, ordered ## 2265SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1; 2266SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2; 2267SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1; 2268SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2; 2269SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1; 2270SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2; 2271SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1; 2272SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2; 2273SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1; 2274SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2; 2275SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1; 2276SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2; 2277SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1; 2278SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2; 2279SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1; 2280SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2; 2281SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1; 2282SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 2283SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 2284SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 2285SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 2286SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 2287 2288## Range access, backwards scan ## 2289SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC; 2290SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2291SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC; 2292SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2293SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC; 2294SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2295SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC; 2296SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2297SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC; 2298SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2299SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC; 2300SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 2301SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC; 2302SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2; 2303SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC; 2304SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2; 2305SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 2306SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 2307SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 2308SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 2309SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 2310SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 2311## Full table scan ## 2312--sorted_result 2313SELECT * FROM t1; 2314--sorted_result 2315SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 2316--sorted_result 2317SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00'; 2318 2319## Forward index scan, covering ## 2320--sorted_result 2321SELECT c2 FROM t1; 2322 2323## Backward index scan, covering ## 2324SELECT c2 FROM t1 ORDER BY c2 DESC; 2325 2326## Forward index scan, non-covering ## 2327SELECT * FROM t1 ORDER BY c2 LIMIT 2; 2328 2329## Backward index scan, non-covering ## 2330SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 2331 2332## ref type access 2333SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2; 2334SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2335SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC; 2336SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2337 2338## Range access, ordered ## 2339SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2; 2340SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2341SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2; 2342SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2343SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2; 2344SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2345SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2; 2346SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2347SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2; 2348SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2349SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2; 2350SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 2351SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2; 2352SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2; 2353SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2; 2354SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2; 2355SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2; 2356SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2; 2357SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 2358SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 2359SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 2360SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 2361 2362## Range access, backwards scan ## 2363SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC; 2364SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2365SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC; 2366SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2367SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC; 2368SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2369SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC; 2370SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2371SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC; 2372SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2373SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC; 2374SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 2375SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC; 2376SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2; 2377SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC; 2378SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2; 2379SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC; 2380SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 2381SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 2382SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 2383SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 2384SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 2385 2386# Select from table with clustered primary key, with column values zero, NULL 2387## Full table scan ## 2388--sorted_result 2389SELECT * FROM t2; 2390--sorted_result 2391SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2392--sorted_result 2393SELECT * FROM t2 WHERE c3 = '2008-01-06'; 2394 2395## Forward index scan, covering ## 2396--sorted_result 2397SELECT c1,c2 FROM t2; 2398 2399## Backward index scan, covering ## 2400SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 2401 2402## Forward index scan, non-covering ## 2403SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 2404 2405## Backward index scan, non-covering ## 2406SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 2407 2408## ref type access 2409SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2; 2410SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2411SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2412SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2413 2414## Range access, ordered ## 2415SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 2416SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2417SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2; 2418SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2419SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 2420SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2421SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2; 2422SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2423SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 2424SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2425SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 2426SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2427SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 2428SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 2429SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 2430SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 2431SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 2432SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 2433SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 2434SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 2435SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 2436SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2437 2438## Range access, backwards scan ## 2439SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2440SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2441SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2442SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2443SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2444SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2445SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2446SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2447SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2448SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2449SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2450SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2451SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 2452SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 2453SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 2454SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 2455SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 2456SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 2457SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 2458SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2459SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 2460SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2461## Full table scan ## 2462--sorted_result 2463SELECT * FROM t2; 2464--sorted_result 2465SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2466--sorted_result 2467SELECT * FROM t2 WHERE c3 = '1998-12-29'; 2468 2469## Forward index scan, covering ## 2470--sorted_result 2471SELECT c1,c2 FROM t2; 2472 2473## Backward index scan, covering ## 2474SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 2475 2476## Forward index scan, non-covering ## 2477SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 2478 2479## Backward index scan, non-covering ## 2480SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 2481 2482## ref type access 2483SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 2484SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2485SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 2486SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2487 2488## Range access, ordered ## 2489SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 2490SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2491SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 2492SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2493SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 2494SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2495SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 2496SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2497SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 2498SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2499SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 2500SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2501SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 2502SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 2503SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 2504SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 2505SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2; 2506SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 2507SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 2508SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 2509SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 2510SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2511 2512## Range access, backwards scan ## 2513SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 2514SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2515SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 2516SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2517SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 2518SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2519SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 2520SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2521SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 2522SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2523SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 2524SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 2526SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 2527SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 2528SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 2529SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 2530SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 2531SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 2532SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2533SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 2534SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2535## Full table scan ## 2536--sorted_result 2537SELECT * FROM t2; 2538--sorted_result 2539SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 2540--sorted_result 2541SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28'; 2542 2543## Forward index scan, covering ## 2544--sorted_result 2545SELECT c1,c2 FROM t2; 2546 2547## Backward index scan, covering ## 2548SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 2549 2550## Forward index scan, non-covering ## 2551SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 2552 2553## Backward index scan, non-covering ## 2554SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 2555 2556## ref type access 2557SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2; 2558SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2559SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2560SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2561 2562## Range access, ordered ## 2563SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2; 2564SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2565SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2; 2566SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2567SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2; 2568SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2569SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2; 2570SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2571SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2; 2572SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2573SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2; 2574SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 2575SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 2576SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 2577SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 2578SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 2579SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 2580SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 2581SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 2582SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 2583SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 2584SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2585 2586## Range access, backwards scan ## 2587SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2588SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2589SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2590SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2591SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2592SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2593SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2594SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2595SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2596SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2597SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 2598SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 2599SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 2600SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 2601SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 2602SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 2603SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 2604SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2605SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 2606SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2607SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 2608SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2609 2610# Select from table with clustered index, with column values zero, NULL 2611## Full table scan ## 2612--sorted_result 2613SELECT * FROM t3; 2614--sorted_result 2615SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 2616--sorted_result 2617SELECT * FROM t3 WHERE c3 = '2007-05-24'; 2618 2619## Forward index scan, covering ## 2620--sorted_result 2621SELECT c1,c2 FROM t3; 2622 2623## Backward index scan, covering ## 2624SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 2625 2626## Forward index scan, non-covering ## 2627SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 2628 2629## Backward index scan, non-covering ## 2630SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 2631 2632## ref type access 2633SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2; 2634SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2635SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2636SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2637 2638## Range access, ordered ## 2639SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2; 2640SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2641SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2; 2642SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2643SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2; 2644SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2645SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2; 2646SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2647SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2; 2648SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2649SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2; 2650SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2651SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2; 2652SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2; 2653SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2; 2654SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2; 2655SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2; 2656SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 2657SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 2658SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 2659SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 2660SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2661 2662## Range access, backwards scan ## 2663SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2664SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2665SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2666SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2667SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2668SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2669SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2670SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2671SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2672SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2673SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2674SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2675SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC; 2676SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2677SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC; 2678SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 2679SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 2680SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2681SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 2682SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2683SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 2684SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2685## Full table scan ## 2686--sorted_result 2687SELECT * FROM t3; 2688--sorted_result 2689SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 2690--sorted_result 2691SELECT * FROM t3 WHERE c3 = '1998-12-29'; 2692 2693## Forward index scan, covering ## 2694--sorted_result 2695SELECT c1,c2 FROM t3; 2696 2697## Backward index scan, covering ## 2698SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 2699 2700## Forward index scan, non-covering ## 2701SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 2702 2703## Backward index scan, non-covering ## 2704SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 2705 2706## ref type access 2707SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 2708SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2709SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 2710SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2711 2712## Range access, ordered ## 2713SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 2714SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2715SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 2716SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2717SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 2718SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2719SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 2720SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2721SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 2722SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2723SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 2724SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 2725SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 2726SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 2727SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 2728SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 2729SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 2730SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 2731SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 2732SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 2733SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 2734SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2735 2736## Range access, backwards scan ## 2737SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 2738SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2739SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 2740SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2741SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 2742SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2743SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 2744SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2745SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 2746SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2747SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 2748SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 2749SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 2750SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 2751SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 2752SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 2753SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 2754SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 2755SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 2756SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2757SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 2758SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2759## Full table scan ## 2760--sorted_result 2761SELECT * FROM t3; 2762--sorted_result 2763SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2764--sorted_result 2765SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28'; 2766 2767## Forward index scan, covering ## 2768--sorted_result 2769SELECT c1,c2 FROM t3; 2770 2771## Backward index scan, covering ## 2772SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 2773 2774## Forward index scan, non-covering ## 2775SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 2776 2777## Backward index scan, non-covering ## 2778SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 2779 2780## ref type access 2781SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2; 2782SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2783SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2784SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2785 2786## Range access, ordered ## 2787SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 2788SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2789SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2; 2790SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2791SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 2792SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2793SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2; 2794SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2795SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 2796SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2797SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 2798SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 2799SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2; 2800SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 2801SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2; 2802SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2; 2803SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 2804SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 2805SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 2806SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 2807SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 2808SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 2809 2810## Range access, backwards scan ## 2811SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2812SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2813SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2814SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2815SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2816SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2817SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2818SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2819SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2820SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2821SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 2822SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2823SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 2824SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 2825SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC; 2826SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2; 2827SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 2828SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 2829SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 2830SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 2831SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 2832SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 2833 2834# Test Error conditions- PK constraint violation, Unique constraint violation 2835 2836# Insert duplicate value to pk column 2837--error ER_DUP_ENTRY 2838INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */; 2839 2840# Insert duplicate value to clustered pk, throws error 2841--error ER_DUP_ENTRY 2842INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 2843 2844# Insert duplicate value to unique column, throws error 2845--error ER_DUP_ENTRY 2846INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */; 2847 2848# Insert duplicate value to clustered unique column, throws error 2849--error ER_DUP_ENTRY 2850INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 2851 2852# Test 'INSERT IGNORE' with the same rows that reported constraint violation above 2853# Ignore pk constraint 2854INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */; 2855INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 2856# Ignore unique constraint 2857INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */; 2858INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 2859# Test that the rows are same 2860SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */; 2861SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 2862SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */; 2863SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 2864 2865# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK 2866SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */; 2867INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527'; 2868SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */; 2869 2870# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK 2871SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 2872INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 2873SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */; 2874 2875# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique 2876SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 2877INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 2878SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 2879 2880# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique 2881SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 2882INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 2883SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 2884 2885# Test 'INSERT SET' 2886INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01'; 2887INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01'; 2888INSERT INTO t3 SET c1='1999-01-01'; 2889INSERT INTO t4 SET c2='1999-01-01'; 2890SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 2891SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 2892SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */; 2893SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 2894 2895# Test 'INSERT INTO SELECT FROM' 2896CREATE TABLE t5(c1 DATETIME NOT NULL, c2 DATETIME NULL, c3 DATE, c4 TIMESTAMP, INDEX idx(c1,c2)); 2897INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528'; 2898--sorted_result 2899SELECT * FROM t5; 2900TRUNCATE TABLE t5; 2901INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525'; 2902#Following query produces different results 2903#for differenct engine/platform 2904--disable_result_log 2905--sorted_result 2906SELECT * FROM t5; 2907--enable_result_log 2908TRUNCATE TABLE t5; 2909INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45'; 2910--sorted_result 2911SELECT * FROM t5; 2912TRUNCATE TABLE t5; 2913DROP TABLE t5; 2914 2915# Test Specific values to column types 2916 2917# Test insert range values to 'DATETIME' columns 2918INSERT INTO t1 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12'); 2919INSERT INTO t2 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12'); 2920INSERT INTO t3 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12'); 2921INSERT INTO t4 VALUES('1000-01-01 00:00:00','2000-01-01 00:00:00','2009-01-01','2009-01-02'),('3000-01-01 00:00:00','4000-01-01 00:00:00','2009-01-03','2009-01-04'),('5000-01-01 00:00:00','6000-01-01 00:00:00','2009-01-05','2009-01-06'),('7000-01-01 00:00:00','8000-01-01 00:00:00','2009-01-07','2009-01-08'),('9000-01-01 00:00:00','9000-01-01 00:00:00','2009-01-09','2009-01-10'),('9999-12-31 23:59:59','9999-12-31 23:59:59','2009-01-11','2009-01-12'); 2922 2923# Insert valid dates containing a zero for the month or for the day 2924INSERT INTO t1(c1,c2) VALUES('2010-00-01','2010-10-00'); 2925INSERT INTO t2(c1,c2) VALUES('2010-00-01','2010-10-00'); 2926INSERT INTO t3(c1,c2) VALUES('2010-00-01','2010-10-00'); 2927INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00'); 2928 2929# Insert invalid dates, inserts zero values 2930INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32'),('2009-01-01 23:60:60'),('2009-01-01 24:59:59'),('2009-01-01 23:59:60'); 2931 2932# Test insert NULL to non-null column 2933--error ER_BAD_NULL_ERROR 2934INSERT INTO t1(c1) VALUES(NULL); 2935--error ER_BAD_NULL_ERROR 2936INSERT INTO t2(c1) VALUES(NULL); 2937--error ER_BAD_NULL_ERROR 2938INSERT INTO t3 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16'); 2939--error ER_BAD_NULL_ERROR 2940INSERT INTO t4 VALUES(NULL,'2008-01-14 00:00:00','08-01-15','08/01/16'); 2941 2942# Test INSERT SET with no default for not null column 2943SET SQL_MODE=STRICT_ALL_TABLES; 2944--error ER_NO_DEFAULT_FOR_FIELD 2945INSERT INTO t4 SET c2='1999-01-01' /* NOT NULL column will not get the default value */; 2946SET SQL_MODE=''; 2947 2948--sorted_result 2949SELECT * FROM t1; 2950--sorted_result 2951SELECT * FROM t2; 2952--sorted_result 2953SELECT * FROM t3; 2954--sorted_result 2955SELECT * FROM t4; 2956# Now select using various table access methods 2957## Full table scan ## 2958--sorted_result 2959SELECT * FROM t1; 2960--sorted_result 2961SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 2962--sorted_result 2963SELECT * FROM t1 WHERE c3 = '2007-05-24'; 2964 2965## Forward index scan, covering ## 2966--sorted_result 2967SELECT c1 FROM t1; 2968 2969## Backward index scan, covering ## 2970SELECT c1 FROM t1 ORDER BY c1 DESC; 2971 2972## Forward index scan, non-covering ## 2973SELECT * FROM t1 ORDER BY c1 LIMIT 2; 2974 2975## Backward index scan, non-covering ## 2976SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 2977 2978## ref type access 2979SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1; 2980SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2981SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC; 2982SELECT * FROM t1 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 2983 2984## Range access, ordered ## 2985SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1; 2986SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2987SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1; 2988SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2989SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1; 2990SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2991SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1; 2992SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2993SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1; 2994SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2995SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1; 2996SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 2997SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1; 2998SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2; 2999SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1; 3000SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2; 3001SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1; 3002SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3003SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 3004SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3005SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 3006SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3007 3008## Range access, backwards scan ## 3009SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC; 3010SELECT * FROM t1 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3011SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC; 3012SELECT * FROM t1 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3013SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC; 3014SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3015SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC; 3016SELECT * FROM t1 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3017SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC; 3018SELECT * FROM t1 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3019SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC; 3020SELECT * FROM t1 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3021SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC; 3022SELECT * FROM t1 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2; 3023SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC; 3024SELECT * FROM t1 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2; 3025SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 DESC; 3026SELECT * FROM t1 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3027SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 3028SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3029SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3030SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3031## Full table scan ## 3032--sorted_result 3033SELECT * FROM t1; 3034--sorted_result 3035SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 3036--sorted_result 3037SELECT * FROM t1 WHERE c3 = '2007-05-26'; 3038 3039## Forward index scan, covering ## 3040--sorted_result 3041SELECT c1 FROM t1; 3042 3043## Backward index scan, covering ## 3044SELECT c1 FROM t1 ORDER BY c1 DESC; 3045 3046## Forward index scan, non-covering ## 3047SELECT * FROM t1 ORDER BY c1 LIMIT 2; 3048 3049## Backward index scan, non-covering ## 3050SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 3051 3052## ref type access 3053SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1; 3054SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2; 3055SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC; 3056SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3057 3058## Range access, ordered ## 3059SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1; 3060SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2; 3061SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1; 3062SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2; 3063SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1; 3064SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2; 3065SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1; 3066SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2; 3067SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1; 3068SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2; 3069SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1; 3070SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2; 3071SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1; 3072SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 LIMIT 2; 3073SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1; 3074SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 LIMIT 2; 3075SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1; 3076SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2; 3077SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 3078SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3079SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 3080SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3081 3082## Range access, backwards scan ## 3083SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC; 3084SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3085SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC; 3086SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3087SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC; 3088SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3089SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC; 3090SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3091SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC; 3092SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3093SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC; 3094SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 3095SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC; 3096SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1 DESC LIMIT 2; 3097SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC; 3098SELECT * FROM t1 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1 DESC LIMIT 2; 3099SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC; 3100SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 3101SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 3102SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3103SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3104SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3105## Full table scan ## 3106--sorted_result 3107SELECT * FROM t1; 3108--sorted_result 3109SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 3110--sorted_result 3111SELECT * FROM t1 WHERE c3 = '1998-12-28'; 3112 3113## Forward index scan, covering ## 3114--sorted_result 3115SELECT c1 FROM t1; 3116 3117## Backward index scan, covering ## 3118SELECT c1 FROM t1 ORDER BY c1 DESC; 3119 3120## Forward index scan, non-covering ## 3121SELECT * FROM t1 ORDER BY c1 LIMIT 2; 3122 3123## Backward index scan, non-covering ## 3124SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 3125 3126## ref type access 3127SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1; 3128SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3129SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC; 3130SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3131 3132## Range access, ordered ## 3133SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1; 3134SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3135SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1; 3136SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3137SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1; 3138SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3139SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1; 3140SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3141SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1; 3142SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3143SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1; 3144SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 3145SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1; 3146SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 LIMIT 2; 3147SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1; 3148SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 LIMIT 2; 3149SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1; 3150SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2; 3151SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 3152SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3153SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 3154SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3155 3156## Range access, backwards scan ## 3157SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC; 3158SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3159SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC; 3160SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3161SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC; 3162SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3163SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC; 3164SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3165SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC; 3166SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3167SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC; 3168SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 3169SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC; 3170SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1 DESC LIMIT 2; 3171SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC; 3172SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1 DESC LIMIT 2; 3173SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC; 3174SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 3175SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 3176SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3177SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3178SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3179## Full table scan ## 3180--sorted_result 3181SELECT * FROM t1; 3182--sorted_result 3183SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 3184--sorted_result 3185SELECT * FROM t1 WHERE c4 = '2009-01-29'; 3186 3187## Forward index scan, covering ## 3188--sorted_result 3189SELECT c2 FROM t1; 3190 3191## Backward index scan, covering ## 3192SELECT c2 FROM t1 ORDER BY c2 DESC; 3193 3194## Forward index scan, non-covering ## 3195SELECT * FROM t1 ORDER BY c2 LIMIT 2; 3196 3197## Backward index scan, non-covering ## 3198SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 3199 3200## ref type access 3201SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2; 3202SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3203SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC; 3204SELECT * FROM t1 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3205 3206## Range access, ordered ## 3207SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2; 3208SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3209SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2; 3210SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3211SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2; 3212SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3213SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2; 3214SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3215SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2; 3216SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3217SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2; 3218SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3219SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2; 3220SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3221SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2; 3222SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 LIMIT 2; 3223SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2; 3224SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 LIMIT 2; 3225SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 3226SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 3227SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 3228SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 3229 3230## Range access, backwards scan ## 3231SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC; 3232SELECT * FROM t1 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3233SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC; 3234SELECT * FROM t1 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3235SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC; 3236SELECT * FROM t1 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3237SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC; 3238SELECT * FROM t1 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3239SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC; 3240SELECT * FROM t1 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3241SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC; 3242SELECT * FROM t1 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3243SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC; 3244SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3245SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC; 3246SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c2 DESC LIMIT 2; 3247SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 DESC; 3248SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c2 DESC LIMIT 2; 3249SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 3250SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 3251SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 3252SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 3253## Full table scan ## 3254--sorted_result 3255SELECT * FROM t1; 3256--sorted_result 3257SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 3258--sorted_result 3259SELECT * FROM t1 WHERE c4 = '2008-01-05'; 3260 3261## Forward index scan, covering ## 3262--sorted_result 3263SELECT c2 FROM t1; 3264 3265## Backward index scan, covering ## 3266SELECT c2 FROM t1 ORDER BY c2 DESC; 3267 3268## Forward index scan, non-covering ## 3269SELECT * FROM t1 ORDER BY c2 LIMIT 2; 3270 3271## Backward index scan, non-covering ## 3272SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 3273 3274## ref type access 3275SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2; 3276SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3277SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC; 3278SELECT * FROM t1 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3279 3280## Range access, ordered ## 3281SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2; 3282SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3283SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2; 3284SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3285SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2; 3286SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3287SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2; 3288SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3289SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2; 3290SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3291SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2; 3292SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3293SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2; 3294SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 3295SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2; 3296SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2; 3297SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2; 3298SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 LIMIT 2; 3299SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 3300SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 3301SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 3302SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 3303 3304## Range access, backwards scan ## 3305SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC; 3306SELECT * FROM t1 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3307SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC; 3308SELECT * FROM t1 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3309SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC; 3310SELECT * FROM t1 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3311SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC; 3312SELECT * FROM t1 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3313SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC; 3314SELECT * FROM t1 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3315SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC; 3316SELECT * FROM t1 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3317SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC; 3318SELECT * FROM t1 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 3319SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC; 3320SELECT * FROM t1 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2; 3321SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC; 3322SELECT * FROM t1 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 3323SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 3324SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 3325SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 3326SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 3327 3328# Using Index-merge 3329--sorted_result 3330SELECT * FROM t1 WHERE c1='1000-00-01 00:00:00' OR c2='9999-12-31 23:59:59'; 3331 3332# Using index for group-by 3333--sorted_result 3334SELECT c2 FROM t1 GROUP BY c2; 3335 3336## Full table scan ## 3337--sorted_result 3338SELECT * FROM t2; 3339--sorted_result 3340SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3341--sorted_result 3342SELECT * FROM t2 WHERE c3 = '2007-05-24'; 3343 3344## Forward index scan, covering ## 3345--sorted_result 3346SELECT c1,c2 FROM t2; 3347 3348## Backward index scan, covering ## 3349SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 3350 3351## Forward index scan, non-covering ## 3352SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 3353 3354## Backward index scan, non-covering ## 3355SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 3356 3357## ref type access 3358SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2; 3359SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3360SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3361SELECT * FROM t2 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3362 3363## Range access, ordered ## 3364SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2; 3365SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3366SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2; 3367SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3368SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2; 3369SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3370SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2; 3371SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3372SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2; 3373SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3374SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2; 3375SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3376SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3377SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3378SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2; 3379SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3380SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2; 3381SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3382SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 3383SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3384SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3385SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3386 3387## Range access, backwards scan ## 3388SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3389SELECT * FROM t2 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3390SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3391SELECT * FROM t2 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3392SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3393SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3394SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3395SELECT * FROM t2 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3396SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3397SELECT * FROM t2 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3398SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3399SELECT * FROM t2 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3400SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3401SELECT * FROM t2 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3402SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3403SELECT * FROM t2 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3404SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3405SELECT * FROM t2 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3406SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3407SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3408SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3409SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3410## Full table scan ## 3411--sorted_result 3412SELECT * FROM t2; 3413--sorted_result 3414SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3415--sorted_result 3416SELECT * FROM t2 WHERE c3 = '2007-05-26'; 3417 3418## Forward index scan, covering ## 3419--sorted_result 3420SELECT c1,c2 FROM t2; 3421 3422## Backward index scan, covering ## 3423SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 3424 3425## Forward index scan, non-covering ## 3426SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 3427 3428## Backward index scan, non-covering ## 3429SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 3430 3431## ref type access 3432SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 3433SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3434SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 3435SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3436 3437## Range access, ordered ## 3438SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 3439SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3440SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 3441SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3442SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 3443SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3444SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 3445SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3446SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 3447SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3448SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 3449SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3450SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3451SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3452SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2; 3453SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3454SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 3455SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3456SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 3457SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3458SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3459SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3460 3461## Range access, backwards scan ## 3462SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 3463SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3464SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 3465SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3466SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 3467SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3468SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 3469SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3470SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 3471SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3472SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 3473SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3474SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3475SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3476SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3477SELECT * FROM t2 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3478SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3479SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3480SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3481SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3482SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3483SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3484## Full table scan ## 3485--sorted_result 3486SELECT * FROM t2; 3487--sorted_result 3488SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3489--sorted_result 3490SELECT * FROM t2 WHERE c3 = '1998-12-28'; 3491 3492## Forward index scan, covering ## 3493--sorted_result 3494SELECT c1,c2 FROM t2; 3495 3496## Backward index scan, covering ## 3497SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 3498 3499## Forward index scan, non-covering ## 3500SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 3501 3502## Backward index scan, non-covering ## 3503SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 3504 3505## ref type access 3506SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 3507SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3508SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3509SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3510 3511## Range access, ordered ## 3512SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2; 3513SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3514SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2; 3515SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3516SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2; 3517SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3518SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2; 3519SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3520SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2; 3521SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3522SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2; 3523SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3524SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2; 3525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2; 3526SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2; 3527SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2; 3528SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 3529SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3530SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 3531SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3532SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3533SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3534 3535## Range access, backwards scan ## 3536SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3537SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3538SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3539SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3540SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3541SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3542SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3543SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3544SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3545SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3546SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3547SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3548SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC; 3549SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2; 3550SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC; 3551SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2; 3552SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3553SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3554SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3555SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3556SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3557SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3558## Full table scan ## 3559--sorted_result 3560SELECT * FROM t2; 3561--sorted_result 3562SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 3563--sorted_result 3564SELECT * FROM t2 WHERE c4 = '2009-01-29'; 3565 3566## Forward index scan, covering ## 3567--sorted_result 3568SELECT c1,c2 FROM t2; 3569 3570## Backward index scan, covering ## 3571SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 3572 3573## Forward index scan, non-covering ## 3574SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 3575 3576## Backward index scan, non-covering ## 3577SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 3578 3579## ref type access 3580SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2; 3581SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3582SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3583SELECT * FROM t2 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3584 3585## Range access, ordered ## 3586SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2; 3587SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3588SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2; 3589SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3590SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2; 3591SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3592SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2; 3593SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3594SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2; 3595SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3596SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2; 3597SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3598SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3599SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3600SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2; 3601SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3602SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2; 3603SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3604SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 3605SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 3606SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 3607SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3608 3609## Range access, backwards scan ## 3610SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3611SELECT * FROM t2 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3612SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3613SELECT * FROM t2 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3614SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3615SELECT * FROM t2 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3616SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3617SELECT * FROM t2 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3618SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3619SELECT * FROM t2 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3620SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3621SELECT * FROM t2 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3622SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3623SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3624SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3625SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3626SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3627SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3628SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 3629SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3630SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 3631SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3632## Full table scan ## 3633--sorted_result 3634SELECT * FROM t2; 3635--sorted_result 3636SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 3637--sorted_result 3638SELECT * FROM t2 WHERE c4 = '2008-01-07'; 3639 3640## Forward index scan, covering ## 3641--sorted_result 3642SELECT c1,c2 FROM t2; 3643 3644## Backward index scan, covering ## 3645SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 3646 3647## Forward index scan, non-covering ## 3648SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 3649 3650## Backward index scan, non-covering ## 3651SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 3652 3653## ref type access 3654SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 3655SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3656SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3657SELECT * FROM t2 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3658 3659## Range access, ordered ## 3660SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2; 3661SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3662SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2; 3663SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3664SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2; 3665SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3666SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2; 3667SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3668SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2; 3669SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3670SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2; 3671SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3672SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2; 3673SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3674SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2; 3675SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2; 3676SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 3677SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3678SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 3679SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 3680SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 3681SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3682 3683## Range access, backwards scan ## 3684SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3685SELECT * FROM t2 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3686SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3687SELECT * FROM t2 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3688SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3689SELECT * FROM t2 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3690SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3691SELECT * FROM t2 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3692SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3693SELECT * FROM t2 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3694SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3695SELECT * FROM t2 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3696SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3697SELECT * FROM t2 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3698SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC; 3699SELECT * FROM t2 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 3700SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3701SELECT * FROM t2 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3702SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 3703SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3704SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 3705SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3706 3707## Full table scan ## 3708--sorted_result 3709SELECT * FROM t3; 3710--sorted_result 3711SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 3712--sorted_result 3713SELECT * FROM t3 WHERE c3 = '2007-05-24'; 3714 3715## Forward index scan, covering ## 3716--sorted_result 3717SELECT c1,c2 FROM t3; 3718 3719## Backward index scan, covering ## 3720SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 3721 3722## Forward index scan, non-covering ## 3723SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 3724 3725## Backward index scan, non-covering ## 3726SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 3727 3728## ref type access 3729SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2; 3730SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3731SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3732SELECT * FROM t3 WHERE c1 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3733 3734## Range access, ordered ## 3735SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2; 3736SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3737SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2; 3738SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3739SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2; 3740SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3741SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2; 3742SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3743SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2; 3744SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3745SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2; 3746SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3747SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3748SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3749SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2; 3750SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3751SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2; 3752SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3753SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 3754SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3755SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3756SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3757 3758## Range access, backwards scan ## 3759SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3760SELECT * FROM t3 WHERE c1 <> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3761SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3762SELECT * FROM t3 WHERE c1 > '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3763SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3764SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3765SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3766SELECT * FROM t3 WHERE c1 < '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3767SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3768SELECT * FROM t3 WHERE c1 <= '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3769SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3770SELECT * FROM t3 WHERE c1 <=> '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3771SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3772SELECT * FROM t3 WHERE c1 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3773SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3774SELECT * FROM t3 WHERE c1 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3775SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC; 3776SELECT * FROM t3 WHERE c1 >= '1000-00-01 00:00:00' AND c1 < '9999-12-31 23:59:59' AND c2 = '1000-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3777SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3778SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3779SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3780SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3781## Full table scan ## 3782--sorted_result 3783SELECT * FROM t3; 3784--sorted_result 3785SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 3786--sorted_result 3787SELECT * FROM t3 WHERE c3 = '2007-05-26'; 3788 3789## Forward index scan, covering ## 3790--sorted_result 3791SELECT c1,c2 FROM t3; 3792 3793## Backward index scan, covering ## 3794SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 3795 3796## Forward index scan, non-covering ## 3797SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 3798 3799## Backward index scan, non-covering ## 3800SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 3801 3802## ref type access 3803SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 3804SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3805SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 3806SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3807 3808## Range access, ordered ## 3809SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 3810SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3811SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 3812SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3813SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 3814SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3815SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 3816SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3817SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 3818SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3819SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 3820SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 3821SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3822SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3823SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2; 3824SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3825SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 3826SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3827SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 3828SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3829SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3830SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3831 3832## Range access, backwards scan ## 3833SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 3834SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3835SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 3836SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3837SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 3838SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3839SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 3840SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3841SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 3842SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3843SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 3844SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 3845SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3846SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3847SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3848SELECT * FROM t3 WHERE c1 IN ('0000-00-00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3849SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3850SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '9999-12-31 23:59:59' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3851SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3852SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3853SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3854SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3855## Full table scan ## 3856--sorted_result 3857SELECT * FROM t3; 3858--sorted_result 3859SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 3860--sorted_result 3861SELECT * FROM t3 WHERE c3 = '1998-12-28'; 3862 3863## Forward index scan, covering ## 3864--sorted_result 3865SELECT c1,c2 FROM t3; 3866 3867## Backward index scan, covering ## 3868SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 3869 3870## Forward index scan, non-covering ## 3871SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 3872 3873## Backward index scan, non-covering ## 3874SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 3875 3876## ref type access 3877SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 3878SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3879SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3880SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3881 3882## Range access, ordered ## 3883SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2; 3884SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3885SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2; 3886SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3887SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2; 3888SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3889SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2; 3890SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3891SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2; 3892SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3893SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2; 3894SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 3895SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2; 3896SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 LIMIT 2; 3897SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2; 3898SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 LIMIT 2; 3899SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 3900SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 3901SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 3902SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 3903SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 3904SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3905 3906## Range access, backwards scan ## 3907SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3908SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3909SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3910SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3911SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3912SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3913SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3914SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3915SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3916SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3917SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 3918SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3919SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC; 3920SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:' ORDER BY c1,c2 DESC LIMIT 2; 3921SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC; 3922SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:') ORDER BY c1,c2 DESC LIMIT 2; 3923SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 3924SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 3925SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 3926SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 3927SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 3928SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 3929## Full table scan ## 3930--sorted_result 3931SELECT * FROM t3; 3932--sorted_result 3933SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 3934--sorted_result 3935SELECT * FROM t3 WHERE c4 = '2009-01-29'; 3936 3937## Forward index scan, covering ## 3938--sorted_result 3939SELECT c1,c2 FROM t3; 3940 3941## Backward index scan, covering ## 3942SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 3943 3944## Forward index scan, non-covering ## 3945SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 3946 3947## Backward index scan, non-covering ## 3948SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 3949 3950## ref type access 3951SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2; 3952SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3953SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3954SELECT * FROM t3 WHERE c2 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3955 3956## Range access, ordered ## 3957SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2; 3958SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3959SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2; 3960SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3961SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2; 3962SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3963SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2; 3964SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3965SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2; 3966SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3967SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2; 3968SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3969SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2; 3970SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3971SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2; 3972SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 LIMIT 2; 3973SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2; 3974SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 LIMIT 2; 3975SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 3976SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 3977SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 3978SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 3979 3980## Range access, backwards scan ## 3981SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3982SELECT * FROM t3 WHERE c2 <> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3983SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3984SELECT * FROM t3 WHERE c2 > '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3985SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3986SELECT * FROM t3 WHERE c2 >= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3987SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3988SELECT * FROM t3 WHERE c2 < '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3989SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3990SELECT * FROM t3 WHERE c2 <= '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3991SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3992SELECT * FROM t3 WHERE c2 <=> '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3993SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3994SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3995SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC; 3996SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','9999-12-31 23:59:59') ORDER BY c1,c2 DESC LIMIT 2; 3997SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC; 3998SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '9999-12-31 23:59:59' AND c1 = '9999-12-31 23:59:59' ORDER BY c1,c2 DESC LIMIT 2; 3999SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 4000SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4001SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 4002SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4003## Full table scan ## 4004--sorted_result 4005SELECT * FROM t3; 4006--sorted_result 4007SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 4008--sorted_result 4009SELECT * FROM t3 WHERE c4 = '2008-01-09'; 4010 4011## Forward index scan, covering ## 4012--sorted_result 4013SELECT c1,c2 FROM t3; 4014 4015## Backward index scan, covering ## 4016SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 4017 4018## Forward index scan, non-covering ## 4019SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 4020 4021## Backward index scan, non-covering ## 4022SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 4023 4024## ref type access 4025SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 4026SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4027SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4028SELECT * FROM t3 WHERE c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4029 4030## Range access, ordered ## 4031SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2; 4032SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4033SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2; 4034SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4035SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2; 4036SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4037SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2; 4038SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4039SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2; 4040SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4041SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2; 4042SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4043SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2; 4044SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4045SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2; 4046SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2; 4047SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 4048SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 4049SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 4050SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 4051SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 4052SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4053 4054## Range access, backwards scan ## 4055SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4056SELECT * FROM t3 WHERE c2 <> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4057SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4058SELECT * FROM t3 WHERE c2 > '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4059SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4060SELECT * FROM t3 WHERE c2 >= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4061SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4062SELECT * FROM t3 WHERE c2 < '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4063SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4064SELECT * FROM t3 WHERE c2 <= '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4065SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4066SELECT * FROM t3 WHERE c2 <=> '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4067SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 4068SELECT * FROM t3 WHERE c2 BETWEEN '1000-00-01 00:00:00' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4069SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC; 4070SELECT * FROM t3 WHERE c2 IN ('1000-00-01 00:00:00','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 4071SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 4072SELECT * FROM t3 WHERE c2 >= '1000-00-01 00:00:00' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4073SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 4074SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4075SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 4076SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4077 4078# Using index for group-by 4079--sorted_result 4080SELECT c1 FROM t3 GROUP BY c1; 4081--sorted_result 4082SELECT DISTINCT c1 FROM t3; 4083--sorted_result 4084SELECT c1,MIN(c2) FROM t3 GROUP BY c1; 4085DROP TABLE t1,t2,t3,t4; 4086 4087######## Running INSERT tests for TIMESTAMP ######## 4088 4089# Create tables 4090CREATE TABLE t1(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1), UNIQUE INDEX(c2)); 4091CREATE TABLE t2(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NOT NULL, c3 DATE, c4 DATETIME, PRIMARY KEY(c1,c2)); 4092CREATE TABLE t3(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, UNIQUE INDEX idx(c1,c2)); 4093CREATE TABLE t4(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME); 4094 4095# Insert some rows with targeted values 4096 4097# As a string in either 'YYYY-MM-DD HH:MM:SS', 'YY-MM-DD HH:MM:SS', 'YYYY-MM-DD' or 'YY-MM-DD' format 4098INSERT INTO t1 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 4099INSERT INTO t2 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 4100INSERT INTO t3 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 4101INSERT INTO t4 VALUES('98-12-31 11:30:45','98.12.31 11+30+45','98-12-31 11:30:45','98.12.31 11+30+45'),('98/12/30 11*30*45','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'),('98-12-29','98.12.29','98-12-29','98.12.29'),('98/12/28','98@12@28','98/12/28','98@12@28'); 4102 4103# As a string with no delimiters in either 'YYYYMMDDHHMMSS', 'YYMMDDHHMMSS', 'YYYYMMDD' or 'YYMMDD' format 4104INSERT INTO t1 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 4105INSERT INTO t2 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 4106INSERT INTO t3 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 4107INSERT INTO t4 VALUES('20070523091528','070523091528','20070524091528','070524091528'),('20070525','070525','20070526','070526'); 4108 4109# As a number in either YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format 4110INSERT INTO t1 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 4111INSERT INTO t2 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 4112INSERT INTO t3 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 4113INSERT INTO t4 VALUES(19830905132800,830905132800,19830906132800,830906132800),(19830907,830907,19830908,830908); 4114 4115# As the result of a function 4116SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27 4117INSERT INTO t1 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 4118INSERT INTO t2 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 4119INSERT INTO t3 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 4120INSERT INTO t4 VALUES(NOW(),CURRENT_DATE,NOW(),CURRENT_DATE); 4121 4122# Insert duplicates for parts of the clustered key/unique index 4123INSERT INTO t2 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 4124INSERT INTO t3 VALUES('98-12-31 11:30:45','98@12@30 11^30^45','98-12-31 11:30:45','98.12.31 11+30+45'),('98-12-29','98@12@30 11^30^45','98/12/30 11*30*45','98@12@30 11^30^45'); 4125 4126# Insert permissible NULLs 4127INSERT INTO t1 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 4128INSERT INTO t3 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 4129INSERT INTO t4 VALUES('2008-01-01',NULL,'08-01-02','08/01/03'); 4130 4131# Insert duplicate NULLs to unique column 4132INSERT INTO t1(c1,c2) VALUES('08/01/17',NULL); 4133DELETE FROM t1 WHERE c1='08/01/17' AND c2 IS NULL; 4134 4135# Insert empty string '', would be converted to zero value of the appropriate type 4136INSERT INTO t1 VALUES('','','08-01-04','08/01/05') /* Inserts zero dates for '' strings */; 4137 4138# Insert invalid dates, would be converted to zero value of the appropriate type 4139INSERT INTO t2 VALUES('2008-04-31','2008-04-31','08-01-06','08/01/07') /* Inserts zero dates for invalid dates */; 4140INSERT INTO t3 VALUES('10:45:15','10:45:15','08-01-08','08/1/9') /* Inserts zero dates for invalid dates */; 4141 4142# Insert zero dates 4143INSERT INTO t2 VALUES('0000-00-00','08-01-06','08-01-06','08/01/07'); 4144INSERT INTO t3 VALUES('08-01-06','00-00-00','08-01-08','08/1/9'); 4145 4146# Insert non-date value(absurd values), would be converted to zero value of the appropriate type 4147INSERT INTO t4 VALUES('abcd','abcd','08-01-10','08/01/11'),(1234,1234,'08-01-12','08/01/13') /* Inserts zero dates for absurd dates */; 4148 4149# Now select using various table access methods (full table scan, range scan, index scan etc.) 4150--sorted_result 4151SELECT * FROM t1; 4152--sorted_result 4153SELECT * FROM t2; 4154--sorted_result 4155SELECT * FROM t3; 4156--sorted_result 4157SELECT * FROM t4; 4158 4159# Select from table with single column primary key and single column index, with column values zero, NULL 4160## Full table scan ## 4161--sorted_result 4162SELECT * FROM t1; 4163--sorted_result 4164SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 4165--sorted_result 4166SELECT * FROM t1 WHERE c3 = '2007-05-24'; 4167 4168## Forward index scan, covering ## 4169--sorted_result 4170SELECT c1 FROM t1; 4171 4172## Backward index scan, covering ## 4173SELECT c1 FROM t1 ORDER BY c1 DESC; 4174 4175## Forward index scan, non-covering ## 4176SELECT * FROM t1 ORDER BY c1 LIMIT 2; 4177 4178## Backward index scan, non-covering ## 4179SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 4180 4181## ref type access 4182SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1; 4183SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4184SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 4185SELECT * FROM t1 WHERE c1 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4186 4187## Range access, ordered ## 4188SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1; 4189SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4190SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1; 4191SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4192SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1; 4193SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4194SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1; 4195SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4196SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1; 4197SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4198SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1; 4199SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4200SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1; 4201SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 LIMIT 2; 4202SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1; 4203SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 LIMIT 2; 4204SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1; 4205SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 LIMIT 2; 4206SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 4207SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4208SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 4209SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4210 4211## Range access, backwards scan ## 4212SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC; 4213SELECT * FROM t1 WHERE c1 <> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4214SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC; 4215SELECT * FROM t1 WHERE c1 > '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4216SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC; 4217SELECT * FROM t1 WHERE c1 >= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4218SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC; 4219SELECT * FROM t1 WHERE c1 < '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4220SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC; 4221SELECT * FROM t1 WHERE c1 <= '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4222SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC; 4223SELECT * FROM t1 WHERE c1 <=> '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4224SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC; 4225SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '1998-12-29 00:00:00' ORDER BY c1 DESC LIMIT 2; 4226SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC; 4227SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','1998-12-29 00:00:00') ORDER BY c1 DESC LIMIT 2; 4228SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC; 4229SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '1998-12-29 00:00:00' AND c2 = '1983-09-07 00:00:00' ORDER BY c1 DESC LIMIT 2; 4230SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 4231SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 4232SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 4233SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 4234## Full table scan ## 4235--sorted_result 4236SELECT * FROM t1; 4237--sorted_result 4238SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 4239--sorted_result 4240SELECT * FROM t1 WHERE c3 = '2007-05-26'; 4241 4242## Forward index scan, covering ## 4243--sorted_result 4244SELECT c1 FROM t1; 4245 4246## Backward index scan, covering ## 4247SELECT c1 FROM t1 ORDER BY c1 DESC; 4248 4249## Forward index scan, non-covering ## 4250SELECT * FROM t1 ORDER BY c1 LIMIT 2; 4251 4252## Backward index scan, non-covering ## 4253SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 4254 4255## ref type access 4256SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1; 4257SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 LIMIT 2; 4258SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC; 4259SELECT * FROM t1 WHERE c1 = '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4260 4261## Range access, ordered ## 4262SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1; 4263SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 LIMIT 2; 4264SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1; 4265SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 LIMIT 2; 4266SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1; 4267SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 LIMIT 2; 4268SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1; 4269SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 LIMIT 2; 4270SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1; 4271SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 LIMIT 2; 4272SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1; 4273SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 LIMIT 2; 4274SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1; 4275SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 LIMIT 2; 4276SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1; 4277SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 LIMIT 2; 4278SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1; 4279SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 LIMIT 2; 4280SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 4281SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4282SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 4283SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4284 4285## Range access, backwards scan ## 4286SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC; 4287SELECT * FROM t1 WHERE c1 <> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4288SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC; 4289SELECT * FROM t1 WHERE c1 > '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4290SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC; 4291SELECT * FROM t1 WHERE c1 >= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4292SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC; 4293SELECT * FROM t1 WHERE c1 < '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4294SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC; 4295SELECT * FROM t1 WHERE c1 <= '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4296SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC; 4297SELECT * FROM t1 WHERE c1 <=> '0000-00-00' ORDER BY c1 DESC LIMIT 2; 4298SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC; 4299SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1 DESC LIMIT 2; 4300SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC; 4301SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1 DESC LIMIT 2; 4302SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC; 4303SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-31 11:30:45' ORDER BY c1 DESC LIMIT 2; 4304SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 4305SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 4306SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 4307SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 4308## Full table scan ## 4309--sorted_result 4310SELECT * FROM t1; 4311--sorted_result 4312SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 4313--sorted_result 4314SELECT * FROM t1 WHERE c4 = '2007-05-26 00:00:00'; 4315 4316## Forward index scan, covering ## 4317--sorted_result 4318SELECT c2 FROM t1; 4319 4320## Backward index scan, covering ## 4321SELECT c2 FROM t1 ORDER BY c2 DESC; 4322 4323## Forward index scan, non-covering ## 4324SELECT * FROM t1 ORDER BY c2 LIMIT 2; 4325 4326## Backward index scan, non-covering ## 4327SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 4328 4329## ref type access 4330SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2; 4331SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4332SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC; 4333SELECT * FROM t1 WHERE c2 = '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4334 4335## Range access, ordered ## 4336SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2; 4337SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4338SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2; 4339SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4340SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2; 4341SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4342SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2; 4343SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4344SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2; 4345SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4346SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2; 4347SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 LIMIT 2; 4348SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2; 4349SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 LIMIT 2; 4350SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2; 4351SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 LIMIT 2; 4352SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2; 4353SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 LIMIT 2; 4354SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 4355SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 4356SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 4357SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 4358 4359## Range access, backwards scan ## 4360SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC; 4361SELECT * FROM t1 WHERE c2 <> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4362SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC; 4363SELECT * FROM t1 WHERE c2 > '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4364SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC; 4365SELECT * FROM t1 WHERE c2 >= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4366SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC; 4367SELECT * FROM t1 WHERE c2 < '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4368SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC; 4369SELECT * FROM t1 WHERE c2 <= '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4370SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC; 4371SELECT * FROM t1 WHERE c2 <=> '1998-12-30 11:30:45' ORDER BY c2 DESC LIMIT 2; 4372SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC; 4373SELECT * FROM t1 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-31 11:30:45' ORDER BY c2 DESC LIMIT 2; 4374SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC; 4375SELECT * FROM t1 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-31 11:30:45') ORDER BY c2 DESC LIMIT 2; 4376SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC; 4377SELECT * FROM t1 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-31 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 4378SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 4379SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 4380SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 4381SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 4382 4383# Select from table with clustered primary key, with column values zero, NULL 4384## Full table scan ## 4385--sorted_result 4386SELECT * FROM t2; 4387--sorted_result 4388SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4389--sorted_result 4390SELECT * FROM t2 WHERE c3 = '2008-01-06'; 4391 4392## Forward index scan, covering ## 4393--sorted_result 4394SELECT c1,c2 FROM t2; 4395 4396## Backward index scan, covering ## 4397SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 4398 4399## Forward index scan, non-covering ## 4400SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 4401 4402## Backward index scan, non-covering ## 4403SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 4404 4405## ref type access 4406SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2; 4407SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4408SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4409SELECT * FROM t2 WHERE c1 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4410 4411## Range access, ordered ## 4412SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 4413SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4414SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2; 4415SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4416SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 4417SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4418SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2; 4419SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4420SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 4421SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4422SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 4423SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4424SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 4425SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 4426SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 4427SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 4428SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 4429SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 4430SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 4431SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 4432SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 4433SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4434 4435## Range access, backwards scan ## 4436SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4437SELECT * FROM t2 WHERE c1 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4438SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4439SELECT * FROM t2 WHERE c1 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4440SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4441SELECT * FROM t2 WHERE c1 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4442SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4443SELECT * FROM t2 WHERE c1 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4444SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4445SELECT * FROM t2 WHERE c1 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4446SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4447SELECT * FROM t2 WHERE c1 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4448SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 4449SELECT * FROM t2 WHERE c1 BETWEEN '1983-09-07 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 4450SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 4451SELECT * FROM t2 WHERE c1 IN ('1983-09-07 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 4452SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 4453SELECT * FROM t2 WHERE c1 >= '1983-09-07 00:00:00' AND c1 < '2007-05-23 09:15:28' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 4454SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 4455SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4456SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 4457SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4458## Full table scan ## 4459--sorted_result 4460SELECT * FROM t2; 4461--sorted_result 4462SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4463--sorted_result 4464SELECT * FROM t2 WHERE c3 = '1998-12-29'; 4465 4466## Forward index scan, covering ## 4467--sorted_result 4468SELECT c1,c2 FROM t2; 4469 4470## Backward index scan, covering ## 4471SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 4472 4473## Forward index scan, non-covering ## 4474SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 4475 4476## Backward index scan, non-covering ## 4477SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 4478 4479## ref type access 4480SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 4481SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4482SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 4483SELECT * FROM t2 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4484 4485## Range access, ordered ## 4486SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 4487SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4488SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 4489SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4490SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 4491SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4492SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 4493SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4494SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 4495SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4496SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 4497SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4498SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 4499SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 4500SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 4501SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 4502SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2; 4503SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 4504SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 4505SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 4506SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 4507SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4508 4509## Range access, backwards scan ## 4510SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 4511SELECT * FROM t2 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4512SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 4513SELECT * FROM t2 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4514SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 4515SELECT * FROM t2 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4516SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 4517SELECT * FROM t2 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4518SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 4519SELECT * FROM t2 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4520SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 4521SELECT * FROM t2 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4522SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 4523SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 4524SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 4525SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 4526SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 4527SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 4528SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 4529SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4530SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 4531SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4532## Full table scan ## 4533--sorted_result 4534SELECT * FROM t2; 4535--sorted_result 4536SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 4537--sorted_result 4538SELECT * FROM t2 WHERE c4 = '2007-05-24 09:15:28'; 4539 4540## Forward index scan, covering ## 4541--sorted_result 4542SELECT c1,c2 FROM t2; 4543 4544## Backward index scan, covering ## 4545SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 4546 4547## Forward index scan, non-covering ## 4548SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 4549 4550## Backward index scan, non-covering ## 4551SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 4552 4553## ref type access 4554SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2; 4555SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4556SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4557SELECT * FROM t2 WHERE c2 = '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4558 4559## Range access, ordered ## 4560SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2; 4561SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4562SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2; 4563SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4564SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2; 4565SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4566SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2; 4567SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4568SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2; 4569SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4570SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2; 4571SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 LIMIT 2; 4572SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2; 4573SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 LIMIT 2; 4574SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2; 4575SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 LIMIT 2; 4576SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 4577SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4578SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 4579SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 4580SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 4581SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4582 4583## Range access, backwards scan ## 4584SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4585SELECT * FROM t2 WHERE c2 <> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4586SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4587SELECT * FROM t2 WHERE c2 > '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4588SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4589SELECT * FROM t2 WHERE c2 >= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4590SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4591SELECT * FROM t2 WHERE c2 < '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4592SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4593SELECT * FROM t2 WHERE c2 <= '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4594SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC; 4595SELECT * FROM t2 WHERE c2 <=> '1983-09-05 13:28:00' ORDER BY c1,c2 DESC LIMIT 2; 4596SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC; 4597SELECT * FROM t2 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '2007-05-23 09:15:28' ORDER BY c1,c2 DESC LIMIT 2; 4598SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC; 4599SELECT * FROM t2 WHERE c2 IN ('0000-00-00 00:00:00','2007-05-23 09:15:28') ORDER BY c1,c2 DESC LIMIT 2; 4600SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 4601SELECT * FROM t2 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '2007-05-23 09:15:28' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4602SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 4603SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4604SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 4605SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4606 4607# Select from table with clustered index, with column values zero, NULL 4608## Full table scan ## 4609--sorted_result 4610SELECT * FROM t3; 4611--sorted_result 4612SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 4613--sorted_result 4614SELECT * FROM t3 WHERE c3 = '2007-05-24'; 4615 4616## Forward index scan, covering ## 4617--sorted_result 4618SELECT c1,c2 FROM t3; 4619 4620## Backward index scan, covering ## 4621SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 4622 4623## Forward index scan, non-covering ## 4624SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 4625 4626## Backward index scan, non-covering ## 4627SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 4628 4629## ref type access 4630SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2; 4631SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4632SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4633SELECT * FROM t3 WHERE c1 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4634 4635## Range access, ordered ## 4636SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2; 4637SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4638SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2; 4639SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4640SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2; 4641SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4642SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2; 4643SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4644SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2; 4645SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4646SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2; 4647SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4648SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2; 4649SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 LIMIT 2; 4650SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2; 4651SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 LIMIT 2; 4652SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2; 4653SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 LIMIT 2; 4654SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 4655SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 4656SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 4657SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4658 4659## Range access, backwards scan ## 4660SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4661SELECT * FROM t3 WHERE c1 <> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4662SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4663SELECT * FROM t3 WHERE c1 > '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4664SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4665SELECT * FROM t3 WHERE c1 >= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4666SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4667SELECT * FROM t3 WHERE c1 < '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4668SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4669SELECT * FROM t3 WHERE c1 <= '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4670SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4671SELECT * FROM t3 WHERE c1 <=> '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4672SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC; 4673SELECT * FROM t3 WHERE c1 BETWEEN '1998-12-31 11:30:45' AND '2008-01-06 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4674SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC; 4675SELECT * FROM t3 WHERE c1 IN ('1998-12-31 11:30:45','2008-01-06 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 4676SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC; 4677SELECT * FROM t3 WHERE c1 >= '1998-12-31 11:30:45' AND c1 < '2008-01-06 00:00:00' AND c2 = '1998-12-28 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4678SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 4679SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4680SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 4681SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4682## Full table scan ## 4683--sorted_result 4684SELECT * FROM t3; 4685--sorted_result 4686SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 4687--sorted_result 4688SELECT * FROM t3 WHERE c3 = '1998-12-29'; 4689 4690## Forward index scan, covering ## 4691--sorted_result 4692SELECT c1,c2 FROM t3; 4693 4694## Backward index scan, covering ## 4695SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 4696 4697## Forward index scan, non-covering ## 4698SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 4699 4700## Backward index scan, non-covering ## 4701SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 4702 4703## ref type access 4704SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2; 4705SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4706SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC; 4707SELECT * FROM t3 WHERE c1 = '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4708 4709## Range access, ordered ## 4710SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2; 4711SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4712SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2; 4713SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4714SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2; 4715SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4716SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2; 4717SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4718SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2; 4719SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4720SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2; 4721SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 LIMIT 2; 4722SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2; 4723SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 LIMIT 2; 4724SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2; 4725SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 LIMIT 2; 4726SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2; 4727SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 4728SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 4729SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 4730SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 4731SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4732 4733## Range access, backwards scan ## 4734SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC; 4735SELECT * FROM t3 WHERE c1 <> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4736SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC; 4737SELECT * FROM t3 WHERE c1 > '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4738SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC; 4739SELECT * FROM t3 WHERE c1 >= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4740SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC; 4741SELECT * FROM t3 WHERE c1 < '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4742SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC; 4743SELECT * FROM t3 WHERE c1 <= '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4744SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC; 4745SELECT * FROM t3 WHERE c1 <=> '0000-00-00' ORDER BY c1,c2 DESC LIMIT 2; 4746SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC; 4747SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2009-01-29' ORDER BY c1,c2 DESC LIMIT 2; 4748SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC; 4749SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2009-01-29') ORDER BY c1,c2 DESC LIMIT 2; 4750SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 4751SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2009-01-29' AND c2 = '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 4752SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 4753SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4754SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 4755SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4756## Full table scan ## 4757--sorted_result 4758SELECT * FROM t3; 4759--sorted_result 4760SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 4761--sorted_result 4762SELECT * FROM t3 WHERE c4 = '2007-05-24 09:15:28'; 4763 4764## Forward index scan, covering ## 4765--sorted_result 4766SELECT c1,c2 FROM t3; 4767 4768## Backward index scan, covering ## 4769SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 4770 4771## Forward index scan, non-covering ## 4772SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 4773 4774## Backward index scan, non-covering ## 4775SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 4776 4777## ref type access 4778SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2; 4779SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4780SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4781SELECT * FROM t3 WHERE c2 = '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4782 4783## Range access, ordered ## 4784SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2; 4785SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4786SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2; 4787SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4788SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2; 4789SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4790SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2; 4791SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4792SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2; 4793SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4794SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2; 4795SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 LIMIT 2; 4796SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2; 4797SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 LIMIT 2; 4798SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2; 4799SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 LIMIT 2; 4800SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 4801SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 4802SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 4803SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 4804SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 4805SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 4806 4807## Range access, backwards scan ## 4808SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4809SELECT * FROM t3 WHERE c2 <> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4810SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4811SELECT * FROM t3 WHERE c2 > '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4812SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4813SELECT * FROM t3 WHERE c2 >= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4814SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4815SELECT * FROM t3 WHERE c2 < '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4816SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4817SELECT * FROM t3 WHERE c2 <= '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4818SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC; 4819SELECT * FROM t3 WHERE c2 <=> '1998-12-29 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4820SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC; 4821SELECT * FROM t3 WHERE c2 BETWEEN '0000-00-00 00:00:00' AND '1998-12-30 11:30:45' ORDER BY c1,c2 DESC LIMIT 2; 4822SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC; 4823SELECT * FROM t3 WHERE c2 IN ('0000-00-00 00:00:00','1998-12-30 11:30:45') ORDER BY c1,c2 DESC LIMIT 2; 4824SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 4825SELECT * FROM t3 WHERE c2 >= '0000-00-00 00:00:00' AND c2 < '1998-12-30 11:30:45' AND c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 4826SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 4827SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 4828SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 4829SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 4830 4831# Test Error conditions- PK constraint violation, Unique constraint violation 4832 4833# Insert duplicate value to pk column 4834--error ER_DUP_ENTRY 4835INSERT INTO t1(c1,c2) VALUES('20070525','070523091528') /* Row with c1='20070525' exists */; 4836 4837# Insert duplicate value to clustered pk, throws error 4838--error ER_DUP_ENTRY 4839INSERT INTO t2(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 4840 4841# Insert duplicate value to unique column, throws error 4842--error ER_DUP_ENTRY 4843INSERT INTO t1(c1,c2) VALUES(19840905,830907) /* Row with c2=830907 exists */; 4844 4845# Insert duplicate value to clustered unique column, throws error 4846--error ER_DUP_ENTRY 4847INSERT INTO t3(c1,c2) VALUES(19830907,830907) /* Row with c1=19830907,c2=830907 exists */; 4848 4849# Test 'INSERT IGNORE' with the same rows that reported constraint violation above 4850# Ignore pk constraint 4851INSERT IGNORE INTO t1(c1,c2) VALUES('20070525','20070527') /* doesn't throw error */; 4852INSERT IGNORE INTO t2(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 4853# Ignore unique constraint 4854INSERT IGNORE INTO t1(c1,c2) VALUES(19840905,830907) /* doesn't throw error */; 4855INSERT IGNORE INTO t3(c1,c2) VALUES(19830907,830907) /* doesn't throw error */; 4856# Test that the rows are same 4857SELECT * FROM t1 WHERE c1='20070525' /* Returns 1 row with c1=2007-05-25 */; 4858SELECT * FROM t2 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 4859SELECT * FROM t1 WHERE c2=830907 /* Returns 1 row with c2=1983-09-07 */; 4860SELECT * FROM t3 WHERE c1=19830907 AND c2=830907 /* Returns 1 row with c1=1983-09-07 and c2=1983-09-07 */; 4861 4862# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column PK 4863SELECT * FROM t1 WHERE c1='20070527' /* Returns no rows */; 4864INSERT INTO t1(c1) VALUES('20070525') ON DUPLICATE KEY UPDATE c1='20070527'; 4865SELECT * FROM t1 WHERE c1='20070527' /* Returns 1 row with c1=2007-05-27 */; 4866 4867# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column PK 4868SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 4869INSERT INTO t2(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 4870SELECT * FROM t2 WHERE c1=19830909 AND c2=830910 /* Returns 1 row with c1=19830909,c2=830910 */; 4871 4872# Test 'INSERT ON DUPLICATE KEY UPDATE' with single column unique 4873SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 4874INSERT INTO t1(c1,c2) VALUES(19840905,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 4875SELECT * FROM t1 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 4876 4877# Test 'INSERT ON DUPLICATE KEY UPDATE' with multi-column unique 4878SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns no rows */; 4879INSERT INTO t3(c1,c2) VALUES(19830907,830907) ON DUPLICATE KEY UPDATE c1=19830909,c2=830910; 4880SELECT * FROM t3 WHERE c1=19830909 AND c2=830910 /* Returns 1 row */; 4881 4882# Test 'INSERT SET' 4883INSERT INTO t1 SET c1='1999-01-01',c2='1999-01-01'; 4884INSERT INTO t2 SET c1='1999-01-01',c2='1999-01-01'; 4885INSERT INTO t3 SET c1='1999-01-01'; 4886INSERT INTO t4 SET c2='1999-01-01'; 4887SELECT * FROM t1 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 4888SELECT * FROM t2 WHERE c1='1999-01-01' AND c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 4889SELECT * FROM t3 WHERE c1='1999-01-01' /* Returns 1 row with values for other column as NULL */; 4890SELECT * FROM t4 WHERE c2='1999-01-01' /* Returns 1 row with values for other column as NULL */; 4891 4892# Test 'INSERT INTO SELECT FROM' 4893CREATE TABLE t5(c1 TIMESTAMP NOT NULL, c2 TIMESTAMP NULL, c3 DATE, c4 DATETIME, INDEX idx(c1,c2)); 4894INSERT INTO t5 SELECT * FROM t1 WHERE c1 >=0 AND c1 < '20070523091528'; 4895--sorted_result 4896SELECT * FROM t5; 4897TRUNCATE TABLE t5; 4898INSERT INTO t5 SELECT * FROM t2 WHERE c1 >='98-12-31 11:30:45' AND c1 < '20070523091528' AND c2 <> '070525'; 4899--sorted_result 4900SELECT * FROM t5; 4901TRUNCATE TABLE t5; 4902INSERT INTO t5 SELECT * FROM t3 WHERE c2 BETWEEN 0 AND '1998-12-30 11:30:45'; 4903--sorted_result 4904SELECT * FROM t5; 4905TRUNCATE TABLE t5; 4906DROP TABLE t5; 4907 4908# Test Specific values to column types 4909 4910# Test insert range values to 'TIMESTAMP' columns 4911INSERT INTO t1 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06'); 4912INSERT INTO t2 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06'); 4913INSERT INTO t3 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06'); 4914INSERT INTO t4 VALUES('1971-01-01 00:00:01','1980-01-01 00:00:01','2009-01-01','2009-01-02'),('1990-01-01 00:00:01','2000-01-01 00:00:01','2009-01-03','2009-01-04'),('2038-01-09 03:14:07','2038-01-09 03:14:07','2009-01-05','2009-01-06'); 4915 4916# Insert dates containing a zero for the month or for the day, convert to zero 4917INSERT INTO t4(c1,c2) VALUES('2010-00-01','2010-10-00'); 4918 4919# Insert invalid dates, inserts zero values 4920INSERT INTO t4(c1) VALUES('2009-02-30'),('2009-04-31'),('2009-06-31'),('2009-09-31'),('2009-11-31'),('2009-13-01'),('2009-12-32'),('2009-01-01 23:60:60'),('2009-01-01 24:59:59'),('2009-01-01 23:59:60'); 4921 4922# Inserting NOW() to TIMESTAMP NOT NULL field 4923DELETE FROM t1 WHERE c1=NOW() /* because the row with current timestamp exists */; 4924INSERT INTO t1 VALUES(NOW(),NOW(),NOW(),NOW()); 4925SELECT * FROM t1 WHERE c1 IS NULL /* returns no rows */; 4926SELECT * FROM t1 WHERE c1=NOW() /* returns 1 row */; 4927INSERT INTO t2(c1) VALUES(NOW()); 4928INSERT INTO t3 VALUES(NOW(),'2008-01-14 00:00:00','08-01-15','08/01/16'); 4929INSERT INTO t4 VALUES(NOW(),'2008-01-14 00:00:00','08-01-15','08/01/16'); 4930 4931# Test INSERT SET with no default 4932SET SQL_MODE=STRICT_ALL_TABLES; 4933INSERT INTO t4 SET c2='1999-01-01',c1=NOW(); 4934SET SQL_MODE=''; 4935 4936--sorted_result 4937SELECT * FROM t1; 4938--sorted_result 4939SELECT * FROM t2; 4940--sorted_result 4941SELECT * FROM t3; 4942--sorted_result 4943SELECT * FROM t4; 4944# Now select using various table access methods 4945## Full table scan ## 4946--sorted_result 4947SELECT * FROM t1; 4948--sorted_result 4949SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 4950--sorted_result 4951SELECT * FROM t1 WHERE c3 = '2007-05-24'; 4952 4953## Forward index scan, covering ## 4954--sorted_result 4955SELECT c1 FROM t1; 4956 4957## Backward index scan, covering ## 4958SELECT c1 FROM t1 ORDER BY c1 DESC; 4959 4960## Forward index scan, non-covering ## 4961SELECT * FROM t1 ORDER BY c1 LIMIT 2; 4962 4963## Backward index scan, non-covering ## 4964SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 4965 4966## ref type access 4967SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1; 4968SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4969SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC; 4970SELECT * FROM t1 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 4971 4972## Range access, ordered ## 4973SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1; 4974SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4975SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1; 4976SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4977SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1; 4978SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4979SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1; 4980SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4981SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1; 4982SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4983SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1; 4984SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 LIMIT 2; 4985SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1; 4986SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2; 4987SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1; 4988SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2; 4989SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1; 4990SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2; 4991SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 4992SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4993SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 4994SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4995 4996## Range access, backwards scan ## 4997SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC; 4998SELECT * FROM t1 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 4999SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC; 5000SELECT * FROM t1 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 5001SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC; 5002SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 5003SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC; 5004SELECT * FROM t1 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 5005SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC; 5006SELECT * FROM t1 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 5007SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC; 5008SELECT * FROM t1 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1 DESC LIMIT 2; 5009SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC; 5010SELECT * FROM t1 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2; 5011SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC; 5012SELECT * FROM t1 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2; 5013SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 DESC; 5014SELECT * FROM t1 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2; 5015SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 5016SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 5017SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 5018SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 5019## Full table scan ## 5020--sorted_result 5021SELECT * FROM t1; 5022--sorted_result 5023SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 5024--sorted_result 5025SELECT * FROM t1 WHERE c3 = '2007-05-26'; 5026 5027## Forward index scan, covering ## 5028--sorted_result 5029SELECT c1 FROM t1; 5030 5031## Backward index scan, covering ## 5032SELECT c1 FROM t1 ORDER BY c1 DESC; 5033 5034## Forward index scan, non-covering ## 5035SELECT * FROM t1 ORDER BY c1 LIMIT 2; 5036 5037## Backward index scan, non-covering ## 5038SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 5039 5040## ref type access 5041SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1; 5042SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5043SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC; 5044SELECT * FROM t1 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5045 5046## Range access, ordered ## 5047SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1; 5048SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5049SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1; 5050SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5051SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1; 5052SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5053SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1; 5054SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5055SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1; 5056SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5057SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1; 5058SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 LIMIT 2; 5059SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1; 5060SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 LIMIT 2; 5061SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1; 5062SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 LIMIT 2; 5063SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1; 5064SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2; 5065SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 5066SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 5067SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 5068SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 5069 5070## Range access, backwards scan ## 5071SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC; 5072SELECT * FROM t1 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5073SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC; 5074SELECT * FROM t1 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5075SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC; 5076SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5077SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC; 5078SELECT * FROM t1 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5079SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC; 5080SELECT * FROM t1 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5081SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC; 5082SELECT * FROM t1 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5083SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC; 5084SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1 DESC LIMIT 2; 5085SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC; 5086SELECT * FROM t1 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1 DESC LIMIT 2; 5087SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC; 5088SELECT * FROM t1 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5089SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 5090SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 5091SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 5092SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 5093## Full table scan ## 5094--sorted_result 5095SELECT * FROM t1; 5096--sorted_result 5097SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; 5098--sorted_result 5099SELECT * FROM t1 WHERE c3 = '1998-12-28'; 5100 5101## Forward index scan, covering ## 5102--sorted_result 5103SELECT c1 FROM t1; 5104 5105## Backward index scan, covering ## 5106SELECT c1 FROM t1 ORDER BY c1 DESC; 5107 5108## Forward index scan, non-covering ## 5109SELECT * FROM t1 ORDER BY c1 LIMIT 2; 5110 5111## Backward index scan, non-covering ## 5112SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; 5113 5114## ref type access 5115SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1; 5116SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5117SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC; 5118SELECT * FROM t1 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5119 5120## Range access, ordered ## 5121SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1; 5122SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5123SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1; 5124SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5125SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1; 5126SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5127SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1; 5128SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5129SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1; 5130SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5131SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1; 5132SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5133SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1; 5134# Disabling warnings due to #52283 5135--disable_warnings 5136SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 LIMIT 2; 5137--enable_warnings 5138SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1; 5139SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 LIMIT 2; 5140SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1; 5141SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 LIMIT 2; 5142SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; 5143SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 5144SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; 5145SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 5146 5147## Range access, backwards scan ## 5148SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC; 5149SELECT * FROM t1 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5150SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC; 5151SELECT * FROM t1 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5152SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC; 5153SELECT * FROM t1 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5154SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC; 5155SELECT * FROM t1 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5156SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC; 5157SELECT * FROM t1 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5158SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC; 5159SELECT * FROM t1 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5160SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC; 5161SELECT * FROM t1 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1 DESC LIMIT 2; 5162SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC; 5163SELECT * FROM t1 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1 DESC LIMIT 2; 5164SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC; 5165SELECT * FROM t1 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1 DESC LIMIT 2; 5166SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; 5167SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 5168SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 5169SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 5170## Full table scan ## 5171--sorted_result 5172SELECT * FROM t1; 5173--sorted_result 5174SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 5175--sorted_result 5176SELECT * FROM t1 WHERE c4 = '2009-01-29'; 5177 5178## Forward index scan, covering ## 5179--sorted_result 5180SELECT c2 FROM t1; 5181 5182## Backward index scan, covering ## 5183SELECT c2 FROM t1 ORDER BY c2 DESC; 5184 5185## Forward index scan, non-covering ## 5186SELECT * FROM t1 ORDER BY c2 LIMIT 2; 5187 5188## Backward index scan, non-covering ## 5189SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 5190 5191## ref type access 5192SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2; 5193SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5194SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC; 5195SELECT * FROM t1 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5196 5197## Range access, ordered ## 5198SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2; 5199SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5200SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2; 5201SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5202SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2; 5203SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5204SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2; 5205SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5206SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2; 5207SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5208SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2; 5209SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5210SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2; 5211SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5212SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2; 5213SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 LIMIT 2; 5214SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2; 5215SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 LIMIT 2; 5216SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 5217SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 5218SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 5219SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 5220 5221## Range access, backwards scan ## 5222SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC; 5223SELECT * FROM t1 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5224SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC; 5225SELECT * FROM t1 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5226SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC; 5227SELECT * FROM t1 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5228SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC; 5229SELECT * FROM t1 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5230SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC; 5231SELECT * FROM t1 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5232SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC; 5233SELECT * FROM t1 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5234SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC; 5235SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5236SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC; 5237SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c2 DESC LIMIT 2; 5238SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 DESC; 5239SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c2 DESC LIMIT 2; 5240SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 5241SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 5242SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 5243SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 5244## Full table scan ## 5245--sorted_result 5246SELECT * FROM t1; 5247--sorted_result 5248SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; 5249--sorted_result 5250SELECT * FROM t1 WHERE c4 = '2008-01-05'; 5251 5252## Forward index scan, covering ## 5253--sorted_result 5254SELECT c2 FROM t1; 5255 5256## Backward index scan, covering ## 5257SELECT c2 FROM t1 ORDER BY c2 DESC; 5258 5259## Forward index scan, non-covering ## 5260SELECT * FROM t1 ORDER BY c2 LIMIT 2; 5261 5262## Backward index scan, non-covering ## 5263SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; 5264 5265## ref type access 5266SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2; 5267SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5268SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC; 5269SELECT * FROM t1 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5270 5271## Range access, ordered ## 5272SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2; 5273SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5274SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2; 5275SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5276SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2; 5277SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5278SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2; 5279SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5280SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2; 5281SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5282SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2; 5283SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 LIMIT 2; 5284SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2; 5285# Disabling warnings due to #52283 5286--disable_warnings 5287SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 LIMIT 2; 5288--enable_warnings 5289SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2; 5290SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 LIMIT 2; 5291SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2; 5292SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 LIMIT 2; 5293SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; 5294SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; 5295SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; 5296SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; 5297 5298## Range access, backwards scan ## 5299SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC; 5300SELECT * FROM t1 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5301SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC; 5302SELECT * FROM t1 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5303SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC; 5304SELECT * FROM t1 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5305SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC; 5306SELECT * FROM t1 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5307SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC; 5308SELECT * FROM t1 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5309SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC; 5310SELECT * FROM t1 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5311SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC; 5312# Disabling warnings due to #52283 5313--disable_warnings 5314SELECT * FROM t1 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c2 DESC LIMIT 2; 5315--enable_warnings 5316SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC; 5317SELECT * FROM t1 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c2 DESC LIMIT 2; 5318SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC; 5319SELECT * FROM t1 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c2 DESC LIMIT 2; 5320SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; 5321SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; 5322SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; 5323SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; 5324 5325# Using Index-merge 5326--sorted_result 5327SELECT * FROM t1 WHERE c1='1971-01-01 00:00:01' OR c2='2038-01-09 03:14:07'; 5328 5329# Using index for group-by 5330--sorted_result 5331SELECT c2 FROM t1 GROUP BY c2; 5332 5333## Full table scan ## 5334--sorted_result 5335SELECT * FROM t2; 5336--sorted_result 5337SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5338--sorted_result 5339SELECT * FROM t2 WHERE c3 = '2007-05-24'; 5340 5341## Forward index scan, covering ## 5342--sorted_result 5343SELECT c1,c2 FROM t2; 5344 5345## Backward index scan, covering ## 5346SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 5347 5348## Forward index scan, non-covering ## 5349SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 5350 5351## Backward index scan, non-covering ## 5352SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 5353 5354## ref type access 5355SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2; 5356SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5357SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5358SELECT * FROM t2 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5359 5360## Range access, ordered ## 5361SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2; 5362SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5363SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2; 5364SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5365SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2; 5366SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5367SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2; 5368SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5369SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2; 5370SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5371SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2; 5372SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5373SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5374SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5375SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2; 5376SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5377SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5378SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5379SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 5380SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5381SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5382SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5383 5384## Range access, backwards scan ## 5385SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5386SELECT * FROM t2 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5387SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5388SELECT * FROM t2 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5389SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5390SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5391SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5392SELECT * FROM t2 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5393SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5394SELECT * FROM t2 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5395SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5396SELECT * FROM t2 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5397SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5398SELECT * FROM t2 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5399SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 5400SELECT * FROM t2 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 5401SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5402SELECT * FROM t2 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5403SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5404SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5405SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5406SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5407## Full table scan ## 5408--sorted_result 5409SELECT * FROM t2; 5410--sorted_result 5411SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5412--sorted_result 5413SELECT * FROM t2 WHERE c3 = '2007-05-26'; 5414 5415## Forward index scan, covering ## 5416--sorted_result 5417SELECT c1,c2 FROM t2; 5418 5419## Backward index scan, covering ## 5420SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 5421 5422## Forward index scan, non-covering ## 5423SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 5424 5425## Backward index scan, non-covering ## 5426SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 5427 5428## ref type access 5429SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 5430SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5431SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5432SELECT * FROM t2 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5433 5434## Range access, ordered ## 5435SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2; 5436SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5437SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2; 5438SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5439SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2; 5440SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5441SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2; 5442SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5443SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2; 5444SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5445SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2; 5446SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5447SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5448SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5449SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2; 5450SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5451SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 5452--disable_warnings 5453SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5454--enable_warnings 5455SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 5456SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5457SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5458SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5459 5460## Range access, backwards scan ## 5461SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5462SELECT * FROM t2 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5463SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5464SELECT * FROM t2 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5465SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5466SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5467SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5468SELECT * FROM t2 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5469SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5470SELECT * FROM t2 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5471SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5472SELECT * FROM t2 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5473SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5474SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5475SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 5476SELECT * FROM t2 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 5477SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 5478--disable_warnings 5479SELECT * FROM t2 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5480--enable_warnings 5481SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5482SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5483SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5484SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5485## Full table scan ## 5486--sorted_result 5487SELECT * FROM t2; 5488--sorted_result 5489SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5490--sorted_result 5491SELECT * FROM t2 WHERE c3 = '1998-12-28'; 5492 5493## Forward index scan, covering ## 5494--sorted_result 5495SELECT c1,c2 FROM t2; 5496 5497## Backward index scan, covering ## 5498SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 5499 5500## Forward index scan, non-covering ## 5501SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 5502 5503## Backward index scan, non-covering ## 5504SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 5505 5506## ref type access 5507SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 5508SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5509SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5510SELECT * FROM t2 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5511 5512## Range access, ordered ## 5513SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2; 5514SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5515SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2; 5516SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5517SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2; 5518SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5519SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2; 5520SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5521SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2; 5522SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5523SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2; 5524SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5525SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2; 5526# Disabling warnings due to #52283 5527--disable_warnings 5528SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5529--enable_warnings 5530SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2; 5531SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2; 5532SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 5533--disable_warnings 5534SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5535--enable_warnings 5536SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; 5537SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5538SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5539SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5540 5541## Range access, backwards scan ## 5542SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5543SELECT * FROM t2 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5544SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5545SELECT * FROM t2 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5546SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5547SELECT * FROM t2 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5548SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5549SELECT * FROM t2 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5550SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5551SELECT * FROM t2 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5552SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5553SELECT * FROM t2 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5554SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5555SELECT * FROM t2 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5556SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC; 5557SELECT * FROM t2 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 5558SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 5559--disable_warnings 5560SELECT * FROM t2 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5561--enable_warnings 5562SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5563SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5564SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5565SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5566## Full table scan ## 5567--sorted_result 5568SELECT * FROM t2; 5569--sorted_result 5570SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 5571--sorted_result 5572SELECT * FROM t2 WHERE c4 = '2009-01-29'; 5573 5574## Forward index scan, covering ## 5575--sorted_result 5576SELECT c1,c2 FROM t2; 5577 5578## Backward index scan, covering ## 5579SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 5580 5581## Forward index scan, non-covering ## 5582SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 5583 5584## Backward index scan, non-covering ## 5585SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 5586 5587## ref type access 5588SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5589SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5590SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5591SELECT * FROM t2 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5592 5593## Range access, ordered ## 5594SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2; 5595SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5596SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2; 5597SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5598SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2; 5599SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5600SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2; 5601SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5602SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2; 5603SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5604SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2; 5605SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5606SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5607SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5608SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2; 5609SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5610SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5611SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5612SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 5613SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 5614SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 5615SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5616 5617## Range access, backwards scan ## 5618SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5619SELECT * FROM t2 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5620SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5621SELECT * FROM t2 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5622SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5623SELECT * FROM t2 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5624SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5625SELECT * FROM t2 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5626SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5627SELECT * FROM t2 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5628SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5629SELECT * FROM t2 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5630SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5631SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5632SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 5633SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 5634SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5635SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5636SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 5637SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5638SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 5639SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5640## Full table scan ## 5641--sorted_result 5642SELECT * FROM t2; 5643--sorted_result 5644SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; 5645--sorted_result 5646SELECT * FROM t2 WHERE c4 = '2008-01-07'; 5647 5648## Forward index scan, covering ## 5649--sorted_result 5650SELECT c1,c2 FROM t2; 5651 5652## Backward index scan, covering ## 5653SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; 5654 5655## Forward index scan, non-covering ## 5656SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; 5657 5658## Backward index scan, non-covering ## 5659SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; 5660 5661## ref type access 5662SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2; 5663SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5664SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5665SELECT * FROM t2 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5666 5667## Range access, ordered ## 5668SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2; 5669SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5670SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2; 5671SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5672SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2; 5673SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5674SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2; 5675SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5676SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2; 5677SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5678SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2; 5679SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5680SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2; 5681SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5682SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2; 5683SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2; 5684SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 5685SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5686SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; 5687SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 5688SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; 5689SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5690 5691## Range access, backwards scan ## 5692SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5693SELECT * FROM t2 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5694SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5695SELECT * FROM t2 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5696SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5697SELECT * FROM t2 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5698SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5699SELECT * FROM t2 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5700SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5701SELECT * FROM t2 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5702SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 5703SELECT * FROM t2 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5704SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 5705SELECT * FROM t2 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5706SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC; 5707SELECT * FROM t2 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 5708SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5709SELECT * FROM t2 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5710SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 5711SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5712SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 5713SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5714 5715## Full table scan ## 5716--sorted_result 5717SELECT * FROM t3; 5718--sorted_result 5719SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 5720--sorted_result 5721SELECT * FROM t3 WHERE c3 = '2007-05-24'; 5722 5723## Forward index scan, covering ## 5724--sorted_result 5725SELECT c1,c2 FROM t3; 5726 5727## Backward index scan, covering ## 5728SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 5729 5730## Forward index scan, non-covering ## 5731SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 5732 5733## Backward index scan, non-covering ## 5734SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 5735 5736## ref type access 5737SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2; 5738SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5739SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5740SELECT * FROM t3 WHERE c1 = '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5741 5742## Range access, ordered ## 5743SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2; 5744SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5745SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2; 5746SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5747SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2; 5748SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5749SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2; 5750SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5751SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2; 5752SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5753SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2; 5754SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 LIMIT 2; 5755SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5756SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5757SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2; 5758SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5759SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5760SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5761SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 5762SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5763SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5764SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5765 5766## Range access, backwards scan ## 5767SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5768SELECT * FROM t3 WHERE c1 <> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5769SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5770SELECT * FROM t3 WHERE c1 > '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5771SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5772SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5773SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5774SELECT * FROM t3 WHERE c1 < '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5775SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5776SELECT * FROM t3 WHERE c1 <= '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5777SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC; 5778SELECT * FROM t3 WHERE c1 <=> '1971-01-01 00:00:01' ORDER BY c1,c2 DESC LIMIT 2; 5779SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5780SELECT * FROM t3 WHERE c1 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5781SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 5782SELECT * FROM t3 WHERE c1 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 5783SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5784SELECT * FROM t3 WHERE c1 >= '1971-01-01 00:00:01' AND c1 < '2038-01-09 03:14:07' AND c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5785SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5786SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5787SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5788SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5789## Full table scan ## 5790--sorted_result 5791SELECT * FROM t3; 5792--sorted_result 5793SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 5794--sorted_result 5795SELECT * FROM t3 WHERE c3 = '2007-05-26'; 5796 5797## Forward index scan, covering ## 5798--sorted_result 5799SELECT c1,c2 FROM t3; 5800 5801## Backward index scan, covering ## 5802SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 5803 5804## Forward index scan, non-covering ## 5805SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 5806 5807## Backward index scan, non-covering ## 5808SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 5809 5810## ref type access 5811SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2; 5812SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5813SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5814SELECT * FROM t3 WHERE c1 = '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5815 5816## Range access, ordered ## 5817SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2; 5818SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5819SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2; 5820SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5821SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2; 5822SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5823SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2; 5824SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5825SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2; 5826SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5827SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2; 5828SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5829SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5830SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5831SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2; 5832SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5833SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 5834SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5835SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 5836SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5837SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5838SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5839 5840## Range access, backwards scan ## 5841SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5842SELECT * FROM t3 WHERE c1 <> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5843SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5844SELECT * FROM t3 WHERE c1 > '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5845SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5846SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5847SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5848SELECT * FROM t3 WHERE c1 < '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5849SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5850SELECT * FROM t3 WHERE c1 <= '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5851SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC; 5852SELECT * FROM t3 WHERE c1 <=> '0000-00-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5853SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5854SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00 00:00:00' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5855SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 5856SELECT * FROM t3 WHERE c1 IN ('0000-00-00 00:00:00','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 5857SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 5858SELECT * FROM t3 WHERE c1 >= '0000-00-00 00:00:00' AND c1 < '2038-01-09 03:14:07' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5859SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5860SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5861SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5862SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5863## Full table scan ## 5864--sorted_result 5865SELECT * FROM t3; 5866--sorted_result 5867SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; 5868--sorted_result 5869SELECT * FROM t3 WHERE c3 = '1998-12-28'; 5870 5871## Forward index scan, covering ## 5872--sorted_result 5873SELECT c1,c2 FROM t3; 5874 5875## Backward index scan, covering ## 5876SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 5877 5878## Forward index scan, non-covering ## 5879SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 5880 5881## Backward index scan, non-covering ## 5882SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 5883 5884## ref type access 5885SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 5886SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5887SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5888SELECT * FROM t3 WHERE c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5889 5890## Range access, ordered ## 5891SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2; 5892# Disabling warnings due to #52283 5893--disable_warnings 5894SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5895--enable_warnings 5896SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2; 5897SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5898SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2; 5899SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5900SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2; 5901SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5902SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2; 5903SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5904SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2; 5905SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5906SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2; 5907# Disabling warnings due to #52283 5908--disable_warnings 5909SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 5910--enable_warnings 5911SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2; 5912SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 LIMIT 2; 5913SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2; 5914SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 5915SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; 5916SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; 5917SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; 5918SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5919 5920## Range access, backwards scan ## 5921SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5922SELECT * FROM t3 WHERE c1 <> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5923SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5924SELECT * FROM t3 WHERE c1 > '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5925SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5926SELECT * FROM t3 WHERE c1 >= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5927SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5928SELECT * FROM t3 WHERE c1 < '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5929SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5930SELECT * FROM t3 WHERE c1 <= '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5931SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5932SELECT * FROM t3 WHERE c1 <=> '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5933SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 5934SELECT * FROM t3 WHERE c1 BETWEEN '0000-00-00' AND '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5935SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC; 5936SELECT * FROM t3 WHERE c1 IN ('0000-00-00','2010-00-01 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 5937SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 5938SELECT * FROM t3 WHERE c1 >= '0000-00-00' AND c1 < '2010-00-01 00:00:00' AND c2 = '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 5939SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; 5940SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 5941SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; 5942SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 5943## Full table scan ## 5944--sorted_result 5945SELECT * FROM t3; 5946--sorted_result 5947SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5948--sorted_result 5949SELECT * FROM t3 WHERE c4 = '2009-01-29'; 5950 5951## Forward index scan, covering ## 5952--sorted_result 5953SELECT c1,c2 FROM t3; 5954 5955## Backward index scan, covering ## 5956SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 5957 5958## Forward index scan, non-covering ## 5959SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 5960 5961## Backward index scan, non-covering ## 5962SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 5963 5964## ref type access 5965SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5966SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5967SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5968SELECT * FROM t3 WHERE c2 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5969 5970## Range access, ordered ## 5971SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2; 5972SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5973SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2; 5974SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5975SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2; 5976SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5977SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2; 5978SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5979SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2; 5980SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5981SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2; 5982SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5983SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2; 5984SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5985SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2; 5986SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 LIMIT 2; 5987SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2; 5988SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 LIMIT 2; 5989SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 5990SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 5991SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 5992SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 5993 5994## Range access, backwards scan ## 5995SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5996SELECT * FROM t3 WHERE c2 <> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5997SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 5998SELECT * FROM t3 WHERE c2 > '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 5999SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6000SELECT * FROM t3 WHERE c2 >= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6001SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6002SELECT * FROM t3 WHERE c2 < '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6003SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6004SELECT * FROM t3 WHERE c2 <= '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6005SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6006SELECT * FROM t3 WHERE c2 <=> '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6007SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6008SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6009SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC; 6010SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2038-01-09 03:14:07') ORDER BY c1,c2 DESC LIMIT 2; 6011SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC; 6012SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2038-01-09 03:14:07' AND c1 = '2038-01-09 03:14:07' ORDER BY c1,c2 DESC LIMIT 2; 6013SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 6014SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 6015SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 6016SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 6017## Full table scan ## 6018--sorted_result 6019SELECT * FROM t3; 6020--sorted_result 6021SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 6022--sorted_result 6023SELECT * FROM t3 WHERE c4 = '2008-01-09'; 6024 6025## Forward index scan, covering ## 6026--sorted_result 6027SELECT c1,c2 FROM t3; 6028 6029## Backward index scan, covering ## 6030SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; 6031 6032## Forward index scan, non-covering ## 6033SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; 6034 6035## Backward index scan, non-covering ## 6036SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; 6037 6038## ref type access 6039SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2; 6040SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6041SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6042SELECT * FROM t3 WHERE c2 = '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6043 6044## Range access, ordered ## 6045SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2; 6046SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6047SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2; 6048SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6049SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2; 6050SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6051SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2; 6052SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6053SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2; 6054SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6055SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2; 6056SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6057SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2; 6058SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 LIMIT 2; 6059SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2; 6060SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 LIMIT 2; 6061SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2; 6062SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 LIMIT 2; 6063SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; 6064SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; 6065SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; 6066SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; 6067 6068## Range access, backwards scan ## 6069SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6070SELECT * FROM t3 WHERE c2 <> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6071SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6072SELECT * FROM t3 WHERE c2 > '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6073SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6074SELECT * FROM t3 WHERE c2 >= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6075SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6076SELECT * FROM t3 WHERE c2 < '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6077SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6078SELECT * FROM t3 WHERE c2 <= '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6079SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC; 6080SELECT * FROM t3 WHERE c2 <=> '2010-10-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6081SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC; 6082SELECT * FROM t3 WHERE c2 BETWEEN '1971-01-01 00:00:01' AND '2010-10-00 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6083SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC; 6084SELECT * FROM t3 WHERE c2 IN ('1971-01-01 00:00:01','2010-10-00 00:00:00') ORDER BY c1,c2 DESC LIMIT 2; 6085SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC; 6086SELECT * FROM t3 WHERE c2 >= '1971-01-01 00:00:01' AND c2 < '2010-10-00 00:00:00' AND c1 = '2010-00-01 00:00:00' ORDER BY c1,c2 DESC LIMIT 2; 6087SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; 6088SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; 6089SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; 6090SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; 6091 6092# Using index for group-by 6093--sorted_result 6094SELECT c1 FROM t3 GROUP BY c1; 6095--sorted_result 6096SELECT DISTINCT c1 FROM t3; 6097--sorted_result 6098SELECT c1,MIN(c2) FROM t3 GROUP BY c1; 6099DROP TABLE t1,t2,t3,t4; 6100 6101