1--disable_warnings 2DROP TABLE IF EXISTS t1,t2,t3,t4,t5; 3--enable_warnings 4 5######## Running INSERT tests for TINYINT ######## 6 7# Create tables 8CREATE TABLE t1(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 9CREATE TABLE t2(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6)); 10CREATE TABLE t3(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7)); 11 12# Insert some rows with targeted values 13INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 14INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 15INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 16 17# Insert duplicates for parts of the clustered key 18INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 19INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 20 21# Insert permissible NULLs 22INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 23INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 24INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 25 26# Insert empty string '' 27INSERT INTO t1 VALUES('','',17,18,19,20,21); 28INSERT INTO t2 VALUES('','',17,18,19,20,21); 29INSERT INTO t3 VALUES('','',17,18,19,20,21); 30 31# Insert negative value to unsigned integer, positive value to signed integer, zero values 32INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 33INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 34INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 35INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 36INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 37INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 38INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 39INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 40INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 41 42# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 43INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 44INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 45INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 46 47--sorted_result 48SELECT * FROM t1; 49SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 50SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 51SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 52SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 53SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 54SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 55 56# Now select using various table access methods (full table scan, range scan, index scan etc.) 57## Full table scan ## 58--sorted_result 59SELECT * FROM t2; 60--sorted_result 61SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 62--sorted_result 63SELECT * FROM t2 WHERE c2 = 102; 64 65## Forward index scan, covering ## 66--sorted_result 67SELECT c1,c6 FROM t2; 68 69## Backward index scan, covering ## 70SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 71 72## Forward index scan, non-covering ## 73SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 74 75## Backward index scan, non-covering ## 76SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 77 78## ref type access 79SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 80SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 81SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 82SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 83 84## Range access, ordered ## 85SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 86SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 87SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 88SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 89SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 90SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 91SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 92SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 93SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 94SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 95SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 96SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 97SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 98SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 99SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 100SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 101SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 102SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 103SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 104SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 105SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 106SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 107 108## Range access, backwards scan ## 109SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 110SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 111SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 112SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 113SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 114SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 115SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 116SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 117SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 118SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 119SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 120SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 121SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 122SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 123SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 124SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 125SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 126SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 127SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 128SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 129SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 130SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 131## Full table scan ## 132--sorted_result 133SELECT * FROM t2; 134--sorted_result 135SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 136--sorted_result 137SELECT * FROM t2 WHERE c2 = 102; 138 139## Forward index scan, covering ## 140--sorted_result 141SELECT c1,c6 FROM t2; 142 143## Backward index scan, covering ## 144SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 145 146## Forward index scan, non-covering ## 147SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 148 149## Backward index scan, non-covering ## 150SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 151 152## ref type access 153SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 154SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 155SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 156SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 157 158## Range access, ordered ## 159SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 160SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 161SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 162SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 163SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 164SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 165SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 166SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 167SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 168SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 169SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 170SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 171SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 172SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 173SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 174SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 175SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 176SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 177SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 178SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 179SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 180SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 181 182## Range access, backwards scan ## 183SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 184SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 185SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 186SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 187SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 188SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 189SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 190SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 191SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 192SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 193SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 194SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 195SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 196SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 197SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 198SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 199SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 200SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 201SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 202SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 203SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 204SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 205## Full table scan ## 206--sorted_result 207SELECT * FROM t3; 208--sorted_result 209SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 210--sorted_result 211SELECT * FROM t3 WHERE c1 = 108; 212 213## Forward index scan, covering ## 214--sorted_result 215SELECT c2,c7 FROM t3; 216 217## Backward index scan, covering ## 218SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 219 220## Forward index scan, non-covering ## 221SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 222 223## Backward index scan, non-covering ## 224SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 225 226## ref type access 227SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 228SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 229SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 230SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 231 232## Range access, ordered ## 233SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 234SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 235SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 236SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 237SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 238SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 239SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 240SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 241SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 242SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 243SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 244SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 245SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 246SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 247SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 248SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 249SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 250SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 251SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 252SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 253SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 254SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 255 256## Range access, backwards scan ## 257SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 258SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 259SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 260SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 261SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 262SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 263SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 264SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 265SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 266SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 267SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 268SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 269SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 270SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 271SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 272SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 273SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 274SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 275SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 276SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 277SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 278SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 279## Full table scan ## 280--sorted_result 281SELECT * FROM t3; 282--sorted_result 283SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 284--sorted_result 285SELECT * FROM t3 WHERE c1 = 108; 286 287## Forward index scan, covering ## 288--sorted_result 289SELECT c2,c7 FROM t3; 290 291## Backward index scan, covering ## 292SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 293 294## Forward index scan, non-covering ## 295SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 296 297## Backward index scan, non-covering ## 298SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 299 300## ref type access 301SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 302SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 303SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 304SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 305 306## Range access, ordered ## 307SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 308SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 309SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 310SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 311SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 312SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 313SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 314SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 315SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 316SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 317SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 318SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 319SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 320SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 321SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 322SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 323SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 324SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 325SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 326SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 327SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 328SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 329 330## Range access, backwards scan ## 331SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 332SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 333SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 334SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 335SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 336SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 337SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 338SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 339SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 340SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 341SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 342SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 343SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 344SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 345SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 346SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 347SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 348SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 349SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 350SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 351SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 352SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 353 354# Using index for group-by 355--sorted_result 356SELECT c2 FROM t3 GROUP BY c2; 357--sorted_result 358SELECT DISTINCT c2 FROM t3; 359--sorted_result 360SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 361 362# Create tables with AUTO_INCREMENT columns and unique indexes 363CREATE TABLE t4(c1 TINYINT SIGNED NOT NULL AUTO_INCREMENT, c2 TINYINT UNSIGNED NULL, c3 TINYINT UNSIGNED NOT NULL, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 364CREATE TABLE t5(c1 TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 TINYINT SIGNED NULL, c3 TINYINT SIGNED NOT NULL, c4 SMALLINT, c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 365 366# Test with AUTO_INCREMENT columns 367# Insert some rows 368INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 369INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 370# Insert 0 values, increments the value 371INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 372--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 373--if (!$auto_value) { 374--die "AUTO_INCREMENT didn't work well on 0" 375} 376INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 377--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 378--if (!$auto_value) { 379--die "AUTO_INCREMENT didn't work well on 0" 380} 381# Insert NULL, no error, increments the value 382INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 383--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 384--if (!$auto_value) { 385--die "AUTO_INCREMENT didn't work well on NULL" 386} 387INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 388--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 389--if (!$auto_value) { 390--die "AUTO_INCREMENT didn't work well on NULL" 391} 392# Insert empty strings, increments the value 393INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 394--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 395--if (!$auto_value) { 396--die "AUTO_INCREMENT didn't work well on ''" 397} 398INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 399--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 400--if (!$auto_value) { 401--die "AUTO_INCREMENT didn't work well on ''" 402} 403# Insert strings with numeric part, inserts the numeric part of the string 404INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 405--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 406--if (!$auto_value) { 407--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 408} 409INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 410--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 411--if (!$auto_value) { 412--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 413} 414# Insert negative values unsigned & positive value to signed 415INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 416--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 417--if (!$auto_value) { 418--die "AUTO_INCREMENT didn't work on negative value" 419} 420INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 421--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 422--if (!$auto_value) { 423--die "AUTO_INCREMENT didn't work for negative value on unsigned" 424} 425# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 426INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 427--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 428--if (!$auto_value) { 429--die "AUTO_INCREMENT didn't work well" 430} 431INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 432--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 433--if (!$auto_value) { 434--die "AUTO_INCREMENT didn't work well" 435} 436 437SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 438SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 439# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 440## Full table scan ## 441--sorted_result 442SELECT * FROM t4; 443--sorted_result 444SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 445--sorted_result 446SELECT * FROM t4 WHERE c4 = 104; 447 448## Forward index scan, covering ## 449--sorted_result 450SELECT c1 FROM t4; 451 452## Backward index scan, covering ## 453SELECT c1 FROM t4 ORDER BY c1 DESC; 454 455## Forward index scan, non-covering ## 456SELECT * FROM t4 ORDER BY c1 LIMIT 2; 457 458## Backward index scan, non-covering ## 459SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 460 461## ref type access 462SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 463SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 464SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 465SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 466 467## Range access, ordered ## 468SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 469SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 470SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 471SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 472SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 473SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 474SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 475SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 476SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 477SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 478SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 479SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 480SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 481SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 482SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 483SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 484SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 485SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 486SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 487SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 488SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 489SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 490 491## Range access, backwards scan ## 492SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 493SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 494SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 495SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 496SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 497SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 498SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 499SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 500SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 501SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 502SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 503SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 504SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 505SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 506SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 507SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 508SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 509SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 510SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 511SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 512SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 513SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 514## Full table scan ## 515--sorted_result 516SELECT * FROM t4; 517--sorted_result 518SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 519--sorted_result 520SELECT * FROM t4 WHERE c4 = 104; 521 522## Forward index scan, covering ## 523--sorted_result 524SELECT c1 FROM t4; 525 526## Backward index scan, covering ## 527SELECT c1 FROM t4 ORDER BY c1 DESC; 528 529## Forward index scan, non-covering ## 530SELECT * FROM t4 ORDER BY c1 LIMIT 2; 531 532## Backward index scan, non-covering ## 533SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 534 535## ref type access 536SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 537SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 538SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 539SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 540 541## Range access, ordered ## 542SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 543SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 544SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 545SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 546SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 547SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 548SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 549SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 550SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 551SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 552SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 553SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 554SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 555SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 556SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 557SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 558SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 559SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 560SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 561SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 562SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 563SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 564 565## Range access, backwards scan ## 566SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 567SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 568SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 569SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 570SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 571SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 572SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 573SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 574SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 575SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 576SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 577SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 578SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 579SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 580SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 581SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 582SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 583SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 584SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 585SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 586SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 587SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 588## Full table scan ## 589--sorted_result 590SELECT * FROM t5; 591--sorted_result 592SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 593--sorted_result 594SELECT * FROM t5 WHERE c5 = 112; 595 596## Forward index scan, covering ## 597--sorted_result 598SELECT c1 FROM t5; 599 600## Backward index scan, covering ## 601SELECT c1 FROM t5 ORDER BY c1 DESC; 602 603## Forward index scan, non-covering ## 604SELECT * FROM t5 ORDER BY c1 LIMIT 2; 605 606## Backward index scan, non-covering ## 607SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 608 609## ref type access 610SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 611SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 612SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 613SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 614 615## Range access, ordered ## 616SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 617SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 618SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 619SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 620SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 621SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 622SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 623SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 624SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 625SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 626SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 627SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 628SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 629SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 630SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 631SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 632SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 633SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 634SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 635SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 636SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 637SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 638 639## Range access, backwards scan ## 640SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 641SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 642SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 643SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 644SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 645SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 646SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 647SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 648SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 649SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 650SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 651SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 652SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 653SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 654SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 655SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 656SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 657SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 658SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 659SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 660SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 661SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 662 663# Index-merge access 664--sorted_result 665SELECT * FROM t4 WHERE c1=1 OR c2=109; 666 667# Using index for group-by 668--sorted_result 669SELECT c2 FROM t4 GROUP BY c2; 670--sorted_result 671SELECT DISTINCT c2 FROM t4; 672--sorted_result 673SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 674 675# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 676 677# Insert NULL to non-null column 678--error ER_BAD_NULL_ERROR 679INSERT INTO t2(c1) VALUES(NULL); 680--error ER_BAD_NULL_ERROR 681INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 682--error ER_BAD_NULL_ERROR 683INSERT INTO t4(c3) VALUES(NULL); 684--error ER_BAD_NULL_ERROR 685INSERT INTO t5(c3) VALUES(NULL); 686 687# Insert duplicate value to pk 688--error ER_DUP_ENTRY 689INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 690 691# Insert duplicate value to clustered pk, throws error 692--error ER_DUP_ENTRY 693INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 694--error ER_DUP_ENTRY 695INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 696 697# Insert duplicate value to unique column, throws error 698--error ER_DUP_ENTRY 699INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 700--error ER_DUP_ENTRY 701# Insert duplicate value to clustered unique column, throws error 702INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 703 704# Test 'INSERT INTO SELECT FROM' 705CREATE TABLE t6(c1 TINYINT UNSIGNED NOT NULL, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 706INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 707--sorted_result 708SELECT * FROM t6; 709TRUNCATE TABLE t6; 710INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 711--sorted_result 712SELECT * FROM t6; 713TRUNCATE TABLE t6; 714# Test 'INSERT INTO SELECT FROM' primary key constraint violation 715CREATE TABLE t7(c1 TINYINT UNSIGNED NOT NULL PRIMARY KEY, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 716CREATE TABLE t8(c1 TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 TINYINT NULL, c3 SMALLINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 717INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 718INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 719--sorted_result 720SELECT * FROM t7; 721INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 722--sorted_result 723SELECT * FROM t8; 724--error ER_DUP_ENTRY 725INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 726--sorted_result 727SELECT c1 FROM t7; 728--error ER_DUP_ENTRY 729INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 730--sorted_result 731SELECT c1 FROM t8; 732TRUNCATE TABLE t6; 733TRUNCATE TABLE t7; 734INSERT INTO t6(c1) VALUES(0),(1),(2),(3),(3),(4),(4),(5); 735--replace_regex /'(3|4)'/'NA'/ 736--error ER_DUP_ENTRY 737INSERT INTO t7(c1) SELECT c1 FROM t6; 738TRUNCATE TABLE t6; 739 740# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 741INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 742INSERT INTO t8 SELECT * FROM t6; 743SELECT LAST_INSERT_ID() AS last_insert_id; 744--sorted_result 745SELECT * FROM t8; 746TRUNCATE TABLE t8; 747INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 748--sorted_result 749SELECT * FROM t8; 750DROP TABLE t6,t7,t8; 751 752# Test 'INSERT SET' 753INSERT INTO t2 SET c3=5,c4=6; 754SET SQL_MODE=STRICT_ALL_TABLES; 755--error ER_NO_DEFAULT_FOR_FIELD 756INSERT INTO t2 SET c3=5,c4=6; 757SET SQL_MODE=''; 758 759# Test insert allowable bigger values to 'TINYINT' columns 760INSERT INTO t1 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10); 761INSERT INTO t2 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10); 762INSERT INTO t3 VALUES(0,-128,1,2,3,4,5),(255,127,6,7,8,9,10); 763INSERT INTO t4 VALUES(-128,0,1,2,3,4,5,5),(127,255,6,7,8,9,10,10); 764INSERT INTO t5 VALUES(0,-128,1,2,3,4,5,5),(255,127,6,7,8,9,10,10); 765--error ER_DUP_ENTRY 766INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 767--disable_warnings 768INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 769--enable_warnings 770--sorted_result 771SELECT * FROM t4; 772 773# Insert signed value to unsigned 'TINYINT', outside range values to signed/unsigned columns 774INSERT INTO t1 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35); 775INSERT INTO t2 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35); 776INSERT INTO t3 VALUES(-255,-129,26,27,28,29,30),(256,128,31,32,33,34,35); 777# Insert into t4, t5 (TBD) 778 779# Now select using various table access methods 780## Full table scan ## 781--sorted_result 782SELECT * FROM t2; 783--sorted_result 784SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 785--sorted_result 786SELECT * FROM t2 WHERE c2 = -128; 787 788## Forward index scan, covering ## 789--sorted_result 790SELECT c1,c6 FROM t2; 791 792## Backward index scan, covering ## 793SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 794 795## Forward index scan, non-covering ## 796SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 797 798## Backward index scan, non-covering ## 799SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 800 801## ref type access 802SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 803SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 804SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 805SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 806 807## Range access, ordered ## 808SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 809SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 810SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 811SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 812SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 813SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 814SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 815SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 816SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 817SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 818SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 819SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 820SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6; 821SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 LIMIT 2; 822SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6; 823SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 LIMIT 2; 824SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6; 825SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 LIMIT 2; 826SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 827SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 828SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 829SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 830 831## Range access, backwards scan ## 832SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 833SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 834SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 835SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 836SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 837SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 838SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 839SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 840SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 841SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 842SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 843SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 844SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC; 845SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC LIMIT 2; 846SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC; 847SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC LIMIT 2; 848SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC; 849SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC LIMIT 2; 850SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 851SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 852SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 853SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 854## Full table scan ## 855--sorted_result 856SELECT * FROM t2; 857--sorted_result 858SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 859--sorted_result 860SELECT * FROM t2 WHERE c2 = 127; 861 862## Forward index scan, covering ## 863--sorted_result 864SELECT c1,c6 FROM t2; 865 866## Backward index scan, covering ## 867SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 868 869## Forward index scan, non-covering ## 870SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 871 872## Backward index scan, non-covering ## 873SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 874 875## ref type access 876SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6; 877SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 LIMIT 2; 878SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 DESC; 879SELECT * FROM t2 WHERE c1 = 255 ORDER BY c1,c6 DESC LIMIT 2; 880 881## Range access, ordered ## 882SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6; 883SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 LIMIT 2; 884SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6; 885SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 LIMIT 2; 886SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6; 887SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 LIMIT 2; 888SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6; 889SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 LIMIT 2; 890SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6; 891SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 LIMIT 2; 892SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6; 893SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 LIMIT 2; 894SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6; 895SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 LIMIT 2; 896SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6; 897SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 LIMIT 2; 898SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6; 899SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 LIMIT 2; 900SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 901SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 902SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 903SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 904 905## Range access, backwards scan ## 906SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 DESC; 907SELECT * FROM t2 WHERE c1 <> 255 ORDER BY c1,c6 DESC LIMIT 2; 908SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 DESC; 909SELECT * FROM t2 WHERE c1 > 255 ORDER BY c1,c6 DESC LIMIT 2; 910SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 DESC; 911SELECT * FROM t2 WHERE c1 >= 255 ORDER BY c1,c6 DESC LIMIT 2; 912SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 DESC; 913SELECT * FROM t2 WHERE c1 < 255 ORDER BY c1,c6 DESC LIMIT 2; 914SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 DESC; 915SELECT * FROM t2 WHERE c1 <= 255 ORDER BY c1,c6 DESC LIMIT 2; 916SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 DESC; 917SELECT * FROM t2 WHERE c1 <=> 255 ORDER BY c1,c6 DESC LIMIT 2; 918SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC; 919SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 255 ORDER BY c1,c6 DESC LIMIT 2; 920SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC; 921SELECT * FROM t2 WHERE c1 IN (0,255) ORDER BY c1,c6 DESC LIMIT 2; 922SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC; 923SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 255 AND c6 = 4 ORDER BY c1,c6 DESC LIMIT 2; 924SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 925SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 926SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 927SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 928## Full table scan ## 929--sorted_result 930SELECT * FROM t2; 931--sorted_result 932SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 933--sorted_result 934SELECT * FROM t2 WHERE c2 = -129; 935 936## Forward index scan, covering ## 937--sorted_result 938SELECT c1,c6 FROM t2; 939 940## Backward index scan, covering ## 941SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 942 943## Forward index scan, non-covering ## 944SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 945 946## Backward index scan, non-covering ## 947SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 948 949## ref type access 950SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6; 951SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2; 952SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC; 953SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2; 954 955## Range access, ordered ## 956SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6; 957SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2; 958SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6; 959SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2; 960SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6; 961SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2; 962SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6; 963SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2; 964SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6; 965SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2; 966SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6; 967SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2; 968SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6; 969SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 LIMIT 2; 970SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6; 971SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 LIMIT 2; 972SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6; 973SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 974SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 975SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 976SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 977SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 978 979## Range access, backwards scan ## 980SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC; 981SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2; 982SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC; 983SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2; 984SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC; 985SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2; 986SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC; 987SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2; 988SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC; 989SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2; 990SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC; 991SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2; 992SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC; 993SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC LIMIT 2; 994SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC; 995SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC LIMIT 2; 996SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC; 997SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 998SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 999SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 1000SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 1001SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 1002## Full table scan ## 1003--sorted_result 1004SELECT * FROM t2; 1005--sorted_result 1006SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1007--sorted_result 1008SELECT * FROM t2 WHERE c2 = 128; 1009 1010## Forward index scan, covering ## 1011--sorted_result 1012SELECT c1,c6 FROM t2; 1013 1014## Backward index scan, covering ## 1015SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 1016 1017## Forward index scan, non-covering ## 1018SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 1019 1020## Backward index scan, non-covering ## 1021SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 1022 1023## ref type access 1024SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6; 1025SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 LIMIT 2; 1026SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 DESC; 1027SELECT * FROM t2 WHERE c1 = 256 ORDER BY c1,c6 DESC LIMIT 2; 1028 1029## Range access, ordered ## 1030SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6; 1031SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 LIMIT 2; 1032SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6; 1033SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 LIMIT 2; 1034SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6; 1035SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 LIMIT 2; 1036SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6; 1037SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 LIMIT 2; 1038SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6; 1039SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 LIMIT 2; 1040SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6; 1041SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 LIMIT 2; 1042SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6; 1043SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 LIMIT 2; 1044SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6; 1045SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 LIMIT 2; 1046SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6; 1047SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 1048SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 1049SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 1050SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 1051SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 1052 1053## Range access, backwards scan ## 1054SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 DESC; 1055SELECT * FROM t2 WHERE c1 <> 256 ORDER BY c1,c6 DESC LIMIT 2; 1056SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 DESC; 1057SELECT * FROM t2 WHERE c1 > 256 ORDER BY c1,c6 DESC LIMIT 2; 1058SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 DESC; 1059SELECT * FROM t2 WHERE c1 >= 256 ORDER BY c1,c6 DESC LIMIT 2; 1060SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 DESC; 1061SELECT * FROM t2 WHERE c1 < 256 ORDER BY c1,c6 DESC LIMIT 2; 1062SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 DESC; 1063SELECT * FROM t2 WHERE c1 <= 256 ORDER BY c1,c6 DESC LIMIT 2; 1064SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 DESC; 1065SELECT * FROM t2 WHERE c1 <=> 256 ORDER BY c1,c6 DESC LIMIT 2; 1066SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC; 1067SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 256 ORDER BY c1,c6 DESC LIMIT 2; 1068SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC; 1069SELECT * FROM t2 WHERE c1 IN (-255,256) ORDER BY c1,c6 DESC LIMIT 2; 1070SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC; 1071SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 256 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 1072SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 1073SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 1074SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 1075SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 1076## Full table scan ## 1077--sorted_result 1078SELECT * FROM t3; 1079--sorted_result 1080SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1081--sorted_result 1082SELECT * FROM t3 WHERE c1 = 0; 1083 1084## Forward index scan, covering ## 1085--sorted_result 1086SELECT c2,c7 FROM t3; 1087 1088## Backward index scan, covering ## 1089SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1090 1091## Forward index scan, non-covering ## 1092SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1093 1094## Backward index scan, non-covering ## 1095SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1096 1097## ref type access 1098SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7; 1099SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 LIMIT 2; 1100SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 DESC; 1101SELECT * FROM t3 WHERE c2 = -128 ORDER BY c2,c7 DESC LIMIT 2; 1102 1103## Range access, ordered ## 1104SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7; 1105SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 LIMIT 2; 1106SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7; 1107SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 LIMIT 2; 1108SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7; 1109SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 LIMIT 2; 1110SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7; 1111SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 LIMIT 2; 1112SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7; 1113SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 LIMIT 2; 1114SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7; 1115SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 LIMIT 2; 1116SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7; 1117SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 LIMIT 2; 1118SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7; 1119SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 LIMIT 2; 1120SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7; 1121SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 LIMIT 2; 1122SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1123SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1124SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1125SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1126 1127## Range access, backwards scan ## 1128SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 DESC; 1129SELECT * FROM t3 WHERE c2 <> -128 ORDER BY c2,c7 DESC LIMIT 2; 1130SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 DESC; 1131SELECT * FROM t3 WHERE c2 > -128 ORDER BY c2,c7 DESC LIMIT 2; 1132SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 DESC; 1133SELECT * FROM t3 WHERE c2 >= -128 ORDER BY c2,c7 DESC LIMIT 2; 1134SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 DESC; 1135SELECT * FROM t3 WHERE c2 < -128 ORDER BY c2,c7 DESC LIMIT 2; 1136SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 DESC; 1137SELECT * FROM t3 WHERE c2 <= -128 ORDER BY c2,c7 DESC LIMIT 2; 1138SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 DESC; 1139SELECT * FROM t3 WHERE c2 <=> -128 ORDER BY c2,c7 DESC LIMIT 2; 1140SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC; 1141SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC LIMIT 2; 1142SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC; 1143SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC LIMIT 2; 1144SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC; 1145SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC LIMIT 2; 1146SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1147SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1148SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1149SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1150## Full table scan ## 1151--sorted_result 1152SELECT * FROM t3; 1153--sorted_result 1154SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1155--sorted_result 1156SELECT * FROM t3 WHERE c1 = 255; 1157 1158## Forward index scan, covering ## 1159--sorted_result 1160SELECT c2,c7 FROM t3; 1161 1162## Backward index scan, covering ## 1163SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1164 1165## Forward index scan, non-covering ## 1166SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1167 1168## Backward index scan, non-covering ## 1169SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1170 1171## ref type access 1172SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7; 1173SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 LIMIT 2; 1174SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 DESC; 1175SELECT * FROM t3 WHERE c2 = 127 ORDER BY c2,c7 DESC LIMIT 2; 1176 1177## Range access, ordered ## 1178SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7; 1179SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 LIMIT 2; 1180SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7; 1181SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 LIMIT 2; 1182SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7; 1183SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 LIMIT 2; 1184SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7; 1185SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 LIMIT 2; 1186SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7; 1187SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 LIMIT 2; 1188SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7; 1189SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 LIMIT 2; 1190SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7; 1191SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 LIMIT 2; 1192SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7; 1193SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 LIMIT 2; 1194SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7; 1195SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 LIMIT 2; 1196SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1197SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1198SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1199SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1200 1201## Range access, backwards scan ## 1202SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 DESC; 1203SELECT * FROM t3 WHERE c2 <> 127 ORDER BY c2,c7 DESC LIMIT 2; 1204SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 DESC; 1205SELECT * FROM t3 WHERE c2 > 127 ORDER BY c2,c7 DESC LIMIT 2; 1206SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 DESC; 1207SELECT * FROM t3 WHERE c2 >= 127 ORDER BY c2,c7 DESC LIMIT 2; 1208SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 DESC; 1209SELECT * FROM t3 WHERE c2 < 127 ORDER BY c2,c7 DESC LIMIT 2; 1210SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 DESC; 1211SELECT * FROM t3 WHERE c2 <= 127 ORDER BY c2,c7 DESC LIMIT 2; 1212SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 DESC; 1213SELECT * FROM t3 WHERE c2 <=> 127 ORDER BY c2,c7 DESC LIMIT 2; 1214SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC; 1215SELECT * FROM t3 WHERE c2 BETWEEN -128 AND 127 ORDER BY c2,c7 DESC LIMIT 2; 1216SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC; 1217SELECT * FROM t3 WHERE c2 IN (-128,127) ORDER BY c2,c7 DESC LIMIT 2; 1218SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC; 1219SELECT * FROM t3 WHERE c2 >= -128 AND c2 < 127 AND c7 = 5 ORDER BY c2,c7 DESC LIMIT 2; 1220SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1221SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1222SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1223SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1224## Full table scan ## 1225--sorted_result 1226SELECT * FROM t3; 1227--sorted_result 1228SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1229--sorted_result 1230SELECT * FROM t3 WHERE c1 = -255; 1231 1232## Forward index scan, covering ## 1233--sorted_result 1234SELECT c2,c7 FROM t3; 1235 1236## Backward index scan, covering ## 1237SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1238 1239## Forward index scan, non-covering ## 1240SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1241 1242## Backward index scan, non-covering ## 1243SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1244 1245## ref type access 1246SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7; 1247SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 LIMIT 2; 1248SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 DESC; 1249SELECT * FROM t3 WHERE c2 = -129 ORDER BY c2,c7 DESC LIMIT 2; 1250 1251## Range access, ordered ## 1252SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7; 1253SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 LIMIT 2; 1254SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7; 1255SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 LIMIT 2; 1256SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7; 1257SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 LIMIT 2; 1258SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7; 1259SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 LIMIT 2; 1260SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7; 1261SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 LIMIT 2; 1262SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7; 1263SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 LIMIT 2; 1264SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7; 1265SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 LIMIT 2; 1266SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7; 1267SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 LIMIT 2; 1268SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7; 1269SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 1270SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1271SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1272SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1273SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1274 1275## Range access, backwards scan ## 1276SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 DESC; 1277SELECT * FROM t3 WHERE c2 <> -129 ORDER BY c2,c7 DESC LIMIT 2; 1278SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 DESC; 1279SELECT * FROM t3 WHERE c2 > -129 ORDER BY c2,c7 DESC LIMIT 2; 1280SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 DESC; 1281SELECT * FROM t3 WHERE c2 >= -129 ORDER BY c2,c7 DESC LIMIT 2; 1282SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 DESC; 1283SELECT * FROM t3 WHERE c2 < -129 ORDER BY c2,c7 DESC LIMIT 2; 1284SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 DESC; 1285SELECT * FROM t3 WHERE c2 <= -129 ORDER BY c2,c7 DESC LIMIT 2; 1286SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 DESC; 1287SELECT * FROM t3 WHERE c2 <=> -129 ORDER BY c2,c7 DESC LIMIT 2; 1288SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC; 1289SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC LIMIT 2; 1290SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC; 1291SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC LIMIT 2; 1292SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC; 1293SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 1294SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1295SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1296SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1297SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1298## Full table scan ## 1299--sorted_result 1300SELECT * FROM t3; 1301--sorted_result 1302SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1303--sorted_result 1304SELECT * FROM t3 WHERE c1 = 256; 1305 1306## Forward index scan, covering ## 1307--sorted_result 1308SELECT c2,c7 FROM t3; 1309 1310## Backward index scan, covering ## 1311SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1312 1313## Forward index scan, non-covering ## 1314SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1315 1316## Backward index scan, non-covering ## 1317SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1318 1319## ref type access 1320SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7; 1321SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 LIMIT 2; 1322SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 DESC; 1323SELECT * FROM t3 WHERE c2 = 128 ORDER BY c2,c7 DESC LIMIT 2; 1324 1325## Range access, ordered ## 1326SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7; 1327SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 LIMIT 2; 1328SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7; 1329SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 LIMIT 2; 1330SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7; 1331SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 LIMIT 2; 1332SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7; 1333SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 LIMIT 2; 1334SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7; 1335SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 LIMIT 2; 1336SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7; 1337SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 LIMIT 2; 1338SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7; 1339SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 LIMIT 2; 1340SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7; 1341SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 LIMIT 2; 1342SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7; 1343SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 1344SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1345SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1346SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1347SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1348 1349## Range access, backwards scan ## 1350SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 DESC; 1351SELECT * FROM t3 WHERE c2 <> 128 ORDER BY c2,c7 DESC LIMIT 2; 1352SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 DESC; 1353SELECT * FROM t3 WHERE c2 > 128 ORDER BY c2,c7 DESC LIMIT 2; 1354SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 DESC; 1355SELECT * FROM t3 WHERE c2 >= 128 ORDER BY c2,c7 DESC LIMIT 2; 1356SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 DESC; 1357SELECT * FROM t3 WHERE c2 < 128 ORDER BY c2,c7 DESC LIMIT 2; 1358SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 DESC; 1359SELECT * FROM t3 WHERE c2 <= 128 ORDER BY c2,c7 DESC LIMIT 2; 1360SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 DESC; 1361SELECT * FROM t3 WHERE c2 <=> 128 ORDER BY c2,c7 DESC LIMIT 2; 1362SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC; 1363SELECT * FROM t3 WHERE c2 BETWEEN -129 AND 128 ORDER BY c2,c7 DESC LIMIT 2; 1364SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC; 1365SELECT * FROM t3 WHERE c2 IN (-129,128) ORDER BY c2,c7 DESC LIMIT 2; 1366SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC; 1367SELECT * FROM t3 WHERE c2 >= -129 AND c2 < 128 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 1368SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1369SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1370SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1371SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1372DROP TABLE t1,t2,t3,t4,t5; 1373 1374######## Running INSERT tests for SMALLINT ######## 1375 1376# Create tables 1377CREATE TABLE t1(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 1378CREATE TABLE t2(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6)); 1379CREATE TABLE t3(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7)); 1380 1381# Insert some rows with targeted values 1382INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 1383INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 1384INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 1385 1386# Insert duplicates for parts of the clustered key 1387INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 1388INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 1389 1390# Insert permissible NULLs 1391INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 1392INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 1393INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 1394 1395# Insert empty string '' 1396INSERT INTO t1 VALUES('','',17,18,19,20,21); 1397INSERT INTO t2 VALUES('','',17,18,19,20,21); 1398INSERT INTO t3 VALUES('','',17,18,19,20,21); 1399 1400# Insert negative value to unsigned integer, positive value to signed integer, zero values 1401INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 1402INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 1403INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 1404INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 1405INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 1406INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 1407INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 1408INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 1409INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 1410 1411# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 1412INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 1413INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 1414INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 1415 1416--sorted_result 1417SELECT * FROM t1; 1418SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 1419SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 1420SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 1421SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 1422SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 1423SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 1424 1425# Now select using various table access methods (full table scan, range scan, index scan etc.) 1426## Full table scan ## 1427--sorted_result 1428SELECT * FROM t2; 1429--sorted_result 1430SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1431--sorted_result 1432SELECT * FROM t2 WHERE c2 = 102; 1433 1434## Forward index scan, covering ## 1435--sorted_result 1436SELECT c1,c6 FROM t2; 1437 1438## Backward index scan, covering ## 1439SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 1440 1441## Forward index scan, non-covering ## 1442SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 1443 1444## Backward index scan, non-covering ## 1445SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 1446 1447## ref type access 1448SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 1449SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 1450SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 1451SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 1452 1453## Range access, ordered ## 1454SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 1455SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 1456SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 1457SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 1458SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 1459SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 1460SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 1461SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 1462SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 1463SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 1464SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 1465SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 1466SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 1467SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 1468SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 1469SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 1470SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 1471SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 1472SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 1473SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 1474SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 1475SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 1476 1477## Range access, backwards scan ## 1478SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 1479SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 1480SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 1481SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 1482SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 1483SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 1484SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 1485SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 1486SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 1487SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 1488SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 1489SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 1490SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 1491SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 1492SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 1493SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 1494SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 1495SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 1496SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 1497SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 1498SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 1499SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 1500## Full table scan ## 1501--sorted_result 1502SELECT * FROM t2; 1503--sorted_result 1504SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 1505--sorted_result 1506SELECT * FROM t2 WHERE c2 = 102; 1507 1508## Forward index scan, covering ## 1509--sorted_result 1510SELECT c1,c6 FROM t2; 1511 1512## Backward index scan, covering ## 1513SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 1514 1515## Forward index scan, non-covering ## 1516SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 1517 1518## Backward index scan, non-covering ## 1519SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 1520 1521## ref type access 1522SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 1523SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 1524SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 1525SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 1526 1527## Range access, ordered ## 1528SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 1529SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 1530SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 1531SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 1532SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 1533SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 1534SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 1535SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 1536SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 1537SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 1538SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 1539SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 1540SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 1541SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 1542SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 1543SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 1544SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 1545SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 1546SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 1547SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 1548SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 1549SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 1550 1551## Range access, backwards scan ## 1552SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 1553SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 1554SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 1555SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 1556SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 1557SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 1558SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 1559SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 1560SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 1561SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 1562SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 1563SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 1564SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 1565SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 1566SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 1567SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 1568SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 1569SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 1570SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 1571SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 1572SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 1573SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 1574## Full table scan ## 1575--sorted_result 1576SELECT * FROM t3; 1577--sorted_result 1578SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1579--sorted_result 1580SELECT * FROM t3 WHERE c1 = 108; 1581 1582## Forward index scan, covering ## 1583--sorted_result 1584SELECT c2,c7 FROM t3; 1585 1586## Backward index scan, covering ## 1587SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1588 1589## Forward index scan, non-covering ## 1590SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1591 1592## Backward index scan, non-covering ## 1593SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1594 1595## ref type access 1596SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 1597SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 1598SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 1599SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 1600 1601## Range access, ordered ## 1602SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 1603SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 1604SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 1605SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 1606SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 1607SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 1608SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 1609SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 1610SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 1611SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 1612SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 1613SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 1614SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 1615SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 1616SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 1617SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 1618SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 1619SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 1620SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1621SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1622SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1623SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1624 1625## Range access, backwards scan ## 1626SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 1627SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 1628SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 1629SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 1630SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 1631SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 1632SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 1633SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 1634SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 1635SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 1636SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 1637SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 1638SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 1639SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 1640SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 1641SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 1642SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 1643SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 1644SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1645SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1646SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1647SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1648## Full table scan ## 1649--sorted_result 1650SELECT * FROM t3; 1651--sorted_result 1652SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 1653--sorted_result 1654SELECT * FROM t3 WHERE c1 = 108; 1655 1656## Forward index scan, covering ## 1657--sorted_result 1658SELECT c2,c7 FROM t3; 1659 1660## Backward index scan, covering ## 1661SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 1662 1663## Forward index scan, non-covering ## 1664SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 1665 1666## Backward index scan, non-covering ## 1667SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 1668 1669## ref type access 1670SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 1671SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 1672SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 1673SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 1674 1675## Range access, ordered ## 1676SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 1677SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 1678SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 1679SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 1680SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 1681SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 1682SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 1683SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 1684SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 1685SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 1686SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 1687SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 1688SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 1689SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 1690SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 1691SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 1692SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 1693SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 1694SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 1695SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 1696SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 1697SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 1698 1699## Range access, backwards scan ## 1700SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 1701SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 1702SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 1703SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 1704SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 1705SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 1706SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 1707SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 1708SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 1709SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 1710SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 1711SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 1712SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 1713SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 1714SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 1715SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 1716SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 1717SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 1718SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 1719SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 1720SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 1721SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 1722 1723# Using index for group-by 1724--sorted_result 1725SELECT c2 FROM t3 GROUP BY c2; 1726--sorted_result 1727SELECT DISTINCT c2 FROM t3; 1728--sorted_result 1729SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 1730 1731# Create tables with AUTO_INCREMENT columns and unique indexes 1732CREATE TABLE t4(c1 SMALLINT SIGNED NOT NULL AUTO_INCREMENT, c2 SMALLINT UNSIGNED NULL, c3 SMALLINT UNSIGNED NOT NULL, c4 TINYINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 1733CREATE TABLE t5(c1 SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 SMALLINT SIGNED NULL, c3 SMALLINT SIGNED NOT NULL, c4 TINYINT, c5 MEDIUMINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 1734 1735# Test with AUTO_INCREMENT columns 1736# Insert some rows 1737INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 1738INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 1739# Insert 0 values, increments the value 1740INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 1741--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 1742--if (!$auto_value) { 1743--die "AUTO_INCREMENT didn't work well on 0" 1744} 1745INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 1746--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 1747--if (!$auto_value) { 1748--die "AUTO_INCREMENT didn't work well on 0" 1749} 1750# Insert NULL, no error, increments the value 1751INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 1752--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 1753--if (!$auto_value) { 1754--die "AUTO_INCREMENT didn't work well on NULL" 1755} 1756INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 1757--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 1758--if (!$auto_value) { 1759--die "AUTO_INCREMENT didn't work well on NULL" 1760} 1761# Insert empty strings, increments the value 1762INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 1763--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 1764--if (!$auto_value) { 1765--die "AUTO_INCREMENT didn't work well on ''" 1766} 1767INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 1768--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 1769--if (!$auto_value) { 1770--die "AUTO_INCREMENT didn't work well on ''" 1771} 1772# Insert strings with numeric part, inserts the numeric part of the string 1773INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 1774--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 1775--if (!$auto_value) { 1776--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 1777} 1778INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 1779--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 1780--if (!$auto_value) { 1781--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 1782} 1783# Insert negative values unsigned & positive value to signed 1784INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 1785--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 1786--if (!$auto_value) { 1787--die "AUTO_INCREMENT didn't work on negative value" 1788} 1789INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 1790--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 1791--if (!$auto_value) { 1792--die "AUTO_INCREMENT didn't work for negative value on unsigned" 1793} 1794# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 1795INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 1796--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 1797--if (!$auto_value) { 1798--die "AUTO_INCREMENT didn't work well" 1799} 1800INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 1801--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 1802--if (!$auto_value) { 1803--die "AUTO_INCREMENT didn't work well" 1804} 1805 1806SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 1807SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 1808# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 1809## Full table scan ## 1810--sorted_result 1811SELECT * FROM t4; 1812--sorted_result 1813SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 1814--sorted_result 1815SELECT * FROM t4 WHERE c4 = 104; 1816 1817## Forward index scan, covering ## 1818--sorted_result 1819SELECT c1 FROM t4; 1820 1821## Backward index scan, covering ## 1822SELECT c1 FROM t4 ORDER BY c1 DESC; 1823 1824## Forward index scan, non-covering ## 1825SELECT * FROM t4 ORDER BY c1 LIMIT 2; 1826 1827## Backward index scan, non-covering ## 1828SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 1829 1830## ref type access 1831SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 1832SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 1833SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 1834SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 1835 1836## Range access, ordered ## 1837SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 1838SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 1839SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 1840SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 1841SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 1842SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 1843SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 1844SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 1845SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 1846SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 1847SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 1848SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 1849SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 1850SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 1851SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 1852SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 1853SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 1854SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 1855SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 1856SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 1857SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 1858SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 1859 1860## Range access, backwards scan ## 1861SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 1862SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 1863SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 1864SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 1865SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 1866SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 1867SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 1868SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 1869SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 1870SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 1871SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 1872SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 1873SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 1874SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 1875SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 1876SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 1877SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 1878SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 1879SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 1880SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 1881SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 1882SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 1883## Full table scan ## 1884--sorted_result 1885SELECT * FROM t4; 1886--sorted_result 1887SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 1888--sorted_result 1889SELECT * FROM t4 WHERE c4 = 104; 1890 1891## Forward index scan, covering ## 1892--sorted_result 1893SELECT c1 FROM t4; 1894 1895## Backward index scan, covering ## 1896SELECT c1 FROM t4 ORDER BY c1 DESC; 1897 1898## Forward index scan, non-covering ## 1899SELECT * FROM t4 ORDER BY c1 LIMIT 2; 1900 1901## Backward index scan, non-covering ## 1902SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 1903 1904## ref type access 1905SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 1906SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 1907SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 1908SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 1909 1910## Range access, ordered ## 1911SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 1912SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 1913SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 1914SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 1915SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 1916SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 1917SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 1918SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 1919SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 1920SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 1921SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 1922SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 1923SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 1924SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 1925SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 1926SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 1927SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 1928SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 1929SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 1930SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 1931SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 1932SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 1933 1934## Range access, backwards scan ## 1935SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 1936SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 1937SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 1938SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 1939SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 1940SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 1941SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 1942SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 1943SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 1944SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 1945SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 1946SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 1947SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 1948SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 1949SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 1950SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 1951SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 1952SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 1953SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 1954SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 1955SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 1956SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 1957## Full table scan ## 1958--sorted_result 1959SELECT * FROM t5; 1960--sorted_result 1961SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 1962--sorted_result 1963SELECT * FROM t5 WHERE c5 = 112; 1964 1965## Forward index scan, covering ## 1966--sorted_result 1967SELECT c1 FROM t5; 1968 1969## Backward index scan, covering ## 1970SELECT c1 FROM t5 ORDER BY c1 DESC; 1971 1972## Forward index scan, non-covering ## 1973SELECT * FROM t5 ORDER BY c1 LIMIT 2; 1974 1975## Backward index scan, non-covering ## 1976SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 1977 1978## ref type access 1979SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 1980SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 1981SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 1982SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 1983 1984## Range access, ordered ## 1985SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 1986SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 1987SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 1988SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 1989SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 1990SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 1991SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 1992SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 1993SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 1994SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 1995SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 1996SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 1997SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 1998SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 1999SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 2000SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 2001SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 2002SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 2003SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 2004SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 2005SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 2006SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 2007 2008## Range access, backwards scan ## 2009SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 2010SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 2011SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 2012SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 2013SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 2014SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 2015SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 2016SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 2017SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 2018SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 2019SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 2020SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 2021SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 2022SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 2023SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 2024SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 2025SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 2026SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 2027SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 2028SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 2029SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 2030SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 2031 2032# Index-merge access 2033--sorted_result 2034SELECT * FROM t4 WHERE c1=1 OR c2=109; 2035 2036# Using index for group-by 2037--sorted_result 2038SELECT c2 FROM t4 GROUP BY c2; 2039--sorted_result 2040SELECT DISTINCT c2 FROM t4; 2041--sorted_result 2042SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 2043 2044# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 2045 2046# Insert NULL to non-null column 2047--error ER_BAD_NULL_ERROR 2048INSERT INTO t2(c1) VALUES(NULL); 2049--error ER_BAD_NULL_ERROR 2050INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 2051--error ER_BAD_NULL_ERROR 2052INSERT INTO t4(c3) VALUES(NULL); 2053--error ER_BAD_NULL_ERROR 2054INSERT INTO t5(c3) VALUES(NULL); 2055 2056# Insert duplicate value to pk 2057--error ER_DUP_ENTRY 2058INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 2059 2060# Insert duplicate value to clustered pk, throws error 2061--error ER_DUP_ENTRY 2062INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 2063--error ER_DUP_ENTRY 2064INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 2065 2066# Insert duplicate value to unique column, throws error 2067--error ER_DUP_ENTRY 2068INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 2069--error ER_DUP_ENTRY 2070# Insert duplicate value to clustered unique column, throws error 2071INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 2072 2073# Test 'INSERT INTO SELECT FROM' 2074CREATE TABLE t6(c1 SMALLINT UNSIGNED NOT NULL, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 2075INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 2076--sorted_result 2077SELECT * FROM t6; 2078TRUNCATE TABLE t6; 2079INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 2080--sorted_result 2081SELECT * FROM t6; 2082TRUNCATE TABLE t6; 2083# Test 'INSERT INTO SELECT FROM' primary key constraint violation 2084CREATE TABLE t7(c1 SMALLINT UNSIGNED NOT NULL PRIMARY KEY, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 2085CREATE TABLE t8(c1 SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 SMALLINT NULL, c3 TINYINT, c4 MEDIUMINT , c5 INT, c6 INTEGER, c7 BIGINT); 2086INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 2087INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 2088--sorted_result 2089SELECT * FROM t7; 2090INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 2091--sorted_result 2092SELECT * FROM t8; 2093--error ER_DUP_ENTRY 2094INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 2095--error ER_DUP_ENTRY 2096INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 2097TRUNCATE TABLE t6; 2098 2099# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 2100INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 2101INSERT INTO t8 SELECT * FROM t6; 2102SELECT LAST_INSERT_ID() AS last_insert_id; 2103--sorted_result 2104SELECT * FROM t8; 2105TRUNCATE TABLE t8; 2106INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 2107--sorted_result 2108SELECT * FROM t8; 2109DROP TABLE t6,t7,t8; 2110 2111# Test 'INSERT SET' 2112INSERT INTO t2 SET c3=5,c4=6; 2113SET SQL_MODE=STRICT_ALL_TABLES; 2114--error ER_NO_DEFAULT_FOR_FIELD 2115INSERT INTO t2 SET c3=5,c4=6; 2116SET SQL_MODE=''; 2117 2118# Test insert allowable bigger values to 'SMALLINT' columns 2119INSERT INTO t1 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15); 2120INSERT INTO t2 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15); 2121INSERT INTO t3 VALUES(0,-32768,1,2,3,4,5),(255,-128,6,7,8,9,10),(65535,32767,11,12,13,14,15); 2122INSERT INTO t4 VALUES(-32768,0,1,2,3,4,5,5),(-128,255,6,7,8,9,10,10),(32767,65535,11,12,13,14,15,15); 2123INSERT INTO t5 VALUES(0,-32768,1,2,3,4,5,5),(255,-128,6,7,8,9,10,10),(65535,32767,11,12,13,14,15,15); 2124--error ER_DUP_ENTRY 2125INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 2126--disable_warnings 2127INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 2128--enable_warnings 2129--sorted_result 2130SELECT * FROM t4; 2131 2132# Insert signed value to unsigned 'SMALLINT', outside range values to signed/unsigned columns 2133INSERT INTO t1 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35); 2134INSERT INTO t2 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35); 2135INSERT INTO t3 VALUES(-255,-32769,26,27,28,29,30),(65536,32768,31,32,33,34,35); 2136# Insert into t4, t5 (TBD) 2137 2138# Now select using various table access methods 2139## Full table scan ## 2140--sorted_result 2141SELECT * FROM t2; 2142--sorted_result 2143SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2144--sorted_result 2145SELECT * FROM t2 WHERE c2 = -32768; 2146 2147## Forward index scan, covering ## 2148--sorted_result 2149SELECT c1,c6 FROM t2; 2150 2151## Backward index scan, covering ## 2152SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2153 2154## Forward index scan, non-covering ## 2155SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2156 2157## Backward index scan, non-covering ## 2158SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2159 2160## ref type access 2161SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 2162SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 2163SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 2164SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 2165 2166## Range access, ordered ## 2167SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 2168SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 2169SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 2170SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 2171SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 2172SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 2173SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 2174SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 2175SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 2176SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 2177SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 2178SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 2179SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6; 2180SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 LIMIT 2; 2181SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6; 2182SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 LIMIT 2; 2183SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6; 2184SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 2185SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2186SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2187SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2188SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2189 2190## Range access, backwards scan ## 2191SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 2192SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 2193SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 2194SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 2195SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 2196SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 2197SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 2198SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 2199SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 2200SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 2201SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 2202SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 2203SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC; 2204SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC LIMIT 2; 2205SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC; 2206SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC LIMIT 2; 2207SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC; 2208SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 2209SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2210SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2211SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2212SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2213## Full table scan ## 2214--sorted_result 2215SELECT * FROM t2; 2216--sorted_result 2217SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2218--sorted_result 2219SELECT * FROM t2 WHERE c2 = 32767; 2220 2221## Forward index scan, covering ## 2222--sorted_result 2223SELECT c1,c6 FROM t2; 2224 2225## Backward index scan, covering ## 2226SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2227 2228## Forward index scan, non-covering ## 2229SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2230 2231## Backward index scan, non-covering ## 2232SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2233 2234## ref type access 2235SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6; 2236SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 LIMIT 2; 2237SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 DESC; 2238SELECT * FROM t2 WHERE c1 = 65535 ORDER BY c1,c6 DESC LIMIT 2; 2239 2240## Range access, ordered ## 2241SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6; 2242SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 LIMIT 2; 2243SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6; 2244SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 LIMIT 2; 2245SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6; 2246SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 LIMIT 2; 2247SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6; 2248SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 LIMIT 2; 2249SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6; 2250SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 LIMIT 2; 2251SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6; 2252SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 LIMIT 2; 2253SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6; 2254SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 LIMIT 2; 2255SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6; 2256SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 LIMIT 2; 2257SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6; 2258SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 2259SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2260SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2261SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2262SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2263 2264## Range access, backwards scan ## 2265SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 DESC; 2266SELECT * FROM t2 WHERE c1 <> 65535 ORDER BY c1,c6 DESC LIMIT 2; 2267SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 DESC; 2268SELECT * FROM t2 WHERE c1 > 65535 ORDER BY c1,c6 DESC LIMIT 2; 2269SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 DESC; 2270SELECT * FROM t2 WHERE c1 >= 65535 ORDER BY c1,c6 DESC LIMIT 2; 2271SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 DESC; 2272SELECT * FROM t2 WHERE c1 < 65535 ORDER BY c1,c6 DESC LIMIT 2; 2273SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 DESC; 2274SELECT * FROM t2 WHERE c1 <= 65535 ORDER BY c1,c6 DESC LIMIT 2; 2275SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 DESC; 2276SELECT * FROM t2 WHERE c1 <=> 65535 ORDER BY c1,c6 DESC LIMIT 2; 2277SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC; 2278SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 65535 ORDER BY c1,c6 DESC LIMIT 2; 2279SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC; 2280SELECT * FROM t2 WHERE c1 IN (0,65535) ORDER BY c1,c6 DESC LIMIT 2; 2281SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC; 2282SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 65535 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 2283SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2284SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2285SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2286SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2287## Full table scan ## 2288--sorted_result 2289SELECT * FROM t2; 2290--sorted_result 2291SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2292--sorted_result 2293SELECT * FROM t2 WHERE c2 = -32769; 2294 2295## Forward index scan, covering ## 2296--sorted_result 2297SELECT c1,c6 FROM t2; 2298 2299## Backward index scan, covering ## 2300SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2301 2302## Forward index scan, non-covering ## 2303SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2304 2305## Backward index scan, non-covering ## 2306SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2307 2308## ref type access 2309SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6; 2310SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2; 2311SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC; 2312SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2; 2313 2314## Range access, ordered ## 2315SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6; 2316SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2; 2317SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6; 2318SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2; 2319SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6; 2320SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2; 2321SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6; 2322SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2; 2323SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6; 2324SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2; 2325SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6; 2326SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2; 2327SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6; 2328SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 LIMIT 2; 2329SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6; 2330SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 LIMIT 2; 2331SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6; 2332SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 2333SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2334SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2335SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2336SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2337 2338## Range access, backwards scan ## 2339SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC; 2340SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2; 2341SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC; 2342SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2; 2343SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC; 2344SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2; 2345SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC; 2346SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2; 2347SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC; 2348SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2; 2349SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC; 2350SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2; 2351SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC; 2352SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC LIMIT 2; 2353SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC; 2354SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC LIMIT 2; 2355SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC; 2356SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 2357SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2358SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2359SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2360SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2361## Full table scan ## 2362--sorted_result 2363SELECT * FROM t2; 2364--sorted_result 2365SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2366--sorted_result 2367SELECT * FROM t2 WHERE c2 = 32768; 2368 2369## Forward index scan, covering ## 2370--sorted_result 2371SELECT c1,c6 FROM t2; 2372 2373## Backward index scan, covering ## 2374SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2375 2376## Forward index scan, non-covering ## 2377SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2378 2379## Backward index scan, non-covering ## 2380SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2381 2382## ref type access 2383SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6; 2384SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 LIMIT 2; 2385SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 DESC; 2386SELECT * FROM t2 WHERE c1 = 65536 ORDER BY c1,c6 DESC LIMIT 2; 2387 2388## Range access, ordered ## 2389SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6; 2390SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 LIMIT 2; 2391SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6; 2392SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 LIMIT 2; 2393SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6; 2394SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 LIMIT 2; 2395SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6; 2396SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 LIMIT 2; 2397SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6; 2398SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 LIMIT 2; 2399SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6; 2400SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 LIMIT 2; 2401SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6; 2402SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 LIMIT 2; 2403SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6; 2404SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 LIMIT 2; 2405SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6; 2406SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 2407SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2408SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2409SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2410SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2411 2412## Range access, backwards scan ## 2413SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 DESC; 2414SELECT * FROM t2 WHERE c1 <> 65536 ORDER BY c1,c6 DESC LIMIT 2; 2415SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 DESC; 2416SELECT * FROM t2 WHERE c1 > 65536 ORDER BY c1,c6 DESC LIMIT 2; 2417SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 DESC; 2418SELECT * FROM t2 WHERE c1 >= 65536 ORDER BY c1,c6 DESC LIMIT 2; 2419SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 DESC; 2420SELECT * FROM t2 WHERE c1 < 65536 ORDER BY c1,c6 DESC LIMIT 2; 2421SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 DESC; 2422SELECT * FROM t2 WHERE c1 <= 65536 ORDER BY c1,c6 DESC LIMIT 2; 2423SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 DESC; 2424SELECT * FROM t2 WHERE c1 <=> 65536 ORDER BY c1,c6 DESC LIMIT 2; 2425SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC; 2426SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 65536 ORDER BY c1,c6 DESC LIMIT 2; 2427SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC; 2428SELECT * FROM t2 WHERE c1 IN (-255,65536) ORDER BY c1,c6 DESC LIMIT 2; 2429SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC; 2430SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 65536 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 2431SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2432SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2433SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2434SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2435## Full table scan ## 2436--sorted_result 2437SELECT * FROM t3; 2438--sorted_result 2439SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2440--sorted_result 2441SELECT * FROM t3 WHERE c1 = 0; 2442 2443## Forward index scan, covering ## 2444--sorted_result 2445SELECT c2,c7 FROM t3; 2446 2447## Backward index scan, covering ## 2448SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 2449 2450## Forward index scan, non-covering ## 2451SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 2452 2453## Backward index scan, non-covering ## 2454SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 2455 2456## ref type access 2457SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7; 2458SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 LIMIT 2; 2459SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 DESC; 2460SELECT * FROM t3 WHERE c2 = -32768 ORDER BY c2,c7 DESC LIMIT 2; 2461 2462## Range access, ordered ## 2463SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7; 2464SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 LIMIT 2; 2465SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7; 2466SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 LIMIT 2; 2467SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7; 2468SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 LIMIT 2; 2469SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7; 2470SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 LIMIT 2; 2471SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7; 2472SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 LIMIT 2; 2473SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7; 2474SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 LIMIT 2; 2475SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7; 2476SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 LIMIT 2; 2477SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7; 2478SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 LIMIT 2; 2479SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7; 2480SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 LIMIT 2; 2481SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 2482SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 2483SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 2484SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 2485 2486## Range access, backwards scan ## 2487SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 DESC; 2488SELECT * FROM t3 WHERE c2 <> -32768 ORDER BY c2,c7 DESC LIMIT 2; 2489SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 DESC; 2490SELECT * FROM t3 WHERE c2 > -32768 ORDER BY c2,c7 DESC LIMIT 2; 2491SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 DESC; 2492SELECT * FROM t3 WHERE c2 >= -32768 ORDER BY c2,c7 DESC LIMIT 2; 2493SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 DESC; 2494SELECT * FROM t3 WHERE c2 < -32768 ORDER BY c2,c7 DESC LIMIT 2; 2495SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 DESC; 2496SELECT * FROM t3 WHERE c2 <= -32768 ORDER BY c2,c7 DESC LIMIT 2; 2497SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 DESC; 2498SELECT * FROM t3 WHERE c2 <=> -32768 ORDER BY c2,c7 DESC LIMIT 2; 2499SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC; 2500SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC LIMIT 2; 2501SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC; 2502SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC LIMIT 2; 2503SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC; 2504SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC LIMIT 2; 2505SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 2506SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 2507SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 2508SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 2509## Full table scan ## 2510--sorted_result 2511SELECT * FROM t3; 2512--sorted_result 2513SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2514--sorted_result 2515SELECT * FROM t3 WHERE c1 = 65535; 2516 2517## Forward index scan, covering ## 2518--sorted_result 2519SELECT c2,c7 FROM t3; 2520 2521## Backward index scan, covering ## 2522SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 2523 2524## Forward index scan, non-covering ## 2525SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 2526 2527## Backward index scan, non-covering ## 2528SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 2529 2530## ref type access 2531SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7; 2532SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 LIMIT 2; 2533SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 DESC; 2534SELECT * FROM t3 WHERE c2 = 32767 ORDER BY c2,c7 DESC LIMIT 2; 2535 2536## Range access, ordered ## 2537SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7; 2538SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 LIMIT 2; 2539SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7; 2540SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 LIMIT 2; 2541SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7; 2542SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 LIMIT 2; 2543SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7; 2544SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 LIMIT 2; 2545SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7; 2546SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 LIMIT 2; 2547SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7; 2548SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 LIMIT 2; 2549SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7; 2550SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 LIMIT 2; 2551SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7; 2552SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 LIMIT 2; 2553SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7; 2554SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 LIMIT 2; 2555SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 2556SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 2557SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 2558SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 2559 2560## Range access, backwards scan ## 2561SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 DESC; 2562SELECT * FROM t3 WHERE c2 <> 32767 ORDER BY c2,c7 DESC LIMIT 2; 2563SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 DESC; 2564SELECT * FROM t3 WHERE c2 > 32767 ORDER BY c2,c7 DESC LIMIT 2; 2565SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 DESC; 2566SELECT * FROM t3 WHERE c2 >= 32767 ORDER BY c2,c7 DESC LIMIT 2; 2567SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 DESC; 2568SELECT * FROM t3 WHERE c2 < 32767 ORDER BY c2,c7 DESC LIMIT 2; 2569SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 DESC; 2570SELECT * FROM t3 WHERE c2 <= 32767 ORDER BY c2,c7 DESC LIMIT 2; 2571SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 DESC; 2572SELECT * FROM t3 WHERE c2 <=> 32767 ORDER BY c2,c7 DESC LIMIT 2; 2573SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC; 2574SELECT * FROM t3 WHERE c2 BETWEEN -32768 AND 32767 ORDER BY c2,c7 DESC LIMIT 2; 2575SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC; 2576SELECT * FROM t3 WHERE c2 IN (-32768,32767) ORDER BY c2,c7 DESC LIMIT 2; 2577SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC; 2578SELECT * FROM t3 WHERE c2 >= -32768 AND c2 < 32767 AND c7 = 10 ORDER BY c2,c7 DESC LIMIT 2; 2579SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 2580SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 2581SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 2582SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 2583## Full table scan ## 2584--sorted_result 2585SELECT * FROM t3; 2586--sorted_result 2587SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2588--sorted_result 2589SELECT * FROM t3 WHERE c1 = -255; 2590 2591## Forward index scan, covering ## 2592--sorted_result 2593SELECT c2,c7 FROM t3; 2594 2595## Backward index scan, covering ## 2596SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 2597 2598## Forward index scan, non-covering ## 2599SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 2600 2601## Backward index scan, non-covering ## 2602SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 2603 2604## ref type access 2605SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7; 2606SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 LIMIT 2; 2607SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 DESC; 2608SELECT * FROM t3 WHERE c2 = -32769 ORDER BY c2,c7 DESC LIMIT 2; 2609 2610## Range access, ordered ## 2611SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7; 2612SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 LIMIT 2; 2613SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7; 2614SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 LIMIT 2; 2615SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7; 2616SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 LIMIT 2; 2617SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7; 2618SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 LIMIT 2; 2619SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7; 2620SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 LIMIT 2; 2621SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7; 2622SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 LIMIT 2; 2623SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7; 2624SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 LIMIT 2; 2625SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7; 2626SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 LIMIT 2; 2627SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7; 2628SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 2629SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 2630SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 2631SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 2632SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 2633 2634## Range access, backwards scan ## 2635SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 DESC; 2636SELECT * FROM t3 WHERE c2 <> -32769 ORDER BY c2,c7 DESC LIMIT 2; 2637SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 DESC; 2638SELECT * FROM t3 WHERE c2 > -32769 ORDER BY c2,c7 DESC LIMIT 2; 2639SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 DESC; 2640SELECT * FROM t3 WHERE c2 >= -32769 ORDER BY c2,c7 DESC LIMIT 2; 2641SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 DESC; 2642SELECT * FROM t3 WHERE c2 < -32769 ORDER BY c2,c7 DESC LIMIT 2; 2643SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 DESC; 2644SELECT * FROM t3 WHERE c2 <= -32769 ORDER BY c2,c7 DESC LIMIT 2; 2645SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 DESC; 2646SELECT * FROM t3 WHERE c2 <=> -32769 ORDER BY c2,c7 DESC LIMIT 2; 2647SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC; 2648SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC LIMIT 2; 2649SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC; 2650SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC LIMIT 2; 2651SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC; 2652SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 2653SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 2654SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 2655SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 2656SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 2657## Full table scan ## 2658--sorted_result 2659SELECT * FROM t3; 2660--sorted_result 2661SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2662--sorted_result 2663SELECT * FROM t3 WHERE c1 = 65536; 2664 2665## Forward index scan, covering ## 2666--sorted_result 2667SELECT c2,c7 FROM t3; 2668 2669## Backward index scan, covering ## 2670SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 2671 2672## Forward index scan, non-covering ## 2673SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 2674 2675## Backward index scan, non-covering ## 2676SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 2677 2678## ref type access 2679SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7; 2680SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 LIMIT 2; 2681SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 DESC; 2682SELECT * FROM t3 WHERE c2 = 32768 ORDER BY c2,c7 DESC LIMIT 2; 2683 2684## Range access, ordered ## 2685SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7; 2686SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 LIMIT 2; 2687SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7; 2688SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 LIMIT 2; 2689SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7; 2690SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 LIMIT 2; 2691SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7; 2692SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 LIMIT 2; 2693SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7; 2694SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 LIMIT 2; 2695SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7; 2696SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 LIMIT 2; 2697SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7; 2698SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 LIMIT 2; 2699SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7; 2700SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 LIMIT 2; 2701SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7; 2702SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 2703SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 2704SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 2705SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 2706SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 2707 2708## Range access, backwards scan ## 2709SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 DESC; 2710SELECT * FROM t3 WHERE c2 <> 32768 ORDER BY c2,c7 DESC LIMIT 2; 2711SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 DESC; 2712SELECT * FROM t3 WHERE c2 > 32768 ORDER BY c2,c7 DESC LIMIT 2; 2713SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 DESC; 2714SELECT * FROM t3 WHERE c2 >= 32768 ORDER BY c2,c7 DESC LIMIT 2; 2715SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 DESC; 2716SELECT * FROM t3 WHERE c2 < 32768 ORDER BY c2,c7 DESC LIMIT 2; 2717SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 DESC; 2718SELECT * FROM t3 WHERE c2 <= 32768 ORDER BY c2,c7 DESC LIMIT 2; 2719SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 DESC; 2720SELECT * FROM t3 WHERE c2 <=> 32768 ORDER BY c2,c7 DESC LIMIT 2; 2721SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC; 2722SELECT * FROM t3 WHERE c2 BETWEEN -32769 AND 32768 ORDER BY c2,c7 DESC LIMIT 2; 2723SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC; 2724SELECT * FROM t3 WHERE c2 IN (-32769,32768) ORDER BY c2,c7 DESC LIMIT 2; 2725SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC; 2726SELECT * FROM t3 WHERE c2 >= -32769 AND c2 < 32768 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 2727SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 2728SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 2729SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 2730SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 2731DROP TABLE t1,t2,t3,t4,t5; 2732 2733######## Running INSERT tests for MEDIUMINT ######## 2734 2735# Create tables 2736CREATE TABLE t1(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT); 2737CREATE TABLE t2(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6)); 2738CREATE TABLE t3(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT, index idx(c2,c7)); 2739 2740# Insert some rows with targeted values 2741INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 2742INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 2743INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 2744 2745# Insert duplicates for parts of the clustered key 2746INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 2747INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 2748 2749# Insert permissible NULLs 2750INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 2751INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 2752INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 2753 2754# Insert empty string '' 2755INSERT INTO t1 VALUES('','',17,18,19,20,21); 2756INSERT INTO t2 VALUES('','',17,18,19,20,21); 2757INSERT INTO t3 VALUES('','',17,18,19,20,21); 2758 2759# Insert negative value to unsigned integer, positive value to signed integer, zero values 2760INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 2761INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 2762INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 2763INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 2764INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 2765INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 2766INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 2767INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 2768INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 2769 2770# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 2771INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 2772INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 2773INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 2774 2775--sorted_result 2776SELECT * FROM t1; 2777SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 2778SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 2779SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 2780SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 2781SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 2782SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 2783 2784# Now select using various table access methods (full table scan, range scan, index scan etc.) 2785## Full table scan ## 2786--sorted_result 2787SELECT * FROM t2; 2788--sorted_result 2789SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2790--sorted_result 2791SELECT * FROM t2 WHERE c2 = 102; 2792 2793## Forward index scan, covering ## 2794--sorted_result 2795SELECT c1,c6 FROM t2; 2796 2797## Backward index scan, covering ## 2798SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2799 2800## Forward index scan, non-covering ## 2801SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2802 2803## Backward index scan, non-covering ## 2804SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2805 2806## ref type access 2807SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 2808SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 2809SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 2810SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 2811 2812## Range access, ordered ## 2813SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 2814SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 2815SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 2816SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 2817SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 2818SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 2819SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 2820SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 2821SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 2822SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 2823SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 2824SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 2825SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 2826SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 2827SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 2828SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 2829SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 2830SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 2831SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2832SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2833SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2834SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2835 2836## Range access, backwards scan ## 2837SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 2838SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 2839SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 2840SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 2841SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 2842SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 2843SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 2844SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 2845SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 2846SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 2847SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 2848SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 2849SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 2850SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 2851SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 2852SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 2853SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 2854SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 2855SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2856SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2857SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2858SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2859## Full table scan ## 2860--sorted_result 2861SELECT * FROM t2; 2862--sorted_result 2863SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 2864--sorted_result 2865SELECT * FROM t2 WHERE c2 = 102; 2866 2867## Forward index scan, covering ## 2868--sorted_result 2869SELECT c1,c6 FROM t2; 2870 2871## Backward index scan, covering ## 2872SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 2873 2874## Forward index scan, non-covering ## 2875SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 2876 2877## Backward index scan, non-covering ## 2878SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 2879 2880## ref type access 2881SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 2882SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 2883SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 2884SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 2885 2886## Range access, ordered ## 2887SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 2888SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 2889SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 2890SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 2891SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 2892SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 2893SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 2894SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 2895SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 2896SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 2897SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 2898SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 2899SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 2900SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 2901SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 2902SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 2903SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 2904SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 2905SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 2906SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 2907SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 2908SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 2909 2910## Range access, backwards scan ## 2911SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 2912SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 2913SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 2914SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 2915SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 2916SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 2917SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 2918SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 2919SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 2920SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 2921SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 2922SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 2923SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 2924SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 2925SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 2926SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 2927SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 2928SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 2929SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 2930SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 2931SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 2932SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 2933## Full table scan ## 2934--sorted_result 2935SELECT * FROM t3; 2936--sorted_result 2937SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 2938--sorted_result 2939SELECT * FROM t3 WHERE c1 = 108; 2940 2941## Forward index scan, covering ## 2942--sorted_result 2943SELECT c2,c7 FROM t3; 2944 2945## Backward index scan, covering ## 2946SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 2947 2948## Forward index scan, non-covering ## 2949SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 2950 2951## Backward index scan, non-covering ## 2952SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 2953 2954## ref type access 2955SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 2956SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 2957SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 2958SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 2959 2960## Range access, ordered ## 2961SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 2962SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 2963SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 2964SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 2965SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 2966SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 2967SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 2968SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 2969SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 2970SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 2971SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 2972SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 2973SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 2974SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 2975SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 2976SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 2977SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 2978SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 2979SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 2980SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 2981SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 2982SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 2983 2984## Range access, backwards scan ## 2985SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 2986SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 2987SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 2988SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 2989SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 2990SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 2991SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 2992SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 2993SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 2994SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 2995SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 2996SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 2997SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 2998SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 2999SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 3000SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 3001SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 3002SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 3003SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 3004SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 3005SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 3006SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 3007## Full table scan ## 3008--sorted_result 3009SELECT * FROM t3; 3010--sorted_result 3011SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 3012--sorted_result 3013SELECT * FROM t3 WHERE c1 = 108; 3014 3015## Forward index scan, covering ## 3016--sorted_result 3017SELECT c2,c7 FROM t3; 3018 3019## Backward index scan, covering ## 3020SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 3021 3022## Forward index scan, non-covering ## 3023SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 3024 3025## Backward index scan, non-covering ## 3026SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 3027 3028## ref type access 3029SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 3030SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 3031SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 3032SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 3033 3034## Range access, ordered ## 3035SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 3036SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 3037SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 3038SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 3039SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 3040SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 3041SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 3042SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 3043SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 3044SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 3045SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 3046SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 3047SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 3048SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 3049SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 3050SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 3051SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 3052SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 3053SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 3054SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 3055SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 3056SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 3057 3058## Range access, backwards scan ## 3059SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 3060SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 3061SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 3062SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 3063SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 3064SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 3065SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 3066SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 3067SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 3068SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 3069SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 3070SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 3071SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 3072SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 3073SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 3074SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 3075SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 3076SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 3077SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 3078SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 3079SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 3080SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 3081 3082# Using index for group-by 3083--sorted_result 3084SELECT c2 FROM t3 GROUP BY c2; 3085--sorted_result 3086SELECT DISTINCT c2 FROM t3; 3087--sorted_result 3088SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 3089 3090# Create tables with AUTO_INCREMENT columns and unique indexes 3091CREATE TABLE t4(c1 MEDIUMINT SIGNED NOT NULL AUTO_INCREMENT, c2 MEDIUMINT UNSIGNED NULL, c3 MEDIUMINT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 3092CREATE TABLE t5(c1 MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 MEDIUMINT SIGNED NULL, c3 MEDIUMINT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 INT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 3093 3094# Test with AUTO_INCREMENT columns 3095# Insert some rows 3096INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 3097INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 3098# Insert 0 values, increments the value 3099INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 3100--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 3101--if (!$auto_value) { 3102--die "AUTO_INCREMENT didn't work well on 0" 3103} 3104INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 3105--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 3106--if (!$auto_value) { 3107--die "AUTO_INCREMENT didn't work well on 0" 3108} 3109# Insert NULL, no error, increments the value 3110INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 3111--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 3112--if (!$auto_value) { 3113--die "AUTO_INCREMENT didn't work well on NULL" 3114} 3115INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 3116--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 3117--if (!$auto_value) { 3118--die "AUTO_INCREMENT didn't work well on NULL" 3119} 3120# Insert empty strings, increments the value 3121INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 3122--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 3123--if (!$auto_value) { 3124--die "AUTO_INCREMENT didn't work well on ''" 3125} 3126INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 3127--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 3128--if (!$auto_value) { 3129--die "AUTO_INCREMENT didn't work well on ''" 3130} 3131# Insert strings with numeric part, inserts the numeric part of the string 3132INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 3133--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 3134--if (!$auto_value) { 3135--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 3136} 3137INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 3138--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 3139--if (!$auto_value) { 3140--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 3141} 3142# Insert negative values unsigned & positive value to signed 3143INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 3144--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 3145--if (!$auto_value) { 3146--die "AUTO_INCREMENT didn't work on negative value" 3147} 3148INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 3149--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 3150--if (!$auto_value) { 3151--die "AUTO_INCREMENT didn't work for negative value on unsigned" 3152} 3153# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 3154INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 3155--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 3156--if (!$auto_value) { 3157--die "AUTO_INCREMENT didn't work well" 3158} 3159INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 3160--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 3161--if (!$auto_value) { 3162--die "AUTO_INCREMENT didn't work well" 3163} 3164 3165SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 3166SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 3167# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 3168## Full table scan ## 3169--sorted_result 3170SELECT * FROM t4; 3171--sorted_result 3172SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 3173--sorted_result 3174SELECT * FROM t4 WHERE c4 = 104; 3175 3176## Forward index scan, covering ## 3177--sorted_result 3178SELECT c1 FROM t4; 3179 3180## Backward index scan, covering ## 3181SELECT c1 FROM t4 ORDER BY c1 DESC; 3182 3183## Forward index scan, non-covering ## 3184SELECT * FROM t4 ORDER BY c1 LIMIT 2; 3185 3186## Backward index scan, non-covering ## 3187SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 3188 3189## ref type access 3190SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 3191SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 3192SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 3193SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 3194 3195## Range access, ordered ## 3196SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 3197SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 3198SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 3199SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 3200SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 3201SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 3202SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 3203SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 3204SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 3205SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 3206SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 3207SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 3208SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 3209SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 3210SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 3211SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 3212SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 3213SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 3214SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 3215SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3216SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 3217SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3218 3219## Range access, backwards scan ## 3220SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 3221SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 3222SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 3223SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 3224SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 3225SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 3226SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 3227SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 3228SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 3229SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 3230SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 3231SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 3232SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 3233SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 3234SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 3235SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 3236SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 3237SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 3238SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 3239SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3240SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3241SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3242## Full table scan ## 3243--sorted_result 3244SELECT * FROM t4; 3245--sorted_result 3246SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 3247--sorted_result 3248SELECT * FROM t4 WHERE c4 = 104; 3249 3250## Forward index scan, covering ## 3251--sorted_result 3252SELECT c1 FROM t4; 3253 3254## Backward index scan, covering ## 3255SELECT c1 FROM t4 ORDER BY c1 DESC; 3256 3257## Forward index scan, non-covering ## 3258SELECT * FROM t4 ORDER BY c1 LIMIT 2; 3259 3260## Backward index scan, non-covering ## 3261SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 3262 3263## ref type access 3264SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 3265SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 3266SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 3267SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 3268 3269## Range access, ordered ## 3270SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 3271SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 3272SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 3273SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 3274SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 3275SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 3276SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 3277SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 3278SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 3279SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 3280SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 3281SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 3282SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 3283SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 3284SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 3285SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 3286SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 3287SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 3288SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 3289SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3290SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 3291SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3292 3293## Range access, backwards scan ## 3294SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 3295SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 3296SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 3297SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 3298SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 3299SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 3300SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 3301SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 3302SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 3303SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 3304SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 3305SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 3306SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 3307SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 3308SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 3309SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 3310SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 3311SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 3312SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 3313SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3314SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3315SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3316## Full table scan ## 3317--sorted_result 3318SELECT * FROM t5; 3319--sorted_result 3320SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 3321--sorted_result 3322SELECT * FROM t5 WHERE c5 = 112; 3323 3324## Forward index scan, covering ## 3325--sorted_result 3326SELECT c1 FROM t5; 3327 3328## Backward index scan, covering ## 3329SELECT c1 FROM t5 ORDER BY c1 DESC; 3330 3331## Forward index scan, non-covering ## 3332SELECT * FROM t5 ORDER BY c1 LIMIT 2; 3333 3334## Backward index scan, non-covering ## 3335SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 3336 3337## ref type access 3338SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 3339SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 3340SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 3341SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 3342 3343## Range access, ordered ## 3344SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 3345SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 3346SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 3347SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 3348SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 3349SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 3350SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 3351SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 3352SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 3353SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 3354SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 3355SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 3356SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 3357SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 3358SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 3359SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 3360SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 3361SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 3362SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 3363SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 3364SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 3365SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 3366 3367## Range access, backwards scan ## 3368SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 3369SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 3370SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 3371SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 3372SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 3373SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 3374SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 3375SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 3376SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 3377SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 3378SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 3379SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 3380SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 3381SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 3382SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 3383SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 3384SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 3385SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 3386SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 3387SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 3388SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 3389SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 3390 3391# Index-merge access 3392--sorted_result 3393SELECT * FROM t4 WHERE c1=1 OR c2=109; 3394 3395# Using index for group-by 3396--sorted_result 3397SELECT c2 FROM t4 GROUP BY c2; 3398--sorted_result 3399SELECT DISTINCT c2 FROM t4; 3400--sorted_result 3401SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 3402 3403# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 3404 3405# Insert NULL to non-null column 3406--error ER_BAD_NULL_ERROR 3407INSERT INTO t2(c1) VALUES(NULL); 3408--error ER_BAD_NULL_ERROR 3409INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 3410--error ER_BAD_NULL_ERROR 3411INSERT INTO t4(c3) VALUES(NULL); 3412--error ER_BAD_NULL_ERROR 3413INSERT INTO t5(c3) VALUES(NULL); 3414 3415# Insert duplicate value to pk 3416--error ER_DUP_ENTRY 3417INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 3418 3419# Insert duplicate value to clustered pk, throws error 3420--error ER_DUP_ENTRY 3421INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 3422--error ER_DUP_ENTRY 3423INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 3424 3425# Insert duplicate value to unique column, throws error 3426--error ER_DUP_ENTRY 3427INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 3428--error ER_DUP_ENTRY 3429# Insert duplicate value to clustered unique column, throws error 3430INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 3431 3432# Test 'INSERT INTO SELECT FROM' 3433CREATE TABLE t6(c1 MEDIUMINT UNSIGNED NOT NULL, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT); 3434INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 3435--sorted_result 3436SELECT * FROM t6; 3437TRUNCATE TABLE t6; 3438INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 3439--sorted_result 3440SELECT * FROM t6; 3441TRUNCATE TABLE t6; 3442# Test 'INSERT INTO SELECT FROM' primary key constraint violation 3443CREATE TABLE t7(c1 MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT); 3444CREATE TABLE t8(c1 MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 MEDIUMINT NULL, c3 TINYINT, c4 SMALLINT , c5 INT, c6 INTEGER, c7 BIGINT); 3445INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 3446INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 3447--sorted_result 3448SELECT * FROM t7; 3449INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 3450--sorted_result 3451SELECT * FROM t8; 3452--error ER_DUP_ENTRY 3453INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 3454--error ER_DUP_ENTRY 3455INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 3456TRUNCATE TABLE t6; 3457 3458# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 3459INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 3460INSERT INTO t8 SELECT * FROM t6; 3461SELECT LAST_INSERT_ID() AS last_insert_id; 3462--sorted_result 3463SELECT * FROM t8; 3464TRUNCATE TABLE t8; 3465INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 3466--sorted_result 3467SELECT * FROM t8; 3468DROP TABLE t6,t7,t8; 3469 3470# Test 'INSERT SET' 3471INSERT INTO t2 SET c3=5,c4=6; 3472SET SQL_MODE=STRICT_ALL_TABLES; 3473--error ER_NO_DEFAULT_FOR_FIELD 3474INSERT INTO t2 SET c3=5,c4=6; 3475SET SQL_MODE=''; 3476 3477# Test insert allowable bigger values to 'MEDIUMINT' columns 3478INSERT INTO t1 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20); 3479INSERT INTO t2 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20); 3480INSERT INTO t3 VALUES(0,-8388608,1,2,3,4,5),(255,-32768,6,7,8,9,10),(65535,-128,11,12,13,14,15),(16777215,8388607,16,17,18,19,20); 3481INSERT INTO t4 VALUES(-8388608,0,1,2,3,4,5,5),(-32768,255,6,7,8,9,10,10),(-128,65535,11,12,13,14,15,15),(8388607,16777215,16,17,18,19,20,20); 3482INSERT INTO t5 VALUES(0,-8388608,1,2,3,4,5,5),(255,-32768,6,7,8,9,10,10),(65535,-128,11,12,13,14,15,15),(16777215,8388607,16,17,18,19,20,20); 3483--error ER_DUP_ENTRY 3484INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 3485--disable_warnings 3486INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 3487--enable_warnings 3488--sorted_result 3489SELECT * FROM t4; 3490 3491# Insert signed value to unsigned 'MEDIUMINT', outside range values to signed/unsigned columns 3492INSERT INTO t1 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35); 3493INSERT INTO t2 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35); 3494INSERT INTO t3 VALUES(-255,-8388609,26,27,28,29,30),(16777216,8388608,31,32,33,34,35); 3495# Insert into t4, t5 (TBD) 3496 3497# Now select using various table access methods 3498## Full table scan ## 3499--sorted_result 3500SELECT * FROM t2; 3501--sorted_result 3502SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3503--sorted_result 3504SELECT * FROM t2 WHERE c2 = -8388608; 3505 3506## Forward index scan, covering ## 3507--sorted_result 3508SELECT c1,c6 FROM t2; 3509 3510## Backward index scan, covering ## 3511SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 3512 3513## Forward index scan, non-covering ## 3514SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 3515 3516## Backward index scan, non-covering ## 3517SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 3518 3519## ref type access 3520SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 3521SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 3522SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 3523SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 3524 3525## Range access, ordered ## 3526SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 3527SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 3528SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 3529SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 3530SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 3531SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 3532SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 3533SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 3534SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 3535SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 3536SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 3537SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 3538SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6; 3539SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 LIMIT 2; 3540SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6; 3541SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 LIMIT 2; 3542SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6; 3543SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 3544SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 3545SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 3546SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 3547SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 3548 3549## Range access, backwards scan ## 3550SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 3551SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 3552SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 3553SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 3554SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 3555SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 3556SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 3557SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 3558SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 3559SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 3560SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 3561SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 3562SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC; 3563SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3564SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC; 3565SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC LIMIT 2; 3566SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC; 3567SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 3568SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 3569SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 3570SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 3571SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 3572## Full table scan ## 3573--sorted_result 3574SELECT * FROM t2; 3575--sorted_result 3576SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3577--sorted_result 3578SELECT * FROM t2 WHERE c2 = 8388607; 3579 3580## Forward index scan, covering ## 3581--sorted_result 3582SELECT c1,c6 FROM t2; 3583 3584## Backward index scan, covering ## 3585SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 3586 3587## Forward index scan, non-covering ## 3588SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 3589 3590## Backward index scan, non-covering ## 3591SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 3592 3593## ref type access 3594SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6; 3595SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 LIMIT 2; 3596SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 DESC; 3597SELECT * FROM t2 WHERE c1 = 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3598 3599## Range access, ordered ## 3600SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6; 3601SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 LIMIT 2; 3602SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6; 3603SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 LIMIT 2; 3604SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6; 3605SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 LIMIT 2; 3606SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6; 3607SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 LIMIT 2; 3608SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6; 3609SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 LIMIT 2; 3610SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6; 3611SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 LIMIT 2; 3612SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6; 3613SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 LIMIT 2; 3614SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6; 3615SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 LIMIT 2; 3616SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6; 3617SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 3618SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 3619SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 3620SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 3621SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 3622 3623## Range access, backwards scan ## 3624SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 DESC; 3625SELECT * FROM t2 WHERE c1 <> 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3626SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 DESC; 3627SELECT * FROM t2 WHERE c1 > 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3628SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 DESC; 3629SELECT * FROM t2 WHERE c1 >= 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3630SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 DESC; 3631SELECT * FROM t2 WHERE c1 < 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3632SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 DESC; 3633SELECT * FROM t2 WHERE c1 <= 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3634SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 DESC; 3635SELECT * FROM t2 WHERE c1 <=> 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3636SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC; 3637SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 16777215 ORDER BY c1,c6 DESC LIMIT 2; 3638SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC; 3639SELECT * FROM t2 WHERE c1 IN (0,16777215) ORDER BY c1,c6 DESC LIMIT 2; 3640SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC; 3641SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 16777215 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 3642SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 3643SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 3644SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 3645SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 3646## Full table scan ## 3647--sorted_result 3648SELECT * FROM t2; 3649--sorted_result 3650SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3651--sorted_result 3652SELECT * FROM t2 WHERE c2 = -8388609; 3653 3654## Forward index scan, covering ## 3655--sorted_result 3656SELECT c1,c6 FROM t2; 3657 3658## Backward index scan, covering ## 3659SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 3660 3661## Forward index scan, non-covering ## 3662SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 3663 3664## Backward index scan, non-covering ## 3665SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 3666 3667## ref type access 3668SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6; 3669SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2; 3670SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC; 3671SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2; 3672 3673## Range access, ordered ## 3674SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6; 3675SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2; 3676SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6; 3677SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2; 3678SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6; 3679SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2; 3680SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6; 3681SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2; 3682SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6; 3683SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2; 3684SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6; 3685SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2; 3686SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6; 3687SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 LIMIT 2; 3688SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6; 3689SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 LIMIT 2; 3690SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6; 3691SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 3692SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 3693SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 3694SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 3695SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 3696 3697## Range access, backwards scan ## 3698SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC; 3699SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2; 3700SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC; 3701SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2; 3702SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC; 3703SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2; 3704SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC; 3705SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2; 3706SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC; 3707SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2; 3708SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC; 3709SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2; 3710SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC; 3711SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3712SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC; 3713SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC LIMIT 2; 3714SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC; 3715SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 3716SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 3717SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 3718SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 3719SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 3720## Full table scan ## 3721--sorted_result 3722SELECT * FROM t2; 3723--sorted_result 3724SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 3725--sorted_result 3726SELECT * FROM t2 WHERE c2 = 8388608; 3727 3728## Forward index scan, covering ## 3729--sorted_result 3730SELECT c1,c6 FROM t2; 3731 3732## Backward index scan, covering ## 3733SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 3734 3735## Forward index scan, non-covering ## 3736SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 3737 3738## Backward index scan, non-covering ## 3739SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 3740 3741## ref type access 3742SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6; 3743SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 LIMIT 2; 3744SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 DESC; 3745SELECT * FROM t2 WHERE c1 = 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3746 3747## Range access, ordered ## 3748SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6; 3749SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 LIMIT 2; 3750SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6; 3751SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 LIMIT 2; 3752SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6; 3753SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 LIMIT 2; 3754SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6; 3755SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 LIMIT 2; 3756SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6; 3757SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 LIMIT 2; 3758SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6; 3759SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 LIMIT 2; 3760SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6; 3761SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 LIMIT 2; 3762SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6; 3763SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 LIMIT 2; 3764SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6; 3765SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 3766SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 3767SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 3768SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 3769SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 3770 3771## Range access, backwards scan ## 3772SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 DESC; 3773SELECT * FROM t2 WHERE c1 <> 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3774SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 DESC; 3775SELECT * FROM t2 WHERE c1 > 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3776SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 DESC; 3777SELECT * FROM t2 WHERE c1 >= 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3778SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 DESC; 3779SELECT * FROM t2 WHERE c1 < 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3780SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 DESC; 3781SELECT * FROM t2 WHERE c1 <= 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3782SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 DESC; 3783SELECT * FROM t2 WHERE c1 <=> 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3784SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC; 3785SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 16777216 ORDER BY c1,c6 DESC LIMIT 2; 3786SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC; 3787SELECT * FROM t2 WHERE c1 IN (-255,16777216) ORDER BY c1,c6 DESC LIMIT 2; 3788SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC; 3789SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 16777216 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 3790SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 3791SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 3792SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 3793SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 3794## Full table scan ## 3795--sorted_result 3796SELECT * FROM t3; 3797--sorted_result 3798SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 3799--sorted_result 3800SELECT * FROM t3 WHERE c1 = 0; 3801 3802## Forward index scan, covering ## 3803--sorted_result 3804SELECT c2,c7 FROM t3; 3805 3806## Backward index scan, covering ## 3807SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 3808 3809## Forward index scan, non-covering ## 3810SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 3811 3812## Backward index scan, non-covering ## 3813SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 3814 3815## ref type access 3816SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7; 3817SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 LIMIT 2; 3818SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 DESC; 3819SELECT * FROM t3 WHERE c2 = -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3820 3821## Range access, ordered ## 3822SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7; 3823SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 LIMIT 2; 3824SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7; 3825SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 LIMIT 2; 3826SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7; 3827SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 LIMIT 2; 3828SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7; 3829SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 LIMIT 2; 3830SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7; 3831SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 LIMIT 2; 3832SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7; 3833SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 LIMIT 2; 3834SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7; 3835SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 LIMIT 2; 3836SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7; 3837SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 LIMIT 2; 3838SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7; 3839SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 LIMIT 2; 3840SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 3841SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 3842SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 3843SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 3844 3845## Range access, backwards scan ## 3846SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 DESC; 3847SELECT * FROM t3 WHERE c2 <> -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3848SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 DESC; 3849SELECT * FROM t3 WHERE c2 > -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3850SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 DESC; 3851SELECT * FROM t3 WHERE c2 >= -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3852SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 DESC; 3853SELECT * FROM t3 WHERE c2 < -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3854SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 DESC; 3855SELECT * FROM t3 WHERE c2 <= -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3856SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 DESC; 3857SELECT * FROM t3 WHERE c2 <=> -8388608 ORDER BY c2,c7 DESC LIMIT 2; 3858SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC; 3859SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3860SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC; 3861SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC LIMIT 2; 3862SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC; 3863SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC LIMIT 2; 3864SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 3865SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 3866SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 3867SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 3868## Full table scan ## 3869--sorted_result 3870SELECT * FROM t3; 3871--sorted_result 3872SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 3873--sorted_result 3874SELECT * FROM t3 WHERE c1 = 16777215; 3875 3876## Forward index scan, covering ## 3877--sorted_result 3878SELECT c2,c7 FROM t3; 3879 3880## Backward index scan, covering ## 3881SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 3882 3883## Forward index scan, non-covering ## 3884SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 3885 3886## Backward index scan, non-covering ## 3887SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 3888 3889## ref type access 3890SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7; 3891SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 LIMIT 2; 3892SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 DESC; 3893SELECT * FROM t3 WHERE c2 = 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3894 3895## Range access, ordered ## 3896SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7; 3897SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 LIMIT 2; 3898SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7; 3899SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 LIMIT 2; 3900SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7; 3901SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 LIMIT 2; 3902SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7; 3903SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 LIMIT 2; 3904SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7; 3905SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 LIMIT 2; 3906SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7; 3907SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 LIMIT 2; 3908SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7; 3909SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 LIMIT 2; 3910SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7; 3911SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 LIMIT 2; 3912SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7; 3913SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 LIMIT 2; 3914SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 3915SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 3916SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 3917SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 3918 3919## Range access, backwards scan ## 3920SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 DESC; 3921SELECT * FROM t3 WHERE c2 <> 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3922SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 DESC; 3923SELECT * FROM t3 WHERE c2 > 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3924SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 DESC; 3925SELECT * FROM t3 WHERE c2 >= 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3926SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 DESC; 3927SELECT * FROM t3 WHERE c2 < 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3928SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 DESC; 3929SELECT * FROM t3 WHERE c2 <= 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3930SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 DESC; 3931SELECT * FROM t3 WHERE c2 <=> 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3932SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC; 3933SELECT * FROM t3 WHERE c2 BETWEEN -8388608 AND 8388607 ORDER BY c2,c7 DESC LIMIT 2; 3934SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC; 3935SELECT * FROM t3 WHERE c2 IN (-8388608,8388607) ORDER BY c2,c7 DESC LIMIT 2; 3936SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC; 3937SELECT * FROM t3 WHERE c2 >= -8388608 AND c2 < 8388607 AND c7 = 15 ORDER BY c2,c7 DESC LIMIT 2; 3938SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 3939SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 3940SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 3941SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 3942## Full table scan ## 3943--sorted_result 3944SELECT * FROM t3; 3945--sorted_result 3946SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 3947--sorted_result 3948SELECT * FROM t3 WHERE c1 = -255; 3949 3950## Forward index scan, covering ## 3951--sorted_result 3952SELECT c2,c7 FROM t3; 3953 3954## Backward index scan, covering ## 3955SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 3956 3957## Forward index scan, non-covering ## 3958SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 3959 3960## Backward index scan, non-covering ## 3961SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 3962 3963## ref type access 3964SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7; 3965SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 LIMIT 2; 3966SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 DESC; 3967SELECT * FROM t3 WHERE c2 = -8388609 ORDER BY c2,c7 DESC LIMIT 2; 3968 3969## Range access, ordered ## 3970SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7; 3971SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 LIMIT 2; 3972SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7; 3973SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 LIMIT 2; 3974SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7; 3975SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 LIMIT 2; 3976SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7; 3977SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 LIMIT 2; 3978SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7; 3979SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 LIMIT 2; 3980SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7; 3981SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 LIMIT 2; 3982SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7; 3983SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 LIMIT 2; 3984SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7; 3985SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 LIMIT 2; 3986SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7; 3987SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 3988SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 3989SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 3990SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 3991SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 3992 3993## Range access, backwards scan ## 3994SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 DESC; 3995SELECT * FROM t3 WHERE c2 <> -8388609 ORDER BY c2,c7 DESC LIMIT 2; 3996SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 DESC; 3997SELECT * FROM t3 WHERE c2 > -8388609 ORDER BY c2,c7 DESC LIMIT 2; 3998SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 DESC; 3999SELECT * FROM t3 WHERE c2 >= -8388609 ORDER BY c2,c7 DESC LIMIT 2; 4000SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 DESC; 4001SELECT * FROM t3 WHERE c2 < -8388609 ORDER BY c2,c7 DESC LIMIT 2; 4002SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 DESC; 4003SELECT * FROM t3 WHERE c2 <= -8388609 ORDER BY c2,c7 DESC LIMIT 2; 4004SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 DESC; 4005SELECT * FROM t3 WHERE c2 <=> -8388609 ORDER BY c2,c7 DESC LIMIT 2; 4006SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC; 4007SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4008SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC; 4009SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC LIMIT 2; 4010SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC; 4011SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 4012SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 4013SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 4014SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 4015SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 4016## Full table scan ## 4017--sorted_result 4018SELECT * FROM t3; 4019--sorted_result 4020SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 4021--sorted_result 4022SELECT * FROM t3 WHERE c1 = 16777216; 4023 4024## Forward index scan, covering ## 4025--sorted_result 4026SELECT c2,c7 FROM t3; 4027 4028## Backward index scan, covering ## 4029SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 4030 4031## Forward index scan, non-covering ## 4032SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 4033 4034## Backward index scan, non-covering ## 4035SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 4036 4037## ref type access 4038SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7; 4039SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 LIMIT 2; 4040SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 DESC; 4041SELECT * FROM t3 WHERE c2 = 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4042 4043## Range access, ordered ## 4044SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7; 4045SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 LIMIT 2; 4046SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7; 4047SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 LIMIT 2; 4048SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7; 4049SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 LIMIT 2; 4050SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7; 4051SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 LIMIT 2; 4052SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7; 4053SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 LIMIT 2; 4054SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7; 4055SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 LIMIT 2; 4056SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7; 4057SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 LIMIT 2; 4058SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7; 4059SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 LIMIT 2; 4060SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7; 4061SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 4062SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 4063SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 4064SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 4065SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 4066 4067## Range access, backwards scan ## 4068SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 DESC; 4069SELECT * FROM t3 WHERE c2 <> 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4070SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 DESC; 4071SELECT * FROM t3 WHERE c2 > 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4072SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 DESC; 4073SELECT * FROM t3 WHERE c2 >= 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4074SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 DESC; 4075SELECT * FROM t3 WHERE c2 < 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4076SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 DESC; 4077SELECT * FROM t3 WHERE c2 <= 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4078SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 DESC; 4079SELECT * FROM t3 WHERE c2 <=> 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4080SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC; 4081SELECT * FROM t3 WHERE c2 BETWEEN -8388609 AND 8388608 ORDER BY c2,c7 DESC LIMIT 2; 4082SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC; 4083SELECT * FROM t3 WHERE c2 IN (-8388609,8388608) ORDER BY c2,c7 DESC LIMIT 2; 4084SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC; 4085SELECT * FROM t3 WHERE c2 >= -8388609 AND c2 < 8388608 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 4086SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 4087SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 4088SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 4089SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 4090DROP TABLE t1,t2,t3,t4,t5; 4091 4092######## Running INSERT tests for INT ######## 4093 4094# Create tables 4095CREATE TABLE t1(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT); 4096CREATE TABLE t2(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT, PRIMARY KEY(c1,c6)); 4097CREATE TABLE t3(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT, index idx(c2,c7)); 4098 4099# Insert some rows with targeted values 4100INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 4101INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 4102INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 4103 4104# Insert duplicates for parts of the clustered key 4105INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 4106INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 4107 4108# Insert permissible NULLs 4109INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 4110INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 4111INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 4112 4113# Insert empty string '' 4114INSERT INTO t1 VALUES('','',17,18,19,20,21); 4115INSERT INTO t2 VALUES('','',17,18,19,20,21); 4116INSERT INTO t3 VALUES('','',17,18,19,20,21); 4117 4118# Insert negative value to unsigned integer, positive value to signed integer, zero values 4119INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 4120INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 4121INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 4122INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 4123INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 4124INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 4125INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 4126INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 4127INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 4128 4129# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 4130INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 4131INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 4132INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 4133 4134--sorted_result 4135SELECT * FROM t1; 4136SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 4137SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 4138SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 4139SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 4140SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 4141SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 4142 4143# Now select using various table access methods (full table scan, range scan, index scan etc.) 4144## Full table scan ## 4145--sorted_result 4146SELECT * FROM t2; 4147--sorted_result 4148SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4149--sorted_result 4150SELECT * FROM t2 WHERE c2 = 102; 4151 4152## Forward index scan, covering ## 4153--sorted_result 4154SELECT c1,c6 FROM t2; 4155 4156## Backward index scan, covering ## 4157SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 4158 4159## Forward index scan, non-covering ## 4160SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 4161 4162## Backward index scan, non-covering ## 4163SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 4164 4165## ref type access 4166SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 4167SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 4168SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 4169SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 4170 4171## Range access, ordered ## 4172SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 4173SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 4174SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 4175SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 4176SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 4177SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 4178SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 4179SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 4180SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 4181SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 4182SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 4183SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 4184SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 4185SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 4186SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 4187SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 4188SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 4189SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 4190SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 4191SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 4192SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 4193SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 4194 4195## Range access, backwards scan ## 4196SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 4197SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 4198SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 4199SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 4200SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 4201SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 4202SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 4203SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 4204SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 4205SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 4206SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 4207SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 4208SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 4209SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 4210SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 4211SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 4212SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 4213SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 4214SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 4215SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 4216SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 4217SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 4218## Full table scan ## 4219--sorted_result 4220SELECT * FROM t2; 4221--sorted_result 4222SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4223--sorted_result 4224SELECT * FROM t2 WHERE c2 = 102; 4225 4226## Forward index scan, covering ## 4227--sorted_result 4228SELECT c1,c6 FROM t2; 4229 4230## Backward index scan, covering ## 4231SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 4232 4233## Forward index scan, non-covering ## 4234SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 4235 4236## Backward index scan, non-covering ## 4237SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 4238 4239## ref type access 4240SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 4241SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 4242SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 4243SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 4244 4245## Range access, ordered ## 4246SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 4247SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 4248SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 4249SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 4250SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 4251SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 4252SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 4253SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 4254SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 4255SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 4256SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 4257SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 4258SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 4259SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 4260SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 4261SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 4262SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 4263SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 4264SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 4265SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 4266SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 4267SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 4268 4269## Range access, backwards scan ## 4270SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 4271SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 4272SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 4273SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 4274SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 4275SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 4276SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 4277SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 4278SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 4279SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 4280SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 4281SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 4282SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 4283SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 4284SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 4285SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 4286SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 4287SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 4288SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 4289SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 4290SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 4291SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 4292## Full table scan ## 4293--sorted_result 4294SELECT * FROM t3; 4295--sorted_result 4296SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 4297--sorted_result 4298SELECT * FROM t3 WHERE c1 = 108; 4299 4300## Forward index scan, covering ## 4301--sorted_result 4302SELECT c2,c7 FROM t3; 4303 4304## Backward index scan, covering ## 4305SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 4306 4307## Forward index scan, non-covering ## 4308SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 4309 4310## Backward index scan, non-covering ## 4311SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 4312 4313## ref type access 4314SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 4315SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 4316SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 4317SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 4318 4319## Range access, ordered ## 4320SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 4321SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 4322SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 4323SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 4324SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 4325SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 4326SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 4327SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 4328SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 4329SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 4330SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 4331SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 4332SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 4333SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 4334SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 4335SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 4336SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 4337SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 4338SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 4339SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 4340SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 4341SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 4342 4343## Range access, backwards scan ## 4344SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 4345SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 4346SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 4347SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 4348SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 4349SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 4350SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 4351SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 4352SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 4353SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 4354SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 4355SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 4356SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 4357SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 4358SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 4359SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 4360SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 4361SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 4362SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 4363SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 4364SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 4365SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 4366## Full table scan ## 4367--sorted_result 4368SELECT * FROM t3; 4369--sorted_result 4370SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 4371--sorted_result 4372SELECT * FROM t3 WHERE c1 = 108; 4373 4374## Forward index scan, covering ## 4375--sorted_result 4376SELECT c2,c7 FROM t3; 4377 4378## Backward index scan, covering ## 4379SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 4380 4381## Forward index scan, non-covering ## 4382SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 4383 4384## Backward index scan, non-covering ## 4385SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 4386 4387## ref type access 4388SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 4389SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 4390SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 4391SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 4392 4393## Range access, ordered ## 4394SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 4395SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 4396SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 4397SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 4398SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 4399SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 4400SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 4401SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 4402SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 4403SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 4404SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 4405SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 4406SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 4407SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 4408SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 4409SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 4410SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 4411SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 4412SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 4413SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 4414SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 4415SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 4416 4417## Range access, backwards scan ## 4418SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 4419SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 4420SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 4421SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 4422SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 4423SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 4424SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 4425SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 4426SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 4427SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 4428SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 4429SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 4430SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 4431SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 4432SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 4433SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 4434SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 4435SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 4436SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 4437SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 4438SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 4439SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 4440 4441# Using index for group-by 4442--sorted_result 4443SELECT c2 FROM t3 GROUP BY c2; 4444--sorted_result 4445SELECT DISTINCT c2 FROM t3; 4446--sorted_result 4447SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 4448 4449# Create tables with AUTO_INCREMENT columns and unique indexes 4450CREATE TABLE t4(c1 INT SIGNED NOT NULL AUTO_INCREMENT, c2 INT UNSIGNED NULL, c3 INT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 4451CREATE TABLE t5(c1 INT UNSIGNED NOT NULL AUTO_INCREMENT, c2 INT SIGNED NULL, c3 INT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INTEGER, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 4452 4453# Test with AUTO_INCREMENT columns 4454# Insert some rows 4455INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 4456INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 4457# Insert 0 values, increments the value 4458INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 4459--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 4460--if (!$auto_value) { 4461--die "AUTO_INCREMENT didn't work well on 0" 4462} 4463INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 4464--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 4465--if (!$auto_value) { 4466--die "AUTO_INCREMENT didn't work well on 0" 4467} 4468# Insert NULL, no error, increments the value 4469INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 4470--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 4471--if (!$auto_value) { 4472--die "AUTO_INCREMENT didn't work well on NULL" 4473} 4474INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 4475--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 4476--if (!$auto_value) { 4477--die "AUTO_INCREMENT didn't work well on NULL" 4478} 4479# Insert empty strings, increments the value 4480INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 4481--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 4482--if (!$auto_value) { 4483--die "AUTO_INCREMENT didn't work well on ''" 4484} 4485INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 4486--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 4487--if (!$auto_value) { 4488--die "AUTO_INCREMENT didn't work well on ''" 4489} 4490# Insert strings with numeric part, inserts the numeric part of the string 4491INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 4492--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 4493--if (!$auto_value) { 4494--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 4495} 4496INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 4497--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 4498--if (!$auto_value) { 4499--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 4500} 4501# Insert negative values unsigned & positive value to signed 4502INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 4503--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 4504--if (!$auto_value) { 4505--die "AUTO_INCREMENT didn't work on negative value" 4506} 4507INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 4508--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 4509--if (!$auto_value) { 4510--die "AUTO_INCREMENT didn't work for negative value on unsigned" 4511} 4512# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 4513INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 4514--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 4515--if (!$auto_value) { 4516--die "AUTO_INCREMENT didn't work well" 4517} 4518INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 4519--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 4520--if (!$auto_value) { 4521--die "AUTO_INCREMENT didn't work well" 4522} 4523 4524SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 4525SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 4526# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 4527## Full table scan ## 4528--sorted_result 4529SELECT * FROM t4; 4530--sorted_result 4531SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 4532--sorted_result 4533SELECT * FROM t4 WHERE c4 = 104; 4534 4535## Forward index scan, covering ## 4536--sorted_result 4537SELECT c1 FROM t4; 4538 4539## Backward index scan, covering ## 4540SELECT c1 FROM t4 ORDER BY c1 DESC; 4541 4542## Forward index scan, non-covering ## 4543SELECT * FROM t4 ORDER BY c1 LIMIT 2; 4544 4545## Backward index scan, non-covering ## 4546SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 4547 4548## ref type access 4549SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 4550SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 4551SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 4552SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 4553 4554## Range access, ordered ## 4555SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 4556SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 4557SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 4558SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 4559SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 4560SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 4561SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 4562SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 4563SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 4564SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 4565SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 4566SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 4567SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 4568SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 4569SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 4570SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 4571SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 4572SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 4573SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 4574SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4575SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 4576SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4577 4578## Range access, backwards scan ## 4579SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 4580SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 4581SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 4582SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 4583SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 4584SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 4585SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 4586SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 4587SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 4588SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 4589SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 4590SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 4591SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 4592SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 4593SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 4594SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 4595SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 4596SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 4597SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 4598SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 4599SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 4600SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 4601## Full table scan ## 4602--sorted_result 4603SELECT * FROM t4; 4604--sorted_result 4605SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 4606--sorted_result 4607SELECT * FROM t4 WHERE c4 = 104; 4608 4609## Forward index scan, covering ## 4610--sorted_result 4611SELECT c1 FROM t4; 4612 4613## Backward index scan, covering ## 4614SELECT c1 FROM t4 ORDER BY c1 DESC; 4615 4616## Forward index scan, non-covering ## 4617SELECT * FROM t4 ORDER BY c1 LIMIT 2; 4618 4619## Backward index scan, non-covering ## 4620SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 4621 4622## ref type access 4623SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 4624SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 4625SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 4626SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 4627 4628## Range access, ordered ## 4629SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 4630SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 4631SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 4632SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 4633SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 4634SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 4635SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 4636SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 4637SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 4638SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 4639SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 4640SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 4641SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 4642SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 4643SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 4644SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 4645SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 4646SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 4647SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 4648SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4649SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 4650SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4651 4652## Range access, backwards scan ## 4653SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 4654SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 4655SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 4656SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 4657SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 4658SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 4659SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 4660SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 4661SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 4662SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 4663SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 4664SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 4665SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 4666SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 4667SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 4668SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 4669SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 4670SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 4671SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 4672SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 4673SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 4674SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 4675## Full table scan ## 4676--sorted_result 4677SELECT * FROM t5; 4678--sorted_result 4679SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 4680--sorted_result 4681SELECT * FROM t5 WHERE c5 = 112; 4682 4683## Forward index scan, covering ## 4684--sorted_result 4685SELECT c1 FROM t5; 4686 4687## Backward index scan, covering ## 4688SELECT c1 FROM t5 ORDER BY c1 DESC; 4689 4690## Forward index scan, non-covering ## 4691SELECT * FROM t5 ORDER BY c1 LIMIT 2; 4692 4693## Backward index scan, non-covering ## 4694SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 4695 4696## ref type access 4697SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 4698SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 4699SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 4700SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 4701 4702## Range access, ordered ## 4703SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 4704SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 4705SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 4706SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 4707SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 4708SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 4709SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 4710SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 4711SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 4712SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 4713SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 4714SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 4715SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 4716SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 4717SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 4718SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 4719SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 4720SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 4721SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 4722SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 4723SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 4724SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 4725 4726## Range access, backwards scan ## 4727SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 4728SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 4729SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 4730SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 4731SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 4732SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 4733SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 4734SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 4735SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 4736SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 4737SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 4738SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 4739SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 4740SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 4741SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 4742SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 4743SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 4744SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 4745SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 4746SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 4747SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 4748SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 4749 4750# Index-merge access 4751--sorted_result 4752SELECT * FROM t4 WHERE c1=1 OR c2=109; 4753 4754# Using index for group-by 4755--sorted_result 4756SELECT c2 FROM t4 GROUP BY c2; 4757--sorted_result 4758SELECT DISTINCT c2 FROM t4; 4759--sorted_result 4760SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 4761 4762# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 4763 4764# Insert NULL to non-null column 4765--error ER_BAD_NULL_ERROR 4766INSERT INTO t2(c1) VALUES(NULL); 4767--error ER_BAD_NULL_ERROR 4768INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 4769--error ER_BAD_NULL_ERROR 4770INSERT INTO t4(c3) VALUES(NULL); 4771--error ER_BAD_NULL_ERROR 4772INSERT INTO t5(c3) VALUES(NULL); 4773 4774# Insert duplicate value to pk 4775--error ER_DUP_ENTRY 4776INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 4777 4778# Insert duplicate value to clustered pk, throws error 4779--error ER_DUP_ENTRY 4780INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 4781--error ER_DUP_ENTRY 4782INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 4783 4784# Insert duplicate value to unique column, throws error 4785--error ER_DUP_ENTRY 4786INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 4787--error ER_DUP_ENTRY 4788# Insert duplicate value to clustered unique column, throws error 4789INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 4790 4791# Test 'INSERT INTO SELECT FROM' 4792CREATE TABLE t6(c1 INT UNSIGNED NOT NULL, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT); 4793INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 4794--sorted_result 4795SELECT * FROM t6; 4796TRUNCATE TABLE t6; 4797INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 4798--sorted_result 4799SELECT * FROM t6; 4800TRUNCATE TABLE t6; 4801# Test 'INSERT INTO SELECT FROM' primary key constraint violation 4802CREATE TABLE t7(c1 INT UNSIGNED NOT NULL PRIMARY KEY, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT); 4803CREATE TABLE t8(c1 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 INT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INTEGER, c7 BIGINT); 4804INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 4805INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 4806--sorted_result 4807SELECT * FROM t7; 4808INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 4809--sorted_result 4810SELECT * FROM t8; 4811--error ER_DUP_ENTRY 4812INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 4813--error ER_DUP_ENTRY 4814INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 4815TRUNCATE TABLE t6; 4816 4817# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 4818INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 4819INSERT INTO t8 SELECT * FROM t6; 4820SELECT LAST_INSERT_ID() AS last_insert_id; 4821--sorted_result 4822SELECT * FROM t8; 4823TRUNCATE TABLE t8; 4824INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 4825--sorted_result 4826SELECT * FROM t8; 4827DROP TABLE t6,t7,t8; 4828 4829# Test 'INSERT SET' 4830INSERT INTO t2 SET c3=5,c4=6; 4831SET SQL_MODE=STRICT_ALL_TABLES; 4832--error ER_NO_DEFAULT_FOR_FIELD 4833INSERT INTO t2 SET c3=5,c4=6; 4834SET SQL_MODE=''; 4835 4836# Test insert allowable bigger values to 'INT' columns 4837INSERT INTO t1 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 4838INSERT INTO t2 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 4839INSERT INTO t3 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 4840INSERT INTO t4 VALUES(-2147483648,0,1,2,3,4,5,5),(-8388608,255,6,7,8,9,10,10),(-32768,65535,11,12,13,14,15,15),(-128,16777215,16,17,18,19,20,20),(2147483647,4294967295,21,22,23,24,25,25); 4841INSERT INTO t5 VALUES(0,-2147483648,1,2,3,4,5,5),(255,-8388608,6,7,8,9,10,10),(65535,-32768,11,12,13,14,15,15),(16777215,-128,16,17,18,19,20,20),(4294967295,2147483647,21,22,23,24,25,25); 4842--error ER_DUP_ENTRY 4843INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 4844--disable_warnings 4845INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 4846--enable_warnings 4847--sorted_result 4848SELECT * FROM t4; 4849 4850# Insert signed value to unsigned 'INT', outside range values to signed/unsigned columns 4851INSERT INTO t1 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 4852INSERT INTO t2 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 4853INSERT INTO t3 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 4854# Insert into t4, t5 (TBD) 4855 4856# Now select using various table access methods 4857## Full table scan ## 4858--sorted_result 4859SELECT * FROM t2; 4860--sorted_result 4861SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4862--sorted_result 4863SELECT * FROM t2 WHERE c2 = -2147483648; 4864 4865## Forward index scan, covering ## 4866--sorted_result 4867SELECT c1,c6 FROM t2; 4868 4869## Backward index scan, covering ## 4870SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 4871 4872## Forward index scan, non-covering ## 4873SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 4874 4875## Backward index scan, non-covering ## 4876SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 4877 4878## ref type access 4879SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 4880SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 4881SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 4882SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 4883 4884## Range access, ordered ## 4885SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 4886SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 4887SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 4888SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 4889SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 4890SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 4891SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 4892SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 4893SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 4894SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 4895SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 4896SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 4897SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6; 4898SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2; 4899SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6; 4900SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2; 4901SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6; 4902SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 4903SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 4904SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 4905SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 4906SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 4907 4908## Range access, backwards scan ## 4909SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 4910SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 4911SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 4912SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 4913SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 4914SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 4915SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 4916SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 4917SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 4918SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 4919SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 4920SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 4921SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC; 4922SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4923SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC; 4924SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2; 4925SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC; 4926SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 4927SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 4928SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 4929SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 4930SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 4931## Full table scan ## 4932--sorted_result 4933SELECT * FROM t2; 4934--sorted_result 4935SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 4936--sorted_result 4937SELECT * FROM t2 WHERE c2 = 2147483647; 4938 4939## Forward index scan, covering ## 4940--sorted_result 4941SELECT c1,c6 FROM t2; 4942 4943## Backward index scan, covering ## 4944SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 4945 4946## Forward index scan, non-covering ## 4947SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 4948 4949## Backward index scan, non-covering ## 4950SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 4951 4952## ref type access 4953SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6; 4954SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 LIMIT 2; 4955SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC; 4956SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4957 4958## Range access, ordered ## 4959SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6; 4960SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 LIMIT 2; 4961SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6; 4962SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 LIMIT 2; 4963SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6; 4964SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 LIMIT 2; 4965SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6; 4966SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 LIMIT 2; 4967SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6; 4968SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 LIMIT 2; 4969SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6; 4970SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 LIMIT 2; 4971SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6; 4972SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2; 4973SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6; 4974SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2; 4975SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6; 4976SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 4977SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 4978SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 4979SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 4980SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 4981 4982## Range access, backwards scan ## 4983SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC; 4984SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4985SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC; 4986SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4987SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC; 4988SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4989SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC; 4990SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4991SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC; 4992SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4993SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC; 4994SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4995SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC; 4996SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 4997SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC; 4998SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2; 4999SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC; 5000SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 5001SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 5002SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 5003SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 5004SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 5005## Full table scan ## 5006--sorted_result 5007SELECT * FROM t2; 5008--sorted_result 5009SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5010--sorted_result 5011SELECT * FROM t2 WHERE c2 = -2147483649; 5012 5013## Forward index scan, covering ## 5014--sorted_result 5015SELECT c1,c6 FROM t2; 5016 5017## Backward index scan, covering ## 5018SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 5019 5020## Forward index scan, non-covering ## 5021SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 5022 5023## Backward index scan, non-covering ## 5024SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 5025 5026## ref type access 5027SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6; 5028SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2; 5029SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC; 5030SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2; 5031 5032## Range access, ordered ## 5033SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6; 5034SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2; 5035SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6; 5036SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2; 5037SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6; 5038SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2; 5039SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6; 5040SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2; 5041SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6; 5042SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2; 5043SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6; 5044SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2; 5045SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6; 5046SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2; 5047SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6; 5048SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2; 5049SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6; 5050SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 5051SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 5052SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 5053SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 5054SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 5055 5056## Range access, backwards scan ## 5057SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC; 5058SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2; 5059SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC; 5060SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2; 5061SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC; 5062SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2; 5063SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC; 5064SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2; 5065SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC; 5066SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2; 5067SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC; 5068SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2; 5069SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC; 5070SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5071SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC; 5072SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2; 5073SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC; 5074SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 5075SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 5076SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 5077SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 5078SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 5079## Full table scan ## 5080--sorted_result 5081SELECT * FROM t2; 5082--sorted_result 5083SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5084--sorted_result 5085SELECT * FROM t2 WHERE c2 = 2147483648; 5086 5087## Forward index scan, covering ## 5088--sorted_result 5089SELECT c1,c6 FROM t2; 5090 5091## Backward index scan, covering ## 5092SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 5093 5094## Forward index scan, non-covering ## 5095SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 5096 5097## Backward index scan, non-covering ## 5098SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 5099 5100## ref type access 5101SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6; 5102SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 LIMIT 2; 5103SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC; 5104SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5105 5106## Range access, ordered ## 5107SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6; 5108SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 LIMIT 2; 5109SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6; 5110SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 LIMIT 2; 5111SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6; 5112SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 LIMIT 2; 5113SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6; 5114SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 LIMIT 2; 5115SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6; 5116SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 LIMIT 2; 5117SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6; 5118SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 LIMIT 2; 5119SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6; 5120SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2; 5121SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6; 5122SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2; 5123SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6; 5124SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 5125SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 5126SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 5127SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 5128SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 5129 5130## Range access, backwards scan ## 5131SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC; 5132SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5133SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC; 5134SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5135SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC; 5136SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5137SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC; 5138SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5139SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC; 5140SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5141SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC; 5142SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5143SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC; 5144SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 5145SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC; 5146SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2; 5147SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC; 5148SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 5149SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 5150SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 5151SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 5152SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 5153## Full table scan ## 5154--sorted_result 5155SELECT * FROM t3; 5156--sorted_result 5157SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5158--sorted_result 5159SELECT * FROM t3 WHERE c1 = 0; 5160 5161## Forward index scan, covering ## 5162--sorted_result 5163SELECT c2,c7 FROM t3; 5164 5165## Backward index scan, covering ## 5166SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5167 5168## Forward index scan, non-covering ## 5169SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5170 5171## Backward index scan, non-covering ## 5172SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5173 5174## ref type access 5175SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7; 5176SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 LIMIT 2; 5177SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC; 5178SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5179 5180## Range access, ordered ## 5181SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7; 5182SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 LIMIT 2; 5183SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7; 5184SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 LIMIT 2; 5185SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7; 5186SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 LIMIT 2; 5187SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7; 5188SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 LIMIT 2; 5189SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7; 5190SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 LIMIT 2; 5191SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7; 5192SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 LIMIT 2; 5193SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7; 5194SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2; 5195SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7; 5196SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2; 5197SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7; 5198SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 5199SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5200SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5201SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5202SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5203 5204## Range access, backwards scan ## 5205SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC; 5206SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5207SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC; 5208SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5209SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC; 5210SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5211SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC; 5212SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5213SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC; 5214SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5215SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC; 5216SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5217SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC; 5218SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5219SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC; 5220SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2; 5221SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC; 5222SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 5223SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5224SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5225SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5226SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5227## Full table scan ## 5228--sorted_result 5229SELECT * FROM t3; 5230--sorted_result 5231SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5232--sorted_result 5233SELECT * FROM t3 WHERE c1 = 4294967295; 5234 5235## Forward index scan, covering ## 5236--sorted_result 5237SELECT c2,c7 FROM t3; 5238 5239## Backward index scan, covering ## 5240SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5241 5242## Forward index scan, non-covering ## 5243SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5244 5245## Backward index scan, non-covering ## 5246SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5247 5248## ref type access 5249SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7; 5250SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 LIMIT 2; 5251SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC; 5252SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5253 5254## Range access, ordered ## 5255SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7; 5256SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 LIMIT 2; 5257SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7; 5258SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 LIMIT 2; 5259SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7; 5260SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 LIMIT 2; 5261SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7; 5262SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 LIMIT 2; 5263SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7; 5264SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 LIMIT 2; 5265SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7; 5266SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 LIMIT 2; 5267SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7; 5268SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2; 5269SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7; 5270SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2; 5271SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7; 5272SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 5273SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5274SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5275SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5276SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5277 5278## Range access, backwards scan ## 5279SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC; 5280SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5281SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC; 5282SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5283SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC; 5284SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5285SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC; 5286SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5287SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC; 5288SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5289SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC; 5290SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5291SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC; 5292SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 5293SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC; 5294SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2; 5295SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC; 5296SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 5297SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5298SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5299SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5300SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5301## Full table scan ## 5302--sorted_result 5303SELECT * FROM t3; 5304--sorted_result 5305SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5306--sorted_result 5307SELECT * FROM t3 WHERE c1 = -255; 5308 5309## Forward index scan, covering ## 5310--sorted_result 5311SELECT c2,c7 FROM t3; 5312 5313## Backward index scan, covering ## 5314SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5315 5316## Forward index scan, non-covering ## 5317SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5318 5319## Backward index scan, non-covering ## 5320SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5321 5322## ref type access 5323SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7; 5324SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 LIMIT 2; 5325SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC; 5326SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5327 5328## Range access, ordered ## 5329SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7; 5330SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 LIMIT 2; 5331SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7; 5332SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 LIMIT 2; 5333SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7; 5334SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 LIMIT 2; 5335SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7; 5336SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 LIMIT 2; 5337SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7; 5338SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 LIMIT 2; 5339SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7; 5340SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 LIMIT 2; 5341SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7; 5342SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2; 5343SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7; 5344SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2; 5345SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7; 5346SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 5347SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5348SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5349SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5350SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5351 5352## Range access, backwards scan ## 5353SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC; 5354SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5355SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC; 5356SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5357SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC; 5358SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5359SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC; 5360SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5361SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC; 5362SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5363SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC; 5364SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 5365SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC; 5366SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5367SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC; 5368SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2; 5369SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC; 5370SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 5371SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5372SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5373SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5374SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5375## Full table scan ## 5376--sorted_result 5377SELECT * FROM t3; 5378--sorted_result 5379SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5380--sorted_result 5381SELECT * FROM t3 WHERE c1 = 4294967296; 5382 5383## Forward index scan, covering ## 5384--sorted_result 5385SELECT c2,c7 FROM t3; 5386 5387## Backward index scan, covering ## 5388SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5389 5390## Forward index scan, non-covering ## 5391SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5392 5393## Backward index scan, non-covering ## 5394SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5395 5396## ref type access 5397SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7; 5398SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 LIMIT 2; 5399SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC; 5400SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5401 5402## Range access, ordered ## 5403SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7; 5404SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 LIMIT 2; 5405SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7; 5406SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 LIMIT 2; 5407SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7; 5408SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 LIMIT 2; 5409SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7; 5410SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 LIMIT 2; 5411SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7; 5412SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 LIMIT 2; 5413SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7; 5414SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 LIMIT 2; 5415SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7; 5416SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2; 5417SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7; 5418SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2; 5419SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7; 5420SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 5421SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5422SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5423SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5424SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5425 5426## Range access, backwards scan ## 5427SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC; 5428SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5429SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC; 5430SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5431SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC; 5432SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5433SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC; 5434SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5435SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC; 5436SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5437SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC; 5438SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5439SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC; 5440SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 5441SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC; 5442SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2; 5443SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC; 5444SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 5445SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5446SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5447SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5448SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5449DROP TABLE t1,t2,t3,t4,t5; 5450 5451######## Running INSERT tests for INTEGER ######## 5452 5453# Create tables 5454CREATE TABLE t1(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT); 5455CREATE TABLE t2(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT, PRIMARY KEY(c1,c6)); 5456CREATE TABLE t3(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT, index idx(c2,c7)); 5457 5458# Insert some rows with targeted values 5459INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 5460INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 5461INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 5462 5463# Insert duplicates for parts of the clustered key 5464INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 5465INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 5466 5467# Insert permissible NULLs 5468INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 5469INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 5470INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 5471 5472# Insert empty string '' 5473INSERT INTO t1 VALUES('','',17,18,19,20,21); 5474INSERT INTO t2 VALUES('','',17,18,19,20,21); 5475INSERT INTO t3 VALUES('','',17,18,19,20,21); 5476 5477# Insert negative value to unsigned integer, positive value to signed integer, zero values 5478INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 5479INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 5480INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 5481INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 5482INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 5483INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 5484INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 5485INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 5486INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 5487 5488# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 5489INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 5490INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 5491INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 5492 5493--sorted_result 5494SELECT * FROM t1; 5495SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 5496SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 5497SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 5498SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 5499SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 5500SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 5501 5502# Now select using various table access methods (full table scan, range scan, index scan etc.) 5503## Full table scan ## 5504--sorted_result 5505SELECT * FROM t2; 5506--sorted_result 5507SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5508--sorted_result 5509SELECT * FROM t2 WHERE c2 = 102; 5510 5511## Forward index scan, covering ## 5512--sorted_result 5513SELECT c1,c6 FROM t2; 5514 5515## Backward index scan, covering ## 5516SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 5517 5518## Forward index scan, non-covering ## 5519SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 5520 5521## Backward index scan, non-covering ## 5522SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 5523 5524## ref type access 5525SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 5526SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 5527SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 5528SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 5529 5530## Range access, ordered ## 5531SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 5532SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 5533SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 5534SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 5535SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 5536SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 5537SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 5538SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 5539SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 5540SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 5541SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 5542SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 5543SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 5544SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 5545SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 5546SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 5547SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 5548SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 5549SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 5550SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 5551SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 5552SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 5553 5554## Range access, backwards scan ## 5555SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 5556SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 5557SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 5558SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 5559SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 5560SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 5561SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 5562SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 5563SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 5564SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 5565SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 5566SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 5567SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 5568SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 5569SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 5570SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 5571SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 5572SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 5573SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 5574SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 5575SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 5576SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 5577## Full table scan ## 5578--sorted_result 5579SELECT * FROM t2; 5580--sorted_result 5581SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 5582--sorted_result 5583SELECT * FROM t2 WHERE c2 = 102; 5584 5585## Forward index scan, covering ## 5586--sorted_result 5587SELECT c1,c6 FROM t2; 5588 5589## Backward index scan, covering ## 5590SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 5591 5592## Forward index scan, non-covering ## 5593SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 5594 5595## Backward index scan, non-covering ## 5596SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 5597 5598## ref type access 5599SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 5600SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 5601SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 5602SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 5603 5604## Range access, ordered ## 5605SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 5606SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 5607SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 5608SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 5609SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 5610SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 5611SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 5612SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 5613SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 5614SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 5615SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 5616SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 5617SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 5618SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 5619SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 5620SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 5621SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 5622SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 5623SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 5624SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 5625SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 5626SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 5627 5628## Range access, backwards scan ## 5629SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 5630SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 5631SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 5632SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 5633SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 5634SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 5635SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 5636SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 5637SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 5638SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 5639SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 5640SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 5641SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 5642SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 5643SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 5644SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 5645SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 5646SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 5647SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 5648SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 5649SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 5650SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 5651## Full table scan ## 5652--sorted_result 5653SELECT * FROM t3; 5654--sorted_result 5655SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5656--sorted_result 5657SELECT * FROM t3 WHERE c1 = 108; 5658 5659## Forward index scan, covering ## 5660--sorted_result 5661SELECT c2,c7 FROM t3; 5662 5663## Backward index scan, covering ## 5664SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5665 5666## Forward index scan, non-covering ## 5667SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5668 5669## Backward index scan, non-covering ## 5670SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5671 5672## ref type access 5673SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 5674SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 5675SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 5676SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 5677 5678## Range access, ordered ## 5679SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 5680SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 5681SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 5682SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 5683SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 5684SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 5685SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 5686SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 5687SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 5688SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 5689SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 5690SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 5691SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 5692SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 5693SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 5694SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 5695SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 5696SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 5697SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5698SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5699SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5700SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5701 5702## Range access, backwards scan ## 5703SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 5704SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 5705SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 5706SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 5707SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 5708SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 5709SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 5710SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 5711SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 5712SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 5713SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 5714SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 5715SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 5716SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 5717SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 5718SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 5719SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 5720SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 5721SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5722SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5723SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5724SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5725## Full table scan ## 5726--sorted_result 5727SELECT * FROM t3; 5728--sorted_result 5729SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 5730--sorted_result 5731SELECT * FROM t3 WHERE c1 = 108; 5732 5733## Forward index scan, covering ## 5734--sorted_result 5735SELECT c2,c7 FROM t3; 5736 5737## Backward index scan, covering ## 5738SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 5739 5740## Forward index scan, non-covering ## 5741SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 5742 5743## Backward index scan, non-covering ## 5744SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 5745 5746## ref type access 5747SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 5748SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 5749SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 5750SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 5751 5752## Range access, ordered ## 5753SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 5754SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 5755SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 5756SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 5757SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 5758SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 5759SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 5760SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 5761SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 5762SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 5763SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 5764SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 5765SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 5766SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 5767SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 5768SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 5769SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 5770SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 5771SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 5772SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 5773SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 5774SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 5775 5776## Range access, backwards scan ## 5777SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 5778SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 5779SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 5780SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 5781SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 5782SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 5783SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 5784SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 5785SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 5786SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 5787SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 5788SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 5789SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 5790SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 5791SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 5792SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 5793SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 5794SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 5795SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 5796SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 5797SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 5798SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 5799 5800# Using index for group-by 5801--sorted_result 5802SELECT c2 FROM t3 GROUP BY c2; 5803--sorted_result 5804SELECT DISTINCT c2 FROM t3; 5805--sorted_result 5806SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 5807 5808# Create tables with AUTO_INCREMENT columns and unique indexes 5809CREATE TABLE t4(c1 INTEGER SIGNED NOT NULL AUTO_INCREMENT, c2 INTEGER UNSIGNED NULL, c3 INTEGER UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 BIGINT, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 5810CREATE TABLE t5(c1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, c2 INTEGER SIGNED NULL, c3 INTEGER SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 BIGINT, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 5811 5812# Test with AUTO_INCREMENT columns 5813# Insert some rows 5814INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 5815INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 5816# Insert 0 values, increments the value 5817INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 5818--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 5819--if (!$auto_value) { 5820--die "AUTO_INCREMENT didn't work well on 0" 5821} 5822INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 5823--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 5824--if (!$auto_value) { 5825--die "AUTO_INCREMENT didn't work well on 0" 5826} 5827# Insert NULL, no error, increments the value 5828INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 5829--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 5830--if (!$auto_value) { 5831--die "AUTO_INCREMENT didn't work well on NULL" 5832} 5833INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 5834--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 5835--if (!$auto_value) { 5836--die "AUTO_INCREMENT didn't work well on NULL" 5837} 5838# Insert empty strings, increments the value 5839INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 5840--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 5841--if (!$auto_value) { 5842--die "AUTO_INCREMENT didn't work well on ''" 5843} 5844INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 5845--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 5846--if (!$auto_value) { 5847--die "AUTO_INCREMENT didn't work well on ''" 5848} 5849# Insert strings with numeric part, inserts the numeric part of the string 5850INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 5851--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 5852--if (!$auto_value) { 5853--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 5854} 5855INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 5856--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 5857--if (!$auto_value) { 5858--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 5859} 5860# Insert negative values unsigned & positive value to signed 5861INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 5862--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 5863--if (!$auto_value) { 5864--die "AUTO_INCREMENT didn't work on negative value" 5865} 5866INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 5867--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 5868--if (!$auto_value) { 5869--die "AUTO_INCREMENT didn't work for negative value on unsigned" 5870} 5871# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 5872INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 5873--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 5874--if (!$auto_value) { 5875--die "AUTO_INCREMENT didn't work well" 5876} 5877INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 5878--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 5879--if (!$auto_value) { 5880--die "AUTO_INCREMENT didn't work well" 5881} 5882 5883SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 5884SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 5885# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 5886## Full table scan ## 5887--sorted_result 5888SELECT * FROM t4; 5889--sorted_result 5890SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 5891--sorted_result 5892SELECT * FROM t4 WHERE c4 = 104; 5893 5894## Forward index scan, covering ## 5895--sorted_result 5896SELECT c1 FROM t4; 5897 5898## Backward index scan, covering ## 5899SELECT c1 FROM t4 ORDER BY c1 DESC; 5900 5901## Forward index scan, non-covering ## 5902SELECT * FROM t4 ORDER BY c1 LIMIT 2; 5903 5904## Backward index scan, non-covering ## 5905SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 5906 5907## ref type access 5908SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 5909SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 5910SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 5911SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 5912 5913## Range access, ordered ## 5914SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 5915SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 5916SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 5917SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 5918SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 5919SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 5920SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 5921SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 5922SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 5923SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 5924SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 5925SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 5926SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 5927SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 5928SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 5929SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 5930SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 5931SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 5932SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 5933SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 5934SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 5935SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 5936 5937## Range access, backwards scan ## 5938SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 5939SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 5940SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 5941SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 5942SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 5943SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 5944SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 5945SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 5946SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 5947SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 5948SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 5949SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 5950SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 5951SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 5952SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 5953SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 5954SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 5955SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 5956SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 5957SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 5958SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 5959SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 5960## Full table scan ## 5961--sorted_result 5962SELECT * FROM t4; 5963--sorted_result 5964SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 5965--sorted_result 5966SELECT * FROM t4 WHERE c4 = 104; 5967 5968## Forward index scan, covering ## 5969--sorted_result 5970SELECT c1 FROM t4; 5971 5972## Backward index scan, covering ## 5973SELECT c1 FROM t4 ORDER BY c1 DESC; 5974 5975## Forward index scan, non-covering ## 5976SELECT * FROM t4 ORDER BY c1 LIMIT 2; 5977 5978## Backward index scan, non-covering ## 5979SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 5980 5981## ref type access 5982SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 5983SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 5984SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 5985SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 5986 5987## Range access, ordered ## 5988SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 5989SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 5990SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 5991SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 5992SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 5993SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 5994SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 5995SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 5996SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 5997SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 5998SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 5999SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 6000SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 6001SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 6002SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 6003SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 6004SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 6005SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 6006SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 6007SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 6008SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 6009SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 6010 6011## Range access, backwards scan ## 6012SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 6013SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 6014SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 6015SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 6016SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 6017SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 6018SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 6019SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 6020SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 6021SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 6022SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 6023SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 6024SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 6025SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 6026SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 6027SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 6028SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 6029SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 6030SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 6031SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 6032SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 6033SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 6034## Full table scan ## 6035--sorted_result 6036SELECT * FROM t5; 6037--sorted_result 6038SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 6039--sorted_result 6040SELECT * FROM t5 WHERE c5 = 112; 6041 6042## Forward index scan, covering ## 6043--sorted_result 6044SELECT c1 FROM t5; 6045 6046## Backward index scan, covering ## 6047SELECT c1 FROM t5 ORDER BY c1 DESC; 6048 6049## Forward index scan, non-covering ## 6050SELECT * FROM t5 ORDER BY c1 LIMIT 2; 6051 6052## Backward index scan, non-covering ## 6053SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 6054 6055## ref type access 6056SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 6057SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 6058SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 6059SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 6060 6061## Range access, ordered ## 6062SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 6063SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 6064SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 6065SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 6066SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 6067SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 6068SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 6069SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 6070SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 6071SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 6072SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 6073SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 6074SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 6075SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 6076SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 6077SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 6078SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 6079SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 6080SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 6081SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 6082SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 6083SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 6084 6085## Range access, backwards scan ## 6086SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 6087SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 6088SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 6089SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 6090SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 6091SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 6092SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 6093SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 6094SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 6095SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 6096SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 6097SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 6098SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 6099SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 6100SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 6101SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 6102SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 6103SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 6104SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 6105SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 6106SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 6107SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 6108 6109# Index-merge access 6110--sorted_result 6111SELECT * FROM t4 WHERE c1=1 OR c2=109; 6112 6113# Using index for group-by 6114--sorted_result 6115SELECT c2 FROM t4 GROUP BY c2; 6116--sorted_result 6117SELECT DISTINCT c2 FROM t4; 6118--sorted_result 6119SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 6120 6121# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 6122 6123# Insert NULL to non-null column 6124--error ER_BAD_NULL_ERROR 6125INSERT INTO t2(c1) VALUES(NULL); 6126--error ER_BAD_NULL_ERROR 6127INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 6128--error ER_BAD_NULL_ERROR 6129INSERT INTO t4(c3) VALUES(NULL); 6130--error ER_BAD_NULL_ERROR 6131INSERT INTO t5(c3) VALUES(NULL); 6132 6133# Insert duplicate value to pk 6134--error ER_DUP_ENTRY 6135INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 6136 6137# Insert duplicate value to clustered pk, throws error 6138--error ER_DUP_ENTRY 6139INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 6140--error ER_DUP_ENTRY 6141INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 6142 6143# Insert duplicate value to unique column, throws error 6144--error ER_DUP_ENTRY 6145INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 6146--error ER_DUP_ENTRY 6147# Insert duplicate value to clustered unique column, throws error 6148INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 6149 6150# Test 'INSERT INTO SELECT FROM' 6151CREATE TABLE t6(c1 INTEGER UNSIGNED NOT NULL, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT); 6152INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 6153--sorted_result 6154SELECT * FROM t6; 6155TRUNCATE TABLE t6; 6156INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 6157--sorted_result 6158SELECT * FROM t6; 6159TRUNCATE TABLE t6; 6160# Test 'INSERT INTO SELECT FROM' primary key constraint violation 6161CREATE TABLE t7(c1 INTEGER UNSIGNED NOT NULL PRIMARY KEY, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT); 6162CREATE TABLE t8(c1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 INTEGER NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 BIGINT); 6163INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 6164INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 6165--sorted_result 6166SELECT * FROM t7; 6167INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 6168--sorted_result 6169SELECT * FROM t8; 6170--error ER_DUP_ENTRY 6171INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 6172--error ER_DUP_ENTRY 6173INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 6174TRUNCATE TABLE t6; 6175 6176# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 6177INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 6178INSERT INTO t8 SELECT * FROM t6; 6179SELECT LAST_INSERT_ID() AS last_insert_id; 6180--sorted_result 6181SELECT * FROM t8; 6182TRUNCATE TABLE t8; 6183INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 6184--sorted_result 6185SELECT * FROM t8; 6186DROP TABLE t6,t7,t8; 6187 6188# Test 'INSERT SET' 6189INSERT INTO t2 SET c3=5,c4=6; 6190SET SQL_MODE=STRICT_ALL_TABLES; 6191--error ER_NO_DEFAULT_FOR_FIELD 6192INSERT INTO t2 SET c3=5,c4=6; 6193SET SQL_MODE=''; 6194 6195# Test insert allowable bigger values to 'INTEGER' columns 6196INSERT INTO t1 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 6197INSERT INTO t2 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 6198INSERT INTO t3 VALUES(0,-2147483648,1,2,3,4,5),(255,-8388608,6,7,8,9,10),(65535,-32768,11,12,13,14,15),(16777215,-128,16,17,18,19,20),(4294967295,2147483647,21,22,23,24,25); 6199INSERT INTO t4 VALUES(-2147483648,0,1,2,3,4,5,5),(-8388608,255,6,7,8,9,10,10),(-32768,65535,11,12,13,14,15,15),(-128,16777215,16,17,18,19,20,20),(2147483647,4294967295,21,22,23,24,25,25); 6200INSERT INTO t5 VALUES(0,-2147483648,1,2,3,4,5,5),(255,-8388608,6,7,8,9,10,10),(65535,-32768,11,12,13,14,15,15),(16777215,-128,16,17,18,19,20,20),(4294967295,2147483647,21,22,23,24,25,25); 6201--error ER_DUP_ENTRY 6202INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 6203--disable_warnings 6204INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 6205--enable_warnings 6206--sorted_result 6207SELECT * FROM t4; 6208 6209# Insert signed value to unsigned 'INTEGER', outside range values to signed/unsigned columns 6210INSERT INTO t1 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 6211INSERT INTO t2 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 6212INSERT INTO t3 VALUES(-255,-2147483649,26,27,28,29,30),(4294967296,2147483648,31,32,33,34,35); 6213 6214# Now select using various table access methods 6215## Full table scan ## 6216--sorted_result 6217SELECT * FROM t2; 6218--sorted_result 6219SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6220--sorted_result 6221SELECT * FROM t2 WHERE c2 = -2147483648; 6222 6223## Forward index scan, covering ## 6224--sorted_result 6225SELECT c1,c6 FROM t2; 6226 6227## Backward index scan, covering ## 6228SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6229 6230## Forward index scan, non-covering ## 6231SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6232 6233## Backward index scan, non-covering ## 6234SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6235 6236## ref type access 6237SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 6238SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 6239SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 6240SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 6241 6242## Range access, ordered ## 6243SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 6244SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 6245SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 6246SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 6247SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 6248SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 6249SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 6250SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 6251SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 6252SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 6253SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 6254SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 6255SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6; 6256SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2; 6257SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6; 6258SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2; 6259SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6; 6260SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 6261SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6262SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6263SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6264SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6265 6266## Range access, backwards scan ## 6267SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 6268SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 6269SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 6270SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 6271SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 6272SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 6273SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 6274SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 6275SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 6276SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 6277SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 6278SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 6279SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC; 6280SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6281SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC; 6282SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2; 6283SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC; 6284SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 6285SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 6286SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 6287SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 6288SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 6289## Full table scan ## 6290--sorted_result 6291SELECT * FROM t2; 6292--sorted_result 6293SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6294--sorted_result 6295SELECT * FROM t2 WHERE c2 = 2147483647; 6296 6297## Forward index scan, covering ## 6298--sorted_result 6299SELECT c1,c6 FROM t2; 6300 6301## Backward index scan, covering ## 6302SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6303 6304## Forward index scan, non-covering ## 6305SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6306 6307## Backward index scan, non-covering ## 6308SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6309 6310## ref type access 6311SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6; 6312SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 LIMIT 2; 6313SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC; 6314SELECT * FROM t2 WHERE c1 = 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6315 6316## Range access, ordered ## 6317SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6; 6318SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 LIMIT 2; 6319SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6; 6320SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 LIMIT 2; 6321SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6; 6322SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 LIMIT 2; 6323SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6; 6324SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 LIMIT 2; 6325SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6; 6326SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 LIMIT 2; 6327SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6; 6328SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 LIMIT 2; 6329SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6; 6330SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 LIMIT 2; 6331SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6; 6332SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 LIMIT 2; 6333SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6; 6334SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 LIMIT 2; 6335SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6336SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6337SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6338SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6339 6340## Range access, backwards scan ## 6341SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC; 6342SELECT * FROM t2 WHERE c1 <> 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6343SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC; 6344SELECT * FROM t2 WHERE c1 > 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6345SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC; 6346SELECT * FROM t2 WHERE c1 >= 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6347SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC; 6348SELECT * FROM t2 WHERE c1 < 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6349SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC; 6350SELECT * FROM t2 WHERE c1 <= 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6351SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC; 6352SELECT * FROM t2 WHERE c1 <=> 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6353SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC; 6354SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 4294967295 ORDER BY c1,c6 DESC LIMIT 2; 6355SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC; 6356SELECT * FROM t2 WHERE c1 IN (0,4294967295) ORDER BY c1,c6 DESC LIMIT 2; 6357SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC; 6358SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 4294967295 AND c6 = 9 ORDER BY c1,c6 DESC LIMIT 2; 6359SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 6360SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 6361SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 6362SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 6363## Full table scan ## 6364--sorted_result 6365SELECT * FROM t2; 6366--sorted_result 6367SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6368--sorted_result 6369SELECT * FROM t2 WHERE c2 = -2147483649; 6370 6371## Forward index scan, covering ## 6372--sorted_result 6373SELECT c1,c6 FROM t2; 6374 6375## Backward index scan, covering ## 6376SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6377 6378## Forward index scan, non-covering ## 6379SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6380 6381## Backward index scan, non-covering ## 6382SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6383 6384## ref type access 6385SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6; 6386SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 LIMIT 2; 6387SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC; 6388SELECT * FROM t2 WHERE c1 = -255 ORDER BY c1,c6 DESC LIMIT 2; 6389 6390## Range access, ordered ## 6391SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6; 6392SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 LIMIT 2; 6393SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6; 6394SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 LIMIT 2; 6395SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6; 6396SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 LIMIT 2; 6397SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6; 6398SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 LIMIT 2; 6399SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6; 6400SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 LIMIT 2; 6401SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6; 6402SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 LIMIT 2; 6403SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6; 6404SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2; 6405SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6; 6406SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2; 6407SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6; 6408SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 6409SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6410SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6411SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6412SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6413 6414## Range access, backwards scan ## 6415SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC; 6416SELECT * FROM t2 WHERE c1 <> -255 ORDER BY c1,c6 DESC LIMIT 2; 6417SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC; 6418SELECT * FROM t2 WHERE c1 > -255 ORDER BY c1,c6 DESC LIMIT 2; 6419SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC; 6420SELECT * FROM t2 WHERE c1 >= -255 ORDER BY c1,c6 DESC LIMIT 2; 6421SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC; 6422SELECT * FROM t2 WHERE c1 < -255 ORDER BY c1,c6 DESC LIMIT 2; 6423SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC; 6424SELECT * FROM t2 WHERE c1 <= -255 ORDER BY c1,c6 DESC LIMIT 2; 6425SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC; 6426SELECT * FROM t2 WHERE c1 <=> -255 ORDER BY c1,c6 DESC LIMIT 2; 6427SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC; 6428SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6429SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC; 6430SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2; 6431SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC; 6432SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 6433SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 6434SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 6435SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 6436SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 6437## Full table scan ## 6438--sorted_result 6439SELECT * FROM t2; 6440--sorted_result 6441SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6442--sorted_result 6443SELECT * FROM t2 WHERE c2 = 2147483648; 6444 6445## Forward index scan, covering ## 6446--sorted_result 6447SELECT c1,c6 FROM t2; 6448 6449## Backward index scan, covering ## 6450SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6451 6452## Forward index scan, non-covering ## 6453SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6454 6455## Backward index scan, non-covering ## 6456SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6457 6458## ref type access 6459SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6; 6460SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 LIMIT 2; 6461SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC; 6462SELECT * FROM t2 WHERE c1 = 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6463 6464## Range access, ordered ## 6465SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6; 6466SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 LIMIT 2; 6467SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6; 6468SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 LIMIT 2; 6469SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6; 6470SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 LIMIT 2; 6471SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6; 6472SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 LIMIT 2; 6473SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6; 6474SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 LIMIT 2; 6475SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6; 6476SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 LIMIT 2; 6477SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6; 6478SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 LIMIT 2; 6479SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6; 6480SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 LIMIT 2; 6481SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6; 6482SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 LIMIT 2; 6483SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6484SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6485SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6486SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6487 6488## Range access, backwards scan ## 6489SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC; 6490SELECT * FROM t2 WHERE c1 <> 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6491SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC; 6492SELECT * FROM t2 WHERE c1 > 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6493SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC; 6494SELECT * FROM t2 WHERE c1 >= 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6495SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC; 6496SELECT * FROM t2 WHERE c1 < 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6497SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC; 6498SELECT * FROM t2 WHERE c1 <= 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6499SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC; 6500SELECT * FROM t2 WHERE c1 <=> 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6501SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC; 6502SELECT * FROM t2 WHERE c1 BETWEEN -255 AND 4294967296 ORDER BY c1,c6 DESC LIMIT 2; 6503SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC; 6504SELECT * FROM t2 WHERE c1 IN (-255,4294967296) ORDER BY c1,c6 DESC LIMIT 2; 6505SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC; 6506SELECT * FROM t2 WHERE c1 >= -255 AND c1 < 4294967296 AND c6 = 29 ORDER BY c1,c6 DESC LIMIT 2; 6507SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 6508SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 6509SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 6510SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 6511## Full table scan ## 6512--sorted_result 6513SELECT * FROM t3; 6514--sorted_result 6515SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 6516--sorted_result 6517SELECT * FROM t3 WHERE c1 = 0; 6518 6519## Forward index scan, covering ## 6520--sorted_result 6521SELECT c2,c7 FROM t3; 6522 6523## Backward index scan, covering ## 6524SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 6525 6526## Forward index scan, non-covering ## 6527SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 6528 6529## Backward index scan, non-covering ## 6530SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 6531 6532## ref type access 6533SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7; 6534SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 LIMIT 2; 6535SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC; 6536SELECT * FROM t3 WHERE c2 = -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6537 6538## Range access, ordered ## 6539SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7; 6540SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 LIMIT 2; 6541SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7; 6542SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 LIMIT 2; 6543SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7; 6544SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 LIMIT 2; 6545SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7; 6546SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 LIMIT 2; 6547SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7; 6548SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 LIMIT 2; 6549SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7; 6550SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 LIMIT 2; 6551SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7; 6552SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2; 6553SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7; 6554SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2; 6555SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7; 6556SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 6557SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 6558SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 6559SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 6560SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 6561 6562## Range access, backwards scan ## 6563SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC; 6564SELECT * FROM t3 WHERE c2 <> -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6565SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC; 6566SELECT * FROM t3 WHERE c2 > -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6567SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC; 6568SELECT * FROM t3 WHERE c2 >= -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6569SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC; 6570SELECT * FROM t3 WHERE c2 < -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6571SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC; 6572SELECT * FROM t3 WHERE c2 <= -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6573SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC; 6574SELECT * FROM t3 WHERE c2 <=> -2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6575SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC; 6576SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6577SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC; 6578SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2; 6579SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC; 6580SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 6581SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 6582SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 6583SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 6584SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 6585## Full table scan ## 6586--sorted_result 6587SELECT * FROM t3; 6588--sorted_result 6589SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 6590--sorted_result 6591SELECT * FROM t3 WHERE c1 = 4294967295; 6592 6593## Forward index scan, covering ## 6594--sorted_result 6595SELECT c2,c7 FROM t3; 6596 6597## Backward index scan, covering ## 6598SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 6599 6600## Forward index scan, non-covering ## 6601SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 6602 6603## Backward index scan, non-covering ## 6604SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 6605 6606## ref type access 6607SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7; 6608SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 LIMIT 2; 6609SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC; 6610SELECT * FROM t3 WHERE c2 = 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6611 6612## Range access, ordered ## 6613SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7; 6614SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 LIMIT 2; 6615SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7; 6616SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 LIMIT 2; 6617SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7; 6618SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 LIMIT 2; 6619SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7; 6620SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 LIMIT 2; 6621SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7; 6622SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 LIMIT 2; 6623SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7; 6624SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 LIMIT 2; 6625SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7; 6626SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 LIMIT 2; 6627SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7; 6628SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 LIMIT 2; 6629SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7; 6630SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 6631SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 6632SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 6633SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 6634SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 6635 6636## Range access, backwards scan ## 6637SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC; 6638SELECT * FROM t3 WHERE c2 <> 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6639SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC; 6640SELECT * FROM t3 WHERE c2 > 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6641SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC; 6642SELECT * FROM t3 WHERE c2 >= 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6643SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC; 6644SELECT * FROM t3 WHERE c2 < 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6645SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC; 6646SELECT * FROM t3 WHERE c2 <= 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6647SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC; 6648SELECT * FROM t3 WHERE c2 <=> 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6649SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC; 6650SELECT * FROM t3 WHERE c2 BETWEEN -2147483648 AND 2147483647 ORDER BY c2,c7 DESC LIMIT 2; 6651SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC; 6652SELECT * FROM t3 WHERE c2 IN (-2147483648,2147483647) ORDER BY c2,c7 DESC LIMIT 2; 6653SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC; 6654SELECT * FROM t3 WHERE c2 >= -2147483648 AND c2 < 2147483647 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 6655SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 6656SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 6657SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 6658SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 6659## Full table scan ## 6660--sorted_result 6661SELECT * FROM t3; 6662--sorted_result 6663SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 6664--sorted_result 6665SELECT * FROM t3 WHERE c1 = -255; 6666 6667## Forward index scan, covering ## 6668--sorted_result 6669SELECT c2,c7 FROM t3; 6670 6671## Backward index scan, covering ## 6672SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 6673 6674## Forward index scan, non-covering ## 6675SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 6676 6677## Backward index scan, non-covering ## 6678SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 6679 6680## ref type access 6681SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7; 6682SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 LIMIT 2; 6683SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC; 6684SELECT * FROM t3 WHERE c2 = -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6685 6686## Range access, ordered ## 6687SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7; 6688SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 LIMIT 2; 6689SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7; 6690SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 LIMIT 2; 6691SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7; 6692SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 LIMIT 2; 6693SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7; 6694SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 LIMIT 2; 6695SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7; 6696SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 LIMIT 2; 6697SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7; 6698SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 LIMIT 2; 6699SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7; 6700SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2; 6701SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7; 6702SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2; 6703SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7; 6704SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 6705SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 6706SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 6707SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 6708SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 6709 6710## Range access, backwards scan ## 6711SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC; 6712SELECT * FROM t3 WHERE c2 <> -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6713SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC; 6714SELECT * FROM t3 WHERE c2 > -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6715SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC; 6716SELECT * FROM t3 WHERE c2 >= -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6717SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC; 6718SELECT * FROM t3 WHERE c2 < -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6719SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC; 6720SELECT * FROM t3 WHERE c2 <= -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6721SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC; 6722SELECT * FROM t3 WHERE c2 <=> -2147483649 ORDER BY c2,c7 DESC LIMIT 2; 6723SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC; 6724SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6725SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC; 6726SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2; 6727SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC; 6728SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 6729SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 6730SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 6731SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 6732SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 6733## Full table scan ## 6734--sorted_result 6735SELECT * FROM t3; 6736--sorted_result 6737SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 6738--sorted_result 6739SELECT * FROM t3 WHERE c1 = 4294967296; 6740 6741## Forward index scan, covering ## 6742--sorted_result 6743SELECT c2,c7 FROM t3; 6744 6745## Backward index scan, covering ## 6746SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 6747 6748## Forward index scan, non-covering ## 6749SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 6750 6751## Backward index scan, non-covering ## 6752SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 6753 6754## ref type access 6755SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7; 6756SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 LIMIT 2; 6757SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC; 6758SELECT * FROM t3 WHERE c2 = 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6759 6760## Range access, ordered ## 6761SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7; 6762SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 LIMIT 2; 6763SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7; 6764SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 LIMIT 2; 6765SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7; 6766SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 LIMIT 2; 6767SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7; 6768SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 LIMIT 2; 6769SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7; 6770SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 LIMIT 2; 6771SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7; 6772SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 LIMIT 2; 6773SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7; 6774SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 LIMIT 2; 6775SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7; 6776SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 LIMIT 2; 6777SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7; 6778SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 LIMIT 2; 6779SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 6780SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 6781SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 6782SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 6783 6784## Range access, backwards scan ## 6785SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC; 6786SELECT * FROM t3 WHERE c2 <> 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6787SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC; 6788SELECT * FROM t3 WHERE c2 > 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6789SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC; 6790SELECT * FROM t3 WHERE c2 >= 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6791SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC; 6792SELECT * FROM t3 WHERE c2 < 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6793SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC; 6794SELECT * FROM t3 WHERE c2 <= 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6795SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC; 6796SELECT * FROM t3 WHERE c2 <=> 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6797SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC; 6798SELECT * FROM t3 WHERE c2 BETWEEN -2147483649 AND 2147483648 ORDER BY c2,c7 DESC LIMIT 2; 6799SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC; 6800SELECT * FROM t3 WHERE c2 IN (-2147483649,2147483648) ORDER BY c2,c7 DESC LIMIT 2; 6801SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC; 6802SELECT * FROM t3 WHERE c2 >= -2147483649 AND c2 < 2147483648 AND c7 = 30 ORDER BY c2,c7 DESC LIMIT 2; 6803SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 6804SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 6805SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 6806SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 6807DROP TABLE t1,t2,t3,t4,t5; 6808 6809######## Running INSERT tests for BIGINT ######## 6810 6811# Create tables 6812CREATE TABLE t1(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER); 6813CREATE TABLE t2(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, PRIMARY KEY(c1,c6)); 6814CREATE TABLE t3(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER, index idx(c2,c7)); 6815 6816# Insert some rows with targeted values 6817INSERT INTO t1 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 6818INSERT INTO t2 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 6819INSERT INTO t3 VALUES(101,-102,103,104,105,106,107),(108,-109,110,111,112,113,114),(115,-116,117,118,119,120,121),(122,-123,124,125,126,127,128); 6820 6821# Insert duplicates for parts of the clustered key 6822INSERT INTO t2 VALUES(108,-109,110,111,112,101,114),(108,-109,110,111,112,102,114),(102,-109,110,111,112,113,114),(103,-109,110,111,112,113,114); 6823INSERT INTO t3 VALUES(101,-102,103,104,105,106,101),(101,-102,103,104,105,106,102),(101,-103,103,104,105,106,107),(101,-104,103,104,105,106,107); 6824 6825# Insert permissible NULLs 6826INSERT INTO t1 VALUES(105,NULL,102,103,104,105,106); 6827INSERT INTO t2 VALUES(105,NULL,102,103,104,105,106); 6828INSERT INTO t3 VALUES(105,NULL,102,103,104,105,106); 6829 6830# Insert empty string '' 6831INSERT INTO t1 VALUES('','',17,18,19,20,21); 6832INSERT INTO t2 VALUES('','',17,18,19,20,21); 6833INSERT INTO t3 VALUES('','',17,18,19,20,21); 6834 6835# Insert negative value to unsigned integer, positive value to signed integer, zero values 6836INSERT INTO t1 VALUES(-1,124,22,23,24,25,26); 6837INSERT INTO t2 VALUES(-1,124,22,23,24,25,26); 6838INSERT INTO t3 VALUES(-1,124,22,23,24,25,26); 6839INSERT INTO t1 VALUES(0,124,27,28,29,30,31); 6840INSERT INTO t2 VALUES(0,124,27,28,29,30,31); 6841INSERT INTO t3 VALUES(0,124,27,28,29,30,31); 6842INSERT INTO t1 VALUES(0,0,32,32,34,35,36); 6843INSERT INTO t2 VALUES(0,0,32,32,34,35,36); 6844INSERT INTO t3 VALUES(0,0,32,32,34,35,36); 6845 6846# Insert non-numeric value to numeric column, would be converted to 0 or numeric value (if contains part) 6847INSERT INTO t1 VALUES('101.34 a','a',37,38,39,40,41); 6848INSERT INTO t2 VALUES('101.34 a','a',37,38,39,40,41); 6849INSERT INTO t3 VALUES('101.34 a','a',37,38,39,40,41); 6850 6851--sorted_result 6852SELECT * FROM t1; 6853SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1; 6854SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1; 6855SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2; 6856SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2; 6857SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t3; 6858SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t3; 6859 6860# Now select using various table access methods (full table scan, range scan, index scan etc.) 6861## Full table scan ## 6862--sorted_result 6863SELECT * FROM t2; 6864--sorted_result 6865SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6866--sorted_result 6867SELECT * FROM t2 WHERE c2 = 102; 6868 6869## Forward index scan, covering ## 6870--sorted_result 6871SELECT c1,c6 FROM t2; 6872 6873## Backward index scan, covering ## 6874SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6875 6876## Forward index scan, non-covering ## 6877SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6878 6879## Backward index scan, non-covering ## 6880SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6881 6882## ref type access 6883SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6; 6884SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 LIMIT 2; 6885SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC; 6886SELECT * FROM t2 WHERE c1 = 108 ORDER BY c1,c6 DESC LIMIT 2; 6887 6888## Range access, ordered ## 6889SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6; 6890SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 LIMIT 2; 6891SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6; 6892SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 LIMIT 2; 6893SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6; 6894SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 LIMIT 2; 6895SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6; 6896SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 LIMIT 2; 6897SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6; 6898SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 LIMIT 2; 6899SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6; 6900SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 LIMIT 2; 6901SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6; 6902SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 LIMIT 2; 6903SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6; 6904SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 LIMIT 2; 6905SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 6906SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 6907SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6908SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6909SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6910SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6911 6912## Range access, backwards scan ## 6913SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC; 6914SELECT * FROM t2 WHERE c1 <> 108 ORDER BY c1,c6 DESC LIMIT 2; 6915SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC; 6916SELECT * FROM t2 WHERE c1 > 108 ORDER BY c1,c6 DESC LIMIT 2; 6917SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC; 6918SELECT * FROM t2 WHERE c1 >= 108 ORDER BY c1,c6 DESC LIMIT 2; 6919SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC; 6920SELECT * FROM t2 WHERE c1 < 108 ORDER BY c1,c6 DESC LIMIT 2; 6921SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC; 6922SELECT * FROM t2 WHERE c1 <= 108 ORDER BY c1,c6 DESC LIMIT 2; 6923SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC; 6924SELECT * FROM t2 WHERE c1 <=> 108 ORDER BY c1,c6 DESC LIMIT 2; 6925SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC; 6926SELECT * FROM t2 WHERE c1 BETWEEN 101 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 6927SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC; 6928SELECT * FROM t2 WHERE c1 IN (101,115) ORDER BY c1,c6 DESC LIMIT 2; 6929SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 6930SELECT * FROM t2 WHERE c1 >= 101 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 6931SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 6932SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 6933SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 6934SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 6935## Full table scan ## 6936--sorted_result 6937SELECT * FROM t2; 6938--sorted_result 6939SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 6940--sorted_result 6941SELECT * FROM t2 WHERE c2 = 102; 6942 6943## Forward index scan, covering ## 6944--sorted_result 6945SELECT c1,c6 FROM t2; 6946 6947## Backward index scan, covering ## 6948SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 6949 6950## Forward index scan, non-covering ## 6951SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 6952 6953## Backward index scan, non-covering ## 6954SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 6955 6956## ref type access 6957SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 6958SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 6959SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 6960SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 6961 6962## Range access, ordered ## 6963SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 6964SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 6965SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 6966SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 6967SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 6968SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 6969SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 6970SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 6971SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 6972SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 6973SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 6974SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 6975SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6; 6976SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 LIMIT 2; 6977SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6; 6978SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 LIMIT 2; 6979SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6; 6980SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 LIMIT 2; 6981SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 6982SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 6983SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 6984SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 6985 6986## Range access, backwards scan ## 6987SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 6988SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 6989SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 6990SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 6991SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 6992SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 6993SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 6994SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 6995SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 6996SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 6997SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 6998SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 6999SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC; 7000SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 115 ORDER BY c1,c6 DESC LIMIT 2; 7001SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC; 7002SELECT * FROM t2 WHERE c1 IN (0,115) ORDER BY c1,c6 DESC LIMIT 2; 7003SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC; 7004SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 115 AND c6 = 113 ORDER BY c1,c6 DESC LIMIT 2; 7005SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 7006SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 7007SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 7008SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 7009## Full table scan ## 7010--sorted_result 7011SELECT * FROM t3; 7012--sorted_result 7013SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 7014--sorted_result 7015SELECT * FROM t3 WHERE c1 = 108; 7016 7017## Forward index scan, covering ## 7018--sorted_result 7019SELECT c2,c7 FROM t3; 7020 7021## Backward index scan, covering ## 7022SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 7023 7024## Forward index scan, non-covering ## 7025SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 7026 7027## Backward index scan, non-covering ## 7028SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 7029 7030## ref type access 7031SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7; 7032SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 LIMIT 2; 7033SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC; 7034SELECT * FROM t3 WHERE c2 = -102 ORDER BY c2,c7 DESC LIMIT 2; 7035 7036## Range access, ordered ## 7037SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7; 7038SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 LIMIT 2; 7039SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7; 7040SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 LIMIT 2; 7041SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7; 7042SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 LIMIT 2; 7043SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7; 7044SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 LIMIT 2; 7045SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7; 7046SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 LIMIT 2; 7047SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7; 7048SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 LIMIT 2; 7049SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7; 7050SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 LIMIT 2; 7051SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7; 7052SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 LIMIT 2; 7053SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7; 7054SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 7055SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 7056SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 7057SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 7058SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 7059 7060## Range access, backwards scan ## 7061SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC; 7062SELECT * FROM t3 WHERE c2 <> -102 ORDER BY c2,c7 DESC LIMIT 2; 7063SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC; 7064SELECT * FROM t3 WHERE c2 > -102 ORDER BY c2,c7 DESC LIMIT 2; 7065SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC; 7066SELECT * FROM t3 WHERE c2 >= -102 ORDER BY c2,c7 DESC LIMIT 2; 7067SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC; 7068SELECT * FROM t3 WHERE c2 < -102 ORDER BY c2,c7 DESC LIMIT 2; 7069SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC; 7070SELECT * FROM t3 WHERE c2 <= -102 ORDER BY c2,c7 DESC LIMIT 2; 7071SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC; 7072SELECT * FROM t3 WHERE c2 <=> -102 ORDER BY c2,c7 DESC LIMIT 2; 7073SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC; 7074SELECT * FROM t3 WHERE c2 BETWEEN -123 AND 0 ORDER BY c2,c7 DESC LIMIT 2; 7075SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC; 7076SELECT * FROM t3 WHERE c2 IN (-123,0) ORDER BY c2,c7 DESC LIMIT 2; 7077SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC; 7078SELECT * FROM t3 WHERE c2 >= -123 AND c2 < 0 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 7079SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 7080SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 7081SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 7082SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 7083## Full table scan ## 7084--sorted_result 7085SELECT * FROM t3; 7086--sorted_result 7087SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 7088--sorted_result 7089SELECT * FROM t3 WHERE c1 = 108; 7090 7091## Forward index scan, covering ## 7092--sorted_result 7093SELECT c2,c7 FROM t3; 7094 7095## Backward index scan, covering ## 7096SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 7097 7098## Forward index scan, non-covering ## 7099SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 7100 7101## Backward index scan, non-covering ## 7102SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 7103 7104## ref type access 7105SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7; 7106SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 LIMIT 2; 7107SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC; 7108SELECT * FROM t3 WHERE c2 = NULL ORDER BY c2,c7 DESC LIMIT 2; 7109 7110## Range access, ordered ## 7111SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7; 7112SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 LIMIT 2; 7113SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7; 7114SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 LIMIT 2; 7115SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7; 7116SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 LIMIT 2; 7117SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7; 7118SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 LIMIT 2; 7119SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7; 7120SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 LIMIT 2; 7121SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7; 7122SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 LIMIT 2; 7123SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7; 7124SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 LIMIT 2; 7125SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7; 7126SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 LIMIT 2; 7127SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7; 7128SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 LIMIT 2; 7129SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 7130SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 7131SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 7132SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 7133 7134## Range access, backwards scan ## 7135SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC; 7136SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c2,c7 DESC LIMIT 2; 7137SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC; 7138SELECT * FROM t3 WHERE c2 > NULL ORDER BY c2,c7 DESC LIMIT 2; 7139SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC; 7140SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c2,c7 DESC LIMIT 2; 7141SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC; 7142SELECT * FROM t3 WHERE c2 < NULL ORDER BY c2,c7 DESC LIMIT 2; 7143SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC; 7144SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c2,c7 DESC LIMIT 2; 7145SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC; 7146SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c2,c7 DESC LIMIT 2; 7147SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC; 7148SELECT * FROM t3 WHERE c2 BETWEEN NULL AND -123 ORDER BY c2,c7 DESC LIMIT 2; 7149SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC; 7150SELECT * FROM t3 WHERE c2 IN (NULL,-123) ORDER BY c2,c7 DESC LIMIT 2; 7151SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC; 7152SELECT * FROM t3 WHERE c2 >= NULL AND c2 < -123 AND c7 = 121 ORDER BY c2,c7 DESC LIMIT 2; 7153SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 7154SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 7155SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 7156SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 7157 7158# Using index for group-by 7159--sorted_result 7160SELECT c2 FROM t3 GROUP BY c2; 7161--sorted_result 7162SELECT DISTINCT c2 FROM t3; 7163--sorted_result 7164SELECT c2,MIN(c7) FROM t3 GROUP BY c2; 7165 7166# Create tables with AUTO_INCREMENT columns and unique indexes 7167CREATE TABLE t4(c1 BIGINT SIGNED NOT NULL AUTO_INCREMENT, c2 BIGINT UNSIGNED NULL, c3 BIGINT UNSIGNED NOT NULL, c4 TINYINT , c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 INTEGER, PRIMARY KEY(c1), UNIQUE INDEX idx(c2,c3)); 7168CREATE TABLE t5(c1 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, c2 BIGINT SIGNED NULL, c3 BIGINT SIGNED NOT NULL, c4 TINYINT, c5 SMALLINT, c6 MEDIUMINT, c7 INT, c8 INTEGER, PRIMARY KEY(c1,c2), UNIQUE INDEX(c3)); 7169 7170# Test with AUTO_INCREMENT columns 7171# Insert some rows 7172INSERT INTO t4 VALUES(-101,102,103,104,105,106,107,108),(-108,109,110,111,112,113,114,115); 7173INSERT INTO t5 VALUES(101,-102,-103,-104,105,106,107,108),(108,-109,-110,111,112,113,114,115); 7174# Insert 0 values, increments the value 7175INSERT INTO t4 VALUES(0,32,33,34,35,36,37,38); 7176--let $auto_value=`SELECT LAST_INSERT_ID()=1 AND c1=1 FROM t4 WHERE c2=32 AND c3=33;` 7177--if (!$auto_value) { 7178--die "AUTO_INCREMENT didn't work well on 0" 7179} 7180INSERT INTO t5 VALUES(0,-32,-32,33,34,35,36,37); 7181--let $auto_value=`SELECT LAST_INSERT_ID()=109 AND c1=109 FROM t5 WHERE c2=-32 AND c3=-32;` 7182--if (!$auto_value) { 7183--die "AUTO_INCREMENT didn't work well on 0" 7184} 7185# Insert NULL, no error, increments the value 7186INSERT INTO t4(c1,c3,c4) VALUES(NULL,104,LAST_INSERT_ID()); 7187--let $auto_value=`SELECT LAST_INSERT_ID()=2 AND c1=2 FROM t4 WHERE c3=104;` 7188--if (!$auto_value) { 7189--die "AUTO_INCREMENT didn't work well on NULL" 7190} 7191INSERT INTO t5(c1,c3,c4) VALUES(NULL,-104,LAST_INSERT_ID()); 7192--let $auto_value=`SELECT LAST_INSERT_ID()=110 AND c1=110 FROM t5 WHERE c3=-104;` 7193--if (!$auto_value) { 7194--die "AUTO_INCREMENT didn't work well on NULL" 7195} 7196# Insert empty strings, increments the value 7197INSERT INTO t4 VALUES('','',17,18,19,20,21,22); 7198--let $auto_value=`SELECT LAST_INSERT_ID()=3 AND c1=3 FROM t4 WHERE c2=0 AND c3=17;` 7199--if (!$auto_value) { 7200--die "AUTO_INCREMENT didn't work well on ''" 7201} 7202INSERT INTO t5 VALUES('','',-17,18,19,20,21,22); 7203--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=111 FROM t5 WHERE c2=0 AND c3=-17;` 7204--if (!$auto_value) { 7205--die "AUTO_INCREMENT didn't work well on ''" 7206} 7207# Insert strings with numeric part, inserts the numeric part of the string 7208INSERT INTO t4 VALUES('102.34 a','a','a',37,38,39,40,41); 7209--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t4 WHERE c2=0 AND c3=0;` 7210--if (!$auto_value) { 7211--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 7212} 7213INSERT INTO t5 VALUES('102.34 a','a','a',37,38,39,40,41); 7214--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=102 FROM t5 WHERE c2=0 AND c3=0;` 7215--if (!$auto_value) { 7216--die "AUTO_INCREMENT didn't work well on invalid strings with numeric part" 7217} 7218# Insert negative values unsigned & positive value to signed 7219INSERT INTO t4 VALUES(4,7,8,9,10,11,12,13); 7220--let $auto_value=`SELECT LAST_INSERT_ID()=111 AND c1=4 FROM t4 WHERE c2=7 AND c3=8;` 7221--if (!$auto_value) { 7222--die "AUTO_INCREMENT didn't work on negative value" 7223} 7224INSERT INTO t5 VALUES(-1,-1,-1,8,9,10,11,12); 7225--let $auto_value=`SELECT LAST_INSERT_ID()=112 AND c1=112 FROM t5 WHERE c2=-1 AND c3=-1;` 7226--if (!$auto_value) { 7227--die "AUTO_INCREMENT didn't work for negative value on unsigned" 7228} 7229# Insert some rows with no values assigned to AUTO_INCREMENT columns, increments value 7230INSERT INTO t4(c2,c3,c4,c5,c6,c7,c8) VALUES(101,102,104,105,106,107,108),(108,109,111,112,113,114,115),(115,116,118,119,120,121,122),(122,123,125,126,127,128,128); 7231--let $auto_value=`SELECT LAST_INSERT_ID()=103 AND c1=103 FROM t4 WHERE c2=101 AND c3=102;` 7232--if (!$auto_value) { 7233--die "AUTO_INCREMENT didn't work well" 7234} 7235INSERT INTO t5(c2,c3,c4,c5,c6,c7,c8) VALUES(-101,-102,104,105,106,107,108),(-108,-109,111,112,113,114,115),(-115,-116,118,119,120,121,122),(-122,-123,125,126,127,128,128); 7236--let $auto_value=`SELECT LAST_INSERT_ID()=113 AND c1=113 FROM t5 WHERE c2=-101 AND c3=-102;` 7237--if (!$auto_value) { 7238--die "AUTO_INCREMENT didn't work well" 7239} 7240 7241SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t4; 7242SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t5; 7243# Now select using various table access methods on auto-incremented pk value(full table scan, range scan, index scan etc.) 7244## Full table scan ## 7245--sorted_result 7246SELECT * FROM t4; 7247--sorted_result 7248SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 7249--sorted_result 7250SELECT * FROM t4 WHERE c4 = 104; 7251 7252## Forward index scan, covering ## 7253--sorted_result 7254SELECT c1 FROM t4; 7255 7256## Backward index scan, covering ## 7257SELECT c1 FROM t4 ORDER BY c1 DESC; 7258 7259## Forward index scan, non-covering ## 7260SELECT * FROM t4 ORDER BY c1 LIMIT 2; 7261 7262## Backward index scan, non-covering ## 7263SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 7264 7265## ref type access 7266SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1; 7267SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 LIMIT 2; 7268SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC; 7269SELECT * FROM t4 WHERE c1 = 1 ORDER BY c1 DESC LIMIT 2; 7270 7271## Range access, ordered ## 7272SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1; 7273SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 LIMIT 2; 7274SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1; 7275SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 LIMIT 2; 7276SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1; 7277SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 LIMIT 2; 7278SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1; 7279SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 LIMIT 2; 7280SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1; 7281SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 LIMIT 2; 7282SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1; 7283SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 LIMIT 2; 7284SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 7285SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 7286SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 7287SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 7288SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 7289SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 7290SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 7291SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 7292SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 7293SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 7294 7295## Range access, backwards scan ## 7296SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC; 7297SELECT * FROM t4 WHERE c1 <> 1 ORDER BY c1 DESC LIMIT 2; 7298SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC; 7299SELECT * FROM t4 WHERE c1 > 1 ORDER BY c1 DESC LIMIT 2; 7300SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC; 7301SELECT * FROM t4 WHERE c1 >= 1 ORDER BY c1 DESC LIMIT 2; 7302SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC; 7303SELECT * FROM t4 WHERE c1 < 1 ORDER BY c1 DESC LIMIT 2; 7304SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC; 7305SELECT * FROM t4 WHERE c1 <= 1 ORDER BY c1 DESC LIMIT 2; 7306SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC; 7307SELECT * FROM t4 WHERE c1 <=> 1 ORDER BY c1 DESC LIMIT 2; 7308SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 7309SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 7310SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 7311SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 7312SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 7313SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 7314SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 7315SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 7316SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 7317SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 7318## Full table scan ## 7319--sorted_result 7320SELECT * FROM t4; 7321--sorted_result 7322SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t4; 7323--sorted_result 7324SELECT * FROM t4 WHERE c4 = 104; 7325 7326## Forward index scan, covering ## 7327--sorted_result 7328SELECT c1 FROM t4; 7329 7330## Backward index scan, covering ## 7331SELECT c1 FROM t4 ORDER BY c1 DESC; 7332 7333## Forward index scan, non-covering ## 7334SELECT * FROM t4 ORDER BY c1 LIMIT 2; 7335 7336## Backward index scan, non-covering ## 7337SELECT * FROM t4 ORDER BY c1 DESC LIMIT 2; 7338 7339## ref type access 7340SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1; 7341SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 LIMIT 2; 7342SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC; 7343SELECT * FROM t4 WHERE c1 = 0 ORDER BY c1 DESC LIMIT 2; 7344 7345## Range access, ordered ## 7346SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1; 7347SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 LIMIT 2; 7348SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1; 7349SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 LIMIT 2; 7350SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1; 7351SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 LIMIT 2; 7352SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1; 7353SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 LIMIT 2; 7354SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1; 7355SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 LIMIT 2; 7356SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1; 7357SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 LIMIT 2; 7358SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1; 7359SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 LIMIT 2; 7360SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1; 7361SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 LIMIT 2; 7362SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1; 7363SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 LIMIT 2; 7364SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1; 7365SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 7366SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1; 7367SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 7368 7369## Range access, backwards scan ## 7370SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC; 7371SELECT * FROM t4 WHERE c1 <> 0 ORDER BY c1 DESC LIMIT 2; 7372SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC; 7373SELECT * FROM t4 WHERE c1 > 0 ORDER BY c1 DESC LIMIT 2; 7374SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC; 7375SELECT * FROM t4 WHERE c1 >= 0 ORDER BY c1 DESC LIMIT 2; 7376SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC; 7377SELECT * FROM t4 WHERE c1 < 0 ORDER BY c1 DESC LIMIT 2; 7378SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC; 7379SELECT * FROM t4 WHERE c1 <= 0 ORDER BY c1 DESC LIMIT 2; 7380SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC; 7381SELECT * FROM t4 WHERE c1 <=> 0 ORDER BY c1 DESC LIMIT 2; 7382SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC; 7383SELECT * FROM t4 WHERE c1 BETWEEN -101 AND 4 ORDER BY c1 DESC LIMIT 2; 7384SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC; 7385SELECT * FROM t4 WHERE c1 IN (-101,4) ORDER BY c1 DESC LIMIT 2; 7386SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC; 7387SELECT * FROM t4 WHERE c1 >= -101 AND c1 < 4 AND c3 = 109 ORDER BY c1 DESC LIMIT 2; 7388SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC; 7389SELECT * FROM t4 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 7390SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 7391SELECT * FROM t4 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 7392## Full table scan ## 7393--sorted_result 7394SELECT * FROM t5; 7395--sorted_result 7396SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5; 7397--sorted_result 7398SELECT * FROM t5 WHERE c5 = 112; 7399 7400## Forward index scan, covering ## 7401--sorted_result 7402SELECT c1 FROM t5; 7403 7404## Backward index scan, covering ## 7405SELECT c1 FROM t5 ORDER BY c1 DESC; 7406 7407## Forward index scan, non-covering ## 7408SELECT * FROM t5 ORDER BY c1 LIMIT 2; 7409 7410## Backward index scan, non-covering ## 7411SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2; 7412 7413## ref type access 7414SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1; 7415SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 LIMIT 2; 7416SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC; 7417SELECT * FROM t5 WHERE c1 = 109 ORDER BY c1 DESC LIMIT 2; 7418 7419## Range access, ordered ## 7420SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1; 7421SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 LIMIT 2; 7422SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1; 7423SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 LIMIT 2; 7424SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1; 7425SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 LIMIT 2; 7426SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1; 7427SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 LIMIT 2; 7428SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1; 7429SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 LIMIT 2; 7430SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1; 7431SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 LIMIT 2; 7432SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1; 7433SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 LIMIT 2; 7434SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1; 7435SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 LIMIT 2; 7436SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1; 7437SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 LIMIT 2; 7438SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1; 7439SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; 7440SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1; 7441SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; 7442 7443## Range access, backwards scan ## 7444SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC; 7445SELECT * FROM t5 WHERE c1 <> 109 ORDER BY c1 DESC LIMIT 2; 7446SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC; 7447SELECT * FROM t5 WHERE c1 > 109 ORDER BY c1 DESC LIMIT 2; 7448SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC; 7449SELECT * FROM t5 WHERE c1 >= 109 ORDER BY c1 DESC LIMIT 2; 7450SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC; 7451SELECT * FROM t5 WHERE c1 < 109 ORDER BY c1 DESC LIMIT 2; 7452SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC; 7453SELECT * FROM t5 WHERE c1 <= 109 ORDER BY c1 DESC LIMIT 2; 7454SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC; 7455SELECT * FROM t5 WHERE c1 <=> 109 ORDER BY c1 DESC LIMIT 2; 7456SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC; 7457SELECT * FROM t5 WHERE c1 BETWEEN 0 AND 112 ORDER BY c1 DESC LIMIT 2; 7458SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC; 7459SELECT * FROM t5 WHERE c1 IN (0,112) ORDER BY c1 DESC LIMIT 2; 7460SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC; 7461SELECT * FROM t5 WHERE c1 >= 0 AND c1 < 112 AND c2 = -108 ORDER BY c1 DESC LIMIT 2; 7462SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC; 7463SELECT * FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; 7464SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC; 7465SELECT * FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; 7466 7467# Index-merge access 7468--sorted_result 7469SELECT * FROM t4 WHERE c1=1 OR c2=109; 7470 7471# Using index for group-by 7472--sorted_result 7473SELECT c2 FROM t4 GROUP BY c2; 7474--sorted_result 7475SELECT DISTINCT c2 FROM t4; 7476--sorted_result 7477SELECT c2,MIN(c3) FROM t4 GROUP BY c2; 7478 7479# Test Error conditions- NULL into not null col, PK constraint violation, Unique constraint violation 7480 7481# Insert NULL to non-null column 7482--error ER_BAD_NULL_ERROR 7483INSERT INTO t2(c1) VALUES(NULL); 7484--error ER_BAD_NULL_ERROR 7485INSERT INTO t3 VALUES(NULL,1,2,3,4,5,6); 7486--error ER_BAD_NULL_ERROR 7487INSERT INTO t4(c3) VALUES(NULL); 7488--error ER_BAD_NULL_ERROR 7489INSERT INTO t5(c3) VALUES(NULL); 7490 7491# Insert duplicate value to pk 7492--error ER_DUP_ENTRY 7493INSERT INTO t4(c1,c3) VALUES(-101,105) /*throws error as the row with c1=-101 exists */; 7494 7495# Insert duplicate value to clustered pk, throws error 7496--error ER_DUP_ENTRY 7497INSERT INTO t2(c1,c6) VALUES(101,106) /*throws error as the row with c1=101,c6=106 exists */; 7498--error ER_DUP_ENTRY 7499INSERT INTO t5(c1,c2,c3) VALUES(101,-102,4) /*throws error as the row with c1=101,c2=-102 exists */; 7500 7501# Insert duplicate value to unique column, throws error 7502--error ER_DUP_ENTRY 7503INSERT INTO t5(c3) VALUES(-103) /*throws error as the row with c3=-103 exists */; 7504--error ER_DUP_ENTRY 7505# Insert duplicate value to clustered unique column, throws error 7506INSERT INTO t4(c2,c3) VALUES(102,103) /*throws error as the row with c2=102,c3=103 exists */; 7507 7508# Test 'INSERT INTO SELECT FROM' 7509CREATE TABLE t6(c1 BIGINT UNSIGNED NOT NULL, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER); 7510INSERT INTO t6 SELECT * FROM t2 where c1 >= 109; 7511--sorted_result 7512SELECT * FROM t6; 7513TRUNCATE TABLE t6; 7514INSERT INTO t6 SELECT * FROM t3 where c2 <= -116; 7515--sorted_result 7516SELECT * FROM t6; 7517TRUNCATE TABLE t6; 7518# Test 'INSERT INTO SELECT FROM' primary key constraint violation 7519CREATE TABLE t7(c1 BIGINT UNSIGNED NOT NULL PRIMARY KEY, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER); 7520CREATE TABLE t8(c1 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 BIGINT NULL, c3 TINYINT, c4 SMALLINT , c5 MEDIUMINT, c6 INT, c7 INTEGER); 7521INSERT INTO t6 VALUES(1,-2,2,2,2,2,2),(1,-3,3,3,3,3,3); 7522INSERT INTO t7(c1) SELECT t6.c1 FROM t6 LIMIT 1; 7523--sorted_result 7524SELECT * FROM t7; 7525INSERT INTO t8(c1) SELECT t6.c1 FROM t6 LIMIT 1; 7526--sorted_result 7527SELECT * FROM t8; 7528--error ER_DUP_ENTRY 7529INSERT INTO t7(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 7530--error ER_DUP_ENTRY 7531INSERT INTO t8(c1) SELECT t6.c1 FROM t6 /* throws error as t6 contains duplicate rows for c1=1 */; 7532TRUNCATE TABLE t6; 7533 7534# Test 'INSERT INTO SELECT FROM' with AUTO_INCREMENT and inserting 0,NULL 7535INSERT INTO t6 VALUES(5,-1,1,1,1,1,1),(6,-2,2,2,2,2,2),(0,-4,4,4,4,4,4),(NULL,-5,5,5,5,5,5); 7536INSERT INTO t8 SELECT * FROM t6; 7537SELECT LAST_INSERT_ID() AS last_insert_id; 7538--sorted_result 7539SELECT * FROM t8; 7540TRUNCATE TABLE t8; 7541INSERT INTO t8(c2) SELECT c2 FROM t6 WHERE c1 >= 6; 7542--sorted_result 7543SELECT * FROM t8; 7544DROP TABLE t6,t7,t8; 7545 7546# Test 'INSERT SET' 7547INSERT INTO t2 SET c3=5,c4=6; 7548SET SQL_MODE=STRICT_ALL_TABLES; 7549--error ER_NO_DEFAULT_FOR_FIELD 7550INSERT INTO t2 SET c3=5,c4=6; 7551SET SQL_MODE=''; 7552 7553# Test insert allowable bigger values to 'BIGINT' columns 7554INSERT INTO t1 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30); 7555INSERT INTO t2 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30); 7556INSERT INTO t3 VALUES(0,-9223372036854775808,1,2,3,4,5),(255,-2147483648,6,7,8,9,10),(65535,-8388608,11,12,13,14,15),(16777215,-32768,16,17,18,19,20),(4294967295,-128,21,22,23,24,25),(18446744073709551615,9223372036854775807,26,27,28,29,30); 7557INSERT INTO t4 VALUES(-9223372036854775808,0,1,2,3,4,5,5),(-2147483648,255,6,7,8,9,10,10),(-8388608,65535,11,12,13,14,15,15),(-32768,16777215,16,17,18,19,20,20),(-128,4294967295,21,22,23,24,25,25),(9223372036854775807,18446744073709551615,26,27,28,29,30,30); 7558INSERT INTO t5 VALUES(0,-9223372036854775808,1,2,3,4,5,5),(255,-2147483648,6,7,8,9,10,10),(65535,-8388608,11,12,13,14,15,15),(16777215,-32768,16,17,18,19,20,20),(4294967295,-128,21,22,23,24,25,25),(18446744073709551615,9223372036854775807,26,27,28,29,30,30); 7559--error ER_DUP_ENTRY 7560INSERT INTO t4(c2,c3) VALUES(31,32) /* tries to increment out of range */; 7561--error ER_AUTOINC_READ_FAILED 7562INSERT INTO t5(c2,c3) VALUES(33,34) /* tries to increment out of range */; 7563--sorted_result 7564SELECT * FROM t4; 7565 7566# Insert signed value to unsigned 'BIGINT', outside range values to signed/unsigned columns 7567INSERT INTO t1 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40); 7568INSERT INTO t2 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40); 7569INSERT INTO t3 VALUES(-128,-9223372036854775809,31,32,33,34,35),(18446744073709551616,9223372036854775808,36,37,38,39,40); 7570 7571# Now select using various table access methods 7572## Full table scan ## 7573--sorted_result 7574SELECT * FROM t2; 7575--sorted_result 7576SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 7577--sorted_result 7578SELECT * FROM t2 WHERE c2 = -9223372036854775808; 7579 7580## Forward index scan, covering ## 7581--sorted_result 7582SELECT c1,c6 FROM t2; 7583 7584## Backward index scan, covering ## 7585SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 7586 7587## Forward index scan, non-covering ## 7588SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 7589 7590## Backward index scan, non-covering ## 7591SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 7592 7593## ref type access 7594SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6; 7595SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 LIMIT 2; 7596SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC; 7597SELECT * FROM t2 WHERE c1 = 0 ORDER BY c1,c6 DESC LIMIT 2; 7598 7599## Range access, ordered ## 7600SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6; 7601SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 LIMIT 2; 7602SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6; 7603SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 LIMIT 2; 7604SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6; 7605SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 LIMIT 2; 7606SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6; 7607SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 LIMIT 2; 7608SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6; 7609SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 LIMIT 2; 7610SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6; 7611SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 LIMIT 2; 7612SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6; 7613SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7614SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6; 7615SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 LIMIT 2; 7616SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6; 7617SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 LIMIT 2; 7618SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 7619SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 7620SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 7621SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 7622 7623## Range access, backwards scan ## 7624SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC; 7625SELECT * FROM t2 WHERE c1 <> 0 ORDER BY c1,c6 DESC LIMIT 2; 7626SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC; 7627SELECT * FROM t2 WHERE c1 > 0 ORDER BY c1,c6 DESC LIMIT 2; 7628SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC; 7629SELECT * FROM t2 WHERE c1 >= 0 ORDER BY c1,c6 DESC LIMIT 2; 7630SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC; 7631SELECT * FROM t2 WHERE c1 < 0 ORDER BY c1,c6 DESC LIMIT 2; 7632SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC; 7633SELECT * FROM t2 WHERE c1 <= 0 ORDER BY c1,c6 DESC LIMIT 2; 7634SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC; 7635SELECT * FROM t2 WHERE c1 <=> 0 ORDER BY c1,c6 DESC LIMIT 2; 7636SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC; 7637SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7638SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC; 7639SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC LIMIT 2; 7640SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC; 7641SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC LIMIT 2; 7642SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 7643SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 7644SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 7645SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 7646## Full table scan ## 7647--sorted_result 7648SELECT * FROM t2; 7649--sorted_result 7650SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 7651--sorted_result 7652SELECT * FROM t2 WHERE c2 = 9223372036854775807; 7653 7654## Forward index scan, covering ## 7655--sorted_result 7656SELECT c1,c6 FROM t2; 7657 7658## Backward index scan, covering ## 7659SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 7660 7661## Forward index scan, non-covering ## 7662SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 7663 7664## Backward index scan, non-covering ## 7665SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 7666 7667## ref type access 7668SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6; 7669SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7670SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 DESC; 7671SELECT * FROM t2 WHERE c1 = 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7672 7673## Range access, ordered ## 7674SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6; 7675SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7676SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6; 7677SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7678SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6; 7679SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7680SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6; 7681SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7682SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6; 7683SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7684SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6; 7685SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7686SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6; 7687SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 LIMIT 2; 7688SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6; 7689SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 LIMIT 2; 7690SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6; 7691SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 LIMIT 2; 7692SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 7693SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 7694SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 7695SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 7696 7697## Range access, backwards scan ## 7698SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 DESC; 7699SELECT * FROM t2 WHERE c1 <> 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7700SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 DESC; 7701SELECT * FROM t2 WHERE c1 > 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7702SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 DESC; 7703SELECT * FROM t2 WHERE c1 >= 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7704SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 DESC; 7705SELECT * FROM t2 WHERE c1 < 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7706SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 DESC; 7707SELECT * FROM t2 WHERE c1 <= 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7708SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 DESC; 7709SELECT * FROM t2 WHERE c1 <=> 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7710SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC; 7711SELECT * FROM t2 WHERE c1 BETWEEN 0 AND 18446744073709551615 ORDER BY c1,c6 DESC LIMIT 2; 7712SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC; 7713SELECT * FROM t2 WHERE c1 IN (0,18446744073709551615) ORDER BY c1,c6 DESC LIMIT 2; 7714SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC; 7715SELECT * FROM t2 WHERE c1 >= 0 AND c1 < 18446744073709551615 AND c6 = 14 ORDER BY c1,c6 DESC LIMIT 2; 7716SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 7717SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 7718SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 7719SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 7720## Full table scan ## 7721--sorted_result 7722SELECT * FROM t2; 7723--sorted_result 7724SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 7725--sorted_result 7726SELECT * FROM t2 WHERE c2 = -9223372036854775809; 7727 7728## Forward index scan, covering ## 7729--sorted_result 7730SELECT c1,c6 FROM t2; 7731 7732## Backward index scan, covering ## 7733SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 7734 7735## Forward index scan, non-covering ## 7736SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 7737 7738## Backward index scan, non-covering ## 7739SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 7740 7741## ref type access 7742SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6; 7743SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 LIMIT 2; 7744SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 DESC; 7745SELECT * FROM t2 WHERE c1 = -128 ORDER BY c1,c6 DESC LIMIT 2; 7746 7747## Range access, ordered ## 7748SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6; 7749SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 LIMIT 2; 7750SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6; 7751SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 LIMIT 2; 7752SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6; 7753SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 LIMIT 2; 7754SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6; 7755SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 LIMIT 2; 7756SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6; 7757SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 LIMIT 2; 7758SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6; 7759SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 LIMIT 2; 7760SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6; 7761SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7762SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6; 7763SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 LIMIT 2; 7764SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6; 7765SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 LIMIT 2; 7766SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 7767SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 7768SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 7769SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 7770 7771## Range access, backwards scan ## 7772SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 DESC; 7773SELECT * FROM t2 WHERE c1 <> -128 ORDER BY c1,c6 DESC LIMIT 2; 7774SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 DESC; 7775SELECT * FROM t2 WHERE c1 > -128 ORDER BY c1,c6 DESC LIMIT 2; 7776SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 DESC; 7777SELECT * FROM t2 WHERE c1 >= -128 ORDER BY c1,c6 DESC LIMIT 2; 7778SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 DESC; 7779SELECT * FROM t2 WHERE c1 < -128 ORDER BY c1,c6 DESC LIMIT 2; 7780SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 DESC; 7781SELECT * FROM t2 WHERE c1 <= -128 ORDER BY c1,c6 DESC LIMIT 2; 7782SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 DESC; 7783SELECT * FROM t2 WHERE c1 <=> -128 ORDER BY c1,c6 DESC LIMIT 2; 7784SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC; 7785SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7786SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC; 7787SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC LIMIT 2; 7788SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC; 7789SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC LIMIT 2; 7790SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 7791SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 7792SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 7793SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 7794## Full table scan ## 7795--sorted_result 7796SELECT * FROM t2; 7797--sorted_result 7798SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; 7799--sorted_result 7800SELECT * FROM t2 WHERE c2 = 9223372036854775808; 7801 7802## Forward index scan, covering ## 7803--sorted_result 7804SELECT c1,c6 FROM t2; 7805 7806## Backward index scan, covering ## 7807SELECT c1,c6 FROM t2 ORDER BY c1,c6 DESC; 7808 7809## Forward index scan, non-covering ## 7810SELECT * FROM t2 ORDER BY c1,c6 LIMIT 2; 7811 7812## Backward index scan, non-covering ## 7813SELECT * FROM t2 ORDER BY c1,c6 DESC LIMIT 2; 7814 7815## ref type access 7816--disable_warnings 7817SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6; 7818SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7819SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 DESC; 7820SELECT * FROM t2 WHERE c1 = 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7821--enable_warnings 7822 7823## Range access, ordered ## 7824SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6; 7825SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7826SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6; 7827SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7828SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6; 7829SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7830SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6; 7831SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7832SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6; 7833SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7834SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6; 7835SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7836SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6; 7837SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 LIMIT 2; 7838SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6; 7839SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 LIMIT 2; 7840SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6; 7841SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 LIMIT 2; 7842SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6; 7843SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 LIMIT 2; 7844SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6; 7845SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 LIMIT 2; 7846 7847## Range access, backwards scan ## 7848SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 DESC; 7849SELECT * FROM t2 WHERE c1 <> 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7850SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 DESC; 7851SELECT * FROM t2 WHERE c1 > 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7852SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 DESC; 7853SELECT * FROM t2 WHERE c1 >= 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7854SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 DESC; 7855SELECT * FROM t2 WHERE c1 < 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7856SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 DESC; 7857SELECT * FROM t2 WHERE c1 <= 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7858SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 DESC; 7859SELECT * FROM t2 WHERE c1 <=> 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7860SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC; 7861SELECT * FROM t2 WHERE c1 BETWEEN -128 AND 18446744073709551616 ORDER BY c1,c6 DESC LIMIT 2; 7862SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC; 7863SELECT * FROM t2 WHERE c1 IN (-128,18446744073709551616) ORDER BY c1,c6 DESC LIMIT 2; 7864SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC; 7865SELECT * FROM t2 WHERE c1 >= -128 AND c1 < 18446744073709551616 AND c6 = 34 ORDER BY c1,c6 DESC LIMIT 2; 7866SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC; 7867SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c6 DESC LIMIT 2; 7868SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC; 7869SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c6 DESC LIMIT 2; 7870## Full table scan ## 7871--sorted_result 7872SELECT * FROM t3; 7873--sorted_result 7874SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 7875--sorted_result 7876SELECT * FROM t3 WHERE c1 = 0; 7877 7878## Forward index scan, covering ## 7879--sorted_result 7880SELECT c2,c7 FROM t3; 7881 7882## Backward index scan, covering ## 7883SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 7884 7885## Forward index scan, non-covering ## 7886SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 7887 7888## Backward index scan, non-covering ## 7889SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 7890 7891## ref type access 7892SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7; 7893SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7894SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 DESC; 7895SELECT * FROM t3 WHERE c2 = -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7896 7897## Range access, ordered ## 7898SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7; 7899SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7900SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7; 7901SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7902SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7; 7903SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7904SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7; 7905SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7906SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7; 7907SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7908SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7; 7909SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 LIMIT 2; 7910SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7; 7911SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7912SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7; 7913SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 LIMIT 2; 7914SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7; 7915SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 7916SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 7917SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 7918SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 7919SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 7920 7921## Range access, backwards scan ## 7922SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 DESC; 7923SELECT * FROM t3 WHERE c2 <> -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7924SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 DESC; 7925SELECT * FROM t3 WHERE c2 > -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7926SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 DESC; 7927SELECT * FROM t3 WHERE c2 >= -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7928SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 DESC; 7929SELECT * FROM t3 WHERE c2 < -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7930SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 DESC; 7931SELECT * FROM t3 WHERE c2 <= -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7932SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 DESC; 7933SELECT * FROM t3 WHERE c2 <=> -9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 7934SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC; 7935SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 7936SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC; 7937SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC LIMIT 2; 7938SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC; 7939SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 7940SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 7941SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 7942SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 7943SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 7944## Full table scan ## 7945--sorted_result 7946SELECT * FROM t3; 7947--sorted_result 7948SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 7949--sorted_result 7950SELECT * FROM t3 WHERE c1 = 18446744073709551615; 7951 7952## Forward index scan, covering ## 7953--sorted_result 7954SELECT c2,c7 FROM t3; 7955 7956## Backward index scan, covering ## 7957SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 7958 7959## Forward index scan, non-covering ## 7960SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 7961 7962## Backward index scan, non-covering ## 7963SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 7964 7965## ref type access 7966SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7; 7967SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7968SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 DESC; 7969SELECT * FROM t3 WHERE c2 = 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 7970 7971## Range access, ordered ## 7972SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7; 7973SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7974SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7; 7975SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7976SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7; 7977SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7978SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7; 7979SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7980SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7; 7981SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7982SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7; 7983SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7984SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7; 7985SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 LIMIT 2; 7986SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7; 7987SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 LIMIT 2; 7988SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7; 7989SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 LIMIT 2; 7990SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 7991SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 7992SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 7993SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 7994 7995## Range access, backwards scan ## 7996SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 DESC; 7997SELECT * FROM t3 WHERE c2 <> 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 7998SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 DESC; 7999SELECT * FROM t3 WHERE c2 > 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8000SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 DESC; 8001SELECT * FROM t3 WHERE c2 >= 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8002SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 DESC; 8003SELECT * FROM t3 WHERE c2 < 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8004SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 DESC; 8005SELECT * FROM t3 WHERE c2 <= 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8006SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 DESC; 8007SELECT * FROM t3 WHERE c2 <=> 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8008SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC; 8009SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775808 AND 9223372036854775807 ORDER BY c2,c7 DESC LIMIT 2; 8010SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC; 8011SELECT * FROM t3 WHERE c2 IN (-9223372036854775808,9223372036854775807) ORDER BY c2,c7 DESC LIMIT 2; 8012SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC; 8013SELECT * FROM t3 WHERE c2 >= -9223372036854775808 AND c2 < 9223372036854775807 AND c7 = 20 ORDER BY c2,c7 DESC LIMIT 2; 8014SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 8015SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 8016SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 8017SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 8018## Full table scan ## 8019--sorted_result 8020SELECT * FROM t3; 8021--sorted_result 8022SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 8023--sorted_result 8024SELECT * FROM t3 WHERE c1 = -128; 8025 8026## Forward index scan, covering ## 8027--sorted_result 8028SELECT c2,c7 FROM t3; 8029 8030## Backward index scan, covering ## 8031SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 8032 8033## Forward index scan, non-covering ## 8034SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 8035 8036## Backward index scan, non-covering ## 8037SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 8038 8039## ref type access 8040SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7; 8041SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8042SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 DESC; 8043SELECT * FROM t3 WHERE c2 = -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8044 8045## Range access, ordered ## 8046SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7; 8047SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8048SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7; 8049SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8050SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7; 8051SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8052SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7; 8053SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8054SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7; 8055SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8056SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7; 8057SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 LIMIT 2; 8058SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7; 8059SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8060SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7; 8061SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 LIMIT 2; 8062SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7; 8063SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 LIMIT 2; 8064SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 8065SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 8066SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 8067SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 8068 8069## Range access, backwards scan ## 8070SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 DESC; 8071SELECT * FROM t3 WHERE c2 <> -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8072SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 DESC; 8073SELECT * FROM t3 WHERE c2 > -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8074SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 DESC; 8075SELECT * FROM t3 WHERE c2 >= -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8076SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 DESC; 8077SELECT * FROM t3 WHERE c2 < -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8078SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 DESC; 8079SELECT * FROM t3 WHERE c2 <= -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8080SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 DESC; 8081SELECT * FROM t3 WHERE c2 <=> -9223372036854775809 ORDER BY c2,c7 DESC LIMIT 2; 8082SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC; 8083SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8084SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC; 8085SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC LIMIT 2; 8086SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC; 8087SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC LIMIT 2; 8088SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 8089SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 8090SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 8091SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 8092## Full table scan ## 8093--sorted_result 8094SELECT * FROM t3; 8095--sorted_result 8096SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; 8097--sorted_result 8098SELECT * FROM t3 WHERE c1 = 18446744073709551616; 8099 8100## Forward index scan, covering ## 8101--sorted_result 8102SELECT c2,c7 FROM t3; 8103 8104## Backward index scan, covering ## 8105SELECT c2,c7 FROM t3 ORDER BY c2,c7 DESC; 8106 8107## Forward index scan, non-covering ## 8108SELECT * FROM t3 ORDER BY c2,c7 LIMIT 2; 8109 8110## Backward index scan, non-covering ## 8111SELECT * FROM t3 ORDER BY c2,c7 DESC LIMIT 2; 8112 8113## ref type access 8114SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7; 8115SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8116SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 DESC; 8117SELECT * FROM t3 WHERE c2 = 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8118 8119## Range access, ordered ## 8120SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7; 8121SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8122SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7; 8123SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8124SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7; 8125SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8126SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7; 8127SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8128SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7; 8129SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8130SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7; 8131SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8132SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7; 8133SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 LIMIT 2; 8134SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7; 8135SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 LIMIT 2; 8136SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7; 8137SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 LIMIT 2; 8138SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7; 8139SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 LIMIT 2; 8140SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7; 8141SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 LIMIT 2; 8142 8143## Range access, backwards scan ## 8144SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 DESC; 8145SELECT * FROM t3 WHERE c2 <> 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8146SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 DESC; 8147SELECT * FROM t3 WHERE c2 > 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8148SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 DESC; 8149SELECT * FROM t3 WHERE c2 >= 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8150SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 DESC; 8151SELECT * FROM t3 WHERE c2 < 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8152SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 DESC; 8153SELECT * FROM t3 WHERE c2 <= 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8154SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 DESC; 8155SELECT * FROM t3 WHERE c2 <=> 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8156SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC; 8157SELECT * FROM t3 WHERE c2 BETWEEN -9223372036854775809 AND 9223372036854775808 ORDER BY c2,c7 DESC LIMIT 2; 8158SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC; 8159SELECT * FROM t3 WHERE c2 IN (-9223372036854775809,9223372036854775808) ORDER BY c2,c7 DESC LIMIT 2; 8160SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC; 8161SELECT * FROM t3 WHERE c2 >= -9223372036854775809 AND c2 < 9223372036854775808 AND c7 = 35 ORDER BY c2,c7 DESC LIMIT 2; 8162SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC; 8163SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c2,c7 DESC LIMIT 2; 8164SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC; 8165SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c2,c7 DESC LIMIT 2; 8166DROP TABLE t1,t2,t3,t4,t5; 8167 8168