]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge the latest trunk changes into begin-concurrent-report branch via the
authordrh <>
Fri, 21 May 2021 16:32:15 +0000 (16:32 +0000)
committerdrh <>
Fri, 21 May 2021 16:32:15 +0000 (16:32 +0000)
begin-concurrent-pnu branch.

FossilOrigin-Name: 1dc6cf51138bd16c1e291f3ddb0fa00fd35fbb087de54e0b4c4afd5dd52da62c

12 files changed:
1  2 
manifest
manifest.uuid
src/btree.c
src/insert.c
src/main.c
src/pager.c
src/sqlite.h.in
src/sqliteInt.h
src/vdbe.c
src/vdbeInt.h
src/vdbeapi.c
src/wherecode.c

diff --cc manifest
index ba0c84883f2aa3663937dcb200fa60d988a5d7ca,1f46325671d130687e8379e15a773db37547ffd9..cd0f9c16f2b96ad5a007aa6f807c146b5ef6d047
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Merge\slatest\schanges\sinto\sthis\sbranch.
- D 2021-04-07T17:46:32.744
 -C Merge\srecent\strunk\schanges\sinto\sthe\sbegin-concurrent-pnu\sbranch.
 -D 2021-05-21T16:17:42.430
++C Merge\sthe\slatest\strunk\schanges\sinto\sbegin-concurrent-report\sbranch\svia\sthe\nbegin-concurrent-pnu\sbranch.
++D 2021-05-21T16:32:15.249
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -482,20 -482,20 +483,20 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7
  F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
  F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
  F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
- F src/alter.c 14d5d9ba332de515c6e2f729e728426cdd6f5683cdc356ba6b6e3444e1ed210e
+ F src/alter.c df53c39fd4f32528fc7ad8188b3bf2b506e1a8b3bb975b14f16a1bc6e901950f
  F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c
- F src/attach.c 9cbe761e464025694df8e6f6ee4d9f41432c3a255ca9443ccbb4130eeb87cf72
+ F src/attach.c a514e81758ba7b3a3a0501faf70af6cfc509de8810235db726cfc9f25165e929
  F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853
 -F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d
 -F src/bitvec.c 8433d9e98dd6f2ea3286e0d2fe5d65de1bfc18a706486eb2026b01be066b5806
 +F src/backup.c 0d3f5004d5c85f257add00aee97687d40790a471a5d56306043ed9a7b53d6994
 +F src/bitvec.c a012cfe503cddd1df1a75c139baf4586acc32f25c66f79039caf1d06474434f2
  F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
- F src/btree.c 7fad474c16bfe7eabf35139c1285a8b54784cadda1f7c5b964f83a68c052c7ae
 -F src/btree.c c48a67a825d4b9df9c86d5f44ad9cca92c7059dc84a3e00db7b519e160449f5e
 -F src/btree.h ccdc64bd1eee7ba79d4c0b2af22b6df1e5ededdbf9606f45f4fca4738dd6fa0b
 -F src/btreeInt.h 1e9f10107a4ec5d2940ae5b859242ae83b81402986724bed08b8491a5ea64a4d
++F src/btree.c 2796e765c14282a0f73ad5a050f9fa69c067cf0ac1d77950e10ca1fd26ef80ea
 +F src/btree.h 888d9cea384478728e1e475e1660bd4138e3ec635f1b430e3f57e88d9c81d2fe
 +F src/btreeInt.h b8c4dee39e4cbe127a6cf479f32e345e186db63923e937b5f42807c76bfd8e9d
- F src/build.c f197c3433d4c69d23dfb6861e52ccb1e28a37bb4cc57c45cbd9563c2e5f33f16
+ F src/build.c 3a6da77c49a36ad578e9d534597e649256a5bd5c12676a17d837cfc1a381948a
  F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c
  F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
- F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410
+ F src/ctime.c 3052b6b05ed9ef547a3dd66b8e01bfa9d582e78752ad6ed327da84652641e038
  F src/date.c e0632f335952b32401482d099321bbf12716b29d6e72836b53ae49683ebae4bf
  F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
  F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c
@@@ -509,10 -509,10 +510,10 @@@ F src/hash.c 8d7dda241d0ebdafb6ffdeda31
  F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
  F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144
  F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
- F src/insert.c 129f686e23a940a061b85c2dbc60c6c04699bcba1a47f2ac77a98aed2730ad5b
 -F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1
++F src/insert.c 7c7ef7b00c58443b5a3832eb4a963377fa9216682d992d5bc96310fb00625496
  F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
  F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067
- F src/main.c 985fba2ca304a27886d37ae2482d42f5ead58d9f296835f59f0902af9973d6c5
 -F src/main.c 28f45be66f575edf05465a2bc91ec50ebff6bb49099ef884f4dd506d83fd7769
++F src/main.c 11ef55f5f32ac56319f86d758466bf9451500f457cf10802b26de400757371f1
  F src/malloc.c c1af4ac5a463648cd2953fd4ac679b3ba9022ce5ec794a60806150ad69dfd33a
  F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
  F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
@@@ -532,34 -532,34 +533,34 @@@ F src/os.c 6e94cd64b134c9317e52ad534117
  F src/os.h 48388821692e87da174ea198bf96b1b2d9d83be5dfc908f673ee21fafbe0d432
  F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
  F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
- F src/os_unix.c 9ee493ab91a3b20f5671ff3b4447ddbb64ae653b013258f676d75f6f658414eb
+ F src/os_unix.c ff4738e222bbbc2ecc396398c8ba1ae757bee03b782a8dd8bc8a5d39128e52d1
  F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
  F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
- F src/pager.c a7ea62b293a84853f9bbfbf0a35a7472263d3af22f427c19fbef0e6087b93741
 -F src/pager.c 12b7e6f061247cc7e24d81dddd0161ba9e317ef3c3b93f0a299873746a07d989
 -F src/pager.h fdc30693c403aa9b4293d0b126346db7e450f8f0e5d2c1bb8355acb1cb8da6fd
++F src/pager.c 8302eb7aab26c8f0120c714d5f0505ba41140790b76fc62ff8163ca00b7122d7
 +F src/pager.h ed1f7bc91ceae75fa918d51f7c2ad071a5458cc3dc0085ca7577f8d51bf2d7cb
- F src/parse.y 3a7f2156485e377a637b4217b797001cf2ed9228e501f8d34fd06a9f46a40a73
+ F src/parse.y 68f3bdc6ab07f5660944cde812318eab6007416fd1ea008422a96f1675c75ff2
  F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177
  F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
  F src/pcache1.c 388304fd2d91c39591080b5e0f3c62cfba87db20370e7e0554062bfb29740e9f
  F src/pragma.c eb42cb9bec189cf18cef5d8fcae56e13bb73ef2b019b198fb48740ced81bce95
  F src/pragma.h b93fd693bd38cefeaf8e2c7e8c929717f7799a9770104cdd2bae8df2a84e2da7
- F src/prepare.c 7a0fc6866748541af55e59f950f3461aa419f137d6e6a16c6246c115b9198287
+ F src/prepare.c d778af9986f3b0107c5b255dcfe2696e8e99e00fb77c5115bbfea4e92c3302e7
  F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
  F src/random.c f27af4099afaea7284ade5c206224dcfdb2334cfd119d018b470d46356b3f27d
- F src/resolve.c fc136d935f19966747663bed605ad7f06f84f9fe7bf7bf79e9bf844ef5c7556d
+ F src/resolve.c 40e216d9a72e52841a9c8e0aec7d367bade8e2df17b804653b539b20c1ab5660
  F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
- F src/select.c a270ad51cdc21aa3c5a9fae50db3c7edc01945d048dc2de28f2880a8f07e6d52
- F src/shell.c.in 9320b476fde0f7c46700e5695b69b435f1e46843a1513cdd187ac426cdbee016
- F src/sqlite.h.in cd68c86bf2c2bca6406085564268ec77e0e8acad3e447ce5d887ef211429d323
+ F src/select.c 52ed98f39e1629ccf568b372f29b376ca6007158a46cdd956dbdcf8cab05fc89
+ F src/shell.c.in 1b32ba2918ede13b68df47c7b92b72ba0d06e68d384e78bb9d7456527271d400
 -F src/sqlite.h.in a5d8462d3c5a45240a258e6ed401b6fc14b7f4d2e00e94b864c31fc019151ce1
++F src/sqlite.h.in 3cb1a5e743b9dedd528af37562a55e34f56bd46c332fca91959e6abced32e0b0
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
- F src/sqliteInt.h 043c8af8fac4566a9c55f45d7c8680c9813626b29abf5c8967ebc50bf702310a
 -F src/sqliteInt.h 8b2ad8ea70a7c4a836cc5d27f990bfe3b1fd47f0b58c720ec661f58dd1ba115c
++F src/sqliteInt.h 81408a969ee8d6efac8d24bcb32f61fcabfdd246b03938184fc573ed0ca6873f
  F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
  F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
- F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71
+ F src/tclsqlite.c 97645e4a15dde6a6ad6de8d81057ff9869413b866015a89e208fedacd709493e
 -F src/test1.c bb6fe83c5a0e255930c14cc6f0b29414410661839fcdd95015abed823df636b4
 -F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5
 +F src/test1.c 460024efcc596adf9a4a860de53806a2ac013532af846e6f978d7c434af27d69
 +F src/test2.c cb988be1ee1b972dc471e6b076087cfa9cb9ce5c2aa31e98ecf41c3256a72a53
  F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644
  F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159
  F src/test5.c 328aae2c010c57a9829d255dc099d6899311672d
@@@ -620,26 -620,26 +621,26 @@@ F src/upsert.c df8f1727d62b5987c4fd302c
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
  F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048
  F src/vacuum.c 9d6ac090ff36d80f0a2c5bfc63994b714c464bfc44efa5056c457a6a4163dc99
- F src/vdbe.c 2a0a30c6e595624924e578bbe6579a7f3b3fd548cb3ab17b8c92f24611a1b025
 -F src/vdbe.c 897ee680a162cb407457fcf3b4220d38e115de02612254602fdc8ecc881cc1e8
++F src/vdbe.c 409213701d5001e854c2c22f5c12295fc94ffe40e105a7ce464f4cd1a06eade4
  F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
- F src/vdbeInt.h 5762107e9092be62790460ead0972c6e77146b8c5a63dd2bd41718c3ae9f499d
- F src/vdbeapi.c d8f8c94303d8455f4152aa9bbff2217feb06486df94694313421cf3c8bd0378c
- F src/vdbeaux.c 816663d5ab438d5bf373aaab876de8bb5c05ba08d4dd7cf74c3fd6937c796b07
- F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1
- F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f
 -F src/vdbeInt.h 58980223a32495ad059d10581b83e133abdc77248b1bab85c080cab8a13bd819
 -F src/vdbeapi.c d9e99daf59fec928986838b3389a7337e82fec6b3b5de30206cb99fb4661b94e
++F src/vdbeInt.h ffdda10e25c4da582a7e1cb1af37d4be9d9dd181c55ea95c61cc8bdc3c250647
++F src/vdbeapi.c 3f32ddfcdd548a98ccf11647fd2d95b790cfb34cbd20450297e387cd4de3749d
+ F src/vdbeaux.c 708f3479a4b1f895f654e29b4fa597ee4c2927ecde3a27ed07dda964a3a12b3a
+ F src/vdbeblob.c c6b8db50b227f66fb404215732068df76485b5b433e5f9d4d9ac27410b218193
+ F src/vdbemem.c 175c73ced03edbb0f6567a41c8032afaeb83372090fa7bddfc88a67e28da2b8a
  F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a
  F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724
  F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
- F src/vtab.c 032a0165c147fda16927e6a3230e90c068d4af93f887ce94e26f678fe48e5e4c
+ F src/vtab.c b928405ccb66040fc6c3a11eaa93ddb02cbf20f9ab6860b301b222b9b50dc089
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
- F src/wal.c c9dfe3054c82aaa8d1dea91b56afa9397b54e55d5fb1dcbac32a4a7f6231bdc9
+ F src/wal.c 59ad6d70c32f6e52d9695b081a429b5c2ed76b116bee5dcfed88d3e78148164a
  F src/wal.h 7ffe787437f20a098af347011967a6d3bb8e5c3dc645e6be59eff44d2b2c5297
- F src/walker.c d42d6c80ea363ef689a462e65eefcfe87deab924c50de5baa37ecb6af7d7ddaa
- F src/where.c a41a5713482208a67524f596110cfb3a403cff2c29b8b2cb53d32647cad83f73
- F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4
- F src/wherecode.c dbc9ff7386512869d574cf1617763be9f0ea298626805ba68e0423fd0fbb11af
- F src/whereexpr.c 4ba94b8ebbff97c658b212de6ccdb6d3a41847800bdf99e7a2a967c250269f2c
- F src/window.c ae9fbd0cbaa39e1b384c13289ed769f9981383bde7b2f262c70ad6c42e5ab226
+ F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac
+ F src/where.c 32f41c3c93c6785e0077e3a2cdc669c3ccfe70173787847be77f294c18fc7dc3
+ F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b
 -F src/wherecode.c 110ed13049e0f1dc27e9dd942eb870417b36480cb7819302f5804cbcf9330b0e
++F src/wherecode.c d4dded15e9b105dc6d6ade682e89463f2637d45135139058aadfaa9436de6fde
+ F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5
+ F src/window.c ce5e73ab88a8527d268673906bf89cbe58c61bca8d54d38ed8c33c3220a276ee
  F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
  F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627
  F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7
@@@ -1930,7 -1930,7 +1932,7 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P a22162593366c2d3be7eca2c64516cc2f2fffe876989dce47ef0966f306e32da 1f3f7e4bf3f16eeb68261c06b14201e445a8544d54505cef57a24d7ab0e93191
- R 8d8ba4844dafbc9c07a435785bda2db8
- U dan
- Z 0703168fc0fe46b3fc0b7f1bbcf979ab
 -P 1f3f7e4bf3f16eeb68261c06b14201e445a8544d54505cef57a24d7ab0e93191 240f7494bfa3e0806ae2f971e78039c62a419de647cb9e807309f90e1d2a536d
 -R f0d4d8a64eedd347c1d59d5f1673d038
++P 655c28412fcbd3d39c8b4f1167229f28bc01a22b08c172fadddef0a4247d501f a8d05f8e92b13bb5c150c1e3e7cf861d15bc7d50149ebb83646a2376cbfbd52b
++R cfd252e42cd99e4e94680145c5f75dc6
+ U drh
 -Z 332e39eb47fddaa60ceb507ece121f2a
++Z 1ea5827baf41d9bb6a5061b0098597da
diff --cc manifest.uuid
index 5b9065886f926020c8e5886c265618477b8445d5,6fd1b26a03683464e3bea858b0540c22f5af4d12..42e455ab7a68d013775621e2c4728c3042ff919d
@@@ -1,1 -1,1 +1,1 @@@
- 655c28412fcbd3d39c8b4f1167229f28bc01a22b08c172fadddef0a4247d501f
 -a8d05f8e92b13bb5c150c1e3e7cf861d15bc7d50149ebb83646a2376cbfbd52b
++1dc6cf51138bd16c1e291f3ddb0fa00fd35fbb087de54e0b4c4afd5dd52da62c
diff --cc src/btree.c
Simple merge
diff --cc src/insert.c
index ba14b96d2ac652fa2f866ecdd695f3d9f60d500f,1ed0b431566dd6da537ae14b6e1a4b97754f10a0..616dd20b7c18a64a4f42fb8b8986958c63ac6836
@@@ -2441,7 -2442,7 +2443,7 @@@ static void codeWithoutRowidPreupdate
    sqlite3ReleaseTempReg(pParse, r);
  }
  #else
--# define codeWithoutRowidPreupdate(a,b,c,d)
++# define codeWithoutRowidPreupdate(a,b,c,d,e)
  #endif
  
  /*
diff --cc src/main.c
Simple merge
diff --cc src/pager.c
Simple merge
diff --cc src/sqlite.h.in
Simple merge
diff --cc src/sqliteInt.h
Simple merge
diff --cc src/vdbe.c
index 8df7844bc27f01feaa17e28de6f10aaf62953386,e0d7dca7e8eddfae22bb3bf8b6ede11df780c078..544a4764fe4b1daa24bd5e3b745653abc534d91b
@@@ -2018,6 -2044,31 +2044,36 @@@ case OP_Ge: {             /* same as TK
    pIn3 = &aMem[pOp->p3];
    flags1 = pIn1->flags;
    flags3 = pIn3->flags;
+   if( (flags1 & flags3 & MEM_Int)!=0 ){
+     assert( (pOp->p5 & SQLITE_AFF_MASK)!=SQLITE_AFF_TEXT || CORRUPT_DB );
+     /* Common case of comparison of two integers */
++    if( pOp->p4type==P4_INT32 ){
++      sqlite3BtreeScanLimit(
++          p->apCsr[pOp->p4.i]->uc.pCursor, 0, pIn1->u.i, pOp->opcode
++      );
++    }
+     if( pIn3->u.i > pIn1->u.i ){
+       iCompare = +1;
+       if( sqlite3aGTb[pOp->opcode] ){
+         VdbeBranchTaken(1, (pOp->p5 & SQLITE_NULLEQ)?2:3);
+         goto jump_to_p2;
+       }
+     }else if( pIn3->u.i < pIn1->u.i ){
+       iCompare = -1;
+       if( sqlite3aLTb[pOp->opcode] ){
+         VdbeBranchTaken(1, (pOp->p5 & SQLITE_NULLEQ)?2:3);
+         goto jump_to_p2;
+       }
+     }else{
+       iCompare = 0;
+       if( sqlite3aEQb[pOp->opcode] ){
+         VdbeBranchTaken(1, (pOp->p5 & SQLITE_NULLEQ)?2:3);
+         goto jump_to_p2;
+       }
+     }
+     VdbeBranchTaken(0, (pOp->p5 & SQLITE_NULLEQ)?2:3);
+     break;
+   }
    if( (flags1 | flags3)&MEM_Null ){
      /* One or both operands are NULL */
      if( pOp->p5 & SQLITE_NULLEQ ){
          flags3 = (pIn3->flags & ~MEM_TypeMask) | (flags3 & MEM_TypeMask);
        }
      }
 -    assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 );
 -    res = sqlite3MemCompare(pIn3, pIn1, pOp->p4.pColl);
 +    /* assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 ); */
 +    res = sqlite3MemCompare(pIn3,pIn1,pOp->p4type==P4_COLLSEQ?pOp->p4.pColl:0);
    }
- compare_op:
    /* At this point, res is negative, zero, or positive if reg[P1] is
    ** less than, equal to, or greater than reg[P3], respectively.  Compute
    ** the answer to this operator in res2, depending on what the comparison
@@@ -5124,13 -5171,8 +5183,11 @@@ case OP_Insert: 
  #ifdef SQLITE_ENABLE_PREUPDATE_HOOK
    /* Invoke the pre-update hook, if any */
    if( pTab ){
-     if( !(pOp->p5 & OPFLAG_ISUPDATE) && db->xPreUpdateCallback ){
-       if( db->xPreUpdateCallback ){
-         sqlite3VdbePreUpdateHook(p, pC, SQLITE_INSERT,zDb,pTab,x.nKey,pOp->p2);
-       }
 +    sqlite3BtreeScanWrite(
 +        pC->uc.pCursor, SQLITE_INSERT, pC->movetoTarget, (u8*)pData->z, pData->n
 +    );
+     if( db->xPreUpdateCallback && !(pOp->p5 & OPFLAG_ISUPDATE) ){
+       sqlite3VdbePreUpdateHook(p,pC,SQLITE_INSERT,zDb,pTab,x.nKey,pOp->p2,-1);
      }
      if( db->xUpdateCallback==0 || pTab->aCol==0 ){
        /* Prevent post-update hook from running in cases when it should not */
@@@ -5282,20 -5324,16 +5339,20 @@@ case OP_Delete: 
  
  #ifdef SQLITE_ENABLE_PREUPDATE_HOOK
    /* Invoke the pre-update-hook if required. */
 -  if( db->xPreUpdateCallback && pOp->p4.pTab ){
 -    assert( !(opflags & OPFLAG_ISUPDATE) 
 -         || HasRowid(pTab)==0 
 -         || (aMem[pOp->p3].flags & MEM_Int) 
 -    );
 -    sqlite3VdbePreUpdateHook(p, pC,
 -        (opflags & OPFLAG_ISUPDATE) ? SQLITE_UPDATE : SQLITE_DELETE, 
 -        zDb, pTab, pC->movetoTarget,
 -        pOp->p3, -1
 -    );
 +  if( pOp->p4.pTab ){
 +    rc = sqlite3BtreeScanWrite(pC->uc.pCursor, 0, pC->movetoTarget, 0, 0);
 +    if( rc ) goto abort_due_to_error;
 +    if( db->xPreUpdateCallback ){
 +      assert( !(opflags & OPFLAG_ISUPDATE) 
 +           || HasRowid(pTab)==0 
 +           || (aMem[pOp->p3].flags & MEM_Int) 
 +      );
 +      sqlite3VdbePreUpdateHook(p, pC,
 +          (opflags & OPFLAG_ISUPDATE) ? SQLITE_UPDATE : SQLITE_DELETE, 
 +          zDb, pTab, pC->movetoTarget,
-           pOp->p3
++          pOp->p3, -1
 +      );
 +    }
    }
    if( opflags & OPFLAG_ISNOOP ) break;
  #endif
diff --cc src/vdbeInt.h
Simple merge
diff --cc src/vdbeapi.c
Simple merge
diff --cc src/wherecode.c
Simple merge