| OLD | NEW |
| 1 # 2008 June 24 | 1 # 2008 June 24 |
| 2 # | 2 # |
| 3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
| 4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
| 5 # | 5 # |
| 6 # May you do good and not evil. | 6 # May you do good and not evil. |
| 7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
| 8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
| 9 # | 9 # |
| 10 #*********************************************************************** | 10 #*********************************************************************** |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 # } {2 4 3 6 8 10 12 15 14 16 21 24} | 187 # } {2 4 3 6 8 10 12 15 14 16 21 24} |
| 188 } | 188 } |
| 189 | 189 |
| 190 do_test selectB-3.0 { | 190 do_test selectB-3.0 { |
| 191 execsql { | 191 execsql { |
| 192 DROP INDEX i1; | 192 DROP INDEX i1; |
| 193 DROP INDEX i2; | 193 DROP INDEX i2; |
| 194 } | 194 } |
| 195 } {} | 195 } {} |
| 196 | 196 |
| 197 for {set ii 3} {$ii <= 4} {incr ii} { | 197 for {set ii 3} {$ii <= 6} {incr ii} { |
| 198 | 198 |
| 199 if {$ii == 4} { | 199 switch $ii { |
| 200 do_test selectB-4.0 { | 200 4 { |
| 201 execsql { | 201 optimization_control db query-flattener off |
| 202 CREATE INDEX i1 ON t1(a); | 202 } |
| 203 CREATE INDEX i2 ON t1(b); | 203 5 { |
| 204 CREATE INDEX i3 ON t1(c); | 204 optimization_control db query-flattener on |
| 205 CREATE INDEX i4 ON t2(d); | 205 do_test selectB-5.0 { |
| 206 CREATE INDEX i5 ON t2(e); | 206 execsql { |
| 207 CREATE INDEX i6 ON t2(f); | 207 CREATE INDEX i1 ON t1(a); |
| 208 } | 208 CREATE INDEX i2 ON t1(b); |
| 209 } {} | 209 CREATE INDEX i3 ON t1(c); |
| 210 CREATE INDEX i4 ON t2(d); |
| 211 CREATE INDEX i5 ON t2(e); |
| 212 CREATE INDEX i6 ON t2(f); |
| 213 } |
| 214 } {} |
| 215 } |
| 216 6 { |
| 217 optimization_control db query-flattener off |
| 218 } |
| 210 } | 219 } |
| 211 | 220 |
| 212 do_test selectB-$ii.1 { | 221 do_test selectB-$ii.1 { |
| 213 execsql { | 222 execsql { |
| 214 SELECT DISTINCT * FROM | 223 SELECT DISTINCT * FROM |
| 215 (SELECT c FROM t1 UNION ALL SELECT e FROM t2) | 224 (SELECT c FROM t1 UNION ALL SELECT e FROM t2) |
| 216 ORDER BY 1; | 225 ORDER BY 1; |
| 217 } | 226 } |
| 218 } {6 12 15 18 24} | 227 } {6 12 15 18 24} |
| 219 | 228 |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 ) LIMIT 2 | 357 ) LIMIT 2 |
| 349 } | 358 } |
| 350 } {14 3} | 359 } {14 3} |
| 351 | 360 |
| 352 do_test selectB-$ii.19 { | 361 do_test selectB-$ii.19 { |
| 353 execsql { | 362 execsql { |
| 354 SELECT * FROM ( | 363 SELECT * FROM ( |
| 355 SELECT DISTINCT (a/10) FROM t1 UNION ALL SELECT DISTINCT(d%2) FROM t2 | 364 SELECT DISTINCT (a/10) FROM t1 UNION ALL SELECT DISTINCT(d%2) FROM t2 |
| 356 ) | 365 ) |
| 357 } | 366 } |
| 358 } {0 1 0 1} | 367 } {0 1 1 0} |
| 359 | 368 |
| 360 do_test selectB-$ii.20 { | 369 do_test selectB-$ii.20 { |
| 361 execsql { | 370 execsql { |
| 362 SELECT DISTINCT * FROM ( | 371 SELECT DISTINCT * FROM ( |
| 363 SELECT DISTINCT (a/10) FROM t1 UNION ALL SELECT DISTINCT(d%2) FROM t2 | 372 SELECT DISTINCT (a/10) FROM t1 UNION ALL SELECT DISTINCT(d%2) FROM t2 |
| 364 ) | 373 ) |
| 365 } | 374 } |
| 366 } {0 1} | 375 } {0 1} |
| 367 | 376 |
| 368 do_test selectB-$ii.21 { | 377 do_test selectB-$ii.21 { |
| 369 execsql { | 378 execsql { |
| 370 SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2) ORDER BY a+b | 379 SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2) ORDER BY a+b |
| 371 } | 380 } |
| 372 } {2 4 6 3 6 9 8 10 12 12 15 18 14 16 18 21 24 27} | 381 } {2 4 6 3 6 9 8 10 12 12 15 18 14 16 18 21 24 27} |
| 373 | 382 |
| 374 do_test selectB-$ii.21 { | 383 do_test selectB-$ii.22 { |
| 375 execsql { | 384 execsql { |
| 376 SELECT * FROM (SELECT 345 UNION ALL SELECT d FROM t2) ORDER BY 1; | 385 SELECT * FROM (SELECT 345 UNION ALL SELECT d FROM t2) ORDER BY 1; |
| 377 } | 386 } |
| 378 } {3 12 21 345} | 387 } {3 12 21 345} |
| 388 |
| 389 do_test selectB-$ii.23 { |
| 390 execsql { |
| 391 SELECT x, y FROM ( |
| 392 SELECT a AS x, b AS y FROM t1 |
| 393 UNION ALL |
| 394 SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 JOIN t2 ON (c=d) |
| 395 UNION ALL |
| 396 SELECT a*100, b*100 FROM t1 |
| 397 ) ORDER BY 1; |
| 398 } |
| 399 } {2 4 8 10 14 16 80.1 180.1 200 400 800 1000 1400 1600} |
| 400 |
| 401 do_test selectB-$ii.24 { |
| 402 execsql { |
| 403 SELECT x, y FROM ( |
| 404 SELECT a AS x, b AS y FROM t1 |
| 405 UNION ALL |
| 406 SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 LEFT JOIN t2 ON (c=d) |
| 407 UNION ALL |
| 408 SELECT a*100, b*100 FROM t1 |
| 409 ) ORDER BY 1; |
| 410 } |
| 411 } {2 4 8 10 14 16 20.1 {} 80.1 180.1 140.1 {} 200 400 800 1000 1400 1600} |
| 412 |
| 413 do_test selectB-$ii.25 { |
| 414 execsql { |
| 415 SELECT x+y FROM ( |
| 416 SELECT a AS x, b AS y FROM t1 |
| 417 UNION ALL |
| 418 SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 LEFT JOIN t2 ON (c=d) |
| 419 UNION ALL |
| 420 SELECT a*100, b*100 FROM t1 |
| 421 ) WHERE y+x NOT NULL ORDER BY 1; |
| 422 } |
| 423 } {6 18 30 260.2 600 1800 3000} |
| 379 } | 424 } |
| 380 | 425 |
| 381 finish_test | 426 finish_test |
| OLD | NEW |