From: dan Date: Fri, 14 Dec 2018 08:40:11 +0000 (+0000) Subject: Posible fix for [d96eba87]. X-Git-Tag: version-3.27.0~292^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Ftkt-d96eba87;p=thirdparty%2Fsqlite.git Posible fix for [d96eba87]. FossilOrigin-Name: 89a25abfcd069aebdf817890e5c27f46de3000fb858ae01029e4528f9d677567 --- diff --git a/manifest b/manifest index ccc99ce8fc..ee2b08e20f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sbug\sin\sfuzzcheck\sthat\scause\sit\sto\soverlook\sa\spointer-map\sbug\sthat\swas\ntrigger\sby\sthe\sfuzzcheck\stest\sdata,\sand\salso\sfix\sthe\spointer-map\sbug. -D 2018-12-14T03:16:17.943 +C Posible\sfix\sfor\s[d96eba87]. +D 2018-12-14T08:40:11.676 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in d8b254f8bb81bab43c340d70d17dc3babab40fcc8a348c8255881f780a45fee6 @@ -595,7 +595,7 @@ F src/walker.c fb94aadc9099ff9c6506d0a8b88d51266005bcaa265403f3d7caf732a562eb66 F src/where.c 3818e8a736a05d2cb194e64399af707e367fbcc5c251d785804d02eaf121288e F src/whereInt.h f125f29fca80890768e0b2caa14f95db74b2dacd3a122a168f97aa7b64d6968f F src/wherecode.c c45f03aefc2266b990df0fc4d7acc4e27f56f881f4fc0fc355b7cbc4d7189da5 -F src/whereexpr.c 491f0894ad9903750cdecb7894437a0cabdffdd88f574d2b1c9ac85d14fe4b9c +F src/whereexpr.c b87a823bfd3c6998ba8ae0797f3f0dc8d8feb779ed914d31b324a0181e13deb5 F src/window.c ea81ecd031ed2cbc14b7db6fd7f4bee2471b894feae5fea0547b15b1e2dd8fb2 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd @@ -1023,7 +1023,7 @@ F test/index8.test bc2e3db70e8e62459aaa1bd7e4a9b39664f8f9d7 F test/index9.test 0aa3e509dddf81f93380396e40e9bb386904c1054924ba8fa9bcdfe85a8e7721 F test/indexedby.test a52c8c6abfae4fbfb51d99440de4ca1840dbacc606b05e29328a2a8ba7cd914e F test/indexexpr1.test 635261197bcdc19b9b2c59bbfa7227d525c00e9587faddb2d293c44d287ce60e -F test/indexexpr2.test fc994dcd4b3da932d4add8e65ed7ca08166d541e00a46874cfacd98dfb93a31b +F test/indexexpr2.test 8dd1f8f936cc4d246af605366886bbd251848b411378eb60887361d5302d9f54 F test/indexfault.test 31d4ab9a7d2f6e9616933eb079722362a883eb1d F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7 F test/insert.test 5604b1ff5675cc84c34a5b315792b958f48c32edccc0dafcc81d3b776270b70a @@ -1787,8 +1787,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 18740bd448887d618fafee0b5a7c004aa2f2632244f7d29e2428772baa36b828 3036fd71ac7063359b04a0ed54a6c63a380eb7ff75cd29ed27486d4259066aee -R 7367b1481f35f13ad669721d0de5a468 -T +closed 3036fd71ac7063359b04a0ed54a6c63a380eb7ff75cd29ed27486d4259066aee -U drh -Z 3dec21dea4844642e6338ca29ec5fe6a +P cc42dd15100db28a9796254f69a4e367ea5eae29f546be055017cf3e12aa66ba +R 6e4a89239ac2714d2f3e8e3c0f340ed6 +T *branch * tkt-d96eba87 +T *sym-tkt-d96eba87 * +T -sym-trunk * +U dan +Z a14cc8d4d51fec90b6ae7d1a1ef2aa2b diff --git a/manifest.uuid b/manifest.uuid index 60b5dc7f91..029f87dcc5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cc42dd15100db28a9796254f69a4e367ea5eae29f546be055017cf3e12aa66ba \ No newline at end of file +89a25abfcd069aebdf817890e5c27f46de3000fb858ae01029e4528f9d677567 \ No newline at end of file diff --git a/src/whereexpr.c b/src/whereexpr.c index dbb7f0d08e..993c1e2862 100644 --- a/src/whereexpr.c +++ b/src/whereexpr.c @@ -778,6 +778,7 @@ static void exprAnalyzeOrTerm( */ for(j=0; j<2 && !okToChngToIN; j++){ pOrTerm = pOrWc->a; + Expr *pLeft = 0; for(i=pOrWc->nTerm-1; i>=0; i--, pOrTerm++){ assert( pOrTerm->eOperator & WO_EQ ); pOrTerm->wtFlags &= ~TERM_OR_OK; @@ -800,6 +801,7 @@ static void exprAnalyzeOrTerm( } iColumn = pOrTerm->u.leftColumn; iCursor = pOrTerm->leftCursor; + pLeft = pOrTerm->pExpr->pLeft; break; } if( i<0 ){ @@ -819,7 +821,9 @@ static void exprAnalyzeOrTerm( assert( pOrTerm->eOperator & WO_EQ ); if( pOrTerm->leftCursor!=iCursor ){ pOrTerm->wtFlags &= ~TERM_OR_OK; - }else if( pOrTerm->u.leftColumn!=iColumn ){ + }else if( pOrTerm->u.leftColumn!=iColumn || (iColumn==XN_EXPR + && sqlite3ExprCompare(pParse, pOrTerm->pExpr->pLeft, pLeft, -1) + )){ okToChngToIN = 0; }else{ int affLeft, affRight; diff --git a/test/indexexpr2.test b/test/indexexpr2.test index 79a6456e9a..368237f23e 100644 --- a/test/indexexpr2.test +++ b/test/indexexpr2.test @@ -231,5 +231,24 @@ ifcapable vtab { } {t2 t2abc t2cd t2def} } +#------------------------------------------------------------------------- +# Test that ticket [d96eba87] has been fixed. +# +do_execsql_test 5.0 { + CREATE TABLE t5(a INTEGER, b INTEGER); + INSERT INTO t5 VALUES(2, 4), (3, 9); +} +do_execsql_test 5.1 { + SELECT * FROM t5 WHERE abs(a)=2 or abs(b)=9; +} {2 4 3 9} +do_execsql_test 5.2 { + CREATE INDEX t5a ON t5( abs(a) ); + CREATE INDEX t5b ON t5( abs(b) ); +} +do_execsql_test 5.4 { + SELECT * FROM t5 WHERE abs(a)=2 or abs(b)=9; +} {2 4 3 9} + + finish_test