]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Posible fix for [d96eba87]. tkt-d96eba87
authordan <dan@noemail.net>
Fri, 14 Dec 2018 08:40:11 +0000 (08:40 +0000)
committerdan <dan@noemail.net>
Fri, 14 Dec 2018 08:40:11 +0000 (08:40 +0000)
FossilOrigin-Name: 89a25abfcd069aebdf817890e5c27f46de3000fb858ae01029e4528f9d677567

manifest
manifest.uuid
src/whereexpr.c
test/indexexpr2.test

index ccc99ce8fcf6a7decbd06e773e242ec1e1f0d018..ee2b08e20f4b75e2ed5c91f5ff31226e13a34164 100644 (file)
--- 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
index 60b5dc7f91e9e144531429740e112e39ff4f9cb5..029f87dcc53aa301012267ec55184aa3baa71c14 100644 (file)
@@ -1 +1 @@
-cc42dd15100db28a9796254f69a4e367ea5eae29f546be055017cf3e12aa66ba
\ No newline at end of file
+89a25abfcd069aebdf817890e5c27f46de3000fb858ae01029e4528f9d677567
\ No newline at end of file
index dbb7f0d08e2cace4f29a0fb9212de2f07e16c6b5..993c1e28625d99d5bf6141d76ce5438ee239f145 100644 (file)
@@ -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;
index 79a6456e9add8606a54ceb20d1352c261d27890b..368237f23e59b5fff0ea78af426ff662b5a4b16b 100644 (file)
@@ -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