| Index: third_party/sqlite/src/test/subquery.test | 
| diff --git a/third_party/sqlite/src/test/subquery.test b/third_party/sqlite/src/test/subquery.test | 
| index 169cedace6e435d750b73b1a113e4959032ef5b0..93c3f28ddbb7e17f06cf406026f96acc808bfbcc 100644 | 
| --- a/third_party/sqlite/src/test/subquery.test | 
| +++ b/third_party/sqlite/src/test/subquery.test | 
| @@ -241,8 +241,11 @@ do_test subquery-2.5.3.1 { | 
| } {10.0} | 
| do_test subquery-2.5.3.2 { | 
| # Verify that the t4i index was not used in the previous query | 
| -  set ::sqlite_query_plan | 
| -} {t4 {}} | 
| +  execsql { | 
| +    EXPLAIN QUERY PLAN | 
| +    SELECT * FROM t4 WHERE x IN (SELECT a FROM t3); | 
| +  } | 
| +} {~/t4i/} | 
| do_test subquery-2.5.4 { | 
| execsql { | 
| DROP TABLE t3; | 
| @@ -331,12 +334,97 @@ do_test subquery-3.3.5 { | 
| } | 
| } {1 1 2 1} | 
|  | 
| +# The following tests check for aggregate subqueries in an aggregate | 
| +# query. | 
| +# | 
| +do_test subquery-3.4.1 { | 
| +  execsql { | 
| +    CREATE TABLE t34(x,y); | 
| +    INSERT INTO t34 VALUES(106,4), (107,3), (106,5), (107,5); | 
| +    SELECT a.x, avg(a.y) | 
| +      FROM t34 AS a | 
| +     GROUP BY a.x | 
| +     HAVING NOT EXISTS( SELECT b.x, avg(b.y) | 
| +                          FROM t34 AS b | 
| +                         GROUP BY b.x | 
| +                         HAVING avg(a.y) > avg(b.y)); | 
| +  } | 
| +} {107 4.0} | 
| +do_test subquery-3.4.2 { | 
| +  execsql { | 
| +    SELECT a.x, avg(a.y) AS avg1 | 
| +      FROM t34 AS a | 
| +     GROUP BY a.x | 
| +     HAVING NOT EXISTS( SELECT b.x, avg(b.y) AS avg2 | 
| +                          FROM t34 AS b | 
| +                         GROUP BY b.x | 
| +                         HAVING avg1 > avg2); | 
| +  } | 
| +} {107 4.0} | 
| +do_test subquery-3.4.3 { | 
| +  execsql { | 
| +    SELECT | 
| +       a.x, | 
| +       avg(a.y), | 
| +       NOT EXISTS ( SELECT b.x, avg(b.y) | 
| +                      FROM t34 AS b | 
| +                      GROUP BY b.x | 
| +                     HAVING avg(a.y) > avg(b.y)), | 
| +       EXISTS ( SELECT c.x, avg(c.y) | 
| +                  FROM t34 AS c | 
| +                  GROUP BY c.x | 
| +                 HAVING avg(a.y) > avg(c.y)) | 
| +      FROM t34 AS a | 
| +     GROUP BY a.x | 
| +     ORDER BY a.x; | 
| +  } | 
| +} {106 4.5 0 1 107 4.0 1 0} | 
| + | 
| +do_test subquery-3.5.1 { | 
| +  execsql { | 
| +    CREATE TABLE t35a(x); INSERT INTO t35a VALUES(1),(2),(3); | 
| +    CREATE TABLE t35b(y); INSERT INTO t35b VALUES(98), (99); | 
| +    SELECT max((SELECT avg(y) FROM t35b)) FROM t35a; | 
| +  } | 
| +} {98.5} | 
| +do_test subquery-3.5.2 { | 
| +  execsql { | 
| +    SELECT max((SELECT count(y) FROM t35b)) FROM t35a; | 
| +  } | 
| +} {2} | 
| +do_test subquery-3.5.3 { | 
| +  execsql { | 
| +    SELECT max((SELECT count() FROM t35b)) FROM t35a; | 
| +  } | 
| +} {2} | 
| +do_test subquery-3.5.4 { | 
| +  catchsql { | 
| +    SELECT max((SELECT count(x) FROM t35b)) FROM t35a; | 
| +  } | 
| +} {1 {misuse of aggregate: count()}} | 
| +do_test subquery-3.5.5 { | 
| +  catchsql { | 
| +    SELECT max((SELECT count(x) FROM t35b)) FROM t35a; | 
| +  } | 
| +} {1 {misuse of aggregate: count()}} | 
| +do_test subquery-3.5.6 { | 
| +  catchsql { | 
| +    SELECT max((SELECT a FROM (SELECT count(x) AS a FROM t35b))) FROM t35a; | 
| +  } | 
| +} {1 {misuse of aggregate: count()}} | 
| +do_test subquery-3.5.7 { | 
| +  execsql { | 
| +    SELECT max((SELECT a FROM (SELECT count(y) AS a FROM t35b))) FROM t35a; | 
| +  } | 
| +} {2} | 
| + | 
| + | 
| #------------------------------------------------------------------ | 
| # These tests - subquery-4.* - use the TCL statement cache to try | 
| # and expose bugs to do with re-using statements that have been | 
| # passed to sqlite3_reset(). | 
| # | 
| -# One problem was that VDBE memory cells were not being initialised | 
| +# One problem was that VDBE memory cells were not being initialized | 
| # to NULL on the second and subsequent executions. | 
| # | 
| do_test subquery-4.1.1 { | 
|  |