]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a couple of minor problems with the new delete logic.
authordrh <drh@noemail.net>
Sat, 16 Nov 2013 23:16:31 +0000 (23:16 +0000)
committerdrh <drh@noemail.net>
Sat, 16 Nov 2013 23:16:31 +0000 (23:16 +0000)
FossilOrigin-Name: a11243f840d35aaed8ee3b9901c3950bc584a417

manifest
manifest.uuid
src/delete.c
src/update.c

index 57e956a2ddc8acdc8833bc128e6133ee2b58330b..609e196dbc6c182766f1212e7c9f751fa9cae84e 100644 (file)
--- 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
index bdf0f87e31d21b053f690d5424a91a31bf4b22ad..501d33762c227c56cfeab41a1af7d8086ed3ed7e 100644 (file)
@@ -1 +1 @@
-dc7be158b82ab9156d0fcdf3394f881eac4d23c3
\ No newline at end of file
+a11243f840d35aaed8ee3b9901c3950bc584a417
\ No newline at end of file
index a110e899373566a8b4e86bfb048c89b68967879c..1b3d7a24bca4022ed348da62f69f4ed8c64fd3ef 100644 (file)
@@ -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);
   
index ec565660e113924ea227c8c44ee8d05d2d3ee9d8..1783b447af36b993c50c37b042fba5e489bef67c 100644 (file)
@@ -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);
     }
   }