]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use NOT NULL partial indexes when the query is constrained by a single
authordrh <drh@noemail.net>
Wed, 2 Nov 2016 02:17:52 +0000 (02:17 +0000)
committerdrh <drh@noemail.net>
Wed, 2 Nov 2016 02:17:52 +0000 (02:17 +0000)
LIKE or GLOB.

FossilOrigin-Name: 9b3a3b41b59a7ce7d3dd82c7402d6fdc6a5ca43c

manifest
manifest.uuid
src/expr.c

index 66d4767d3330aa927cbe2b3ae2a9d32f4510ae56..d5880b1fb9502037466df4302a135a04ccb51e4b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\sSQLITE_DBCONFIG_NO_CKPT_ON_CLOSE\ssqlite3_dbconfig()\soption\s-\sfor\ndisabling\sSQLite's\sdefault\scheckpoint-on-close\sbehaviour.
-D 2016-10-31T16:49:18.127
+C Use\sNOT\sNULL\spartial\sindexes\swhen\sthe\squery\sis\sconstrained\sby\sa\ssingle\nLIKE\sor\sGLOB.
+D 2016-11-02T02:17:52.919
 F Makefile.in 6fd48ffcf7c2deea7499062d1f3747f986c19678
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 5151cc64c4c05f3455f4f692ad11410a810d937f
@@ -340,7 +340,7 @@ F src/ctime.c a2a52d6e353f459d8ab0f07321f60fafa47d5421
 F src/date.c 95c9a8d00767e7221a8e9a31f4e913fc8029bf6b
 F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
 F src/delete.c cb3f6300df24c26c609778b2731f82644b5532ec
-F src/expr.c aac0b8d39373ce8f1d47829ce12c3d7af90c46a6
+F src/expr.c ce7110980fac6dfdfbe1e393443bdb79bad29339
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c b9ca262f6ad4d030a3cab737ebf9b0b3c8b4ac80
 F src/func.c 29cc9acb170ec1387b9f63eb52cd85f8de96c771
@@ -1529,8 +1529,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 6374978e8f1ac091394a9f5a1896be92af658bcd 093d2fc2288b75c15ccf877bfa0e622d3918a562
-R f901fbda939dcfa6ff6d756b39418ee6
-T +closed 093d2fc2288b75c15ccf877bfa0e622d3918a562
-U dan
-Z 5d42ae70ac4da1275b3f1c98c68ab01c
+P 6d142025c74f66f2d48155354b556cd5b2682cb2
+R 6a21c44879153ad3b8a90965de65b693
+U drh
+Z 3251c60dbcdf547bbc5e5373f62e3557
index 7b3b4972d77342179bc357a454f883c59943702e..eabbb7dbc2f934e75473f7fe376bdfb8f164710b 100644 (file)
@@ -1 +1 @@
-6d142025c74f66f2d48155354b556cd5b2682cb2
\ No newline at end of file
+9b3a3b41b59a7ce7d3dd82c7402d6fdc6a5ca43c
\ No newline at end of file
index 6d2ec437ffa3c43b1418b0f8f29b08eb6a2db6ee..c2b9c8fe46658d37539aada70411368095491578 100644 (file)
@@ -4600,11 +4600,10 @@ int sqlite3ExprImpliesExpr(Expr *pE1, Expr *pE2, int iTab){
   ){
     return 1;
   }
-  if( pE2->op==TK_NOTNULL
-   && sqlite3ExprCompare(pE1->pLeft, pE2->pLeft, iTab)==0
-   && (pE1->op!=TK_ISNULL && pE1->op!=TK_IS)
-  ){
-    return 1;
+  if( pE2->op==TK_NOTNULL && pE1->op!=TK_ISNULL && pE1->op!=TK_IS ){
+    Expr *pX = sqlite3ExprSkipCollate(pE1->pLeft);
+    testcase( pX!=pE1->pLeft );
+    if( sqlite3ExprCompare(pX, pE2->pLeft, iTab)==0 ) return 1;
   }
   return 0;
 }