From: dan Date: Thu, 11 Mar 2021 19:26:42 +0000 (+0000) Subject: Merge latest changes from begin-concurrent-pnu into this branch. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9c7e20af0044764e3f2b873b9713901aa8fb8284;p=thirdparty%2Fsqlite.git Merge latest changes from begin-concurrent-pnu into this branch. FossilOrigin-Name: 6994a2d8af30e5f5a9ce7735c3d1b2b66c1adc8f6fff37c894e2b827fe714f91 --- 9c7e20af0044764e3f2b873b9713901aa8fb8284 diff --cc manifest index 08fd959765,73c767856a..eda2d3d333 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ -C Merge\slatest\strunk\schanges\swith\sthis\sbranch. -D 2021-03-11T19:08:44.266 +C Merge\slatest\schanges\sfrom\sbegin-concurrent-pnu\sinto\sthis\sbranch. - D 2020-11-26T17:54:15.753 ++D 2021-03-11T19:26:42.089 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -39,8 -39,7 +39,8 @@@ F configure.ac 4e4b58b32f88c8da9914a2f2 F contrib/sqlitecon.tcl 210a913ad63f9f991070821e599d600bd913e0ad F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd F doc/begin_concurrent.md 4bee2c3990d1eb800f1ce3726a911292a8e4b889300b2ffd4b08d357370db299 +F doc/begin_concurrent_report.md 58c032ebc2d5980e3b25bbe805f2addd31be787d1ebe51f74f4f48044fa9e2c0 - F doc/lemon.html c5d8ba85ac1daef7be8c2d389899480eb62451ff5c09b0c28ff8157bb8770746 + F doc/lemon.html 1bb72ece6271df0d901d233551dd985f2c6ba30d09382cf2d321ed951ab57491 F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710 F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56 @@@ -479,20 -481,20 +482,20 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a - F src/alter.c b6de60d59419e34f5b48ff2b21fe0f9bb66fc714e5545a6ac790ac7a0c46548c + F src/alter.c 1f9383846b52e655d40479a5a5659bf60300ed43f7467e6e85d66588ba48f51b F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c - F src/attach.c 0f497c15c4cfe3bdcb214f0dbdbbb6c5ed7e8a9308ac445c7959f5e5780437a9 - F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06 + F src/attach.c 9cbe761e464025694df8e6f6ee4d9f41432c3a255ca9443ccbb4130eeb87cf72 + 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 3b25558afd7aed2a2699f77fd25c8207a0d6971934d39098e7f21e2e2e7c70e4 - F src/btree.h 45200639793d7576ec138a050b69cb26ebc83353cd39a7308192758c463de514 - F src/btreeInt.h 8bf694b0b53c07a8b52f27c0c7af52d2d9d9ad8074fcc5c1c6690c6747619a61 - F src/build.c 4c44cee793d16c653986cf00c32c36cf0cbfe4932a319cc7d5c0f10a2801151c -F src/btree.c 30dd658db182dc3138d369595fac9e992916f53d5d352c4f868f4ef95a4ed2e6 -F src/btree.h ccdc64bd1eee7ba79d4c0b2af22b6df1e5ededdbf9606f45f4fca4738dd6fa0b -F src/btreeInt.h 0ef4c1cba8eafcb54f508c3a6cb3aedbe961ee03e4c147d28252f1e5b5357033 ++F src/btree.c eb07eb19d061fd36cb9036d1e192d20b81536d2b386606ab7c88262127ba3494 ++F src/btree.h 888d9cea384478728e1e475e1660bd4138e3ec635f1b430e3f57e88d9c81d2fe ++F src/btreeInt.h 393cab2ca93b99a6350d495e393cbdd3960f476a835c8e0e6118bc59fff0803f + F src/build.c 11e6dae6804708dd707e01bb0b24d09e33a7801bd47add262bbeeb735bbb37b5 F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e - F src/ctime.c e98518d2d3d4029a13c805e07313fb60c877be56db76e90dd5f3af73085d0ce6 + F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410 F src/date.c dace306a10d9b02ee553d454c8e1cf8d3c9b932e137738a6b15b90253a9bfc10 F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c @@@ -506,10 -508,10 +509,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 5a771fd9cd394965269f6fb456fce300e8c9087cb915b2a9c0ce8e57d0c2f378 -F src/insert.c 8942baede303a54ba3b6d06200d5b74c9bc25ababec8a55823e06309748cd4a3 ++F src/insert.c 358c896d5566cc8ea84fa33496b486e1d933efe6594176091312c35b62886483 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067 - F src/main.c 84a1433cb42191a3bc850e1646b41db4987e484daa8d55ef15921eb863b2750c -F src/main.c 5becd80bb8369fe73cea609ac830dd43453d0a356c56ef361fd74698988484a0 ++F src/main.c 985fba2ca304a27886d37ae2482d42f5ead58d9f296835f59f0902af9973d6c5 F src/malloc.c c1af4ac5a463648cd2953fd4ac679b3ba9022ce5ec794a60806150ad69dfd33a F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de @@@ -532,31 -534,31 +535,31 @@@ F src/os_setup.h 0dbaea40a7d36bf311613d F src/os_unix.c 9b8d6679300ee39b891c60a70f64c86bb89bd04862c1fd697bdf959867c74cbb F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a - F src/pager.c df2d47fe39424d8ae06120e8bbb3e06065330ce85c310caa81c7e03501b4e375 -F src/pager.c 0122015aef06338c61d0b94df77bce4a670c0376dd88ec27260d0ba319d2f869 -F src/pager.h fdc30693c403aa9b4293d0b126346db7e450f8f0e5d2c1bb8355acb1cb8da6fd ++F src/pager.c 4f0fd96e2a425d3146d8b94364cebb44bc7ca76faa817ad33be5687ff7c9a8b7 +F src/pager.h ed1f7bc91ceae75fa918d51f7c2ad071a5458cc3dc0085ca7577f8d51bf2d7cb - F src/parse.y 5ba6522aba301e829917c8dd48290d357b6a9f68276d411739d01f266bafe4be + F src/parse.y 3a7f2156485e377a637b4217b797001cf2ed9228e501f8d34fd06a9f46a40a73 F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 - F src/pcache1.c 6596e10baf3d8f84cc1585d226cf1ab26564a5f5caf85a15757a281ff977d51a - F src/pragma.c 6daaaecc26a4b09481d21722525b079ce756751a43a79cc1d8f122d686806193 + F src/pcache1.c 388304fd2d91c39591080b5e0f3c62cfba87db20370e7e0554062bfb29740e9f + F src/pragma.c eb42cb9bec189cf18cef5d8fcae56e13bb73ef2b019b198fb48740ced81bce95 F src/pragma.h b93fd693bd38cefeaf8e2c7e8c929717f7799a9770104cdd2bae8df2a84e2da7 - F src/prepare.c 270170a239c0f66bd3c228f373afe24447c2614a6829ae22080babc64f241931 - F src/printf.c 30e92b638fac71dcd85cdea1d12ecfae354c9adee2c71e8e1ae4727cde7c91ed + F src/prepare.c e21b54489b5c73b06ada15e6fc79b5c6f64b06701924a6ca98944ae59e06256f + F src/printf.c 2b03a80d7c11bb422115dca175a18bf430e9c9dbaa0eee63b758f0c022f8f34f F src/random.c f27af4099afaea7284ade5c206224dcfdb2334cfd119d018b470d46356b3f27d - F src/resolve.c 1948a92ca9eab776632816b97e57c61d933474a78aad4f4ef835c916a83dbb1c + F src/resolve.c d95db73d3e6a5c689e5f6604b4d2521350e45f2a0f0f84f5a2dc2bfee56580a0 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 - F src/select.c fe64564a9437fde31824b85b02d51a2806468e3c70666528087a1cb0730caee8 - F src/shell.c.in 55113760ae91a05c6ce4558714a1c8fc7a44bf266f735de6e71ea40f79e69830 - F src/sqlite.h.in 3a8cff2d1be677f53e5700d6580ba2d1928e188cfbc17097d32ff75947a398e0 + F src/select.c bfcf53e991ee5852790f87f5fd699ac812e7dde64c1f81cb511fdc3be48ab3e8 + F src/shell.c.in af18a2e980aabe739a8188266464866fe7947b100674e07480e7ba3e37595947 -F src/sqlite.h.in 71ba363afc97d615d43ab4d1c6992036e82efb799852fe96106b79c94bb87f7f ++F src/sqlite.h.in 87051ea1e024186354ace08b93824a0baeeecfbc3733a40435d5c0518ee556be F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e - F src/sqliteInt.h 973e01f45609bfc01239629350252cdeba5cd563881a1a2114c069a6ced9cf6c -F src/sqliteInt.h e8cad670ae52a0781446f6d4c5415d587a5ab3e99f1a65fc3a95a377d4ce6e79 ++F src/sqliteInt.h f4d7a66d97c54f9181cbad8708d9df58b8b44034ab4c0e8b707f9977877c9b71 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71 - F src/test1.c 8da599b6b3cd9e25f176ef1bb4b82042509cd20911074aa2073b5ede0a10d194 -F src/test1.c 6de6fac373fbf2533e8e772543398cb826d09e6aa38e199a496e09e2a4d1c75d -F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5 ++F src/test1.c 8f00a276e2db0737cc062b0c6bce7638187518a0607ee780c1892444d7b43f7c +F src/test2.c cb988be1ee1b972dc471e6b076087cfa9cb9ce5c2aa31e98ecf41c3256a72a53 F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644 F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159 F src/test5.c 328aae2c010c57a9829d255dc099d6899311672d @@@ -609,19 -611,19 +612,19 @@@ F src/test_windirent.h 90dfbe95442c9762 F src/test_window.c cdae419fdcea5bad6dcd9368c685abdad6deb59e9fc8b84b153de513d394ba3f F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c - F src/tokenize.c 4dc01b267593537e2a0d0efe9f80dabe24c5b6f7627bc6971c487fa6a1dacbbf - F src/treeview.c 4b92992176fb2caefbe06ba5bd06e0e0ebcde3d5564758da672631f17aa51cda - F src/trigger.c 515e79206d40d1d4149129318582e79a6e9db590a7b74e226fdb5b2a6c7e1b10 - F src/update.c 0e42cd8b2fa8cdfc3f05fecc9deb3ca1804494b69ca75e7b845e49de20a559d5 - F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78 + F src/tokenize.c c64c49d7c2ec4490c2fef1f24350167ba16b03b0c6cee58ad1a1d70a4325d4e9 + F src/treeview.c c6260e1fa5f41c361b2409edc9b0050bcaef5bc4d6abc467fbc45f0d7ccf3d84 + F src/trigger.c 861c3ec2c5b0fc830bdf82470454a9324fad70cbaa96d2e208fb54577c9e8d28 + F src/update.c fefa3fb0f7c2dd85516d258a642bc8cb4f35071b6b0985036093124edb967520 + F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 - F src/util.c c0c7977de7ef9b8cb10f6c85f2d0557889a658f817b0455909a49179ba4c8002 + F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048 F src/vacuum.c 9d6ac090ff36d80f0a2c5bfc63994b714c464bfc44efa5056c457a6a4163dc99 - F src/vdbe.c 0426161e9361bbdd83fb6ed27f5126bf3962aa2f9b4db8e148dcb0d1d3d2a926 - F src/vdbe.h 83603854bfa5851af601fc0947671eb260f4363e62e960e8a994fb9bbcd2aaa1 - F src/vdbeInt.h 3ba661b01af773d2f51f9ad41bac663adfe19c8e333f550962f6d3090777ce22 - F src/vdbeapi.c 1b210d5a5b82783f6fadbe5f54298f01ad55eeedc5f298bb28950007d50c45ab - F src/vdbeaux.c 0aaec35c90956fb03238e9ce3981e7111a53ff99eb161ef79fa55ae14fedcf7c -F src/vdbe.c ef675ccd12f400e38d07a5a512a7a833a7ec101747d93dbc32c48d4f6c2aa17d ++F src/vdbe.c 00fe8c8b1e5a21d7469dbd2f1448434d093659416fbc00e7c5f1ed6a672f100c + F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe -F src/vdbeInt.h 3df118924e1711f1bbc8e30c46260d0ab6c3b029b32dd411f789111f76434f3c -F src/vdbeapi.c 4a43e303ec3354c785f453e881521969378e85628278ab74ba4a9df790c0d93b ++F src/vdbeInt.h dc35ea9eb9b5e0d3dd776310dd642ec2b82dea5d3fcc1529262ea8ca69827dbc ++F src/vdbeapi.c d8f8c94303d8455f4152aa9bbff2217feb06486df94694313421cf3c8bd0378c + F src/vdbeaux.c 3ca9ea12fc429b680a1a4748fe7c2dc4eee8cf0ba70c66c04ebca4fb7b652c73 F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1 F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a @@@ -631,12 -633,12 +634,12 @@@ F src/vtab.c 032a0165c147fda16927e6a323 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c c9dfe3054c82aaa8d1dea91b56afa9397b54e55d5fb1dcbac32a4a7f6231bdc9 F src/wal.h 7ffe787437f20a098af347011967a6d3bb8e5c3dc645e6be59eff44d2b2c5297 - F src/walker.c 3df26a33dc4f54e8771600fb7fdebe1ece0896c2ad68c30ab40b017aa4395049 - F src/where.c ad738741bf45999188a3047f6277063e3f6843304d581e3ad5875419afdeb6b2 - F src/whereInt.h 59077fbd0b3d01bc8715e746c86a99ebf4c85bde8a57077ec04d2a23e59666ec - F src/wherecode.c cbd5094b4c9db05453fba5342e90d9ae998792ffb264f13a721783ddc298a0c0 - F src/whereexpr.c 3a463e156ea388083c501502229c2c7f4f5c6b5330ea59bdf40d6eb6e155a25f - F src/window.c edd6f5e25a1e8f2b6f5305b7f5f7da7bb35f07f0d432b255b1d4c2fcab4205aa + F src/walker.c d42d6c80ea363ef689a462e65eefcfe87deab924c50de5baa37ecb6af7d7ddaa + F src/where.c 10d06b16670a1d2a992d52a9f08e49426d38a08fb0a7ae5f7f62fd023d560e1e + F src/whereInt.h 446e5e8018f83358ef917cf32d8e6a86dc8430113d0b17e720f1839d3faa44c4 -F src/wherecode.c e57a8690311a75d06e723e8d379f9831de04aba300e07174d236e32a7f9c7a13 ++F src/wherecode.c c515843650fb9d8314839effeed1fcbb2f6873a7b40f06f3dfb5d620db16d024 + F src/whereexpr.c 53452fe2fb07be2f4cb17f55cc721416fae0092c00717f106faf289c990b6494 + F src/window.c 7e89ac4b6cd6bb9b7772234a625d19c39b530f4ac06e43688a8b7e6a1ab512a2 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627 F test/affinity3.test eecb0dabee4b7765a8465439d5e99429279ffba23ca74a7eae270a452799f9e7 @@@ -771,8 -778,8 +779,9 @@@ F test/collateA.test b8218ab90d1fa5c59d F test/collateB.test 1e68906951b846570f29f20102ed91d29e634854ee47454d725f2151ecac0b95 F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1 F test/colname.test 87ad5458bb8709312dac0d6755fd30e8e4ca83298d0a9ef6e5c24277a3c3390e + F test/columncount.test eff33d402a7b0fde0a52a1920d238af200ca573327021e0ce3b7e5688de41449 F test/concfault.test af01b1f6cca45b8f17bb13b4406ec43ab1689181a08850b990596c7a9f4e656f +F test/concreport.test 08b32b6e042ded033a822d086a22b7acfdf118c23fd0c124fee685723175a942 F test/concurrent.test a0248ec6e3e79a5948453649cf86b5b359175cba55ea636b15426d6f0fa6c3da F test/concurrent2.test de748c7dd749c77e2af2c4b914b9b09a28ac09608042ca498c0251dc6f46aa1a F test/concurrent3.test 530671ac706f6a1d0f4992dbdd33a86408330d03cd90fb9e82ecb1b27f5fd081 @@@ -1904,7 -1926,7 +1928,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 3c0423f0a8685cf8ef165914e6f9bd8f191d32db1c8287aed2a3ba6e272fc9f0 a42e6f34f560d19df7e3835718c697ea19f905c3d2ee1bbd83ed5f2a5c36d965 - R b1f0bd34613bc63e94d6869c8a839438 -P 59d3ec295a6e640886cdccd49bd4522af29b37220fb9c99e8e39552ea2cbcdcb 07150cf15ad36c7fc681a911f66db23d610ddf110a7be7f1fcefbd8750cd135a -R a034d123a39f1f532ccc1f2bb318970c ++P d2de81a24f82d71d5ec41e8eada860cacdefc659cdee61b224e13e80b7783c62 eb3101364faabb49d180f74c795e4f1430541937fd19ce95205618c98324c797 ++R 775bb11045d76b5b5cc2218a81bde2cd U dan - Z ec08244e2ca56b3efc6f964e46511822 -Z 64a83f4dd6669919ea7a3c9b1a5b2648 ++Z 0fcfc6a6027bd72c8e8d0247efd95ecc diff --cc manifest.uuid index 3d503e671e,9ef014584d..9c17b3866c --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - d2de81a24f82d71d5ec41e8eada860cacdefc659cdee61b224e13e80b7783c62 -eb3101364faabb49d180f74c795e4f1430541937fd19ce95205618c98324c797 ++6994a2d8af30e5f5a9ce7735c3d1b2b66c1adc8f6fff37c894e2b827fe714f91 diff --cc src/insert.c index 62670dca44,f0b93ae376..401a0f85c4 --- a/src/insert.c +++ b/src/insert.c @@@ -2275,6 -2410,32 +2410,33 @@@ void sqlite3SetMakeRecordP5(Vdbe *v, Ta } #endif + /* + ** Table pTab is a WITHOUT ROWID table that is being written to. The cursor + ** number is iCur, and register regData contains the new record for the + ** PK index. This function adds code to invoke the pre-update hook, + ** if one is registered. + */ + #ifdef SQLITE_ENABLE_PREUPDATE_HOOK + static void codeWithoutRowidPreupdate( + Parse *pParse, /* Parse context */ + Table *pTab, /* Table being updated */ + int iCur, /* Cursor number for table */ - int regData /* Data containing new record */ ++ int regData, /* Data containing new record */ ++ u16 flags + ){ + Vdbe *v = pParse->pVdbe; + int r = sqlite3GetTempReg(pParse); + assert( !HasRowid(pTab) ); + assert( 0==(pParse->db->mDbFlags & DBFLAG_Vacuum) ); + sqlite3VdbeAddOp2(v, OP_Integer, 0, r); + sqlite3VdbeAddOp4(v, OP_Insert, iCur, regData, r, (char*)pTab, P4_TABLE); - sqlite3VdbeChangeP5(v, OPFLAG_ISNOOP); ++ sqlite3VdbeChangeP5(v, flags); + sqlite3ReleaseTempReg(pParse, r); + } + #else + # define codeWithoutRowidPreupdate(a,b,c,d) + #endif + /* ** This routine generates code to finish the INSERT or UPDATE operation ** that was started by a prior call to sqlite3GenerateConstraintChecks. @@@ -2323,17 -2484,9 +2485,11 @@@ void sqlite3CompleteInsertion assert( pParse->nested==0 ); pik_flags |= OPFLAG_NCHANGE; pik_flags |= (update_flags & OPFLAG_SAVEPOSITION); - #ifdef SQLITE_ENABLE_PREUPDATE_HOOK - if( update_flags==0 ){ - codeWithoutRowidPreupdate(pParse, pTab, iIdxCur+i, aRegIdx[i]); + if( 1 || update_flags==0 ){ - int r = sqlite3GetTempReg(pParse); - sqlite3VdbeAddOp2(v, OP_Integer, 0, r); - sqlite3VdbeAddOp4(v, OP_Insert, - iIdxCur+i, aRegIdx[i], r, (char*)pTab, P4_TABLE ++ codeWithoutRowidPreupdate(pParse, pTab, iIdxCur+i, aRegIdx[i], ++ OPFLAG_ISNOOP|(update_flags & OPFLAG_ISUPDATE) + ); - sqlite3VdbeChangeP5(v, OPFLAG_ISNOOP|(update_flags&OPFLAG_ISUPDATE)); - sqlite3ReleaseTempReg(pParse, r); } - #endif } sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iIdxCur+i, aRegIdx[i], aRegIdx[i]+1, @@@ -2852,7 -3021,15 +3024,15 @@@ static int xferOptimization }else if( !HasRowid(pSrc) && pDestIdx->idxType==SQLITE_IDXTYPE_PRIMARYKEY ){ idxInsFlags |= OPFLAG_NCHANGE; } - sqlite3VdbeAddOp3(v, OP_RowData, iSrc, regData, 1); + if( idxInsFlags!=(OPFLAG_USESEEKRESULT|OPFLAG_PREFORMAT) ){ + sqlite3VdbeAddOp3(v, OP_RowData, iSrc, regData, 1); + if( (db->mDbFlags & DBFLAG_Vacuum)==0 + && !HasRowid(pDest) + && IsPrimaryKeyIndex(pDestIdx) + ){ - codeWithoutRowidPreupdate(pParse, pDest, iDest, regData); ++ codeWithoutRowidPreupdate(pParse, pDest, iDest, regData, OPFLAG_ISNOOP); + } + } sqlite3VdbeAddOp2(v, OP_IdxInsert, iDest, regData); sqlite3VdbeChangeP5(v, idxInsFlags|OPFLAG_APPEND); sqlite3VdbeAddOp2(v, OP_Next, iSrc, addr1+1); VdbeCoverage(v); diff --cc src/sqliteInt.h index 2e853b98ae,603707728a..4536aef8ac --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@@ -1459,37 -1490,12 +1490,43 @@@ void sqlite3CryptFunc(sqlite3_context*, #endif /* SQLITE_OMIT_DEPRECATED */ #define SQLITE_TRACE_NONLEGACY_MASK 0x0f /* Normal flags */ +#define CURSORSCAN_WRITE 0x0001 +#define CURSORSCAN_MINVALID 0x0002 +#define CURSORSCAN_MAXVALID 0x0004 +#define CURSORSCAN_REVERSE 0x0008 +#define CURSORSCAN_MININCL 0x0010 +#define CURSORSCAN_MAXINCL 0x0020 + +#define CURSORSCAN_LIMITVALID 0x0040 +#define CURSORSCAN_LIMITINCL 0x0080 +#define CURSORSCAN_LIMITMAX 0x0100 + +#define CURSORSCAN_OOM 0x0200 +#define CURSORSCAN_PGWRITE 0x0400 +#define CURSORSCAN_PGFAIL 0x0800 + +typedef struct CursorScan CursorScan; +struct CursorScan { + int tnum; /* Root page of scanned b-tree */ + int flags; /* Mask of CURSORSCAN_* flags */ + i64 iMin; + i64 iMax; + i64 iLimit; + u8 *aMin; + u8 *aMax; + u8 *aLimit; + int nRef; /* Number of pointers to this structure */ + KeyInfo *pKeyInfo; /* KeyInfo structure for indexes */ + CursorScan *pNext; /* Next CursorScan object in list */ +}; + + + /* + ** Maximum number of sqlite3.aDb[] entries. This is the number of attached + ** databases plus 2 for "main" and "temp". + */ + #define SQLITE_MAX_DB (SQLITE_MAX_ATTACHED+2) + /* ** Each database connection is an instance of the following structure. */