From: drh Date: Mon, 3 Jun 2013 19:17:40 +0000 (+0000) Subject: Do not use an index fullscan for an UPDATE or DELETE or if disabled by X-Git-Tag: version-3.8.0~130^2~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e3b7c9216cf2c5a5b8170b6024426447ebac8f9f;p=thirdparty%2Fsqlite.git Do not use an index fullscan for an UPDATE or DELETE or if disabled by sqlite3_test_control() or sqlite3_config(). FossilOrigin-Name: fabb21854e662b1d8e5631e79f828d5322ceb595 --- diff --git a/manifest b/manifest index 58036befe9..0a83808515 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index f007fe30fa..c94f0e1371 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dcbbcb2e6c85780276cb3a392549f70e21e94408 \ No newline at end of file +fabb21854e662b1d8e5631e79f828d5322ceb595 \ No newline at end of file diff --git a/src/where.c b/src/where.c index 92aa607fc8..ee604f0713 100644 --- a/src/where.c +++ b/src/where.c @@ -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);