From: drh <> Date: Wed, 3 Mar 2021 19:54:08 +0000 (+0000) Subject: Merge recent trunk enhancements into the reuse-schema branch. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce3cc968052551c0e3d3e8abc82771916ce40166;p=thirdparty%2Fsqlite.git Merge recent trunk enhancements into the reuse-schema branch. FossilOrigin-Name: 73bf458e1dbe21e19b7b283d5d7534dd8bcb01475570958fc2291e805c1cc56d --- ce3cc968052551c0e3d3e8abc82771916ce40166 diff --cc manifest index 971eb87261,eb58efbcf7..e13895c51a --- a/manifest +++ b/manifest @@@ -1,11 -1,11 +1,11 @@@ - C Merge\slatest\strunk\schanges\sinto\sthis\sbranch. - D 2021-02-10T20:20:35.198 -C Fix\sa\sbuffer\soverrun\sthat\scould\soccur\sin\sfts5\swhen\srunning\sa\sprefix\squery\sagainst\sa\scorrupt\sdb. -D 2021-03-03T19:36:40.931 ++C Merge\srecent\strunk\senhancements\sinto\sthe\sreuse-schema\sbranch. ++D 2021-03-03T19:54:08.034 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 - F Makefile.in 9ed0edeb277c6722a1e028a3b4754ebd465039aeb3c9a059629278859836efba -F Makefile.in 047036a560b7db51e7b7e459cd12cbe80e10ca5420b0ea5ddda023b44ab46466 ++F Makefile.in d84af4278da5bb53e77ba1e8e370bdc95d778e822830a7dbab2415f30fe87b65 F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241 -F Makefile.msc ad07bbd645132533e1fd7164a03acfa9afecda378b3787c10f62ab4c7c45e6ea +F Makefile.msc adc7fa1be430e6081e07bfafb2f14032dbb5ff056d1c812c634382815ececc81 F README.md 1514a365ffca3c138e00c5cc839906108a01011a6b082bad19b09781e3aa498a F VERSION 92f3e4c5cdee6f0779aef1eae857dfc21d0eabb1f2af169dc90e63cd76b15bb2 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 @@@ -464,7 -464,7 +465,7 @@@ F ext/userauth/userauth.c 7f00cded7dcaa F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 - F main.mk 139b827fcfebe187ca52128dbe2977751662a86a4f99a4e004f309b634469b85 -F main.mk 32765eed1aa69739a876b7e1632a092188106f99e8ad6c9d30ea982f4f9b3a46 ++F main.mk 75d23b5734ab6836f60286d35ec4f8dc1f67eed64ab27df0a133402d34be716e F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 @@@ -476,37 -476,37 +477,37 @@@ F spec.template 86a4a43b99ebb3e75e6b9a7 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a - F src/alter.c 916ec1f34adc34b596a4afcf2c2403f145a7b836dc81b713a24bc206142159f4 -F src/alter.c d5fd529509880eade9ea59ddb24a56e9fe0579ee7f2e9e18bac62b7bd05b3a10 -F src/analyze.c 01c6c6765cb4d40b473b71d85535093730770bb186f2f473abac25f07fcdee5c -F src/attach.c 9cbe761e464025694df8e6f6ee4d9f41432c3a255ca9443ccbb4130eeb87cf72 ++F src/alter.c f63c20191c51b57052bcabeed5d9e244f30b18db43a6980284e3061061bf5e06 +F src/analyze.c 8b522a57784406d75f544e6d67f3fe7a7196702d3d954b7678bb4b4fe789e5a4 - F src/attach.c de9c50292a436937512b9fdc79d521e1d803469891a9d430476649b7feeadcbd ++F src/attach.c d176b64d15dfcb08ebd7b11d77cac1d5b08d4ec1e8bd9b59e2f0a84557f95ac9 F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853 F src/backup.c 3014889fa06e20e6adfa0d07b60097eec1f6e5b06671625f476a714d2356513d F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 - F src/btree.c 694020ad8a3af3d79b09f74c8f1421272a419cdea42a13401e3b0f7dea6e9c3e + F src/btree.c bafa3a2e8b6622a3aa8791f90c8ecc70e8ae551ba9023f865213890f5b8a8994 F src/btree.h 285f8377aa1353185a32bf455faafa9ff9a0d40d074d60509534d14990c7829e F src/btreeInt.h 7614cae30f95b6aed0c7cac7718276a55cfe2c77058cbfd8bef5b75329757331 - F src/build.c e3b7c76a75cbd5e47355dfa8f03273c88b7dc572b4f05890c18956a17a4d8d75 -F src/build.c e1790f21cd19708af231ceed5e52f495b94c4b2609e27d2b5ce2805a9aa3464e -F src/callback.c d0b853dd413255d2e337b34545e54d888ea02f20da5ad0e63585b389624c4a6c ++F src/build.c c990714d3a7a19068078d5e5a963d3a6ed08b8968d5ed07649e146327a1fb3a3 +F src/callback.c d8cdf5d697a31cf54a2b64bce9001fe24f3522a566f44c9fe1eb3a0c7e291c56 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e -F src/ctime.c 2a322b9a3d75771fb4d99e0702851f4f68dda982507a0f798eefb0712969a410 +F src/ctime.c 3552554374bfb39a48f8b0064e11cbcd7f2f5af46bc8136f31f7f79ef3851be5 F src/date.c dace306a10d9b02ee553d454c8e1cf8d3c9b932e137738a6b15b90253a9bfc10 F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c - F src/delete.c 352ea931218c45a3daf17472d4141b9c7fc026d85da3f1ade404ea5bb6d67f77 - F src/expr.c 47c85263e6d179424e6b09e2c79db5704ab5b8cbc2fae2ee3285faa2566f2e74 + F src/delete.c 73f57a9a183532c344a3135cf8f2a5589376e39183e0b5f562d6b61b2af0f4d8 + F src/expr.c 6793c836aff149b14011ad546ae1648a18573779ee78f5a7d375f2a3047e8c8e F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 - F src/fkey.c 5e41765582f7fd265245fc743670d37d1a34fb0150fc963793a2db1f1bee6a4b - F src/func.c 2ea99e9e0531b7f020d5e8e167d25344d618afc718ddc94dd91fa8fef1c85a91 -F src/fkey.c e9063648396c58778f77583a678342fe4a9bc82436bf23c5f9f444f2df0fdaa4 ++F src/fkey.c 6dcbab4ead1dbfdc19da70a8650e5734a5124765f75fb840100117a7a45980d2 + F src/func.c 479f6929be027eb0210cbdde9d3529c012facf082d64a6b854a9415940761e5e F src/global.c ed55af196a9b66e198aaeda3f5454c3aa7d7d050c6c938181fd044b70d180a81 F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19 F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38 F src/hwtime.h cb1d7e3e1ed94b7aa6fde95ae2c2daccc3df826be26fc9ed7fd90d1750ae6144 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71 - F src/insert.c 3d17e465c4cdb7e02e4b2a9d0a6cee08d23c478a01bd7eb5c5d4024fc70c5e5c + F src/insert.c 8942baede303a54ba3b6d06200d5b74c9bc25ababec8a55823e06309748cd4a3 F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c 8c9c8cd2bd8eecdb06d9b6e89de7e9e65bae45cc8fc33609cc74023a5c296067 -F src/main.c 1c5de7b3fabcdf05f4fe563aab5d81d175b89c67a8678a12ba86629356afa356 +F src/main.c 14210385b0d75ea5fd974449a085462a7431263a17fc36974ec17a3d4ff83ebd F src/malloc.c c1af4ac5a463648cd2953fd4ac679b3ba9022ce5ec794a60806150ad69dfd33a F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de @@@ -529,30 -529,30 +530,30 @@@ F src/os_setup.h 0dbaea40a7d36bf311613d F src/os_unix.c adbbcea4c63d3b400d405f60a5da4c01433753ec4a12e2dc695beb2bbd671fe9 F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a - F src/pager.c c49952ac5e9cc536778eff528091d79d38b3e45cbeeed4695dc05e207dc6547d + F src/pager.c 970691daea03f9f15e34de671bd8675c1e136232b529e21bfd36d4dba6d41753 F src/pager.h 4bf9b3213a4b2bebbced5eaa8b219cf25d4a82f385d093cd64b7e93e5285f66f - F src/parse.y 67ba503780de64b967ae195b7e14c33531329228e1bc0b83d63324beb733680b + F src/parse.y f3e8d7978c10495850c0bb502fe2669b55cf2841c4670b1f7261782e82069471 F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 - F src/pcache1.c 6596e10baf3d8f84cc1585d226cf1ab26564a5f5caf85a15757a281ff977d51a + F src/pcache1.c 388304fd2d91c39591080b5e0f3c62cfba87db20370e7e0554062bfb29740e9f -F src/pragma.c 6daaaecc26a4b09481d21722525b079ce756751a43a79cc1d8f122d686806193 -F src/pragma.h 8dc78ab7e9ec6ce3ded8332810a2066f1ef6267e2e03cd7356ee00276125c6cf -F src/prepare.c f634a9e799a6b1c136d8ee12479cffa22862bfb807d307b1db406aa0cdb042a5 +F src/pragma.c f134be99f539e2d8c934169750059fb32a9f0de5d109110d083c2ceb7d4c3a30 +F src/pragma.h ce2b135cde481eeb198af0dfc4781d58528ce80b17580a2b747b8fd4bc969e44 - F src/prepare.c b94c07cdcac57ba933d0def66f5848e588213be805edd2cd55a322d9eb488d75 - F src/printf.c 30e92b638fac71dcd85cdea1d12ecfae354c9adee2c71e8e1ae4727cde7c91ed ++F src/prepare.c 2f8380bfd7e083fdffc7017944f5b5637fddac2abd1cd4ff1b96a901e3fe9f17 + F src/printf.c 2b03a80d7c11bb422115dca175a18bf430e9c9dbaa0eee63b758f0c022f8f34f F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 - F src/resolve.c 89e4faf6171e179edf279905e8e45c4f9dd108777dc60716396729fbd7cb045e + F src/resolve.c 889469e6980181ce77ee8ab3fc84bd52ed6c1c3577fd102d52623d66cc65a3d0 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 - F src/select.c 738cb746189f721f59972993c13085fa2975c4cbfd04ba26445f3b42c81237dc - F src/shell.c.in 05f0188127f8b53bd39c8316fe93fc904ce4008974239ee7560e347ee6fc522d + F src/select.c 0e242e141cc1b28f16b8973454aeeabd4367377f05507e3961044ae3035d80cd -F src/shell.c.in 844417f84df1f6c4fce1c815629a888cfdcf219e86513e9c332bbcc38832f477 -F src/sqlite.h.in 8855a19f37ade8dad189a9e48233a2ebe1b46faf469c7eb0906a654e252dcc57 ++F src/shell.c.in 7bf4ec504cebbf4e497265e5f584e912d1d47e7be2bd37b2cc4a29d2dbeef2c8 +F src/sqlite.h.in c332fd33f0c45224760824d1ea2091e2bc52eb855d7339a94c165804b8534d7d F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e - F src/sqliteInt.h 2ecdd62dc8ce3479021ba1cce92ba263651a917430beea42e880a4232bd65fc7 -F src/sqliteInt.h 11b9d47e9b9520b123bc75254da7a4e215463e811e62b89518fc5e9a192a0222 ++F src/sqliteInt.h dea0bc62427128a8c8ba5527637aaa3231d8cbea27c18f7db006503799ebe2a1 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 -F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1 +F src/status.c d0956e57c71160155f620a3efeb1e5c05a3f8b9a897dd09c5263268e5d237579 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 -F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71 +F src/tclsqlite.c f4dd32d001c2be33371dca87e30117352f02dad59a2e5428c97f08703360a169 - F src/test1.c 2197966d2f7211ef9eefaa6c3c7dd2c7d786d1f33f2aadef2f08c8c79eceec26 + F src/test1.c 07f60dfe9574720268abf97757b1d62894e959e3db4a530e4988367be06c5f14 F src/test2.c 3efb99ab7f1fc8d154933e02ae1378bac9637da5 F src/test3.c 61798bb0d38b915067a8c8e03f5a534b431181f802659a6616f9b4ff7d872644 F src/test4.c 7c4420e01c577b5c4add2cb03119743b1a357543d347773b9e717195ea967159 @@@ -607,25 -606,25 +608,25 @@@ 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 c64c49d7c2ec4490c2fef1f24350167ba16b03b0c6cee58ad1a1d70a4325d4e9 +F src/tokenize.c 382c5be7316c2a34279653ccf454adeb9c83b9b94c73fb309d5deb62d34cc58a - F src/treeview.c 4b92992176fb2caefbe06ba5bd06e0e0ebcde3d5564758da672631f17aa51cda - F src/trigger.c f0dcab655df496f31120573884447e364a20196efa220faf21f4d0842977842c + F src/treeview.c c6260e1fa5f41c361b2409edc9b0050bcaef5bc4d6abc467fbc45f0d7ccf3d84 -F src/trigger.c 861c3ec2c5b0fc830bdf82470454a9324fad70cbaa96d2e208fb54577c9e8d28 ++F src/trigger.c dae7932e9dfb335986948e63bea5488d768d81e3d279c46d930ab65c0a500db1 F src/update.c 0f5a61f0787199983530a33f6fffe4f52742f35fcdf6ccfad1078b1a8bc17723 F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048 -F src/vacuum.c 492422c1463c076473bae1858799c7a0a5fe87a133d1223239447c422cd26286 -F src/vdbe.c d8d2f2a1247bada7db7acf1f4ae65088bc09f020f4acf15810ef67f4aabe1ce9 -F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe +F src/vacuum.c 724188c5afbba905b310e8d8e78530956d16e6d60a3ba8a1105d05732d7d8601 - F src/vdbe.c 6396a90a51ddd37156e58f55b8da1dd5a71648c7cba2306f295f012d4c2985cb - F src/vdbe.h 9e947bd4a40e3b65159b699571c8246c209f6bda6e13979a1ab623faa2f0d23f ++F src/vdbe.c 9278c551ebf5d8491ab1fd115dec80c15cd43be008fa8ad9d47622e2d375100d ++F src/vdbe.h bfde0b0f429a0ba4203e5319780a6a1c8b2a809c5cd6baa9ae22e257a657b8b3 F src/vdbeInt.h 3df118924e1711f1bbc8e30c46260d0ab6c3b029b32dd411f789111f76434f3c F src/vdbeapi.c 4a43e303ec3354c785f453e881521969378e85628278ab74ba4a9df790c0d93b - F src/vdbeaux.c f90ee925ede10dfdc05aae91fd0ff30ee0418a30f559d4be1ce337440f239f14 -F src/vdbeaux.c fb51483c2bcaf45c5de63c26cce8649ef37f1332e8e035867033d21ef5e7fc2c -F src/vdbeblob.c 253ed82894924c362a7fa3079551d3554cd1cdace39aa833da77d3bc67e7c1b1 ++F src/vdbeaux.c e8e188ef0a4964f0690274e085add02fc79b4fb272aae701d9b31319f56bfd1c +F src/vdbeblob.c 40028e015fe557a945c99edb6cbf844ea96d853c3e8ac4eb5c1e49bff59f154e F src/vdbemem.c 947f2a65910edb4014dc981d33e414a68c51f169f9df8c4c493a0ba840b6eb1f F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724 F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c - F src/vtab.c f348e8f4487ad2227f7a53b2ca001746afb89a9f55f950b84bfe20a00e1e4b57 -F src/vtab.c 032a0165c147fda16927e6a3230e90c068d4af93f887ce94e26f678fe48e5e4c ++F src/vtab.c b194210339673cf8a60285f1d87ef2a8055eff32782375ffec842fc6bbacc41a F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c 69e770e96fd56cc21608992bf2c6f1f3dc5cf2572d0495c6a643b06c3a679f14 F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a @@@ -1909,7 -1908,7 +1918,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 9f41f604055553f0c62d4c0d5a00c6a43d1a938f36901238c52c065702b9c536 66c07a07b21e46529780eec3c82a84c494d586f8b7ed80b78d358e23b80458c7 - R 4d316b89af8d740abb8f0a043fc6d895 -P 3f520b8bdef7dcdad30e052ed8a07b0493bff4497603521e701fab7324df2995 -R bf9673d09bb6129e5121f0cfe63374d9 --U dan - Z abac2550f706de6d85186e619c872031 -Z 428ef74b7b93c2a0a1d5bc43a56052a4 ++P d29c41bd2670ccd205ca6190aa071c0ac7e9748bd9425fbfec0aa7acc8ae0aeb 4da40620ac8557aba6e1e06e720418b55e9950f406288b03749ef1b117041cd9 ++R c3ce4c89ea79c73b0d012e4e3195febe ++U drh ++Z 5b82c27adb4322b6aa0aafb69ff896f3 diff --cc manifest.uuid index dd1d759129,26c15e4d61..031bb15eab --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - d29c41bd2670ccd205ca6190aa071c0ac7e9748bd9425fbfec0aa7acc8ae0aeb -4da40620ac8557aba6e1e06e720418b55e9950f406288b03749ef1b117041cd9 ++73bf458e1dbe21e19b7b283d5d7534dd8bcb01475570958fc2291e805c1cc56d diff --cc src/alter.c index 70ee3cdad4,5409de594f..66fee28c72 --- a/src/alter.c +++ b/src/alter.c @@@ -80,8 -86,8 +86,8 @@@ static void renameReloadSchema(Parse *p Vdbe *v = pParse->pVdbe; if( v ){ sqlite3ChangeCookie(pParse, iDb); - sqlite3VdbeAddParseSchemaOp(pParse, iDb, 0); - if( iDb!=1 ) sqlite3VdbeAddParseSchemaOp(pParse, 1, 0); - sqlite3VdbeAddParseSchemaOp(pParse->pVdbe, iDb, 0, p5); - if( iDb!=1 ) sqlite3VdbeAddParseSchemaOp(pParse->pVdbe, 1, 0, p5); ++ sqlite3VdbeAddParseSchemaOp(pParse, iDb, 0, p5); ++ if( iDb!=1 ) sqlite3VdbeAddParseSchemaOp(pParse, 1, 0, p5); } } diff --cc src/attach.c index 10f41aba25,8eb4486e58..8c04098a35 --- a/src/attach.c +++ b/src/attach.c @@@ -312,7 -312,6 +312,7 @@@ static void detachFunc pEntry = sqliteHashNext(pEntry); } - sqlite3SchemaDisconnect(db, i, 0); ++ (void)sqlite3SchemaDisconnect(db, i, 0); sqlite3BtreeClose(pDb->pBt); pDb->pBt = 0; pDb->pSchema = 0; diff --cc src/build.c index a5cdb90ef6,b1812753a7..64a5ef6557 --- a/src/build.c +++ b/src/build.c @@@ -2663,8 -2640,8 +2666,8 @@@ void sqlite3EndTable #endif /* Reparse everything to update our internal data structures */ - sqlite3VdbeAddParseSchemaOp(v, iDb, + sqlite3VdbeAddParseSchemaOp(pParse, iDb, - sqlite3MPrintf(db, "tbl_name='%q' AND type!='trigger'", p->zName)); + sqlite3MPrintf(db, "tbl_name='%q' AND type!='trigger'", p->zName),0); } /* Add the table to the in-memory representation of the database. @@@ -4152,8 -4126,8 +4153,8 @@@ void sqlite3CreateIndex if( pTblName ){ sqlite3RefillIndex(pParse, pIndex, iMem); sqlite3ChangeCookie(pParse, iDb); - sqlite3VdbeAddParseSchemaOp(v, iDb, + sqlite3VdbeAddParseSchemaOp(pParse, iDb, - sqlite3MPrintf(db, "name='%q' AND type='index'", pIndex->zName)); + sqlite3MPrintf(db, "name='%q' AND type='index'", pIndex->zName), 0); sqlite3VdbeAddOp2(v, OP_Expire, 0, 1); } diff --cc src/prepare.c index 501a062e52,d79495d2c6..d2bc67f4ad --- a/src/prepare.c +++ b/src/prepare.c @@@ -34,14 -38,9 +38,14 @@@ static void corruptSchema pData->rc = SQLITE_ERROR; }else if( db->flags & SQLITE_WriteSchema ){ pData->rc = SQLITE_CORRUPT_BKPT; + }else if( IsSharedSchema(db) + && 0==sqlite3StrNICmp(zExtra, "malformed database schema", 17) + ){ + pData->rc = SQLITE_CORRUPT_BKPT; + *pData->pzErrMsg = sqlite3DbStrDup(db, zExtra); }else{ char *z; - if( zObj==0 ) zObj = "?"; + const char *zObj = azObj[1] ? azObj[1] : "?"; z = sqlite3MPrintf(db, "malformed database schema (%s)", zObj); if( zExtra && zExtra[0] ) z = sqlite3MPrintf(db, "%z - %s", z, zExtra); *pData->pzErrMsg = z; @@@ -184,13 -148,8 +188,13 @@@ int sqlite3InitCallback(void *pInit, in if( rc > pData->rc ) pData->rc = rc; if( rc==SQLITE_NOMEM ){ sqlite3OomFault(db); - }else if( rc!=SQLITE_INTERRUPT && (rc&0xFF)!=SQLITE_LOCKED ){ + }else if( rc!=SQLITE_INTERRUPT +#ifdef SQLITE_ENABLE_SHARED_SCHEMA + && (rc&0xFF)!=SQLITE_LOCKED + && (rc&0xFF)!=SQLITE_IOERR +#endif + ){ - corruptSchema(pData, argv[1], sqlite3_errmsg(db)); + corruptSchema(pData, argv, sqlite3_errmsg(db)); } } } diff --cc src/sqliteInt.h index b1019e4f46,1d5f0d2a87..4ba25e3b13 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@@ -3445,7 -3446,7 +3466,6 @@@ struct Parse AutoincInfo *pAinc; /* Information about AUTOINCREMENT counters */ Parse *pToplevel; /* Parse structure for main program (or NULL) */ Table *pTriggerTab; /* Table triggers are being coded for */ - AggInfo *pAggList; /* List of all AggInfo objects */ - Parse *pParentParse; /* Parent parser if this parser is nested */ union { int addrCrTab; /* Address of OP_CreateBtree on CREATE TABLE */ Returning *pReturning; /* The RETURNING clause */ diff --cc src/trigger.c index f44c22b682,689c7c741e..b884872364 --- a/src/trigger.c +++ b/src/trigger.c @@@ -376,8 -355,8 +376,8 @@@ void sqlite3FinishTrigger pTrig->table, z); sqlite3DbFree(db, z); sqlite3ChangeCookie(pParse, iDb); - sqlite3VdbeAddParseSchemaOp(v, iDb, + sqlite3VdbeAddParseSchemaOp(pParse, iDb, - sqlite3MPrintf(db, "type='trigger' AND name='%q'", zName)); + sqlite3MPrintf(db, "type='trigger' AND name='%q'", zName), 0); } if( db->init.busy ){ diff --cc src/vdbe.h index 2f7c7d2bf6,3257ff68a1..9a30676c1f --- a/src/vdbe.h +++ b/src/vdbe.h @@@ -223,7 -223,7 +223,7 @@@ VdbeOp *sqlite3VdbeAddOpList(Vdbe*, in #else # define sqlite3ExplainBreakpoint(A,B) /*no-op*/ #endif - void sqlite3VdbeAddParseSchemaOp(Parse*,int,char*); -void sqlite3VdbeAddParseSchemaOp(Vdbe*, int, char*, u16); ++void sqlite3VdbeAddParseSchemaOp(Parse*,int,char*,u16); void sqlite3VdbeChangeOpcode(Vdbe*, int addr, u8); void sqlite3VdbeChangeP1(Vdbe*, int addr, int P1); void sqlite3VdbeChangeP2(Vdbe*, int addr, int P2); diff --cc src/vdbeaux.c index f5f8dcf9af,ede652dfac..57fd981e6f --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@@ -471,11 -471,10 +471,12 @@@ void sqlite3VdbeExplainPop(Parse *pPars ** The zWhere string must have been obtained from sqlite3_malloc(). ** This routine will take ownership of the allocated memory. */ - void sqlite3VdbeAddParseSchemaOp(Parse *pParse, int iDb, char *zWhere){ -void sqlite3VdbeAddParseSchemaOp(Vdbe *p, int iDb, char *zWhere, u16 p5){ ++void sqlite3VdbeAddParseSchemaOp(Parse *pParse, int iDb, char *zWhere, u16 p5){ + Vdbe *p = pParse->pVdbe; int j; + sqlite3SchemaWritable(pParse, iDb); sqlite3VdbeAddOp4(p, OP_ParseSchema, iDb, 0, 0, zWhere, P4_DYNAMIC); + sqlite3VdbeChangeP5(p, p5); for(j=0; jdb->nDb; j++) sqlite3VdbeUsesBtree(p, j); sqlite3MayAbort(p->pParse); } diff --cc src/vtab.c index f8eb4075f2,ded12c13bb..2af425c6ea --- a/src/vtab.c +++ b/src/vtab.c @@@ -507,7 -489,7 +507,7 @@@ void sqlite3VtabFinishParse(Parse *pPar sqlite3VdbeAddOp0(v, OP_Expire); zWhere = sqlite3MPrintf(db, "name=%Q AND sql=%Q", pTab->zName, zStmt); - sqlite3VdbeAddParseSchemaOp(pParse, iDb, zWhere); - sqlite3VdbeAddParseSchemaOp(v, iDb, zWhere, 0); ++ sqlite3VdbeAddParseSchemaOp(pParse, iDb, zWhere, 0); sqlite3DbFree(db, zStmt); iReg = ++pParse->nMem;