| Index: third_party/sqlite/src/test/where9.test
|
| diff --git a/third_party/sqlite/src/test/where9.test b/third_party/sqlite/src/test/where9.test
|
| index bf72a7169d37c221af85d196eeb0b50513e092e0..9a180116a83947fc9a2ccb44d5c0c9798b1d5509 100644
|
| --- a/third_party/sqlite/src/test/where9.test
|
| +++ b/third_party/sqlite/src/test/where9.test
|
| @@ -358,32 +358,25 @@ do_test where9-2.8 {
|
|
|
|
|
| ifcapable explain {
|
| - do_test where9-3.1 {
|
| - set r [db eval {
|
| - EXPLAIN QUERY PLAN
|
| - SELECT t2.a FROM t1, t2
|
| - WHERE t1.a=80
|
| - AND ((t1.c=t2.c AND t1.d=t2.d) OR t1.f=t2.f)
|
| - }]
|
| - set a [expr {[lsearch $r {TABLE t2 VIA MULTI-INDEX UNION}]>=0}]
|
| - set b [expr {[lsearch $r {TABLE t2 WITH INDEX t2f}]>=0}]
|
| - set c [expr {([lsearch $r {TABLE t2 WITH INDEX t2c}]>=0)+
|
| - [lsearch $r {TABLE t2 WITH INDEX t2d}]>=0}]
|
| - concat $a $b $c
|
| - } {1 1 1}
|
| - do_test where9-3.2 {
|
| - set r [db eval {
|
| - EXPLAIN QUERY PLAN
|
| - SELECT coalesce(t2.a,9999)
|
| - FROM t1 LEFT JOIN t2 ON (t1.c+1=t2.c AND t1.d=t2.d) OR (t1.f||'x')=t2.f
|
| - WHERE t1.a=80
|
| - }]
|
| - set a [expr {[lsearch $r {TABLE t2 VIA MULTI-INDEX UNION}]>=0}]
|
| - set b [expr {[lsearch $r {TABLE t2 WITH INDEX t2f}]>=0}]
|
| - set c [expr {([lsearch $r {TABLE t2 WITH INDEX t2c}]>=0)+
|
| - [lsearch $r {TABLE t2 WITH INDEX t2d}]>=0}]
|
| - concat $a $b $c
|
| - } {1 1 1}
|
| + do_execsql_test where9-3.1 {
|
| + EXPLAIN QUERY PLAN
|
| + SELECT t2.a FROM t1, t2
|
| + WHERE t1.a=80 AND ((t1.c=t2.c AND t1.d=t2.d) OR t1.f=t2.f)
|
| + } {
|
| + 0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
| + 0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?) (~2 rows)}
|
| + 0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?) (~10 rows)}
|
| + }
|
| + do_execsql_test where9-3.2 {
|
| + EXPLAIN QUERY PLAN
|
| + SELECT coalesce(t2.a,9999)
|
| + FROM t1 LEFT JOIN t2 ON (t1.c+1=t2.c AND t1.d=t2.d) OR (t1.f||'x')=t2.f
|
| + WHERE t1.a=80
|
| + } {
|
| + 0 0 0 {SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)}
|
| + 0 1 1 {SEARCH TABLE t2 USING INDEX t2d (d=?) (~2 rows)}
|
| + 0 1 1 {SEARCH TABLE t2 USING COVERING INDEX t2f (f=?) (~10 rows)}
|
| + }
|
| }
|
|
|
| # Make sure that INDEXED BY and multi-index OR clauses play well with
|
| @@ -458,46 +451,29 @@ ifcapable explain {
|
| # The (c=31031 OR d IS NULL) clause is preferred over b>1000 because
|
| # the former is an equality test which is expected to return fewer rows.
|
| #
|
| - do_test where9-5.1 {
|
| - set r [db eval {
|
| - EXPLAIN QUERY PLAN
|
| - SELECT a FROM t1
|
| - WHERE b>1000
|
| - AND (c=31031 OR d IS NULL)
|
| - }]
|
| - set a [expr {[lsearch $r {TABLE t1 VIA MULTI-INDEX UNION}]>=0}]
|
| - set b [expr {[lsearch $r {TABLE t1 WITH INDEX t1b}]>=0}]
|
| - concat $a $b
|
| - } {1 0}
|
| + do_execsql_test where9-5.1 {
|
| + EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b>1000 AND (c=31031 OR d IS NULL)
|
| + } {
|
| + 0 0 0 {SEARCH TABLE t1 USING INDEX t1c (c=?) (~10 rows)}
|
| + 0 0 0 {SEARCH TABLE t1 USING INDEX t1d (d=?) (~10 rows)}
|
| + }
|
|
|
| # In contrast, b=1000 is preferred over any OR-clause.
|
| #
|
| - do_test where9-5.2 {
|
| - set r [db eval {
|
| - EXPLAIN QUERY PLAN
|
| - SELECT a FROM t1
|
| - WHERE b=1000
|
| - AND (c=31031 OR d IS NULL)
|
| - }]
|
| - set a [expr {[lsearch $r {TABLE t1 VIA MULTI-INDEX UNION}]>=0}]
|
| - set b [expr {[lsearch $r {TABLE t1 WITH INDEX t1b}]>=0}]
|
| - concat $a $b
|
| - } {0 1}
|
| + do_execsql_test where9-5.2 {
|
| + EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b=1000 AND (c=31031 OR d IS NULL)
|
| + } {
|
| + 0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b=?) (~5 rows)}
|
| + }
|
|
|
| # Likewise, inequalities in an AND are preferred over inequalities in
|
| # an OR.
|
| #
|
| - do_test where9-5.3 {
|
| - set r [db eval {
|
| - EXPLAIN QUERY PLAN
|
| - SELECT a FROM t1
|
| - WHERE b>1000
|
| - AND (c>=31031 OR d IS NULL)
|
| - }]
|
| - set a [expr {[lsearch $r {TABLE t1 VIA MULTI-INDEX UNION}]>=0}]
|
| - set b [expr {[lsearch $r {TABLE t1 WITH INDEX t1b}]>=0}]
|
| - concat $a $b
|
| - } {0 1}
|
| + do_execsql_test where9-5.3 {
|
| + EXPLAIN QUERY PLAN SELECT a FROM t1 WHERE b>1000 AND (c>=31031 OR d IS NULL)
|
| + } {
|
| + 0 0 0 {SEARCH TABLE t1 USING INDEX t1b (b>?) (~125000 rows)}
|
| + }
|
| }
|
|
|
| ############################################################################
|
|
|