mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-07 02:42:48 +03:00
Fix another problem that could cause a crash when a window function was used
in a view. FossilOrigin-Name: e954145a3addf60247954b9161473cd02ae2400f469840523093e25e23fbc54d
This commit is contained in:
18
manifest
18
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\sproblems\swith\susing\swindow-functions\sin\scorrelated\ssub-queries.
|
C Fix\sanother\sproblem\sthat\scould\scause\sa\scrash\swhen\sa\swindow\sfunction\swas\sused\nin\sa\sview.
|
||||||
D 2018-06-23T19:29:56.897
|
D 2018-06-25T11:42:08.845
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
|
F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
|
||||||
@@ -579,7 +579,7 @@ F src/vtab.c 10ea07dec111de6fb0a4fc87a7ffa4c65fdc088a19dbfaf7d6f2b128f2e8eb7b
|
|||||||
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||||
F src/wal.c d44a0811afd2155b1157c38b33141d4ac028fda6232485bed664015bb05819ca
|
F src/wal.c d44a0811afd2155b1157c38b33141d4ac028fda6232485bed664015bb05819ca
|
||||||
F src/wal.h 8de5d2d3de0956d6f6cb48c83a4012d5f227b8fe940f3a349a4b7e85ebcb492a
|
F src/wal.h 8de5d2d3de0956d6f6cb48c83a4012d5f227b8fe940f3a349a4b7e85ebcb492a
|
||||||
F src/walker.c 14c43912f0e95f66146cb482a9260b74412fe07f16d67a74e74a1a2314b7474a
|
F src/walker.c ba7225773931760cf60bf22f34d0cce2588df7ce5ce0f215a52eb88234b55ac4
|
||||||
F src/where.c 0bcbf9e191ca07f9ea2008aa80e70ded46bcdffd26560c83397da501f00aece6
|
F src/where.c 0bcbf9e191ca07f9ea2008aa80e70ded46bcdffd26560c83397da501f00aece6
|
||||||
F src/whereInt.h b90ef9b9707ef750eab2a7a080c48fb4900315033274689def32d0cf5a81ebe4
|
F src/whereInt.h b90ef9b9707ef750eab2a7a080c48fb4900315033274689def32d0cf5a81ebe4
|
||||||
F src/wherecode.c 3317f2b083a66d3e65a03edf316ade4ccb0a99c9956273282ebb579b95d4ba96
|
F src/wherecode.c 3317f2b083a66d3e65a03edf316ade4ccb0a99c9956273282ebb579b95d4ba96
|
||||||
@@ -1618,13 +1618,13 @@ F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2
|
|||||||
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
|
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
|
||||||
F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
|
F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
|
||||||
F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
|
F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
|
||||||
F test/window1.test 0e0867fd8dceafef972d7c698d9283760e703e70b39e750b8e90f20853de618b
|
F test/window1.test 7cb260079cd88d6d6177b0f592686f2bbbc2d10f4f415c8a37cd153eb83c87ca
|
||||||
F test/window2.tcl 9bfa842d8a62b0d36dc8c1b5972206393c43847433c6d75940b87fec93ce3143
|
F test/window2.tcl 9bfa842d8a62b0d36dc8c1b5972206393c43847433c6d75940b87fec93ce3143
|
||||||
F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e
|
F test/window2.test 8e6d2a1b9f54dfebee1cde961c8590cd87b4db45c50f44947a211e1b63c2a05e
|
||||||
F test/window3.tcl 9b82055c8977bdcab164fb4f71dabf86c511c9010c44f958352b610d313182c3
|
F test/window3.tcl 9b82055c8977bdcab164fb4f71dabf86c511c9010c44f958352b610d313182c3
|
||||||
F test/window3.test 47884c240d0d5234ad9c6da65452cfec1bfa69ec6f9c4158cd9750c3d88d3a25
|
F test/window3.test 47884c240d0d5234ad9c6da65452cfec1bfa69ec6f9c4158cd9750c3d88d3a25
|
||||||
F test/window4.tcl e52914d7552b1111dfe5c9c3340a76dbeb00a69d867a31e45104d5d30bd47eb4
|
F test/window4.tcl 7cec7e578aa9f78b7265bff8d552cda17a1d8d89f0449d0e74970a527b8846f5
|
||||||
F test/window4.test 1acdae592d25df5d50aae2ca077f87b29ff4169ca7fc5e08e1c119c88fdbeb8f
|
F test/window4.test dcd8767869988e0d23d56bc3f8b46ec116de23127b81b5f66fd48d5529072ed1
|
||||||
F test/window5.test d97b5cd3763f80d876ae316272aaf0a41e650533c5d76c4310636b58deb8bcd3
|
F test/window5.test d97b5cd3763f80d876ae316272aaf0a41e650533c5d76c4310636b58deb8bcd3
|
||||||
F test/windowfault.test 97d5fc404308edb579a5a183e294ed874c844ecf01f0a28ba46df3141ebaee1f
|
F test/windowfault.test 97d5fc404308edb579a5a183e294ed874c844ecf01f0a28ba46df3141ebaee1f
|
||||||
F test/with1.test 58475190cd8caaeebea8cfeb2a264ec97a0c492b8ffe9ad20cefbb23df462f96
|
F test/with1.test 58475190cd8caaeebea8cfeb2a264ec97a0c492b8ffe9ad20cefbb23df462f96
|
||||||
@@ -1743,7 +1743,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P c1abd2dda4154cb573bdf627cdef794d3697f874c3b70357aaf5e4ed95ad1d5c
|
P 3e23cfc8133342a4de6813afdc33d726f06d625424b16d0999fb22be51bf8913
|
||||||
R 276bb5b8abb4de986dcdc92f069c30eb
|
R bb9f89e1e949343802959b13d03bdcdc
|
||||||
U dan
|
U dan
|
||||||
Z a54ebb0c6a6d2cbc797608724c2753d3
|
Z 03de6875ac8344c2508ab8927c834330
|
||||||
|
@@ -1 +1 @@
|
|||||||
3e23cfc8133342a4de6813afdc33d726f06d625424b16d0999fb22be51bf8913
|
e954145a3addf60247954b9161473cd02ae2400f469840523093e25e23fbc54d
|
@@ -54,12 +54,14 @@ static SQLITE_NOINLINE int walkExpr(Walker *pWalker, Expr *pExpr){
|
|||||||
}else if( pExpr->x.pList ){
|
}else if( pExpr->x.pList ){
|
||||||
if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort;
|
if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort;
|
||||||
}
|
}
|
||||||
if( pExpr->pWin ){
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
|
if( !ExprHasProperty(pExpr, EP_Reduced) && pExpr->pWin ){
|
||||||
Window *pWin = pExpr->pWin;
|
Window *pWin = pExpr->pWin;
|
||||||
if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort;
|
if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort;
|
||||||
if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort;
|
if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort;
|
||||||
if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort;
|
if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -489,7 +489,6 @@ do_execsql_test 10.7 {
|
|||||||
Horace East 254Horace
|
Horace East 254Horace
|
||||||
}
|
}
|
||||||
|
|
||||||
breakpoint
|
|
||||||
do_execsql_test 10.8 {
|
do_execsql_test 10.8 {
|
||||||
SELECT emp, region, (
|
SELECT emp, region, (
|
||||||
SELECT sum(total) FILTER (WHERE sales.emp!=outer.emp) OVER (
|
SELECT sum(total) FILTER (WHERE sales.emp!=outer.emp) OVER (
|
||||||
@@ -507,6 +506,25 @@ do_execsql_test 10.8 {
|
|||||||
Horace East 253
|
Horace East 253
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
# Check that it is not possible to use a window function in a CREATE INDEX
|
||||||
|
# statement.
|
||||||
|
#
|
||||||
|
do_execsql_test 11.0 { CREATE TABLE t6(a, b, c); }
|
||||||
|
|
||||||
|
do_catchsql_test 11.1 {
|
||||||
|
CREATE INDEX t6i ON t6(a) WHERE sum(b) OVER ();
|
||||||
|
} {1 {misuse of window function sum()}}
|
||||||
|
do_catchsql_test 11.2 {
|
||||||
|
CREATE INDEX t6i ON t6(a) WHERE lead(b) OVER ();
|
||||||
|
} {1 {misuse of window function lead()}}
|
||||||
|
|
||||||
|
do_catchsql_test 11.3 {
|
||||||
|
CREATE INDEX t6i ON t6(sum(b) OVER ());
|
||||||
|
} {1 {misuse of window function sum()}}
|
||||||
|
do_catchsql_test 11.4 {
|
||||||
|
CREATE INDEX t6i ON t6(lead(b) OVER ());
|
||||||
|
} {1 {misuse of window function lead()}}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
@@ -324,5 +324,13 @@ execsql_float_test 9.3 {
|
|||||||
SELECT x, percent_rank() OVER (PARTITION BY x ORDER BY x) FROM t2
|
SELECT x, percent_rank() OVER (PARTITION BY x ORDER BY x) FROM t2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
execsql_test 9.4 {
|
||||||
|
SELECT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
|
||||||
|
}
|
||||||
|
|
||||||
|
execsql_test 9.5 {
|
||||||
|
SELECT DISTINCT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
|
||||||
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
@@ -1225,4 +1225,12 @@ do_test 9.3 {
|
|||||||
set myres
|
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}
|
} {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}
|
||||||
|
|
||||||
|
do_execsql_test 9.4 {
|
||||||
|
SELECT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
|
||||||
|
} {1 1 1 1 1 1 4 4 4 4 6 6 7 7}
|
||||||
|
|
||||||
|
do_execsql_test 9.5 {
|
||||||
|
SELECT DISTINCT x, rank() OVER (ORDER BY x) FROM t2 ORDER BY 1,2
|
||||||
|
} {1 1 4 4 6 6 7 7}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
Reference in New Issue
Block a user