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 |