- C Merge\sall\srecent\s3.8.2\sbeta\schanges\sfrom\strunk.
- D 2013-12-02T21:58:19.732
-C Remove\sa\sbranch\sin\sSTAT4\slogic\sthat\sis\sno\slonger\sreachable\safter\s\nthe\sprevious\schange.
-D 2013-12-03T19:49:55.482
++C Merge\sin\strunk\schanges.
++D 2013-12-03T20:51:33.333
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
-F Makefile.in e1a9b4258bbde53f5636f4e238c65b7e11459e2b
+F Makefile.in 06b851f767034811d4f6e159367c453dc28d3925
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
-F Makefile.msc a6247094079f3ef97dcd7a69d0e13ff718c7073e
+F Makefile.msc da7f2a230af6e39b71b2706dbb4c35fff7222a0f
F Makefile.vxworks db21ed42a01d5740e656b16f92cb5d8d5e5dd315
F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
F VERSION 52f7e22bfcec71a462e34194b4ae1671380fde59
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/tokenize.c ec4c1a62b890bf1dbcdb966399e140b904c700a4
F src/trigger.c d84e1f3669e9a217731a14a9d472b1c7b87c87ba
- F src/update.c 046d7df2a4b3d85442a758f484eb2d40a48b5465
-F src/update.c d1c2477dcf14d90999d1935af4efb4806553250b
++F src/update.c 4ada523da2d315996296456a8e384f11983a9aa0
F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269
F src/util.c c1d47254d805074226eb68bab2327f2559799d88
F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
-F src/vdbe.c 54894fde8dc806d259e015ac7c9680145e725835
-F src/vdbe.h c06f0813f853566457ce9cfb1a4a4bc39a5da644
-F src/vdbeInt.h 05fbda0e061dbc4aaa2709a8cccf3515c245b263
-F src/vdbeapi.c 93a22a9ba2abe292d5c2cf304d7eb2e894dde0ed
-F src/vdbeaux.c 09b79d475f5af2b3b5068f639609d88e0ced9d95
-F src/vdbeblob.c 8cd05a5630e6d5563ad017bf82edaf812b28acde
+F src/vdbe.c 9c6fb9ed1b9165427b0fdc812bc9c48c031f77da
+F src/vdbe.h b7bfa7b468fcad2cf1890969fe7459325da00385
+F src/vdbeInt.h 1a5c604f33a5d46c839fee0cab16743aa3e1bc2e
+F src/vdbeapi.c e80d6d9dea792bd823cb64ae05cba446a7b3556a
- F src/vdbeaux.c aad7d1714be08e05999a92f366328173286ecaac
++F src/vdbeaux.c e3228efe9460dccdc92a0ef4f38a7147166226da
+F src/vdbeblob.c a2809461743e0b9dd9be871149ac65e8d2c80c08
- F src/vdbemem.c af650c2019dc197f062440cdb4650b7204e648bf
+ F src/vdbemem.c 20e349d2ca928802fc8f2d42a2cc488fd6981d3f
F src/vdbesort.c 9d83601f9d6243fe70dd0169a2820c5ddfd48147
F src/vdbetrace.c e7ec40e1999ff3c6414424365d5941178966dcbc
F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
- P 3a2a1bd47875e114d8e6f31c1768908f401d2861 bc8eacc7f71413184ef5be1412e51f8fd7174cd1
- R 23fdb9bec4ca7fb51a8c2b5b5649fa63
-P 33ad4f91477907b7b3e5808c7ba11aacc9a83ba6
-R b9a8385eb7153992ed9d3229f4d58e8a
++P 67c34ccfa9596a923695dc4994ec87b331f8326c eca7d3f1612c7a009a9e4ef89f76f9b7e275d1e6
++R edf2c1b422139b7ed86a96163f4a4748
U drh
- Z d6ca9769225d05465b3da41409f1cf6b
-Z 1abf6c68d7a5a613f293f6a4e7a65cb6
++Z b6ef0142ade532e078158751859653ef
}
}
sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, aRegIdx);
-
- /* If changing the record number, delete the old record. */
- if( hasFK || chngKey || pPk!=0 ){
- sqlite3VdbeAddOp2(v, OP_Delete, iDataCur, 0);
+
+ /* If changing the rowid value, or if there are foreign key constraints
+ ** to process, delete the old record. Otherwise, add a noop OP_Delete
+ ** to invoke the pre-update hook.
+ **
+ ** That (regNew==regnewRowid+1) is true is also important for the
+ ** pre-update hook. If the caller invokes preupdate_new(), the returned
+ ** value is copied from memory cell (regNewRowid+1+iCol), where iCol
+ ** is the column index supplied by the user.
+ */
+ assert( regNew==regNewRowid+1 );
+ sqlite3VdbeAddOp3(v, OP_Delete, iDataCur,
+ OPFLAG_ISUPDATE | ((hasFK || chngKey || pPk!=0) ? 0 : OPFLAG_ISNOOP),
+ regNewRowid
+ );
+ if( !pParse->nested ){
+ sqlite3VdbeChangeP4(v, -1, (char*)pTab, P4_TABLE);
}
if( bReplace || chngKey ){
- if( sqlite3VdbeCurrentAddr(v)==j1+1 ){
- sqlite3VdbeChangeToNoop(v, j1);
- }else{
- sqlite3VdbeJumpHere(v, j1);
- }
+ sqlite3VdbeJumpHere(v, j1);
}
if( hasFK ){