]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge all the latest changes from trunk.
authordrh <drh@noemail.net>
Thu, 25 Feb 2016 18:54:30 +0000 (18:54 +0000)
committerdrh <drh@noemail.net>
Thu, 25 Feb 2016 18:54:30 +0000 (18:54 +0000)
FossilOrigin-Name: b86590043e17705ada90562cf30f69b3e3ef65a4

13 files changed:
1  2 
Makefile.msc
manifest
manifest.uuid
src/main.c
src/shell.c
src/sqlite.h.in
src/sqliteInt.h
src/vdbe.c
src/vdbeInt.h
src/vdbeapi.c
src/vdbeaux.c
src/vdbemem.c
test/tester.tcl

diff --cc Makefile.msc
index a3a1d52f79923f24b4f7e020624c8575d7ce2ac1,d84df8345e6d0158783988c5634f4c7323a1e623..8289068002cbdc7ce1c26ca178e2a3e86f5cd5d6
@@@ -2075,10 -2050,8 +2083,9 @@@ clean
        del /Q testloadext.dll 2>NUL
        del /Q testfixture.exe test.db 2>NUL
        del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe 2>NUL
 +      del /Q changeset.exe 2>NUL
        del /Q showjournal.exe showstat4.exe showwal.exe speedtest1.exe 2>NUL
        del /Q mptester.exe wordcount.exe rbu.exe srcck1.exe 2>NUL
-       del /Q $(SQLITE3EXE) $(SQLITE3DLL) sqlite3.def 2>NUL
        del /Q sqlite3.c sqlite3-*.c 2>NUL
        del /Q sqlite3rc.h 2>NUL
        del /Q shell.c sqlite3ext.h 2>NUL
diff --cc manifest
index cdce0eb4b045881cf9829de20dd80f05ca23f251,cd7f610e12d6a17a84704ded1937d5d93e3b1c48..0cea1da469370581294cb92e23570e4f9884dcf1
+++ b/manifest
@@@ -1,10 -1,10 +1,10 @@@
- C Merge\s3.11.0\schanges.
- D 2016-02-15T17:39:10.662
 -C Query\splanner\simprovements:\s\sTake\sthe\sLIMIT\sinto\saccount\swhen\sestimated\sthe\ncost\sof\san\sORDER\sBY.\s\sAvoid\sautomatic\sindexes\son\squery\sloops\sthat\sare\sexpected\nto\srun\sless\sthan\stwice.
 -D 2016-02-25T18:40:18.408
 -F Makefile.in 4e90dc1521879022aa9479268a4cd141d1771142
++C Merge\sall\sthe\slatest\schanges\sfrom\strunk.
++D 2016-02-25T18:54:30.918
 +F Makefile.in 5cbf3f753328d1bcd3a6117785b4874d99612f8f
  F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
- F Makefile.msc 45e596bd4ccecf2256f68a2e96466aa52cc4bc1f
 -F Makefile.msc 28fc4ee02333996d31b3602b39eeb8e609a89ce4
++F Makefile.msc cf5496f4c4e256a79bae1804da61703647b26398
  F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
- F VERSION 866588d1edf0ccb5b0d33896974338f97564f719
+ F VERSION c6b1f51809551d60ad001e6d87cf3ab2c7f54b6f
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
  F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
  F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
@@@ -304,37 -285,37 +305,37 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c 1fbb01c26c64528088f1df8015992fefda387889
- F src/analyze.c fbf0e80d83cc893734e872f932f249a056b86e11
- F src/attach.c c16c2648a577fa3def2adfa48c28901376389bc5
+ F src/alter.c 7603afbd61f55e7c644b8de4a42f33e58c0b7eaa
+ F src/analyze.c ab57b6763dd4c6170a20673d14882c033affd188
+ F src/attach.c a3724c64de1099d85e30751213d285752aed9505
  F src/auth.c b56c78ebe40a2110fd361379f7e8162d23f92240
- F src/backup.c 2869a76c03eb393ee795416e2387005553df72bc
- F src/bitvec.c 1a78d450a17c5016710eec900bedfc5729bf9bdf
+ F src/backup.c f60f0aa55d25d853ffde53d0b0370a7bb7ee41ce
+ F src/bitvec.c 3ee4c8b2c94ed3a7377256e18199e6ff5cf33f63
  F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
- F src/btree.c 4c8caaeed7878aafdb607c3d2bcbc365bb0d19a1
- F src/btree.h 368ceeb4bd9312dc8df2ffd64b4b7dbcf4db5f8e
+ F src/btree.c 7bb920c473c277380fcb3e8a8ee28ce1a48e0abc
+ F src/btree.h a5008b9afe56e8e54ade6c436a910f112defcca9
  F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
- F src/build.c 54866fbafa09d494269bdefc79995eb7207003a6
- F src/callback.c ed6c2a4a712eb7287ff64e20e3c23265dfb8a7ce
- F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f
+ F src/build.c 6661513c8f90a23d44ed5e5ada7ea40fac6b6b77
+ F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
+ F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
  F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198
- F src/date.c ca17321bc17cca8f40e0843edea4fafff974998e
- F src/dbstat.c b2ec6793eef97aebb4d171d490a4ffdfa9f2475c
+ F src/date.c 0b73e681c11fca867fec554750c07fe0d4e417c1
+ F src/dbstat.c c845548d4346e606e2f2b7d2e714ace2b8a7dd1b
 -F src/delete.c 48802aa3ee6339f576d074336d3ae1b5f40e240f
 +F src/delete.c eeac28b3d3d88e3541bdf93e91ea7492a7b67842
- F src/expr.c fbf0706199aea23c54efe36b6932d8307c4eb872
+ F src/expr.c 9adb58153f6e943b703d43e9a1f67f77b5a75721
  F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
  F src/fkey.c 08edad1fce30f761f14b3997e89bad58f9f7f4e0
- F src/func.c 86e55fee35b9577e485f47d9dd5c1d34cd513288
- F src/global.c bd5a0af3f30b0c01be6db756c626cd3c33a3d260
+ F src/func.c 552d300265aed09eea21f68ac742a440550c0062
+ F src/global.c ded7b97efd16efda5062b65e857198e46c40e652
  F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
  F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
  F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
 -F src/insert.c 9ca97272e9f74ed0efddf3b4350ee12740cebbef
 +F src/insert.c d53917351d0542ce2be88888dca6b0b076e46aaa
- F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
- F src/legacy.c b1b0880fc474abfab89e737b0ecfde0bd7a60902
- F src/loadext.c 84996d7d70a605597d79c1f1d7b2012a5fd34f2b
- F src/main.c 411d1dbe085a45f323e3bd8fed91da06cedb4c3b
- F src/malloc.c 337e9808b5231855fe28857950f4f60ae42c417f
+ F src/journal.c fe3a3e2559ce3ce9d371afd30fbabbc074174575
+ F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e
+ F src/loadext.c 9e2a41adcaff16ebc1ebff1f336cbf33de55396f
 -F src/main.c d7415cd68121ef24c2e76b9e81ec96ffc90e6517
++F src/main.c 254cb296471997935fade3aeefb4618941a330ea
+ F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b
  F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3
@@@ -363,22 -344,22 +364,22 @@@ F src/pcache.h 4d0ccaad264d360981ec5e6a
  F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051
  F src/pragma.c 80ee77226d0008d9188356a6cbbe6010866e1bee
  F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c
- F src/prepare.c c12b786713df3e8270c0f85f988c5359d8b4d87c
+ F src/prepare.c 22df6171aec1d86904ed2ad30c2348a5748aa04e
  F src/printf.c 63e6fb12bbe702dd664dc3703776c090383a5a26
  F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
- F src/resolve.c 9f7ce3a3c087afb7597b7c916c99126ff3f12f0c
+ F src/resolve.c b8f7174e5f8c33c44ded3a25a973d0bb89228c20
  F src/rowset.c 9fe4b3ad7cc00944386bb600233d8f523de07a6e
- F src/select.c ff80004a9a6ece891a8d9327a88e7b6e2588ee6d
- F src/shell.c 8cb62662c93e75189a152c4896336f44f05ced28
- F src/sqlite.h.in 9a3a1ee60bd2681034a3b730ef1208268d00fcc8
+ F src/select.c dbc73a63bee99bf7cfac6052477ffc21e899bb08
 -F src/shell.c 89b73e894e737cc2f21e4bce0feb3ea21cc61124
 -F src/sqlite.h.in a7caa805a345d6a14136c11ccfa6f4c1a6ef6e7b
++F src/shell.c 529ff15fbafe9f698e0cb8f9f16d0ce5106fd6e9
++F src/sqlite.h.in ba31c7deaa59bc9a282239d9e39d918c6a2b346d
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d
- F src/sqliteInt.h a6127f268ee02e6f792e5d5706707a8dd9bf8808
 -F src/sqliteInt.h 5a87bccd05996f4c3facd8f831cf92a05b818b6f
++F src/sqliteInt.h 73f110a751b8e24e2e0c6020d761c16ad23acaff
  F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
  F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba
- F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
+ F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
 -F src/tclsqlite.c 13debcc6a5ca1217486f8903768c01114fbe8b58
 +F src/tclsqlite.c 89b27573473e94257d9a2d296bc6c0626c9314d0
- F src/test1.c 4f1b42699068b7806af3111786f5ad760c2c1ff7
+ F src/test1.c 8b17b1ff53aad71e7f9318a2fda247beddeaa601
  F src/test2.c 5586f43fcd9a1be0830793cf9d354082c261b25b
  F src/test3.c a8887dabbbee3059af338f20d290084a63ed1b0f
  F src/test4.c d168f83cc78d02e8d35567bb5630e40dcd85ac1e
@@@ -390,12 -371,12 +391,12 @@@ F src/test9.c bea1e8cf52aa93695487baded
  F src/test_async.c 21e11293a2f72080eda70e1124e9102044531cd8
  F src/test_autoext.c dea8a01a7153b9adc97bd26161e4226329546e12
  F src/test_backup.c 2e6e6a081870150f20c526a2e9d0d29cda47d803
- F src/test_blob.c e5a7a81d61a780da79101aeb1e60d300af169e07
+ F src/test_blob.c b2551a9b5573232db5f66f292307c37067937239
  F src/test_btree.c 2e9978eca99a9a4bfa8cae949efb00886860a64f
 -F src/test_config.c 7985332c806d1cece793475c75a6abcccde9d331
 +F src/test_config.c 1e51263265c5b78adca10fa204d1e6f164387a20
  F src/test_demovfs.c 0de72c2c89551629f58486fde5734b7d90758852
  F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc
- F src/test_fs.c a61f54247fdb843761d709879c3bcd1989b2050c
+ F src/test_fs.c f10f840ca4f8c72e4837908bd8347ac4bcab074b
  F src/test_func.c 37453d346cfcf118774efd5bf6187f7e6a7e3254
  F src/test_hexio.c abfdecb6fa58c354623978efceb088ca18e379cd
  F src/test_init.c 66b33120ffe9cd853b5a905ec850d51151337b32
@@@ -425,32 -406,32 +426,32 @@@ F src/test_vfstrace.c bab9594adc976cbe6
  F src/test_windirent.c 8f5fada630348558d5745b334702f301da1ffc61
  F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5
  F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
- F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0
- F src/tokenize.c 813934be70597edfbb685ae08fc4c8b549cf5a1e
- F src/treeview.c dc39ccf04e9331237388b9cb73289c9d87ea050b
+ F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
+ F src/tokenize.c 3d338cdd00d916ce8a05c397001d64ed58e6fe1c
+ F src/treeview.c c525282442111b3f61eb176784567cd6654db5dc
  F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280
 -F src/update.c a7eeeaffad59c6506f01303a071dac11de8269ca
 +F src/update.c c0016d277a418360456ff6af29363effbd4272f7
- F src/utf.c 10cc2519e82e3369344d0969ad4b1a333dc86d18
- F src/util.c 49ce0a65306c1c51d61cb5bc214c71cb62452de6
- F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
- F src/vdbe.c 830c927c64e477f86f33d806c585ab1904cf6e4e
+ F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
+ F src/util.c 38c06684c922694809ccb988a13562c16890a3d5
+ F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
 -F src/vdbe.c 87ae3a5657fefed7875f3eb30e7ababd48013d71
 -F src/vdbe.h c743791f723049db94f009e3e30958952bc2d512
 -F src/vdbeInt.h 84827a809229917fdd3cc05af719dbb61314a5a3
 -F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
 -F src/vdbeaux.c 2c15cf88de4df97428318c8cfac0dea873dae451
 -F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
 -F src/vdbemem.c be8381ed6de54eb9cb9dfa802823cdeb5166d855
++F src/vdbe.c 9ccb138cb7ac6c1bcda23dfaf52eff1f7761dfe5
 +F src/vdbe.h 594aef1a7dcfc2944e2f266f148140c3427fd0f0
- F src/vdbeInt.h 2a8796b099a463cf6c32514f8aa138d3b0c36b23
- F src/vdbeapi.c f9bed48c23da6487fbe6648df45f340ccc199c4f
- F src/vdbeaux.c 520bf491dcf75ce8944c9486ac7e2fc68d1ea5a4
++F src/vdbeInt.h 177eca5abb111140d06a149d8c3ae40f9f2eb4fc
++F src/vdbeapi.c ba85b78fe08dc4a9ce747e62c89a2b4a4547e74c
++F src/vdbeaux.c 325dcf1b944e6d339a5c5210b7b8c5724a8496fb
 +F src/vdbeblob.c c9f2f494b911c6fa34efd9803f0a10807da80f77
- F src/vdbemem.c 36e2779132eaff83c7ed44d76340b8d2caab17cf
- F src/vdbesort.c ef3c6d1f1a7d44cf67bb2bee59ea3d1fe5bad174
++F src/vdbemem.c c2a7c2ece87b40f1e1345c07412f2143c05eee85
+ F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
  F src/vdbetrace.c f75c5455d8cf389ef86a8bfdfd3177e0e3692484
- F src/vtab.c bef51b4f693d82b4b0184457faa8625654534091
+ F src/vtab.c 943c23b355f0a8f859f9583e7315d64bebdb0899
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c 1dd3f1aeed5765be62f27d7d2e44d46a68d891ab
+ F src/wal.c 10deb6b43887662691e5f53d10b3c171c401169b
  F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c
  F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354
- F src/where.c 984084584c10c41e46c89ac027a5cca991bc37e6
- F src/whereInt.h 78b6b4de94db84aecbdc07fe3e38f648eb391e9a
- F src/wherecode.c 791a784bbf8749d560fdb0b990b607bc4f44a38d
- F src/whereexpr.c de117970b29471177a6901d60ad83a194671dc03
+ F src/where.c b21a2b3cee42e1db4f14c8fc5124f607e0c668c0
+ F src/whereInt.h 93297d56edd137b7ea004490690fb6e2ce028a34
+ F src/wherecode.c 39c1ef4598bedf1d66249334c74efd23ddd182ac
+ F src/whereexpr.c fb87944b1254234e5bba671aaf6dee476241506a
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
  F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
@@@ -1099,7 -1080,7 +1101,7 @@@ F test/tclsqlite.test 7179b4e0bf236ddf0
  F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c
  F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30
  F test/temptrigger.test 8ec228b0db5d7ebc4ee9b458fc28cb9e7873f5e1
- F test/tester.tcl d8ef0a5ab95b16fefd7123f38647114c34b0c9b7
 -F test/tester.tcl 750365ff97047ded5f2d6e28df82a998f7c66ae0
++F test/tester.tcl 9310df7ac540d4e97d8fa4a9605a639801ede65f
  F test/thread001.test 9f22fd3525a307ff42a326b6bc7b0465be1745a5
  F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
  F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
@@@ -1412,10 -1393,10 +1414,10 @@@ F tool/mkopts.tcl 66ac10d240cc6e86abd37
  F tool/mkpragmatab.tcl f0d5bb266d1d388cf86fce5ba01a891e95d72d41
  F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
  F tool/mksqlite3c-noext.tcl 87240b09c20042999b41d5fabe091b7111287835
 -F tool/mksqlite3c.tcl b66b4170f693602cd6985aed15d9509fe2f18c84
 -F tool/mksqlite3h.tcl 1d41ab59bffb025121f75b76e183125ce41b3ec8
 +F tool/mksqlite3c.tcl a52d7e8c0888f9384fbfa2c6ddd5f357409758b9
 +F tool/mksqlite3h.tcl e7b106fc4f29fbc258e8ba9b88d9108332ea2ade
  F tool/mksqlite3internalh.tcl eb994013e833359137eb53a55acdad0b5ae1049b
- F tool/mkvsix.tcl fbeb0af7cffdf64e0fba6d65e2e5120dc14595f4
+ F tool/mkvsix.tcl 4abcaf3267171b2faadaf9b82a0dfbaa6e98f8b7
  F tool/offsets.c fe4262fdfa378e8f5499a42136d17bf3b98f6091
  F tool/omittest.tcl 34d7ac01fe4fd18e3637f64abe12c40eca0f6b97
  F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b
@@@ -1446,9 -1427,10 +1448,9 @@@ F tool/varint.c 5d94cb5003db9dbbcbcc5df
  F tool/vdbe-compress.tcl 5926c71f9c12d2ab73ef35c29376e756eb68361c
  F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
  F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
- F tool/warnings.sh ef6ebc6fd8d2dc35db3b622015c16a023d4fef4f
+ F tool/warnings.sh a98af506df552f3b3c0d904f94e4cdc4e1a6d598
  F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
- P f6d1cf79437f892220e93635c377513160ee7fd7 3d862f207e3adc00f78066799ac5a8c282430a5f
- R b476bf4ab3b143a25fb59e5c7bd22337
 -P 2e67a1c823c7003e7d2619c7d8b6db6ce046c527 aab53a21894ba51d325fd8f8f4bb4163ece74391
 -R 8a8e5a80c02a4dfa694df7d4a40dc042
 -T +closed aab53a21894ba51d325fd8f8f4bb4163ece74391
++P 631023dd9aa19cd8d92d712941d58e7148821995 bf46179d4484376909dce40ffcc06fecb19b3544
++R 7e6dc514e3703b1055f28159276cc00f
  U drh
- Z a1cb35e211e072ee0c64a1a99f864eec
 -Z a9e5cc9fdd4504d0ecf5a0daa8c57736
++Z d59a306a1e57a2c5fa67f4c507e15fb8
diff --cc manifest.uuid
index 2fbe2597df81b37d879f3938f695e17162b745a9,6a068ab962b08b3e59d4fc0de45b29a4447e7705..fa6b7d256f8c0ccad5486f48992746afa359a6ed
@@@ -1,1 -1,1 +1,1 @@@
- 631023dd9aa19cd8d92d712941d58e7148821995
 -bf46179d4484376909dce40ffcc06fecb19b3544
++b86590043e17705ada90562cf30f69b3e3ef65a4
diff --cc src/main.c
Simple merge
diff --cc src/shell.c
Simple merge
diff --cc src/sqlite.h.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
index cab0298348b2bff07a0de0f5b1d4024201140932,3351a4455148a828589578b65580a2a11695bba9..7a47ef8b89d57944b00ad88e838fac26463e6b06
@@@ -4338,8 -4320,14 +4350,9 @@@ case OP_InsertInt: 
    pC->cacheStatus = CACHE_STALE;
  
    /* Invoke the update-hook if required. */
-   if( rc==SQLITE_OK && db->xUpdateCallback && op && HasRowid(pTab) ){
+   if( rc ) goto abort_due_to_error;
 -  if( db->xUpdateCallback && pOp->p4.z ){
 -    zDb = db->aDb[pC->iDb].zName;
 -    zTbl = pOp->p4.z;
 -    op = ((pOp->p5 & OPFLAG_ISUPDATE) ? SQLITE_UPDATE : SQLITE_INSERT);
 -    assert( pC->isTable );
 -    db->xUpdateCallback(db->pUpdateArg, op, zDb, zTbl, iKey);
 -    assert( pC->iDb>=0 );
++  if( db->xUpdateCallback && op && HasRowid(pTab) ){
 +    db->xUpdateCallback(db->pUpdateArg, op, zDb, pTab->zName, iKey);
    }
    break;
  }
@@@ -4453,17 -4409,15 +4466,18 @@@ case OP_Delete: 
  
    rc = sqlite3BtreeDelete(pC->uc.pCursor, pOp->p5);
    pC->cacheStatus = CACHE_STALE;
++  if( rc ) goto abort_due_to_error;
  
    /* Invoke the update-hook if required. */
 -  if( rc ) goto abort_due_to_error;
 -  if( hasUpdateCallback ){
 -    db->xUpdateCallback(db->pUpdateArg, SQLITE_DELETE,
 -                        db->aDb[pC->iDb].zName, pOp->p4.z, pC->movetoTarget);
 -    assert( pC->iDb>=0 );
 +  if( opflags & OPFLAG_NCHANGE ){
 +    p->nChange++;
 +    if( rc==SQLITE_OK && db->xUpdateCallback && HasRowid(pTab) ){
 +      db->xUpdateCallback(db->pUpdateArg, SQLITE_DELETE, zDb, pTab->zName,
 +          pC->movetoTarget);
 +      assert( pC->iDb>=0 );
 +    }
    }
 -  if( pOp->p2 & OPFLAG_NCHANGE ) p->nChange++;
 +
    break;
  }
  /* Opcode: ResetCount * * * * *
diff --cc src/vdbeInt.h
Simple merge
diff --cc src/vdbeapi.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge
diff --cc src/vdbemem.c
Simple merge
diff --cc test/tester.tcl
Simple merge