]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not use an index fullscan for an UPDATE or DELETE or if disabled by
authordrh <drh@noemail.net>
Mon, 3 Jun 2013 19:17:40 +0000 (19:17 +0000)
committerdrh <drh@noemail.net>
Mon, 3 Jun 2013 19:17:40 +0000 (19:17 +0000)
sqlite3_test_control() or sqlite3_config().

FossilOrigin-Name: fabb21854e662b1d8e5631e79f828d5322ceb595

manifest
manifest.uuid
src/where.c

index 58036befe9596d634e0a35418842f444218c3880..0a8380851591d01e1f4dd789ffb8515e3aaeae68 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Resolve\sambiguities\sin\stest\scases\sin\scollate2.test.
-D 2013-06-03T19:01:26.660
+C Do\snot\suse\san\sindex\sfullscan\sfor\san\sUPDATE\sor\sDELETE\sor\sif\sdisabled\sby\nsqlite3_test_control()\sor\ssqlite3_config().
+D 2013-06-03T19:17:40.684
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -289,7 +289,7 @@ F src/vtab.c b05e5f1f4902461ba9f5fc49bb7eb7c3a0741a83
 F src/wal.c 436bfceb141b9423c45119e68e444358ee0ed35d
 F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
 F src/walker.c 4fa43583d0a84b48f93b1e88f11adf2065be4e73
-F src/where.c a60b27296226bc073ae87988f7cec222d9523d7d
+F src/where.c 6226d9912f494a92b51b06c58b5c0eed9b7eb84e
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6
@@ -1093,7 +1093,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P aa66b864204b4b8717d845499132b987eb8ef924
-R 62f1f59de9bf7b607ff3cad8a2a9dba4
+P dcbbcb2e6c85780276cb3a392549f70e21e94408
+R 5e83ed1a81fa16225d238fe289659759
 U drh
-Z 7508c3c33af72ab568a1feb83056a8cb
+Z 8c74536a41fa8c42d526bd323c460f6c
index f007fe30faa273fc3df8fec24d0df25eb7385a5e..c94f0e13710f78572897c4649122535bad900d85 100644 (file)
@@ -1 +1 @@
-dcbbcb2e6c85780276cb3a392549f70e21e94408
\ No newline at end of file
+fabb21854e662b1d8e5631e79f828d5322ceb595
\ No newline at end of file
index 92aa607fc85b5b29c64fe1fd70072523bb3dc2fb..ee604f07132e22e5937c944c8c31845ac57631d5 100644 (file)
@@ -4224,7 +4224,12 @@ static int whereLoopAddBtree(
       pNew->wsFlags = (m==0) ? (WHERE_IDX_ONLY|WHERE_INDEXED) : WHERE_INDEXED;
 
       /* Full scan via index */
-      if( (m==0 || b) && pProbe->bUnordered==0 ){
+      if( (m==0 || b)
+       && pProbe->bUnordered==0
+       && (pBuilder->pWC->wctrlFlags & WHERE_ONEPASS_DESIRED)==0
+       && sqlite3GlobalConfig.bUseCis
+       && OptimizationEnabled(pBuilder->pParse->db, SQLITE_CoverIdxScan)
+      ){
         pNew->iSortIdx = b ? iSortIdx : 0;
         pNew->nOut = rSize;
         pNew->rRun = (m==0) ? (rSize + rLogSize)*(1+b) : (rSize*rLogSize);