| Index: third_party/sqlite/src/test/where8.test | 
| diff --git a/third_party/sqlite/src/test/where8.test b/third_party/sqlite/src/test/where8.test | 
| index a7d5edb3fd4ddea0fd2b490b3babfba0a7c4b7d0..139251aa0729fca54adb348248ae451cb2190dd8 100644 | 
| --- a/third_party/sqlite/src/test/where8.test | 
| +++ b/third_party/sqlite/src/test/where8.test | 
| @@ -12,7 +12,6 @@ | 
| # is testing of where.c. More specifically, the focus is the optimization | 
| # of WHERE clauses that feature the OR operator. | 
| # | 
| -# $Id: where8.test,v 1.9 2009/07/31 06:14:52 danielk1977 Exp $ | 
|  | 
| set testdir [file dirname $argv0] | 
| source $testdir/tester.tcl | 
| @@ -88,13 +87,13 @@ do_test where8-1.8 { | 
|  | 
| do_test where8-1.9 { | 
| execsql_status2 { SELECT c FROM t1 WHERE a >= 9 OR b <= 'eight' } | 
| -} {IX X VIII 0 0 6} | 
| +} {IX X VIII 0 0 7} | 
|  | 
| do_test where8-1.10 { | 
| execsql_status2 { | 
| SELECT c FROM t1 WHERE (a >= 9 AND c != 'X') OR b <= 'eight' | 
| } | 
| -} {IX VIII 0 0 6} | 
| +} {IX VIII 0 0 7} | 
|  | 
| do_test where8-1.11 { | 
| execsql_status2 { | 
| @@ -211,9 +210,10 @@ do_test where8-3.4 { | 
|  | 
| do_test where8-3.5 { | 
| execsql_status { | 
| -    SELECT a, d FROM t1, t2 WHERE (a = 2 OR a = 3) AND (d = a OR e = 'sixteen') | 
| +    SELECT a, d FROM t1, t2 WHERE (a = 2 OR a = 3) AND (d = +a OR e = 'sixteen') | 
| +     ORDER BY +a, +d; | 
| } | 
| -} {2 2 2 4 3 3 3 4 0 0} | 
| +} {2 2 2 4 3 3 3 4 0 1} | 
|  | 
| do_test where8-3.6 { | 
| # The first part of the WHERE clause in this query, (a=2 OR a=3) is | 
| @@ -222,7 +222,7 @@ do_test where8-3.6 { | 
| execsql_status { | 
| SELECT a, d | 
| FROM t1, t2 | 
| -    WHERE (a = 2 OR a = 3) AND (d = a OR e = 'sixteen') | 
| +    WHERE (a = 2 OR a = 3) AND (d = +a OR e = 'sixteen') | 
| ORDER BY t1.rowid | 
| } | 
| } {2 2 2 4 3 3 3 4 0 1} | 
| @@ -233,7 +233,7 @@ do_test where8-3.7 { | 
| WHERE a = 2 AND (d = a OR e = 'sixteen') | 
| ORDER BY t1.rowid | 
| } | 
| -} {2 2 2 4 0 0} | 
| +} {/2 2 2 4 0 [01]/} | 
| do_test where8-3.8 { | 
| execsql_status { | 
| SELECT a, d | 
| @@ -268,7 +268,7 @@ do_test where8-3.12 { | 
| execsql_status { | 
| SELECT a, d FROM t1, t2 WHERE (a=d OR b=e) AND +a<5 ORDER BY a | 
| } | 
| -} {1 1 2 2 3 3 4 2 4 4 0 0} | 
| +} {1 1 2 2 3 3 4 2 4 4 9 0} | 
| do_test where8-3.13 { | 
| execsql_status { | 
| SELECT a, d FROM t1, t2 WHERE (a=d OR b=e) AND +a<5 | 
| @@ -290,6 +290,38 @@ do_test where8-3.15 { | 
| } | 
| } {I I I I I I I I I I II II II II II II II II II II III III III III III 9 1} | 
|  | 
| + | 
| +do_test where8-3.21 { | 
| +  execsql_status { | 
| +    SELECT a, d FROM t1, (t2) WHERE (a=d OR b=e) AND a<5 ORDER BY a | 
| +  } | 
| +} {1 1 2 2 3 3 4 2 4 4 0 0} | 
| +do_test where8-3.21.1 { | 
| +  execsql_status { | 
| +    SELECT a, d FROM t1, ((t2)) AS t3 WHERE (a=d OR b=e) AND a<5 ORDER BY a | 
| +  } | 
| +} {1 1 2 2 3 3 4 2 4 4 0 0} | 
| +if {[permutation] != "no_optimization"} { | 
| +do_test where8-3.21.2 { | 
| +  execsql_status { | 
| +    SELECT a, d FROM t1, ((SELECT * FROM t2)) AS t3 WHERE (a=d OR b=e) AND a<5 ORDER BY a | 
| +  } | 
| +} {1 1 2 2 3 3 4 2 4 4 0 0} | 
| +} | 
| +do_test where8-3.22 { | 
| +  execsql_status { | 
| +    SELECT a, d FROM ((((((t1))), (((t2)))))) | 
| +     WHERE (a=d OR b=e) AND a<5 ORDER BY a | 
| +  } | 
| +} {1 1 2 2 3 3 4 2 4 4 0 0} | 
| +if {[permutation] != "no_optimization"} { | 
| +do_test where8-3.23 { | 
| +  execsql_status { | 
| +    SELECT * FROM ((SELECT * FROM t2)) AS t3; | 
| +  } | 
| +} {1 {} I 2 four IV 3 {} IX 4 sixteen XVI 5 {} XXV 6 thirtysix XXXVI 7 fortynine XLIX 8 sixtyeight LXIV 9 eightyone LXXXIX 10 {} C 9 0} | 
| +} | 
| + | 
| #----------------------------------------------------------------------- | 
| # The following tests - where8-4.* - verify that adding or removing | 
| # indexes does not change the results returned by various queries. | 
| @@ -716,4 +748,13 @@ do_test where8-5.3 { | 
| } | 
| } {1 {}} | 
|  | 
| +# The OR optimization and WITHOUT ROWID | 
| +# | 
| +do_execsql_test where8-6.1 { | 
| +  CREATE TABLE t600(a PRIMARY KEY, b) WITHOUT rowid; | 
| +  CREATE INDEX t600b ON t600(b); | 
| +  INSERT INTO t600 VALUES('state','screen'),('exact','dolphin'),('green','mercury'); | 
| +  SELECT a, b, '|' FROM t600 WHERE a=='state' OR b='mercury' ORDER BY +a; | 
| +} {green mercury | state screen |} | 
| + | 
| finish_test | 
|  |