From: drh Date: Sat, 16 Nov 2013 23:16:31 +0000 (+0000) Subject: Fix a couple of minor problems with the new delete logic. X-Git-Tag: version-3.8.2~81^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c51331d16d29094f6907fc48693243a53104a479;p=thirdparty%2Fsqlite.git Fix a couple of minor problems with the new delete logic. FossilOrigin-Name: a11243f840d35aaed8ee3b9901c3950bc584a417 --- diff --git a/manifest b/manifest index 57e956a2dd..609e196dbc 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\san\sOOM-recovery\sproblem\sin\sthe\sDELETE\scode\sgenerator. -D 2013-11-16T23:03:06.762 +C Fix\sa\scouple\sof\sminor\sproblems\swith\sthe\snew\sdelete\slogic. +D 2013-11-16T23:16:31.845 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -174,7 +174,7 @@ F src/callback.c f99a8957ba2adf369645fac0db09ad8adcf1caa2 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c ea4b7f3623a0fcb1146e7f245d7410033e86859c F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 -F src/delete.c af69db684408d06a446e2ba2d050399773f91b9b +F src/delete.c b612d06c095acc5df50a208a9b023c96deb11e5a F src/expr.c 1a295d8b0a2ba08919ad9300ebf7b67988ff4030 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 78364daed38e26269c53ddb94c515bceac1063c6 @@ -276,7 +276,7 @@ F src/test_vfstrace.c 34b544e80ba7fb77be15395a609c669df2e660a2 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/tokenize.c ec4c1a62b890bf1dbcdb966399e140b904c700a4 F src/trigger.c d84e1f3669e9a217731a14a9d472b1c7b87c87ba -F src/update.c 6a45368f8c7b400ffdac9a4c6cd19a5bbf3385e2 +F src/update.c 18e9b11b499c1205ec2b6e87322a7edc8772e550 F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269 F src/util.c 2fa6c821d28bbdbeec1b2a7b091a281c9ef8f918 F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179 @@ -1140,7 +1140,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P c4734b881a64a9d21d03a14e901785797577fbd8 -R 10d8931262d0ae5f1928488f5d08f78e +P dc7be158b82ab9156d0fcdf3394f881eac4d23c3 +R 0c59b10189d7db2055b513cecd6f14e5 U drh -Z 412c615fb9ef758b4ed11a541f1ecdcc +Z ca24d69af9eecebf1768d25aef1413b7 diff --git a/manifest.uuid b/manifest.uuid index bdf0f87e31..501d33762c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -dc7be158b82ab9156d0fcdf3394f881eac4d23c3 \ No newline at end of file +a11243f840d35aaed8ee3b9901c3950bc584a417 \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index a110e89937..1b3d7a24bc 100644 --- a/src/delete.c +++ b/src/delete.c @@ -403,7 +403,8 @@ void sqlite3DeleteFrom( ** to be deleted, based on the WHERE clause. */ pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0, 0, - WHERE_ONEPASS_DESIRED, iTabCur+1); + WHERE_ONEPASS_DESIRED|WHERE_DUPLICATES_OK, + iTabCur+1); if( pWInfo==0 ) goto delete_from_cleanup; okOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass); diff --git a/src/update.c b/src/update.c index ec565660e1..1783b447af 100644 --- a/src/update.c +++ b/src/update.c @@ -114,7 +114,6 @@ void sqlite3Update( u8 chngRowid; /* Rowid changed in a normal table */ u8 chngKey; /* Either chngPk or chngRowid */ Expr *pRowidExpr = 0; /* Expression defining the new record number */ - int openAll = 0; /* True if all indices need to be opened */ AuthContext sContext; /* The authorization context */ NameContext sNC; /* The name-context to resolve expressions in */ int iDb; /* Database containing the table being updated */ @@ -622,7 +621,7 @@ void sqlite3Update( /* Close all tables */ for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){ assert( aRegIdx ); - if( openAll || aRegIdx[i]>0 ){ + if( aToOpen[i+1] ){ sqlite3VdbeAddOp2(v, OP_Close, iIdxCur+i, 0); } }