]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem causing the pre-update hook to be passed an incorrect rowid onepass-update
authordan <dan@noemail.net>
Wed, 11 Jan 2017 20:10:30 +0000 (20:10 +0000)
committerdan <dan@noemail.net>
Wed, 11 Jan 2017 20:10:30 +0000 (20:10 +0000)
value in some single-pass multi-row updates.

FossilOrigin-Name: 62257eb53c13d4c7ed128d5d89f6f10d4aff945c

manifest
manifest.uuid
src/update.c

index 95612d61fb01414806d81a156f02915ea06b6728..dc4ff7c1a4186c1209bf9ae87b21aca14da3ba45 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\ssingle-pass\smulti-row\sUPDATE\sstatements\sthat\sinvoke\sREPLACE\nconflict\shandling.
-D 2017-01-11T19:03:08.308
+C Fix\sa\sproblem\scausing\sthe\spre-update\shook\sto\sbe\spassed\san\sincorrect\srowid\nvalue\sin\ssome\ssingle-pass\smulti-row\supdates.
+D 2017-01-11T20:10:30.712
 F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@@ -451,7 +451,7 @@ F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 5c2f516876fc27fbd7753913f032f49eb89e83b5
 F src/treeview.c 4e44ade3bfe59d82005039f72e09333ce2b4162c
 F src/trigger.c c9f0810043b265724fdb1bdd466894f984dfc182
-F src/update.c 4ed0fcccccd6488ee8a3bc02df10979b503f25d7
+F src/update.c 715bbfe276c9d008482cdb0ecd86ff996dba3b6c
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
 F src/util.c a88b0466fddf445ce752226d4698ca3faada620a
 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
@@ -1544,7 +1544,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P cab86c90945126c24c40cf2dedd053a8c46d00d6
-R 91b60fc45aced248f038aee86694df0e
+P 0a2b8e1b9dc600b5a93622e8eea6218649df5e0f
+R d791ce37848d763756ad4c9c28aa682a
 U dan
-Z f69bdc261645bb06f02a001c239441ef
+Z 064d431f5a23ac6118a97592b16afa49
index c670eb3052c185e34f2a9f05dab4685ce11018dd..19077faa6c5d02e6870203c15258eae59f55822f 100644 (file)
@@ -1 +1 @@
-0a2b8e1b9dc600b5a93622e8eea6218649df5e0f
\ No newline at end of file
+62257eb53c13d4c7ed128d5d89f6f10d4aff945c
\ No newline at end of file
index 242d36b739e70687c820cc2b4cbb7d6e79a3d01f..e1cbc21da20c26a1bc00aeec42280ce35fceeb49 100644 (file)
@@ -643,6 +643,10 @@ void sqlite3Update(
         OPFLAG_ISUPDATE | ((hasFK || chngKey) ? 0 : OPFLAG_ISNOOP),
         regNewRowid
     );
+    if( eOnePass==ONEPASS_MULTI ){
+      assert( hasFK==0 && chngKey==0 );
+      sqlite3VdbeChangeP5(v, OPFLAG_SAVEPOSITION);
+    }
     if( !pParse->nested ){
       sqlite3VdbeAppendP4(v, pTab, P4_TABLE);
     }