From: dan Date: Thu, 26 Nov 2020 17:54:15 +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=5a8bd08012e9f0120284c68010eaf4bf1747487b;p=thirdparty%2Fsqlite.git Merge latest changes from begin-concurrent-pnu into this branch. FossilOrigin-Name: d2de81a24f82d71d5ec41e8eada860cacdefc659cdee61b224e13e80b7783c62 --- 5a8bd08012e9f0120284c68010eaf4bf1747487b diff --cc manifest index 780cd6777b,e5f6fa4117..08fd959765 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Update\sthis\sbranch\swith\sthe\s"PRAGMA\snoop_update"\sfix\sfrom\sbegin-concurrent-pnu. - D 2020-08-31T20:29:47.128 -C Merge\slatest\schanges\sfrom\strunk\sinto\sthis\sbranch. -D 2020-11-26T17:36:42.890 ++C Merge\slatest\schanges\sfrom\sbegin-concurrent-pnu\sinto\sthis\sbranch. ++D 2020-11-26T17:54:15.753 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -39,10 -39,10 +39,11 @@@ F configure.ac 73545c21eebcef9398d85c98 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 1edc0f916e771212792d4d077aedc05168bf13fd65d64d41b2c13e46ac0063a8 + F doc/lemon.html c5d8ba85ac1daef7be8c2d389899480eb62451ff5c09b0c28ff8157bb8770746 F doc/pager-invariants.txt 27fed9a70ddad2088750c4a2b493b63853da2710 F doc/trusted-schema.md 33625008620e879c7bcfbbfa079587612c434fa094d338b08242288d358c3e8a + F doc/vdbesort-memory.md 4da2639c14cd24a31e0af694b1a8dd37eaf277aff3867e9a8cc14046bc49df56 F doc/vfs-shm.txt e101f27ea02a8387ce46a05be2b1a902a021d37a F doc/wal-lock.md 781726aaba20bafeceb7ba9f91d5c98c6731691b30c954e37cf0b49a053d461d F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd @@@ -475,17 -478,17 +479,17 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a - F src/alter.c 4bc16666a0df99d49658ec66f00ca36e541ec6cb39673ccc51be6a981fb9b2ce - F src/analyze.c 5cffff3d355858cd22bfc6e20ac7203510d2e1cc935086eb06f4abb2f579f628 - F src/attach.c 0b11e00c166b622c84ec176773b1d691c61ad07d247809e3e1635d4e99e71d30 + F src/alter.c b6de60d59419e34f5b48ff2b21fe0f9bb66fc714e5545a6ac790ac7a0c46548c + F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c + F src/attach.c 0f497c15c4cfe3bdcb214f0dbdbbb6c5ed7e8a9308ac445c7959f5e5780437a9 F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06 - F src/backup.c ce116c9f5180a22a446391057a06a0cf6810260f7d314d5d99b12cfa6f17ac97 -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 abc4d4ef16281dbfd453f4d719e390792ede4db8a39c98fc853b56922e2f3748 - F src/btree.h 1b31533bd7efd217604df5da57ca12b5854d8d989a42382584d4fd0c0498073b - F src/btreeInt.h 6c3d3586c044f2447c8c56f1feb838f461071389ac42ad295695846ba446e3a8 - F src/build.c 11d915b843fa8f31c6cc8b62c7f4e68a65496effa6fbe35882ab949635b8d0bc -F src/btree.c 658804cedb4719330d8fc19fd600e1cd865793d9cd7cb4e79546ac0d986b9402 -F src/btree.h a2eda1ab68939ea3057bc797fd16179dfe2bcd247c022f62ceccd136186611a5 -F src/btreeInt.h 900af7149206694de988d14fbc116e482a732340a8dc5e4bfdd23b7faf7d6f14 ++F src/btree.c 3b25558afd7aed2a2699f77fd25c8207a0d6971934d39098e7f21e2e2e7c70e4 ++F src/btree.h 45200639793d7576ec138a050b69cb26ebc83353cd39a7308192758c463de514 ++F src/btreeInt.h 8bf694b0b53c07a8b52f27c0c7af52d2d9d9ad8074fcc5c1c6690c6747619a61 + F src/build.c 4c44cee793d16c653986cf00c32c36cf0cbfe4932a319cc7d5c0f10a2801151c F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c e98518d2d3d4029a13c805e07313fb60c877be56db76e90dd5f3af73085d0ce6 @@@ -502,11 -505,11 +506,11 @@@ 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 c1bbc78590a7538abcef5b7dfd05edd86176387848daa565def9eb375e523d12 -F src/insert.c 7e081d33aab4a9d761c39dccf3c3872c35501565d2ed9db66301918d23bc7901 ++F src/insert.c 5a771fd9cd394965269f6fb456fce300e8c9087cb915b2a9c0ce8e57d0c2f378 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa - F src/loadext.c 436af4968c6954d304fce9efa12719367bd8f37b19b93b71d6ad607e85adbb47 - F src/main.c 9f6b3c7363b07892a2d8d0f9046b05545f863268e24176c037fafed53355d750 - F src/malloc.c 22d5bdd9fe88ae4fad1b91a1b9735104b82853ffef868f1f05517d60dc1875f5 + F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067 -F src/main.c 975a31135c95ab9b33d275141e4c54171d11b1cc3d6c7060db48a72536304fb5 ++F src/main.c 84a1433cb42191a3bc850e1646b41db4987e484daa8d55ef15921eb863b2750c + F src/malloc.c c1af4ac5a463648cd2953fd4ac679b3ba9022ce5ec794a60806150ad69dfd33a F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de F src/mem2.c b93b8762ab999a29ae7751532dadf0a1ac78040308a5fb1d17fcc365171d67eb @@@ -525,34 -528,34 +529,34 @@@ F src/os.c 80e4cf3e5da06be03ca641661e33 F src/os.h 48388821692e87da174ea198bf96b1b2d9d83be5dfc908f673ee21fafbe0d432 F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85 F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 - F src/os_unix.c c79bf7138f5c760bcf167065f08ca1c23f27fe06d8a4ad57432099e966823fe9 - F src/os_win.c a2149ff0a85c1c3f9cc102a46c673ce87e992396ba3411bfb53db66813b32f1d + F src/os_unix.c 9b8d6679300ee39b891c60a70f64c86bb89bd04862c1fd697bdf959867c74cbb + F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a - F src/pager.c 6da497a9d6071d09c5b7d4ae8c5c022a89a625e286d03cc2e1589025cb9a3c07 -F src/pager.c 095a0ac00a7b74cb5042678e478ab54dbbc67a20ee13b464eebc3f8c606d8b01 -F src/pager.h fdc30693c403aa9b4293d0b126346db7e450f8f0e5d2c1bb8355acb1cb8da6fd ++F src/pager.c df2d47fe39424d8ae06120e8bbb3e06065330ce85c310caa81c7e03501b4e375 +F src/pager.h ed1f7bc91ceae75fa918d51f7c2ad071a5458cc3dc0085ca7577f8d51bf2d7cb - F src/parse.y b2a9db24fee32edf26e0e4970c64394eed90f0c3608fae6f3433cc5dd3404a83 + F src/parse.y 5ba6522aba301e829917c8dd48290d357b6a9f68276d411739d01f266bafe4be F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 F src/pcache1.c 6596e10baf3d8f84cc1585d226cf1ab26564a5f5caf85a15757a281ff977d51a - F src/pragma.c bdb600be936f66b9fe69d26dfbba4528beaaf4f95c479c85b328a92484e0bf71 + F src/pragma.c 6daaaecc26a4b09481d21722525b079ce756751a43a79cc1d8f122d686806193 F src/pragma.h b93fd693bd38cefeaf8e2c7e8c929717f7799a9770104cdd2bae8df2a84e2da7 - F src/prepare.c 3d5a761d026052bc888d1b803a06dd2bfe245e8e836d4689f927003549148b0f - F src/printf.c 9efcd4e984f22bcccb1ded37a1178cac98f6e3a0534e1e0629f64899971f8838 + F src/prepare.c 270170a239c0f66bd3c228f373afe24447c2614a6829ae22080babc64f241931 + F src/printf.c 30e92b638fac71dcd85cdea1d12ecfae354c9adee2c71e8e1ae4727cde7c91ed F src/random.c f27af4099afaea7284ade5c206224dcfdb2334cfd119d018b470d46356b3f27d - F src/resolve.c d74715aceed2a8f493ba244d535646fa93132042a4400a29dfd26ec841514048 + F src/resolve.c 1948a92ca9eab776632816b97e57c61d933474a78aad4f4ef835c916a83dbb1c F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 - F src/select.c 02c5b12ca8dc6c7c1a5fec01f0eb09867692962263ddcaf47d6d7264eebdc55d - F src/shell.c.in b9b819feede7b85585ab0826490a352e04e2ee46e8132c92597d29972b2be1d7 - F src/sqlite.h.in 017b0ed87e86a5261b7ce3070784aaefb4c0355743575af0aa1427cc81318b2a + F src/select.c fe64564a9437fde31824b85b02d51a2806468e3c70666528087a1cb0730caee8 + F src/shell.c.in 55113760ae91a05c6ce4558714a1c8fc7a44bf266f735de6e71ea40f79e69830 -F src/sqlite.h.in a3452ff4026c01484ed9291388d538c3de7da4118e359c6972de66060317eca8 ++F src/sqlite.h.in 3a8cff2d1be677f53e5700d6580ba2d1928e188cfbc17097d32ff75947a398e0 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 - F src/sqlite3ext.h 2d1af80082edffd71c6f96f70ad1ce6a4fb46615ad10291fc77fe0dea9ff0197 - F src/sqliteInt.h 2b9bd070a108e58b4f91b94cac81d9782483e01d68d942a585c9b1313d56b6fd - F src/sqliteLimit.h 95cb8479ca459496d9c1c6a9f76b38aee12203a56ce1092fe13e50ae2454c032 + F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e -F src/sqliteInt.h 16c573c10196a74947a8f73d6c1626f8375c6a01cad3d403d78261ad6ee71b6e ++F src/sqliteInt.h 973e01f45609bfc01239629350252cdeba5cd563881a1a2114c069a6ced9cf6c + F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71 - F src/test1.c efd3d31a4ab31629333e74fc2a3cfb0726436ef6b7cf7f5abf69fd36382c541c -F src/test1.c 67aa729f37c2d8066bf0c44536c5ab8646b5dc84d5f84bde6f7397147a4513cc -F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5 ++F src/test1.c 8da599b6b3cd9e25f176ef1bb4b82042509cd20911074aa2073b5ede0a10d194 +F src/test2.c cb988be1ee1b972dc471e6b076087cfa9cb9ce5c2aa31e98ecf41c3256a72a53 F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644 F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159 F src/test5.c 328aae2c010c57a9829d255dc099d6899311672d @@@ -607,31 -610,31 +611,31 @@@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/tokenize.c 4dc01b267593537e2a0d0efe9f80dabe24c5b6f7627bc6971c487fa6a1dacbbf F src/treeview.c 4b92992176fb2caefbe06ba5bd06e0e0ebcde3d5564758da672631f17aa51cda - F src/trigger.c ef67bde309a831515dc3c2173d792574309f2f42d45f8c078743fae9f7f98c75 - F src/update.c 4fb5ffdc515da442a174a77e57e08e26554037899c40732bb25894426cad3266 + F src/trigger.c 515e79206d40d1d4149129318582e79a6e9db590a7b74e226fdb5b2a6c7e1b10 + F src/update.c 0e42cd8b2fa8cdfc3f05fecc9deb3ca1804494b69ca75e7b845e49de20a559d5 F src/upsert.c 2920de71b20f04fe25eb00b655d086f0ba60ea133c59d7fa3325c49838818e78 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 - F src/util.c c8bf30c4356b091bcc3b624d0e24b2b4d11b8be4d6c90d8e0705971e15cc819b - F src/vacuum.c 4f586072e58b950f31737a2f5294acf9ae077ce4dc62f991b71874c650b9e276 - F src/vdbe.c c45eb00686187826c04349deaa1e933245e032aa71efcc70d7f87733e7cb7058 + F src/util.c c0c7977de7ef9b8cb10f6c85f2d0557889a658f817b0455909a49179ba4c8002 + F src/vacuum.c 9d6ac090ff36d80f0a2c5bfc63994b714c464bfc44efa5056c457a6a4163dc99 -F src/vdbe.c 85a1acd0f1327fa71ef029916d347c3437959cbbb9659e22f6f173a2d329a7fd ++F src/vdbe.c 0426161e9361bbdd83fb6ed27f5126bf3962aa2f9b4db8e148dcb0d1d3d2a926 F src/vdbe.h 83603854bfa5851af601fc0947671eb260f4363e62e960e8a994fb9bbcd2aaa1 - F src/vdbeInt.h 808c424389e4aad8b379aa9d29baec4a2f2680d6f0c5caeb7fce629beb357e82 -F src/vdbeInt.h 3ca5e9fd6e095a8b6cf6bc3587a46fc93499503b2fe48951e1034ba9e2ce2f6e -F src/vdbeapi.c c5e7cb2ab89a24d7f723e87b508f21bfb1359a04db5277d8a99fd1e015c12eb9 ++F src/vdbeInt.h 3ba661b01af773d2f51f9ad41bac663adfe19c8e333f550962f6d3090777ce22 +F src/vdbeapi.c 1b210d5a5b82783f6fadbe5f54298f01ad55eeedc5f298bb28950007d50c45ab - F src/vdbeaux.c 35730cc4c8d16bc313e3b1d4107f713dc5c5d75fbfbb4743a69047cda8bb8b75 + F src/vdbeaux.c 0aaec35c90956fb03238e9ce3981e7111a53ff99eb161ef79fa55ae14fedcf7c F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1 F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f - F src/vdbesort.c 2be76d26998ce2b3324cdcc9f6443728e54b6c7677c553ad909c7d7cfab587df + F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a F src/vdbetrace.c fa3bf238002f0bbbdfb66cc8afb0cea284ff9f148d6439bc1f6f2b4c3b7143f0 F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c F src/vtab.c 5f5fc793092f53bbdfde296c50f563fb7bda58cf48e9cf6a8bdfbc5abd409845 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 - F src/wal.c 5cdd43b7538a4133438a85fcc7c2d8a1cdae2cc851ce58c9f2d2f849974a9436 + F src/wal.c c9dfe3054c82aaa8d1dea91b56afa9397b54e55d5fb1dcbac32a4a7f6231bdc9 F src/wal.h 7ffe787437f20a098af347011967a6d3bb8e5c3dc645e6be59eff44d2b2c5297 F src/walker.c 3df26a33dc4f54e8771600fb7fdebe1ece0896c2ad68c30ab40b017aa4395049 - F src/where.c 2ea911238674e9baaeddf105dddabed92692a01996073c4d4983f9a7efe481f9 - F src/whereInt.h 6b874aa15f94e43a2cec1080be64d955b04deeafeac90ffb5d6975c0d511be3c - F src/wherecode.c a1e168ea0c8348fd0e1a9787672131908a6c84cf179dd02d69eb6a0baf6198a2 - F src/whereexpr.c 264d58971eaf8256eb5b0917bcd7fc7a1f1109fdda183a8382308a1b18a2dce7 + F src/where.c ad738741bf45999188a3047f6277063e3f6843304d581e3ad5875419afdeb6b2 + F src/whereInt.h 59077fbd0b3d01bc8715e746c86a99ebf4c85bde8a57077ec04d2a23e59666ec -F src/wherecode.c a3a1aff30fe99a818d8e7c607980f033f40c68d890e03ed25838b9dbb7908bee ++F src/wherecode.c cbd5094b4c9db05453fba5342e90d9ae998792ffb264f13a721783ddc298a0c0 + F src/whereexpr.c 3a463e156ea388083c501502229c2c7f4f5c6b5330ea59bdf40d6eb6e155a25f F src/window.c edd6f5e25a1e8f2b6f5305b7f5f7da7bb35f07f0d432b255b1d4c2fcab4205aa F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test ce1aafc86e110685b324e9a763eab4f2a73f737842ec3b687bd965867de90627 @@@ -1897,7 -1902,7 +1904,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 3ee73880ed280f33d554269d4e964cce0c44b5c6c43937da4e547c39f16e860b 5fa4cbcb785125e72c7fd5cc2050637f2a2e854ee22aee05e8f09f751cd36291 - R 76fe978b4285c30e12955d5ce8fb9571 -P 5fa4cbcb785125e72c7fd5cc2050637f2a2e854ee22aee05e8f09f751cd36291 bb174a074b5833181900d396edda955254ea1768750a0ab3b6d714530b1fe13f -R 46f22a6398038f13f607d14446ddefc4 ++P 3c0423f0a8685cf8ef165914e6f9bd8f191d32db1c8287aed2a3ba6e272fc9f0 a42e6f34f560d19df7e3835718c697ea19f905c3d2ee1bbd83ed5f2a5c36d965 ++R b1f0bd34613bc63e94d6869c8a839438 U dan - Z 9bd2482dd15b53c3c2385e7a7040d9bc -Z 0ca22a41b5774fae45479850521e32f0 ++Z ec08244e2ca56b3efc6f964e46511822 diff --cc manifest.uuid index 18a1a7d628,ddf750d3f4..3d503e671e --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 3c0423f0a8685cf8ef165914e6f9bd8f191d32db1c8287aed2a3ba6e272fc9f0 -a42e6f34f560d19df7e3835718c697ea19f905c3d2ee1bbd83ed5f2a5c36d965 ++d2de81a24f82d71d5ec41e8eada860cacdefc659cdee61b224e13e80b7783c62 diff --cc src/test1.c index bfa71ef115,1a95120685..1db9c1816a --- a/src/test1.c +++ b/src/test1.c @@@ -7837,53 -8083,83 +8083,130 @@@ static int SQLITE_TCLAPI test_mmap_warm } } +/* +** Usage: sqlite3_begin_concurrent_report DB +*/ +static int SQLITE_TCLAPI test_begin_concurrent_report( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + const char *zReport = 0; + sqlite3 *db; + + if( objc!=2 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB"); + return TCL_ERROR; + } + + if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR; + zReport = sqlite3_begin_concurrent_report(db); + Tcl_SetObjResult(interp, Tcl_NewStringObj(zReport?zReport:"", -1)); + return TCL_OK; +} + +/* +** Usage: sqlite3_begin_concurrent_report_enable DB ENABLE +*/ +static int SQLITE_TCLAPI test_begin_concurrent_report_enable( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] +){ + sqlite3 *db; + int iVal; + + if( objc!=3 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB ENABLE"); + return TCL_ERROR; + } + + if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR; + if( Tcl_GetIntFromObj(interp, objv[2], &iVal) ) return TCL_ERROR; + sqlite3_begin_concurrent_report_enable(db, iVal); + Tcl_ResetResult(interp); + return TCL_OK; +} + + /* + ** Usage: test_write_db DB OFFSET DATA + ** + ** Obtain the sqlite3_file* object for the database file for the "main" db + ** of handle DB. Then invoke its xWrite method to write data DATA to offset + ** OFFSET. + */ + static int SQLITE_TCLAPI test_write_db( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] + ){ + sqlite3 *db = 0; + Tcl_WideInt iOff = 0; + const unsigned char *aData = 0; + int nData = 0; + sqlite3_file *pFile = 0; + int rc; + + if( objc!=4 ){ + Tcl_WrongNumArgs(interp, 1, objv, "DB OFFSET DATA"); + return TCL_ERROR; + } + if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR; + if( Tcl_GetWideIntFromObj(interp, objv[2], &iOff) ) return TCL_ERROR; + aData = Tcl_GetByteArrayFromObj(objv[3], &nData); + + sqlite3_file_control(db, "main", SQLITE_FCNTL_FILE_POINTER, (void*)&pFile); + rc = pFile->pMethods->xWrite(pFile, aData, nData, iOff); + + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE); + return TCL_OK; + } + + /* + ** Usage: sqlite3_register_cksumvfs + ** + */ + static int SQLITE_TCLAPI test_register_cksumvfs( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] + ){ + if( objc!=1 ){ + Tcl_WrongNumArgs(interp, 1, objv, ""); + return TCL_ERROR; + }else{ + extern int sqlite3_register_cksumvfs(const char*); + int rc = sqlite3_register_cksumvfs(0); + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE); + } + return TCL_OK; + } + + /* + ** Usage: sqlite3_unregister_cksumvfs + ** + */ + static int SQLITE_TCLAPI test_unregister_cksumvfs( + void * clientData, + Tcl_Interp *interp, + int objc, + Tcl_Obj *CONST objv[] + ){ + if( objc!=1 ){ + Tcl_WrongNumArgs(interp, 1, objv, ""); + return TCL_ERROR; + }else{ + extern int sqlite3_unregister_cksumvfs(void); + int rc = sqlite3_unregister_cksumvfs(); + Tcl_SetResult(interp, (char *)sqlite3ErrName(rc), TCL_VOLATILE); + } + return TCL_OK; + } + /* ** Usage: decode_hexdb TEXT ** @@@ -8249,8 -8530,9 +8577,11 @@@ int Sqlitetest1_Init(Tcl_Interp *interp { "sqlite3_mmap_warm", test_mmap_warm, 0 }, { "sqlite3_config_sorterref", test_config_sorterref, 0 }, { "decode_hexdb", test_decode_hexdb, 0 }, + { "sqlite3_begin_concurrent_report", test_begin_concurrent_report, 0 }, + { "sqlite3_begin_concurrent_report_enable", test_begin_concurrent_report_enable, 0 }, + { "test_write_db", test_write_db, 0 }, + { "sqlite3_register_cksumvfs", test_register_cksumvfs, 0 }, + { "sqlite3_unregister_cksumvfs", test_unregister_cksumvfs, 0 }, }; static int bitmask_size = sizeof(Bitmask)*8; static int longdouble_size = sizeof(LONGDOUBLE_TYPE); diff --cc src/vdbe.c index 4655c5a78b,efb41e61c3..60d23a2297 --- a/src/vdbe.c +++ b/src/vdbe.c @@@ -5960,9 -6106,31 +6129,32 @@@ case OP_IdxGE: { /* jump * } } #endif - res = 0; /* Not needed. Only used to silence a warning. */ - rc = sqlite3VdbeIdxKeyCompare(db, pC, &r, &res); + + /* Inlined version of sqlite3VdbeIdxKeyCompare() */ + { + i64 nCellKey = 0; + BtCursor *pCur; + Mem m; + + assert( pC->eCurType==CURTYPE_BTREE ); + pCur = pC->uc.pCursor; + assert( sqlite3BtreeCursorIsValid(pCur) ); + nCellKey = sqlite3BtreePayloadSize(pCur); + /* nCellKey will always be between 0 and 0xffffffff because of the way + ** that btreeParseCellPtr() and sqlite3GetVarint32() are implemented */ + if( nCellKey<=0 || nCellKey>0x7fffffff ){ + rc = SQLITE_CORRUPT_BKPT; + goto abort_due_to_error; + } + sqlite3VdbeMemInit(&m, db, 0); + rc = sqlite3VdbeMemFromBtreeZeroOffset(pCur, (u32)nCellKey, &m); + if( rc ) goto abort_due_to_error; + res = sqlite3VdbeRecordCompareWithSkip(m.n, m.z, &r, 0); + sqlite3VdbeMemRelease(&m); + } + /* End of inlined sqlite3VdbeIdxKeyCompare() */ + + sqlite3BtreeScanLimit(pC->uc.pCursor, &r, 0, pOp->opcode); assert( (OP_IdxLE&1)==(OP_IdxLT&1) && (OP_IdxGE&1)==(OP_IdxGT&1) ); if( (pOp->opcode&1)==(OP_IdxLT&1) ){ assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxLT ); @@@ -5972,10 -6140,8 +6164,10 @@@ res++; } VdbeBranchTaken(res>0,2); - if( rc ) goto abort_due_to_error; + assert( rc==SQLITE_OK ); - if( res>0 ) goto jump_to_p2; + if( res>0 ){ + goto jump_to_p2; + } break; }