-C Add\sa\smissing\sVdbeCoverage()\smacro.
-D 2019-09-25T18:44:49.609
+C Fix\sa\swindow-functions\sproblem\sthat\scould\soccur\sif\san\sORDER\sBY\sclause\scontains\san\salias\sfor\sa\swindow-function\sthat\sis\snot\sa\stop-level\sexpression.
+D 2019-09-26T15:53:37.561
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F src/prepare.c 132484635a30f873ee7eccd47f93ed1932503863b93b28423b42332d81adffaf
F src/printf.c 9be6945837c839ba57837b4bc3af349eba630920fa5532aa518816defe42a7d4
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
-F src/resolve.c 9891cf5fd155bb199f8b1ff5d1429b9f70484487f4c455bba94348d4cb6f829f
+F src/resolve.c 458fb2b024643e0b6393845386aca687de7a84264b8d709fb31df8a72709cbeb
F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93
F src/select.c f509982c96bb24ccf57a0155fbe1e6184e0b8fb8866a04397dc41baa400e5240
F src/shell.c.in 68698630c21c5489fb3dc961a3ab3840e726c3c01e475dab96055788a7b6e5e6
F test/fallocate.test 37a62e396a68eeede8f8d2ecf23573a80faceb630788d314d0a073d862616717
F test/filectrl.test 6e871c2d35dead1d9a88e176e8d2ca094fec6bb3
F test/filefmt.test f393e80c4b8d493b7a7f8f3809a8425bbf4292af1f5140f01cb1427798a2bbd4
-F test/filter1.test f0ee87b2adf6a90aa81456f20a0b097bb75ed3f6bdcf641fe103cc797dd109b9
+F test/filter1.test c2f34e58ee82a60c3ee9b5b4c4f2004ec2f529dff2f473706eeffa684cbb6719
F test/filter2.tcl 44e525497ce07382915f01bd29ffd0fa49dab3adb87253b5e5103ba8f93393e8
F test/filter2.test 485cf95d1f6d6ceee5632201ca52a71868599836f430cdee42e5f7f14666e30a
F test/filterfault.test c08fb491d698e8df6c122c98f7db1c65ffcfcad2c1ab0e07fa8a5be1b34eaa8b
F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
F test/window1.test 376a7c9c5b9df9868d92a6d9d455262e1b769f4410b19006f5f8c5507c2a7ed7
-F test/window2.tcl a44834af6267be6e14882311ef8790bf5047f1b9bc25685ee1762d48dc24f1e7
-F test/window2.test 2f3ae63e171dce7f2ac29a41020f4da413b1d7bdaba48ee124fd336b152e34c5
+F test/window2.tcl 66db96fd9fd202bc31ee7f8ce7904cb469564864cff3f74e009bfef8102333f4
+F test/window2.test af2a001ded703bb8f2474fb0edfef170d5aba00f5c1f2aa9f65935b5da13df90
F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03
F test/window3.test e9959a993c8a71e96433be8daaa1827d78b8921e4f12debd7bdbeb3c856ef3cb
F test/window4.tcl d732df0e81beedc0ba8a563ade68611d322d27303ad0c0c8e4444107c39e84ec
F test/window7.test 1d31276961ae7801edc72173edaf7593e3cbc79c06d1f1f09e20d8418af403cd
F test/window8.tcl f2711aa3571e4e6b0dad98db8d95fd6cb8d9db0c92bbdf535f153b07606a1ce2
F test/window8.test c4331b27a6f66d69fa8f8bab10cc731db1a81d293ae108a68f7c3487fa94e65b
-F test/window9.test 20a6b590be718b6bc98a5356d4396d6cdf19329c547da084fa225b92d68e1693
+F test/window9.test ae8be07be05a5a4c8ead1818ac5d45f278b8dd456e589d67f24270b0070c35a0
F test/windowA.test 6d63dc1260daa17141a55007600581778523a8b420629f1282d2acfc36af23be
F test/windowB.test 7a983ea1cc1cf72be7f378e4b32f6cb2d73014c5cd8b25aaee825164cd4269e5
F test/windowerr.tcl f5acd6fbc210d7b5546c0e879d157888455cd4a17a1d3f28f07c1c8a387019e0
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P a19884455b9bafcdc769362d61cfd02df1b5643263e004cb533698bbcfca752b
-R 19711e15e7722019f82536f601716d02
-U drh
-Z 577559de451edfb4decadf2550348c8d
+P 36d35dbd5a80dc4a149ed7409cc4b43712622fc4c6a8915b4fbb62fd1d6b7763
+R 65ee3f533ee28e9e60f85f94c4e77594
+U dan
+Z ab678b06e2dc401b849d5e844b6637fe
-36d35dbd5a80dc4a149ed7409cc4b43712622fc4c6a8915b4fbb62fd1d6b7763
\ No newline at end of file
+1cc6cf6407c6e25aeafeca379a93d0ad2614839c07fb3644e46926fce5f1cfab
\ No newline at end of file
pExpr->u.zToken = sqlite3DbStrDup(db, pExpr->u.zToken);
pExpr->flags |= EP_MemToken;
}
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ pExpr->y.pWin->pOwner = pExpr;
+ }
sqlite3DbFree(db, pDup);
}
ExprSetProperty(pExpr, EP_Alias);
SELECT a, c, max(b) FILTER (WHERE c='x') FROM t2 GROUP BY a;
} {1 x 5 2 6 {}}
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 4.0 {
+ CREATE TABLE t1(a, b, c);
+ INSERT INTO t1 VALUES('a', 0, 5);
+ INSERT INTO t1 VALUES('a', 1, 10);
+ INSERT INTO t1 VALUES('a', 0, 15);
+
+ INSERT INTO t1 VALUES('b', 0, 5);
+ INSERT INTO t1 VALUES('b', 1, 1000);
+ INSERT INTO t1 VALUES('b', 0, 5);
+
+ INSERT INTO t1 VALUES('c', 0, 1);
+ INSERT INTO t1 VALUES('c', 1, 2);
+ INSERT INTO t1 VALUES('c', 0, 3);
+}
+
+do_execsql_test 4.1 {
+ SELECT avg(c) FILTER (WHERE b!=1) AS h FROM t1 GROUP BY a ORDER BY h;
+} {2.0 5.0 10.0}
+do_execsql_test 4.2 {
+ SELECT avg(c) FILTER (WHERE b!=1) AS h FROM t1 GROUP BY a ORDER BY (h+1.0);
+} {2.0 5.0 10.0}
+do_execsql_test 4.3 {
+ SELECT a, avg(c) FILTER (WHERE b!=1) AS h FROM t1 GROUP BY a ORDER BY avg(c);
+} {c 2.0 a 10.0 b 5.0}
+do_execsql_test 4.4 {
+ SELECT a, avg(c) FILTER (WHERE b!=1) FROM t1 GROUP BY a ORDER BY 2
+} {c 2.0 b 5.0 a 10.0}
+
finish_test
+
SELECT count(distinct a) FILTER (WHERE b='odd') FROM t1
}
+==========
+
+execsql_test 5.0 {
+ DROP TABLE IF EXISTS t1;
+ CREATE TABLE t1(x INTEGER, y INTEGER);
+ INSERT INTO t1 VALUES(10, 1);
+ INSERT INTO t1 VALUES(20, 2);
+ INSERT INTO t1 VALUES(3, 3);
+ INSERT INTO t1 VALUES(2, 4);
+ INSERT INTO t1 VALUES(1, 5);
+}
+
+execsql_float_test 5.1 {
+ SELECT avg(x) OVER (ORDER BY y) AS z FROM t1 ORDER BY z;
+}
finish_test
SELECT count(distinct a) FILTER (WHERE b='odd') FROM t1
} {3}
+#==========================================================================
+
+do_execsql_test 5.0 {
+ DROP TABLE IF EXISTS t1;
+ CREATE TABLE t1(x INTEGER, y INTEGER);
+ INSERT INTO t1 VALUES(10, 1);
+ INSERT INTO t1 VALUES(20, 2);
+ INSERT INTO t1 VALUES(3, 3);
+ INSERT INTO t1 VALUES(2, 4);
+ INSERT INTO t1 VALUES(1, 5);
+} {}
+
+
+do_test 5.1 {
+ set myres {}
+ foreach r [db eval {SELECT avg(x) OVER (ORDER BY y) AS z FROM t1 ORDER BY z;}] {
+ lappend myres [format %.4f [set r]]
+ }
+ set res2 {7.2000 8.7500 10.0000 11.0000 15.0000}
+ set i 0
+ foreach r [set myres] r2 [set res2] {
+ if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} {
+ error "list element [set i] does not match: got=[set r] expected=[set r2]"
+ }
+ incr i
+ }
+ set {} {}
+} {}
+
finish_test
BETWEEN 1 AND 1;
} {0}
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 7.0 {
+ DROP TABLE IF EXISTS t1;
+ CREATE TABLE t1(x, y);
+ INSERT INTO t1 VALUES(10, 1);
+ INSERT INTO t1 VALUES(20, 2);
+ INSERT INTO t1 VALUES(3, 3);
+ INSERT INTO t1 VALUES(2, 4);
+ INSERT INTO t1 VALUES(1, 5);
+} {}
+
+
+do_execsql_test 7.1 {
+ SELECT avg(x) OVER (ORDER BY y) AS z FROM t1 ORDER BY z
+} {
+ 7.2 8.75 10.0 11.0 15.0
+}
+
+do_execsql_test 7.2 {
+ SELECT avg(x) OVER (ORDER BY y) z FROM t1 ORDER BY (z IS y);
+} {
+ 10.0 15.0 11.0 8.75 7.2
+}
+
+do_execsql_test 7.3 {
+ SELECT avg(x) OVER (ORDER BY y) z FROM t1 ORDER BY (y IS z);
+} {
+ 10.0 15.0 11.0 8.75 7.2
+}
+
+do_execsql_test 7.4 {
+ SELECT avg(x) OVER (ORDER BY y) z FROM t1 ORDER BY z + 0.0;
+} {
+ 7.2 8.75 10.0 11.0 15.0
+}
finish_test
+