-C Version\s3.25.1
-D 2018-09-18T20:20:44.430
+C Fix\sa\sproblem\swith\sviews\sthat\suse\swindow\sfunctions\sas\spart\sof\scomplex\sexpressions.
+D 2018-09-24T18:29:21.187
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 6b650013511fd9d8b094203ac268af9220d292cc7d4e1bc9fbca15aacd8c7995
F src/dbpage.c 4aa7f26198934dbd002e69418220eae3dbc71b010bbac32bd78faf86b52ce6c3
F src/dbstat.c edabb82611143727511a45ca0859b8cd037851ebe756ae3db289859dd18b6f91
F src/delete.c 107e28d3ef8bd72fd11953374ca9107cd74e8b09c3ded076a6048742d26ce7d2
-F src/expr.c 92dc4e104b06d06ffeacbd1a4dc0a520daf37f6156278fb6ece5e90e2ca6b610
+F src/expr.c dad286e9fe4ffa9cc2dcbac069a3d8e1afa476d9ce58039a77e620aa64a6cfd6
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c f59253c0be4b1e9dfcb073b6d6d6ab83090ae50c08b5c113b76013c4b157cd6a
F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f
F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e
F test/window3.tcl 577a3b1ff913208e5248c04dab9df17fd760ce159a752789e26d0cb4a5f91823
F test/window3.test e274b7f8952ca4ed25996e0e45c047192b066e0aaff2a822d4293c8c4f1d8d98
-F test/window4.tcl 871364059b7d320d556ec6ef804d604a4e8cc1547a3102c5d56067371bb200af
-F test/window4.test 323b118eb592932036388643ca6dcaead87f699bbea2984bbca49ba4ad6c2509
+F test/window4.tcl 511425f6b0abf9b953df54cc9c7295cc7c25d78f4ed6f7a74b094eec0120eccb
+F test/window4.test c5d6bf3403e4ade2f19df2afe4c16f29fb817c392c6c1c8017edb7165c191a62
F test/window5.test 8187f46597c90b73e8f96659e893353cbda337479cc582f7a488eab351ba08d3
F test/window6.test 7574778c79cae89f1781df237bf9ff5063886deca91a36efc53934315f0e7612
F test/windowfault.test 23abad97b72c6f609002255ddd41ef5c8922408f918f9b98ad6005ab316e482f
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 36c75fd5b7cddb48be74f4f86fafe588b3e597a80d226eeb43b77cbd3817572e
-R 2da4c97a76733b95f6b50be3bc80d148
-T +bgcolor * #d0c0ff
-T +sym-release *
-T +sym-version-3.25.1 *
+P 2ac9003de44da7dafa3fbb1915ac5725a9275c86bf2f3b7aa19321bf1460b386
+Q +507d892c3a40a0bacbd47ed3c4fe2d8925a82716ae08da8401750a42782ba454
+R e4ae37cb413315ed71fa9fb13da95721
U drh
-Z 021b437e4298407ebbfd74f9f32f7614
+Z 4419e50a781fbc54a0cdc0eebeaebd26
-2ac9003de44da7dafa3fbb1915ac5725a9275c86bf2f3b7aa19321bf1460b386
\ No newline at end of file
+1c0ecbbdf1f309feaca747230d8925e61ddc6049a46c1dbbac7344bb933ab5e3
\ No newline at end of file
}
/* Fill in pNew->pLeft and pNew->pRight. */
+ zAlloc += dupedExprNodeSize(p, dupFlags);
if( ExprHasProperty(pNew, EP_Reduced|EP_TokenOnly) ){
- zAlloc += dupedExprNodeSize(p, dupFlags);
if( !ExprHasProperty(pNew, EP_TokenOnly|EP_Leaf) ){
pNew->pLeft = p->pLeft ?
exprDup(db, p->pLeft, EXPRDUP_REDUCE, &zAlloc) : 0;
pNew->pRight = p->pRight ?
exprDup(db, p->pRight, EXPRDUP_REDUCE, &zAlloc) : 0;
}
- if( pzBuffer ){
- *pzBuffer = zAlloc;
- }
}else{
#ifndef SQLITE_OMIT_WINDOWFUNC
if( ExprHasProperty(p, EP_Reduced|EP_TokenOnly) ){
pNew->pRight = sqlite3ExprDup(db, p->pRight, 0);
}
}
+ if( pzBuffer ){
+ *pzBuffer = zAlloc;
+ }
}
return pNew;
}
SELECT id, lag(b, -1) OVER (PARTITION BY a ORDER BY id) FROM t7;
}
+execsql_test 11.0 {
+ DROP VIEW IF EXISTS v8;
+ DROP TABLE IF EXISTS t8;
+ CREATE TABLE t8(t INT, total INT);
+ INSERT INTO t8 VALUES(0,2);
+ INSERT INTO t8 VALUES(5,1);
+ INSERT INTO t8 VALUES(10,1);
+}
+
+execsql_test 11.1 {
+ SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
+}
+
+execsql_test 11.2 {
+ CREATE VIEW v8 AS SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
+}
+
+execsql_test 11.3 {
+ SELECT * FROM v8;
+}
+
+execsql_test 11.4 {
+ SELECT * FROM (
+ SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8
+ ) sub;
+}
finish_test
SELECT dense_rank() OVER (PARTITION BY x) FROM t2
} {1 1 1 1 1 1 1}
+
do_test 9.3 {
set myres {}
foreach r [db eval {SELECT x, percent_rank() OVER (PARTITION BY x ORDER BY x) FROM t2}] {
- lappend myres [format %.2f [set r]]
+ lappend myres [format %.4f [set r]]
+ }
+ set res2 {1.0000 0.0000 1.0000 0.0000 1.0000 0.0000 4.0000 0.0000 4.0000 0.0000 6.0000 0.0000 7.0000 0.0000}
+ 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]"
+ }
}
- set myres
-} {1.00 0.00 1.00 0.00 1.00 0.00 4.00 0.00 4.00 0.00 6.00 0.00 7.00 0.00}
+ set {} {}
+} {}
do_execsql_test 9.4 {
SELECT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
SELECT DISTINCT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
} {1 1 4 4 6 6 7 7}
+
do_test 9.6 {
set myres {}
foreach r [db eval {SELECT percent_rank() OVER () FROM t1}] {
- lappend myres [format %.2f [set r]]
+ lappend myres [format %.4f [set r]]
}
- set myres
-} {0.00 0.00 0.00}
+ set res2 {0.0000 0.0000 0.0000}
+ 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]"
+ }
+ }
+ set {} {}
+} {}
+
do_test 9.7 {
set myres {}
foreach r [db eval {SELECT cume_dist() OVER () FROM t1}] {
- lappend myres [format %.2f [set r]]
+ lappend myres [format %.4f [set r]]
+ }
+ set res2 {1.0000 1.0000 1.0000}
+ 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]"
+ }
}
- set myres
-} {1.00 1.00 1.00}
+ set {} {}
+} {}
do_execsql_test 10.0 {
DROP TABLE IF EXISTS t7;
SELECT id, lag(b, -1) OVER (PARTITION BY a ORDER BY id) FROM t7;
} {1 {} 2 4 3 {} 4 8 5 1 6 {}}
+do_execsql_test 11.0 {
+ DROP VIEW IF EXISTS v8;
+ DROP TABLE IF EXISTS t8;
+ CREATE TABLE t8(t INT, total INT);
+ INSERT INTO t8 VALUES(0,2);
+ INSERT INTO t8 VALUES(5,1);
+ INSERT INTO t8 VALUES(10,1);
+} {}
+
+do_execsql_test 11.1 {
+ SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
+} {0 1 2}
+
+do_execsql_test 11.2 {
+ CREATE VIEW v8 AS SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8;
+} {}
+
+do_execsql_test 11.3 {
+ SELECT * FROM v8;
+} {0 1 2}
+
+do_execsql_test 11.4 {
+ SELECT * FROM (
+ SELECT NTILE(256) OVER (ORDER BY total) - 1 AS nt FROM t8
+ ) sub;
+} {0 1 2}
+
finish_test