| Index: third_party/sqlite/src/test/selectB.test | 
| diff --git a/third_party/sqlite/src/test/selectB.test b/third_party/sqlite/src/test/selectB.test | 
| index 3fdf85c0f9fc92b47b02bb2215b55b22702db470..05ec9c6bdb0f5fc96b13444b612354f80086a3eb 100644 | 
| --- a/third_party/sqlite/src/test/selectB.test | 
| +++ b/third_party/sqlite/src/test/selectB.test | 
| @@ -194,19 +194,28 @@ do_test selectB-3.0 { | 
| } | 
| } {} | 
|  | 
| -for {set ii 3} {$ii <= 4} {incr ii} { | 
| +for {set ii 3} {$ii <= 6} {incr ii} { | 
|  | 
| -  if {$ii == 4} { | 
| -    do_test selectB-4.0 { | 
| -      execsql { | 
| -        CREATE INDEX i1 ON t1(a); | 
| -        CREATE INDEX i2 ON t1(b); | 
| -        CREATE INDEX i3 ON t1(c); | 
| -        CREATE INDEX i4 ON t2(d); | 
| -        CREATE INDEX i5 ON t2(e); | 
| -        CREATE INDEX i6 ON t2(f); | 
| -      } | 
| -    } {} | 
| +  switch $ii { | 
| +    4 { | 
| +      optimization_control db query-flattener off | 
| +    } | 
| +    5 { | 
| +      optimization_control db query-flattener on | 
| +      do_test selectB-5.0 { | 
| +        execsql { | 
| +          CREATE INDEX i1 ON t1(a); | 
| +          CREATE INDEX i2 ON t1(b); | 
| +          CREATE INDEX i3 ON t1(c); | 
| +          CREATE INDEX i4 ON t2(d); | 
| +          CREATE INDEX i5 ON t2(e); | 
| +          CREATE INDEX i6 ON t2(f); | 
| +        } | 
| +      } {} | 
| +    } | 
| +    6 { | 
| +      optimization_control db query-flattener off | 
| +    } | 
| } | 
|  | 
| do_test selectB-$ii.1 { | 
| @@ -355,7 +364,7 @@ for {set ii 3} {$ii <= 4} {incr ii} { | 
| SELECT DISTINCT (a/10) FROM t1 UNION ALL SELECT DISTINCT(d%2) FROM t2 | 
| ) | 
| } | 
| -  } {0 1 0 1} | 
| +  } {0 1 1 0} | 
|  | 
| do_test selectB-$ii.20 { | 
| execsql { | 
| @@ -371,11 +380,47 @@ for {set ii 3} {$ii <= 4} {incr ii} { | 
| } | 
| } {2 4 6 3 6 9 8 10 12 12 15 18 14 16 18 21 24 27} | 
|  | 
| -  do_test selectB-$ii.21 { | 
| +  do_test selectB-$ii.22 { | 
| execsql { | 
| SELECT * FROM (SELECT 345 UNION ALL SELECT d FROM t2) ORDER BY 1; | 
| } | 
| } {3 12 21 345} | 
| + | 
| +  do_test selectB-$ii.23 { | 
| +    execsql { | 
| +      SELECT x, y FROM ( | 
| +        SELECT a AS x, b AS y FROM t1 | 
| +        UNION ALL | 
| +        SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 JOIN t2 ON (c=d) | 
| +        UNION ALL | 
| +        SELECT a*100, b*100 FROM t1 | 
| +      ) ORDER BY 1; | 
| +    } | 
| +  } {2 4 8 10 14 16 80.1 180.1 200 400 800 1000 1400 1600} | 
| + | 
| +  do_test selectB-$ii.24 { | 
| +    execsql { | 
| +      SELECT x, y FROM ( | 
| +        SELECT a AS x, b AS y FROM t1 | 
| +        UNION ALL | 
| +        SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 LEFT JOIN t2 ON (c=d) | 
| +        UNION ALL | 
| +        SELECT a*100, b*100 FROM t1 | 
| +      ) ORDER BY 1; | 
| +    } | 
| +  } {2 4 8 10 14 16 20.1 {} 80.1 180.1 140.1 {} 200 400 800 1000 1400 1600} | 
| + | 
| +  do_test selectB-$ii.25 { | 
| +    execsql { | 
| +      SELECT x+y FROM ( | 
| +        SELECT a AS x, b AS y FROM t1 | 
| +        UNION ALL | 
| +        SELECT a*10 + 0.1, f*10 + 0.1 FROM t1 LEFT JOIN t2 ON (c=d) | 
| +        UNION ALL | 
| +        SELECT a*100, b*100 FROM t1 | 
| +      ) WHERE y+x NOT NULL ORDER BY 1; | 
| +    } | 
| +  } {6 18 30 260.2 600 1800 3000} | 
| } | 
|  | 
| finish_test | 
|  |