]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Further tweaks to the ORDER BY optimizer, to fix a bug and to get the
authordrh <drh@noemail.net>
Mon, 8 Oct 2012 20:27:35 +0000 (20:27 +0000)
committerdrh <drh@noemail.net>
Mon, 8 Oct 2012 20:27:35 +0000 (20:27 +0000)
optimizer to recognize some additional cases.

FossilOrigin-Name: bcb4f262476193cfb17818d8c62bab528dddeef9

manifest
manifest.uuid
src/where.c

index a505a09dff2169341bc79b9160f90cc6cfb53ab1..60325045c0ffeb520e8f476f2e11f0670fc0121d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Bug\sfixes\sin\sthe\sORDER\sBY\soptimizer.
-D 2012-10-08T19:41:38.447
+C Further\stweaks\sto\sthe\sORDER\sBY\soptimizer,\sto\sfix\sa\sbug\sand\sto\sget\sthe\s\noptimizer\sto\srecognize\ssome\sadditional\scases.
+D 2012-10-08T20:27:35.617
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -249,7 +249,7 @@ F src/vtab.c d8020c0a0e8ccc490ca449d7e665311b6e9f3ba9
 F src/wal.c e1fe8f92a0ea0fef8faa87ec43a127a478589d22
 F src/wal.h 29c197540b19044e6cd73487017e5e47a1d3dac6
 F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b
-F src/where.c d4a39bc7ea96ac2580b662df73c16d5ddacd9723
+F src/where.c 6bc65388a642277ede4449bf852ef09f630997e8
 F test/8_3_names.test 631ea964a3edb091cf73c3b540f6bcfdb36ce823
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/aggnested.test 0be144b453e0622a085fae8665c32f5676708e00
@@ -1018,7 +1018,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9
-P adbdc663f3d22ff03f21040a811d585cf2218626
-R 3f2fb8221173011002c406e4b1569bb1
+P 301bbee4045aa169e29fb4fb75743b71eb4760a1
+R efd94f360278497c63522273f6fc0188
 U drh
-Z 5a939ce30180c1cb84b0892ff09f4ab1
+Z e6fe7146356897869a54564ecea90f21
index 1996a19ef249930f193e203284387764406fe9cc..2a7390063ce101f340b64619c0c12da482a19c05 100644 (file)
@@ -1 +1 @@
-301bbee4045aa169e29fb4fb75743b71eb4760a1
\ No newline at end of file
+bcb4f262476193cfb17818d8c62bab528dddeef9
\ No newline at end of file
index 2701bbda08ac3222f62e1d5c8ef182389efdbb75..21b34a6175a73e9a6357dcbcc92a496932e00f73 100644 (file)
@@ -2908,11 +2908,11 @@ static int isSortingIndex(
       isEq = 0;
     }else if( pConstraint->eOperator==WO_IN ){
       break;
-    }else if( pConstraint->prereqRight==0 ){
-      isEq = 1;
     }else if( pConstraint->eOperator==WO_ISNULL ){
       uniqueNotNull = 0;
       isEq = 1;
+    }else if( pConstraint->prereqRight==0 ){
+      isEq = 1;
     }else{
       Expr *pRight = pConstraint->pExpr->pRight;
       if( pRight->op==TK_COLUMN ){
@@ -2935,17 +2935,19 @@ static int isSortingIndex(
       }else{
         continue;
       }
-    }else if( sortOrder==2 ){
-      sortOrder = termSortOrder;
-    }else if( termSortOrder!=sortOrder ){
-      break;
+    }else if( isEq!=1 ){
+      if( sortOrder==2 ){
+        sortOrder = termSortOrder;
+      }else if( termSortOrder!=sortOrder ){
+        break;
+      }
     }
     j++;
     pOBItem++;
     if( iColumn<0 ){
       seenRowid = 1;
       break;
-    }else if( pTab->aCol[iColumn].notNull==0 ){
+    }else if( pTab->aCol[iColumn].notNull==0 && isEq==0 ){
       uniqueNotNull = 0;
     }
   }