From: drh Date: Thu, 8 May 2014 23:01:59 +0000 (+0000) Subject: Initial attempt to merge in all trunk changes over the previous 1.5 years. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b9f41b4fd1ff31775b50623e6be894557de0fbc6;p=thirdparty%2Fsqlite.git Initial attempt to merge in all trunk changes over the previous 1.5 years. This check-in compiles but there are compiler warnings and "make test" segfaults after only running a few test modules. FossilOrigin-Name: 9411d7dc6fbee689730c6f74736341bccd333d9e --- b9f41b4fd1ff31775b50623e6be894557de0fbc6 diff --cc Makefile.in index c8a952bcfe,c30435b66d..022b5fc124 --- a/Makefile.in +++ b/Makefile.in @@@ -503,10 -511,11 +525,10 @@@ libsqlite3.la: $(LIBOBJ ${ALLOWRELEASE} -rpath "$(libdir)" -version-info "8:6:8" libtclsqlite3.la: tclsqlite.lo libsqlite3.la - $(LTLINK) -o $@ tclsqlite.lo \ + $(LTLINK) -no-undefined -o $@ tclsqlite.lo \ libsqlite3.la @TCL_STUB_LIB_SPEC@ $(TLIBS) \ - -rpath "$(TCLLIBDIR)" \ - -version-info "8:6:8" \ - -avoid-version + -rpath "$(TCLLIBDIR)/sqlite3" \ + -version-info "8:6:8" sqlite3$(TEXE): $(TOP)/src/shell.c libsqlite3.la sqlite3.h $(LTLINK) $(READLINE_FLAGS) \ diff --cc ext/rtree/rtree.c index 71ad5f91bb,7b540b4be1..979dd082e1 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@@ -105,7 -63,7 +63,8 @@@ #include #include +#include + #include #ifndef SQLITE_AMALGAMATION #include "sqlite3rtree.h" diff --cc main.mk index 379917ef90,3bdbe810f8..b94a77fea2 --- a/main.mk +++ b/main.mk @@@ -204,10 -210,9 +210,11 @@@ SRC += $(TOP)/ext/icu/sqliteicu.h \ $(TOP)/ext/icu/icu.c SRC += \ + $(TOP)/ext/rtree/sqlite3rtree.h \ $(TOP)/ext/rtree/rtree.h \ $(TOP)/ext/rtree/rtree.c +SRC += \ + $(TOP)/ext/sqlrr/sqlrr.c # Generated source code files @@@ -358,12 -402,12 +389,12 @@@ sqlite3.o: sqlite3. # files are automatically generated. This target takes care of # all that automatic generation. # -target_source: $(SRC) $(TOP)/tool/vdbe-compress.tcl +target_source: $(SRC) $(EXTHDR) $(TOP)/tool/vdbe-compress.tcl rm -rf tsrc mkdir tsrc - cp -f $(SRC) tsrc + cp -f $(SRC) $(EXTHDR) tsrc rm tsrc/sqlite.h.in tsrc/parse.y - tclsh $(TOP)/tool/vdbe-compress.tcl vdbe.new + tclsh $(TOP)/tool/vdbe-compress.tcl $(OPTS) vdbe.new mv vdbe.new tsrc/vdbe.c touch target_source diff --cc manifest index 4fce30a1a7,bec4a2d4fe..8e1b95e42d --- a/manifest +++ b/manifest @@@ -1,14 -1,14 +1,14 @@@ - C Merge\sthe\slatest\strunk\schanges\s(PRAGMA\sbusy_timeout\sand\sthe\sORDER\sBY\nquery\splanner\senhancements)\sinto\sthe\sapple-osx\sbranch. - D 2012-09-28T10:57:42.795 -C Include\ssqlite3rtree.h\sin\sthe\stsrc/\spile\sof\ssource\sfiles\sduring\ntarget_source\sin\sthe\smain.mk\smakefile. -D 2014-05-07T21:16:56.524 ++C Initial\sattempt\sto\smerge\sin\sall\strunk\schanges\sover\sthe\sprevious\s1.5\syears.\nThis\scheck-in\scompiles\sbut\sthere\sare\scompiler\swarnings\sand\s"make\stest"\nsegfaults\safter\sonly\srunning\sa\sfew\stest\smodules. ++D 2014-05-08T23:01:59.070 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f - F Makefile.in 535aaf4b82ce03a91c9b7b31367f160401cce226 -F Makefile.in dd2b1aba364ff9b05de41086f74407f285c57670 ++F Makefile.in 444faa7b5c5b3189fa674ff42be94d87a37eba9d F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 - F Makefile.msc 1102ce2c75965b9b5534efce380007ffcb08c52e - F Makefile.vxworks b18ad88e9a8c6a001f5cf4a389116a4f1a7ab45f - F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 - F VERSION edab4af5a4623f8198833ea481ce98ab53750a8d + F Makefile.msc 7e6c495d9a145054a09f518781916c7503f7a8e9 + F Makefile.vxworks 034289efa9d591b04b1a73598623119c306cbba0 -F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8 ++F README.md 64f270c43c38c46de749e419c22f0ae2f4499fe8 w README + F VERSION 9f823c026c6a32fc5f84d212a8aae0a221dba45c F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50 - F addopcodes.awk 17dc593f791f874d2c23a0f9360850ded0286531 + F addopcodes.awk 9eb448a552d5c0185cf62c463f9c173cedae3811 F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2 @@@ -78,231 -102,254 +102,258 @@@ F ext/fts3/mkfts3amal.tcl 252ecb7fe6467 F ext/fts3/tool/fts3view.c 6cfc5b67a5f0e09c0d698f9fd012c784bfaa9197 F ext/fts3/unicode/CaseFolding.txt 8c678ca52ecc95e16bc7afc2dbf6fc9ffa05db8c F ext/fts3/unicode/UnicodeData.txt cd07314edb62d49fde34debdaf92fa2aa69011e7 - F ext/fts3/unicode/mkunicode.tcl 7a9bc018e2962abb79563c5a39fe581fcbf2f675 - F ext/icu/README.txt bf8461d8cdc6b8f514c080e4e10dc3b2bbdfefa9 - F ext/icu/icu.c eb9ae1d79046bd7871aa97ee6da51eb770134b5a + F ext/fts3/unicode/mkunicode.tcl dc6f268eb526710e2c6e496c372471d773d0c368 + F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43 + F ext/icu/icu.c d415ccf984defeb9df2c0e1afcfaa2f6dc05eacb F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37 + F ext/misc/amatch.c 678056a4bfcd83c4e82dea81d37543cd1d6dbee1 + F ext/misc/closure.c 636024302cde41b2bf0c542f81c40c624cfb7012 -F ext/misc/fuzzer.c 136533c53cfce0957f0b48fa11dba27e21c5c01d ++F ext/misc/fuzzer.c 136533c53cfce0957f0b48fa11dba27e21c5c01d w src/test_fuzzer.c + F ext/misc/ieee754.c b0362167289170627659e84173f5d2e8fee8566e + F ext/misc/nextchar.c 35c8b8baacb96d92abbb34a83a997b797075b342 + F ext/misc/percentile.c bcbee3c061b884eccb80e21651daaae8e1e43c63 + F ext/misc/regexp.c af92cdaa5058fcec1451e49becc7ba44dba023dc + F ext/misc/rot13.c 1ac6f95f99b575907b9b09c81a349114cf9be45a -F ext/misc/spellfix.c 93f3961074cebe63c31fcefe62ca2a032ee8dfed ++F ext/misc/spellfix.c 93f3961074cebe63c31fcefe62ca2a032ee8dfed w src/test_spellfix.c + F ext/misc/totype.c 4a167594e791abeed95e0a8db028822b5e8fe512 + F ext/misc/vfslog.c fe40fab5c077a40477f7e5eba994309ecac6cc95 + F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e -F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212 ++F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212 w src/test_wholenumber.c F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 - F ext/rtree/rtree.c 950e43bcef7739f3b206e6da78a339ab83b3578c -F ext/rtree/rtree.c 6f70db93e0e42c369325c5cddcf2024c5a87ca43 ++F ext/rtree/rtree.c 8884ffb0db17df33084b0ae2d475427a4276e383 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e - F ext/rtree/rtree1.test e474a2b5eff231496dbd073fe67e5fbaf7f444c9 + F ext/rtree/rtree1.test e2da4aaa426918d27122d1a1066c6ecf8409a514 F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba F ext/rtree/rtree3.test a494da55c30ee0bc9b01a91c80c81b387b22d2dc F ext/rtree/rtree4.test c8fe384f60ebd49540a5fecc990041bf452eb6e0 - F ext/rtree/rtree5.test 9a229678a00f40e6aedb40cb3a07ec5444af892c - F ext/rtree/rtree6.test 3ff9113b4a872fa935309e3511cd9b7cdb4d2472 + F ext/rtree/rtree5.test 6a510494f12454bf57ef28f45bc7764ea279431e + F ext/rtree/rtree6.test 756585abc51727fec97c77852476445c10c0ee95 F ext/rtree/rtree7.test 1fa710b9e6bf997a0c1a537b81be7bb6fded1971 - F ext/rtree/rtree8.test 9772e16da71e17e02bdebf0a5188590f289ab37d + F ext/rtree/rtree8.test db79c812f9e4a11f9b1f3f9934007884610a713a F ext/rtree/rtree9.test d86ebf08ff6328895613ed577dd8a2a37c472c34 F ext/rtree/rtreeA.test ace05e729a36e342d40cf94e9efc7b4723d9dcdf - F ext/rtree/rtreeB.test 983e567b49b5dca165940f66b87e161aa30e82b2 + F ext/rtree/rtreeB.test c85f9ce78766c4e68b8b89fbf2979ee9cfa82b4e + F ext/rtree/rtreeC.test df158dcc81f1a43ce7eef361af03c48ec91f1e06 + F ext/rtree/rtreeD.test 636630357638f5983701550b37f0f5867130d2ca + F ext/rtree/rtreeE.test 388c1c8602c3ce55c15f03b509e9cf545fb7c41f F ext/rtree/rtree_perf.tcl 6c18c1f23cd48e0f948930c98dfdd37dfccb5195 F ext/rtree/rtree_util.tcl 06aab2ed5b826545bf215fff90ecb9255a8647ea - F ext/rtree/sqlite3rtree.h c34c1e41d1ab80bb8ad09aae402c9c956871a765 + F ext/rtree/sqlite3rtree.h 83349d519fe5f518b3ea025d18dd1fe51b1684bd F ext/rtree/tkt3363.test 142ab96eded44a3615ec79fba98c7bde7d0f96de F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024 +F ext/sqlrr/README.txt 4239030e73023e72a2e727808cd433577d5bf730 +F ext/sqlrr/sqlrr.c 8d1e6571cd6a6beabdb5bcdfe3a0e723b914db41 +F ext/sqlrr/sqlrr.h 09e4f8929ad9bc2638732c0cc0db5eef8c417824 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 - F main.mk b96c4ca76db96d169006c53867410c455918ce40 - F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a - F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f - F mkextw.sh 4123480947681d9b434a5e7b1ee08135abe409ac - F mkopcodec.awk f6fccee29e68493bfd90a2e0466ede5fa94dd2fc - F mkopcodeh.awk 29b84656502eee5f444c3147f331ee686956ab0e + F magic.txt f439556c5ce01ced70987e5ee86549a45165d9ff -F main.mk cfa185eed4e0f7e9d28a2e3167cecaa9d6cb39f3 ++F main.mk 8400550fd8065095031ba4ecadf355d184a81282 + F mkopcodec.awk c2ff431854d702cdd2d779c9c0d1f58fa16fa4ea + F mkopcodeh.awk c6b3fa301db6ef7ac916b14c60868aeaec1337b5 F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83 + F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271 + F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504 + F mptest/crash01.test cce8e306d8596d5a2e497e27112dae1f6e5e3538 + F mptest/crash02.subtest f4ef05adcd15d60e5d2bd654204f2c008b519df8 + F mptest/mptest.c 499a74af4be293b7c1c7c3d40f332b67227dd739 + F mptest/multiwrite01.test 499ad0310da8dff8e8f98d2e272fc2a8aa741b2e F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b - F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc - F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad - F src/alter.c 0c1716aa8d248bd6bc750e23be4c68ad05f8668c - F src/analyze.c 7553068d21e32a57fc33ab6b2393fc8c1ba41410 - F src/attach.c 577bf5675b0c50495fc28549f2fcbdb1bac71143 + F sqlite3.1 3d8b83c91651f53472ca17599dae3457b8b89494 + F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a + F src/alter.c b00900877f766f116f9e16116f1ccacdc21d82f1 + F src/analyze.c 3596f863bb80126fe56ba217df5932749271efc8 + F src/attach.c 3801129015ef59d76bf23c95ef9b0069d18a0c52 F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 - F src/backup.c 5b31b24d6814b11de763debf342c8cd0a15a4910 - F src/bitvec.c 26675fe8e431dc555e6f2d0e11e651d172234aa1 + F src/backup.c a729e63cf5cd1829507cb7b8e89f99b95141bb53 + F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7 - F src/btree.c 64acbd5fd89629d2f52d5d6f851cc534d2a66fbe - F src/btree.h 4aee02e879211bfcfd3f551769578d2e940ab6c2 - F src/btreeInt.h 4e5c2bd0f9b36b2a815a6d84f771a61a65830621 - F src/build.c c4555e16f8ccdadb2616014c617ed8166c5a93f7 - F src/callback.c 0cb4228cdcd827dcc5def98fb099edcc9142dbcd -F src/btree.c 6c9b51abd404ce5b78b173b6f2248e8cb824758c ++F src/btree.c 12c020dbba798e47fcc8a9955d7faef4792125cc + F src/btree.h d79306df4ed9181b48916737fe8871a4392c4594 + F src/btreeInt.h cf180d86b2e9e418f638d65baa425c4c69c0e0e3 + F src/build.c 02665ca158431a0926b10cbd7d8178a4c9fc4a22 + F src/callback.c 174e3c8656bc29f91d710ab61550d16eea34be98 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac - F src/ctime.c 72a70dcfda75d3a1f81041ce4573e7afddcd8e4e - F src/date.c 067a81c9942c497aafd2c260e13add8a7d0c7dd4 - F src/delete.c 4f7d773ec44b7db22b30ec9144f58a69154e09b7 - F src/expr.c 4de967b85f577ba00a7cdcb53d22070def6198db + F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a + F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 + F src/delete.c bcf8f72126cea80fc3d5bc5494cf19b3f8935aaf + F src/expr.c 4f9e497c66e2f25a4d139357a778c84d5713207c F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb - F src/fkey.c c82a04e7a92bb728f9ab972b76590403283be2af - F src/func.c 8dea4e82d536997cf4aa85d6573479995e18f38c - F src/global.c fb44b11e02e06c995e6ed6642509edd23599d584 - F src/hash.c a4031441741932da9e7a65bee2b36b5d0e81c073 - F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 + F src/fkey.c 5269ef07b100763134f71b889327c333bd0989cf -F src/func.c 2e16316ec3a6365a0dc3e553c586f91b20f7f6c8 ++F src/func.c 6ace0c0c0d5f0a23273a0c74b35b5f41113f09eb + F src/global.c 1d7bb7ea8254ae6a68ed9bfaf65fcb3d1690b486 + F src/hash.c d139319967164f139c8d1bb8a11b14db9c4ba3cd + F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 - F src/insert.c 6e2aa7fbb5d4c5f34d412772751ed0aff0b9e87b - F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e - F src/legacy.c 015826a958f690302d27e096a68d50b3657e4201 - F src/lempar.c 0ee69fca0be54cd93939df98d2aca4ca46f44416 - F src/loadext.c f20382fbaeec832438a1ba7797bee3d3c8a6d51d - F src/main.c 6fb68d1b6c7dd9188f3ef0182ca1a3ebd1fa0b42 - F src/malloc.c fe085aa851b666b7c375c1ff957643dc20a04bf6 + F src/insert.c ab34bea5af4fee9f956a0805a32463fb7f674d00 + F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d -F src/legacy.c 0df0b1550b9cc1f58229644735e317ac89131f12 ++F src/legacy.c 17887cec559966b62ab3673a02c427338483b147 + F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b + F src/loadext.c 867c7b330b740c6c917af9956b13b81d0a048303 -F src/main.c 0a8cfb6b2899649880e5874ac9bfd1c6f7c6a4a3 ++F src/main.c b3ce9d74745c8ebd16aca28dcacbd30a080626c9 + F src/malloc.c 0203ebce9152c6a0e5de520140b8ba65187350be F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 - F src/mem1.c 437c7c4af964895d4650f29881df63535caaa1fa - F src/mem2.c e307323e86b5da1853d7111b68fd6b84ad6f09cf + F src/mem1.c c0c990fcaddff810ea277b4fb5d9138603dd5d4b + F src/mem2.c dce31758da87ec2cfa52ba4c5df1aed6e07d8e8f F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534 - F src/mem5.c c2c63b7067570b00bf33d751c39af24182316f7f - F src/memjournal.c 0ebce851677a7ac035ba1512a7e65851b34530c6 + F src/mem5.c 74670012946c4adc8a6ad84d03acc80959c3e529 + F src/memjournal.c 0683aac6cab6ec2b5374c0db37c0deb2436a3785 F src/mutex.c d3b66a569368015e0fcb1ac15f81c119f504d3bc F src/mutex.h 5bc526e19dccc412b7ff04642f6fdad3fdfdabea F src/mutex_noop.c 7682796b7d8d39bf1c138248858efcd10c9e1553 F src/mutex_unix.c c3a4e00f96ba068a8dbef34084465979aaf369cc - F src/mutex_w32.c 32a9b3841e2d757355f0012b860b1bc5e01eafa0 + F src/mutex_w32.c ab08c0fc54b71979370ca7c8f42fc64a9f211ebb F src/notify.c 976dd0f6171d4588e89e874fcc765e92914b6d30 - F src/os.c 4c8c8d72a6c58ad2fde4865783e8ae26b494a85e - F src/os.h 027491c77d2404c0a678bb3fb06286f331eb9b57 -F src/os.c 1b147e4cf7cc39e618115c14a086aed44bc91ace ++F src/os.c 25df79baf4bec87f75a2c4e995d63361b66b918a + F src/os.h 60d419395e32a8029fa380a80a3da2e9030f635e F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04 - F src/os_unix.c 0482b132e8f1617276661276dd49e6b0ebe1db49 - F src/os_win.c 1e6b79bea91ee0000ed59aec8cc4935342529229 - F src/pager.c 403e8cfae0e0e798e147ec6b04ee712301b54158 - F src/pager.h 491e782fbefc83e115f85588987ebb7d00d9fde6 - F src/parse.y f29df90bd3adc64b33114ab1de9fb7768fcf2099 - F src/pcache.c f8043b433a57aba85384a531e3937a804432a346 - F src/pcache.h 1b5dcc3dc8103d03e625b177023ee67764fa6b7c - F src/pcache1.c 9fd22671c270b35131ef480bbc00392b8b5f8ab9 - F src/pragma.c 2b556a8a7afcb9e5c17f1901d63413f15c75c4a7 - F src/prepare.c 417a6a758be68de72b34f526d554171bf240e5da - F src/printf.c 4a9f882f1c1787a8b494a2987765acf9d97ac21f - F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 - F src/resolve.c 9e28280ec98035f31900fdd1db01f86f68ca6c32 - F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0 - F src/select.c 80633ba7505bf830597edafbeae7b6016fc635ed - F src/shell.c 8ee5a3cb502e2d574f97b43972e6c1e275e7bec7 - F src/sqlite.h.in f157b58f6876dbfc23d5e64ea2a7eb01d33c02d6 - F src/sqlite3.rc fea433eb0a59f4c9393c8e6d76a6e2596b1fe0c0 + F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa -F src/os_unix.c ae4b5240af4619d711301d7992396e182585269f -F src/os_win.c 485d06a93965f306c7281fca0937829292367234 ++F src/os_unix.c a0ebd5f039e35f4a7e6f254b279a08324166fd00 ++F src/os_win.c 31f80c90591fdee22a76682c4b1dd5552d5a69a9 + F src/os_win.h 057344a6720b4c8405d9bd98f58cb37a6ee46c25 -F src/pager.c f6bb1fa6cdf2062f2d8aec3e64db302bca519ab8 -F src/pager.h ffd5607f7b3e4590b415b007a4382f693334d428 ++F src/pager.c 0f8835053ca30c67177bcebf10a2011dde152e27 ++F src/pager.h 8feb18f845951ab37e1f65a319b2da24185173ac + F src/parse.y 22d6a074e5f5a7258947a1dc55a9bf946b765dd0 + F src/pcache.c d8eafac28290d4bb80332005435db44991d07fc2 + F src/pcache.h a5e4f5d9f5d592051d91212c5949517971ae6222 + F src/pcache1.c 102e6f5a2fbc646154463eb856d1fd716867b64c -F src/pragma.c 810ef31ccfaa233201dcf100637a9777cc24e897 -F src/prepare.c 677521ab7132615a8a26107a1d1c3132f44ae337 ++F src/pragma.c 67d3b4a85cb1844ace98889de10d5b7ae8bf4a80 ++F src/prepare.c 954f80160f120ca715ffa5db5549c3262abb335e + F src/printf.c e5a0005f8b3de21f85da6a709d2fbee76775bf4b + F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece + F src/resolve.c 273d5f47c4e2c05b2d3d2bffeda939551ab59e66 + F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be -F src/select.c 089c4d46f067a5cccae93524c6377f981ba99bd9 ++F src/select.c 2270f57439f69f4b2fd97452203b5da53a51d668 + F src/shell.c 2afe7a7154e97be0c74c5feacf09626bda8493be -F src/sqlite.h.in 564fc23db33870b5096b20d72df7491ce0b8b74f ++F src/sqlite.h.in 1581bfade051f90dcd28b44c6b04fbf326bec4db + F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e +F src/sqlite3_private.h a81a9c5f97c095cc3e86914a05f8fabe0011f4a1 - F src/sqlite3ext.h 6904f4aadf976f95241311fbffb00823075d9477 - F src/sqliteInt.h 44d0917a4fa806cfa51a3f4737b13845fdc4e569 + F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc -F src/sqliteInt.h b2947801eccefd7ba3e5f14e1353289351a83cf3 ++F src/sqliteInt.h 53c0b5cd25c12a22837807373693a129d90ab98b F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d - F src/status.c 35939e7e03abf1b7577ce311f48f682c40de3208 + F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e - F src/tclsqlite.c e4de2458b3ef38fdd0498bc4e5ea5367a241b0f3 - F src/test1.c f435cf69dc915a692c37862e5abcab0f79f550e8 - F src/test2.c 4178056dd1e7d70f954ad8a1e3edb71a2a784daf - F src/test3.c 3c3c2407fa6ec7a19e24ae23f7cb439d0275a60d - F src/test4.c bf9fa9bece01de08e6f5e02314e4af5c13590dfa - F src/test5.c a6d1ac55ac054d0b2b8f37b5e655b6c92645a013 - F src/test6.c 417e1e214734393c24a8ee80b41485a9c4169123 - F src/test7.c 2e0781754905c8adc3268d8f0967e7633af58843 - F src/test8.c 8bcce65e5ee027fbfd7da41d28371aabbfd369ff + F src/tclsqlite.c e87c99e28a145943666b51b212dacae35fcea0bd -F src/test1.c 899bddeb0c7fb2b8062de6f03af4a4e4f48f9df5 ++F src/test1.c d289efd4896bf3536c99c097a9181a3239201ca4 + F src/test2.c 7355101c085304b90024f2261e056cdff13c6c35 + F src/test3.c 1c0e5d6f080b8e33c1ce8b3078e7013fdbcd560c + F src/test4.c 9b32d22f5f150abe23c1830e2057c4037c45b3df + F src/test5.c 5a34feec76d9b3a86aab30fd4f6cc9c48cbab4c1 + F src/test6.c 41cacf3b0dd180823919bf9e1fbab287c9266723 + F src/test7.c 72b732baa5642f795655ba1126ea032af46ecfd2 + F src/test8.c 54ccd7b1df5062f0ecbf50a8f7b618f8b1f13b20 F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60 - F src/test_async.c 0612a752896fad42d55c3999a5122af10dcf22ad - F src/test_autoext.c 30e7bd98ab6d70a62bb9ba572e4c7df347fe645e - F src/test_backup.c 64fd6173ad99daade1227aa17c3ca0d18fa5e5fa - F src/test_btree.c 5b89601dcb42a33ba8b820a6b763cc9cb48bac16 - F src/test_config.c e8a50ba3bdd9b191f9078c7d2ce068ae7d99117c - F src/test_demovfs.c 20a4975127993f4959890016ae9ce5535a880094 + F src/test_async.c 21e11293a2f72080eda70e1124e9102044531cd8 + F src/test_autoext.c dea8a01a7153b9adc97bd26161e4226329546e12 -F src/test_backup.c 3875e899222b651e18b662f86e0e50daa946344e ++F src/test_backup.c 2e6e6a081870150f20c526a2e9d0d29cda47d803 + F src/test_btree.c 2e9978eca99a9a4bfa8cae949efb00886860a64f -F src/test_config.c dabaa32868974e1ae39770cc17d7e066a9c38e6d ++F src/test_config.c 15c77838d6646644362c8ec13348f9889d6e37b0 + F src/test_demovfs.c 69b2085076654ebc18014cbc6386f04409c959a9 F src/test_devsym.c e7498904e72ba7491d142d5c83b476c4e76993bc - F src/test_func.c 3a8dd37c08ab43b76d38eea2836e34a3897bf170 - F src/test_fuzzer.c 1d26aa965120420bc14807da29d4d4541bfa6148 + F src/test_fs.c ced436e3d4b8e4681328409b8081051ce614e28f + F src/test_func.c d3013ce36f19ac72a99c73864930fd1fa41832f8 F src/test_hexio.c abfdecb6fa58c354623978efceb088ca18e379cd - F src/test_init.c 3cbad7ce525aec925f8fda2192d576d47f0d478a - F src/test_intarray.c d879bbf8e4ce085ab966d1f3c896a7c8b4f5fc99 - F src/test_intarray.h 489edb9068bb926583445cb02589344961054207 + F src/test_init.c 66b33120ffe9cd853b5a905ec850d51151337b32 + F src/test_intarray.c 87847c71c3c36889c0bcc9c4baf9d31881665d61 + F src/test_intarray.h 2ece66438cfd177b78d1bfda7a4180cd3a10844d F src/test_journal.c f5c0a05b7b3d5930db769b5ee6c3766dc2221a64 - F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e - F src/test_malloc.c 01cd65ae7ae93de9fbf8214d1ee6b4eba4850700 - F src/test_multiplex.c ac0fbc1748e5b86a41a1d7a84654fae0d53a881d - F src/test_multiplex.h e99c571bc4968b7a9363b661481f3934bfead61d - F src/test_mutex.c a6bd7b9cf6e19d989e31392b06ac8d189f0d573e + F src/test_loadext.c a5251f956ab6af21e138dc1f9c0399394a510cb4 + F src/test_malloc.c 1ff5b1243d96124c9a180f3b89424820a1f337f3 + F src/test_multiplex.c 9f304bf04170c91c0318238d512df2da039eb1c8 + F src/test_multiplex.h 110a8c4d356e0aa464ca8730375608a9a0b61ae1 + F src/test_mutex.c 293042d623ebba969160f471a82aa1551626454f F src/test_onefile.c 0396f220561f3b4eedc450cef26d40c593c69a25 - F src/test_osinst.c 90a845c8183013d80eccb1f29e8805608516edba + F src/test_osinst.c 3d0340bc31a9f3d8a3547e0272373e80f78dde25 F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00 - F src/test_quota.c 8ab295092c70903ca6f3209fa4c75f5cb6c1bf8e - F src/test_quota.h 8761e463b25e75ebc078bd67d70e39b9c817a0cb - F src/test_rtree.c a1bbfc30f14d2bad2f93dbea7dcc697c97a40c66 - F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0 - F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f - F src/test_spellfix.c 76dd8d3111d2f5354c374f71fa23b752bd0b029c - F src/test_stat.c d1569c7a4839f13e80187e2c26b2ab4da2d03935 + F src/test_quota.c 65f6348fec0f2b3020c907247fb47556b214abb9 + F src/test_quota.h 2a8ad1952d1d2ca9af0ce0465e56e6c023b5e15d -F src/test_rtree.c fdd8d29ca5165c7857987a2ba263fac5c69e231f ++F src/test_rtree.c bfe6f4386517f70054311109f3528adffec34485 + F src/test_schema.c cd12a2223c3a394f4d07bb93bdf6d344c5c121b6 + F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe + F src/test_sqllog.c c1c1bbedbcaf82b93d83e4f9dd990e62476a680e + F src/test_stat.c 9898687a6c2beca733b0dd6fe19163d987826d31 -F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd +F src/test_superlock.c 12e2bc484c6c2ba837327d37f2e6a6fd9d1464f8 - F src/test_syscall.c a992d8c80ea91fbf21fb2dd570db40e77dd7e6ae + F src/test_syscall.c 2e21ca7f7dc54a028f1967b63f1e76155c356f9b F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa - F src/test_thread.c e286f2173563f2a1747c24bcda6b9d030bf4f4e4 - F src/test_vfs.c c6260ef238c1142c8f8bd402db02216afd182ae3 - F src/test_vfstrace.c f60e12754e65c05386aab59db8d2ae086314138d - F src/test_wholenumber.c 3d2b9ed1505c40ad5c5ca2ad16ae7a289d6cc251 + F src/test_thread.c 1e133a40b50e9c035b00174035b846e7eef481cb + F src/test_vfs.c f84075a388527892ff184988f43b69ce69b8083c + F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 - F src/tokenize.c 1e86210d3976717a19238ea7b047fac481fe8c12 - F src/trigger.c 3f258307040173aff383eb23fb74c44fe829078c - F src/update.c 28d2d098b43a2c70dae399896ea8a02f622410ef - F src/utf.c 8d819e2e5104a430fc2005f018db14347c95a38f - F src/util.c 0af2e515dc0dabacec931bca39525f6c3f1c5455 - F src/vacuum.c 587a52bb8833d7ac15af8916f25437e2575028bd - F src/vdbe.c fcb5bb6f48d8ac9079e1b0fddbc680c91fe95c68 - F src/vdbe.h 18f581cac1f4339ec3299f3e0cc6e11aec654cdb - F src/vdbeInt.h 573a43ab5697b648a1e8f3dfc7d8667d5ca55729 - F src/vdbeapi.c e05707f39ab3691422b59b72188c004154eb6417 - F src/vdbeaux.c a709b258b800bcfddc69a9d262fe46f88fea63b1 - F src/vdbeblob.c 32f2a4899d67f69634ea4dd93e3f651936d732cb - F src/vdbemem.c cb55e84b8e2c15704968ee05f0fae25883299b74 - F src/vdbesort.c 0dc1b274dcb4d4c8e71b0b2b15261f286caba39b - F src/vdbetrace.c 36c1ae141327a5352e5656fd448194b6927bc763 - F src/vtab.c d8020c0a0e8ccc490ca449d7e665311b6e9f3ba9 - F src/wal.c 61b556fa9ddf1f6d60244ead41f9a17aeb1e0f12 - F src/wal.h ce626f1f9000caf09a99a6634a8d794686f92e1b - F src/walker.c 3d75ba73de15e0f8cd0737643badbeb0e002f07b - F src/where.c d836df3a2096c41c39e48ab5636f09f94ba02676 - F test/8_3_names.test 0ed0f6711fefac33829ef9f1d6ca3c56c48ef1c7 + F src/tokenize.c 6da2de6e12218ccb0aea5184b56727d011f4bee7 + F src/trigger.c 66f3470b03b52b395e839155786966e3e037fddb + F src/update.c 5b3e74a03b3811e586b4f2b4cbd7c49f01c93115 + F src/utf.c 6dc9ec9f1b3db43ae8ba0365377f11df1ee4c01c + F src/util.c 2b5fb283a190aacdb286f7835a447c45b345b83c + F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179 -F src/vdbe.c 7f359193bf2366cc914a9ece093ebf284e56acdc ++F src/vdbe.c 0c64781331869342b7c1b2fd7140318da0d9a3a8 + F src/vdbe.h 394464909ed682334aa3d5831aae0c2fe2abef94 + F src/vdbeInt.h e6d83e5bfd62fc6685ba1ed6153f7099f82de9f7 -F src/vdbeapi.c 0ed6053f947edd0b30f64ce5aeb811872a3450a4 -F src/vdbeaux.c e493f38758c4b8f4ca2007cf6a700bd405d192f3 ++F src/vdbeapi.c e37d694feecdcd458427715d8d7ab62e1a5761ef ++F src/vdbeaux.c a82cfad30a3b4c1758c28dcee2b4fc20a70cd121 + F src/vdbeblob.c 9205ce9d3b064d9600f8418a897fc88b5687d9ac + F src/vdbemem.c 6fc77594c60f6155404f3f8d71bf36d1fdeb4447 + F src/vdbesort.c 4abb7c0f8f19b7d7d82f4558d5da1a30fdf9ea38 + F src/vdbetrace.c 6f52bc0c51e144b7efdcfb2a8f771167a8816767 + F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd -F src/wal.c 76e7fc6de229bea8b30bb2539110f03a494dc3a8 -F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4 ++F src/wal.c 29854e652a9d7dc0d7a87ff1a9dbffac0aaf2e16 ++F src/wal.h 6b3a67ecd7172dcc9f18fc9cd4d76dc4c2166e68 + F src/walker.c 11edb74d587bc87b33ca96a5173e3ec1b8389e45 + F src/where.c fd4b525cd5ab652cea2fbc71ac15c975271ca461 + F src/whereInt.h 6804c2e5010378568c2bb1350477537755296a46 -F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 ++F test/8_3_names.test 05034aadccd2253ffe6cbefb06662b8aa4600f77 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 - F test/aggnested.test 0be144b453e0622a085fae8665c32f5676708e00 + F test/aggnested.test 45c0201e28045ad38a530b5a144b73cd4aa2cfd6 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87 - F test/all.test 52fc8dee494092031a556911d404ca30a749a30b - F test/alter.test 57d96ec9b320bd07af77567034488dcb6642c748 + F test/all.test 6ff7b43c2b4b905c74dc4a813d201d0fa64c5783 + F test/alter.test 547dc2d292644301ac9a7dda22b319b74f9c08d2 F test/alter2.test 7ea05c7d92ac99349a802ef7ada17294dd647060 F test/alter3.test 49c9d9fba2b8fcdce2dedeca97bbf1f369cc548d - F test/alter4.test b2debc14d8cbe4c1d12ccd6a41eef88a8c1f15d5 + F test/alter4.test d6c011fa0d6227abba762498cafbb607c9609e93 F test/altermalloc.test e81ac9657ed25c6c5bb09bebfa5a047cd8e4acfc - F test/analyze.test f8ab7d15858b4093b06caf5e57e2a5ff7104bdae - F test/analyze3.test c3c7f6c3951900c188cf94b2d5ee3246d6b3ff89 - F test/analyze4.test 757b37875cf9bb528d46f74497bc789c88365045 - F test/analyze5.test 713354664c5ff1853ab2cbcb740f0cf5cb7c802e - F test/analyze6.test aa8dae5066bbed35c5f45a507fb87f2d342f2c99 - F test/analyze7.test d3587aa5af75c9048d031b94fceca2534fa75d1d - F test/analyze8.test 4ca170de2ba30ccb1af2c0406803db72262f9691 + F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f + F test/analyze.test 1772936d66471c65221e437b6d1999c3a03166c4 + F test/analyze3.test bf41f0f680dd1e0d44eed5e769531e93a5320275 + F test/analyze4.test eff2df19b8dd84529966420f29ea52edc6b56213 + F test/analyze5.test 765c4e284aa69ca172772aa940946f55629bc8c4 + F test/analyze6.test d31defa011a561b938b4608d3538c1b4e0b5e92c + F test/analyze7.test bb1409afc9e8629e414387ef048b8e0e3e0bdc4f + F test/analyze8.test 093d15c1c888eed5034304a98c992f7360130b88 + F test/analyze9.test 623e02a99a78fa12fe5def2fd559032d5d887e0f + F test/analyzeA.test 1a5c40079894847976d983ca39c707aaa44b6944 + F test/analyzeB.test 8bf35ee0a548aea831bf56762cb8e7fdb1db083d F test/async.test 1d0e056ba1bb9729283a0f22718d3a25e82c277b F test/async2.test c0a9bd20816d7d6a2ceca7b8c03d3d69c28ffb8b F test/async3.test d73a062002376d7edc1fe3edff493edbec1fc2f7 F test/async4.test 1787e3952128aa10238bf39945126de7ca23685a - F test/async5.test 0dd8701bd588bf6e70c2557a22ae3f22b2567b4c - F test/atof1.test 9bf1d25180a2e05fc12ce3940cc8003033642f68 + F test/async5.test 383ab533fdb9f7ad228cc99ee66e1acb34cc0dc0 + F test/atof1.test 08a61df9365c341f334a65f4348897312d8f3db7 -F test/attach.test 0d112b7713611fdf0340260192749737135fda5f +F test/attach.test 63033baa59be42c811ef0d4e73ebd2d6dba4805c - F test/attach2.test e54436ed956d3d88bdee61221da59bf3935a0966 - F test/attach3.test d89ccfe4fe6e2b5e368d480fcdfe4b496c54cf4e + F test/attach2.test 0ec5defa340363de6cd50fd595046465e9aaba2d + F test/attach3.test 359eb65d00102cdfcef6fa4e81dc1648f8f80b27 -F test/attach4.test 53bf502f17647c6d6c5add46dda6bac8b6f4665c +F test/attach4.test faaaf33fa51f986b414520cb03cecdc7999df108 F test/attachmalloc.test 3a4bfca9545bfe906a8d2e622de10fbac5b711b0 - F test/auth.test 304e82f31592820d3bde26ab6b75deaa123e1a6f - F test/auth2.test 270baddc8b9c273682760cffba6739d907bd2882 + F test/auth.test 5bdf154eb28c0e4bbc0473f335858c0d96171768 + F test/auth2.test c3b415b76c033bedb81292118fb7c01f5f10cbcd F test/auth3.test a4755e6a2a2fea547ffe63c874eb569e60a28eb5 - F test/autoinc.test bd30d372d00045252f6c2e41b5f41455e1975acf - F test/autoindex1.test 058d0b331ae6840a61bbee910d8cbae27bfd5991 - F test/autovacuum.test 9f22a7733f39c56ef6a5665d10145ac25d8cb574 + F test/autoinc.test c58912526998a39e11f66b533e23cfabea7f25b7 + F test/autoindex1.test 762ff3f8e25d852aae55c6462ca166a80c0cde61 + F test/autovacuum.test 941892505d2c0f410a0cb5970dfa1c7c4e5f6e74 F test/autovacuum_ioerr2.test 8a367b224183ad801e0e24dcb7d1501f45f244b4 F test/avtrans.test 0252654f4295ddda3b2cce0e894812259e655a85 - F test/backcompat.test ecd841f3a3bfb81518721879cc56a760670e3198 + F test/backcompat.test 5f8ad58b3eaebc78cd2c66c65476a42e6f32b2ad F test/backup.test c9cdd23a495864b9edf75a9fa66f5cb7e10fcf62 F test/backup2.test 34986ef926ea522911a51dfdb2f8e99b7b75ebcf - F test/backup_ioerr.test 40d208bc9224b666ee3ed423f49bc9062a36a9d0 + F test/backup4.test 2a2e4a64388090b152de753fd9e123f28f6a3bd4 + F test/backup_ioerr.test 4c3c7147cee85b024ecf6e150e090c32fdbb5135 F test/backup_malloc.test 7162d604ec2b4683c4b3799a48657fb8b5e2d450 F test/badutf.test d5360fc31f643d37a973ab0d8b4fb85799c3169f F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f F test/bc_common.tcl 5c8689cc6d2fb44b7c0968ae4f85eb26d50022fa - F test/between.test 16b1776c6323faadb097a52d673e8e3d8be7d070 - F test/bigfile.test 8f88b5ef065e31c615c49d725ede94155fbe9609 - F test/bigfile2.test 8a3c242c3c3481e7cde5a6ef2a66fdc367a095f7 + F test/between.test 34d375fb5ce1ae283ffe82b6b233e9f38e84fc6c + F test/bigfile.test aa74f4e5db51c8e54a1d9de9fa65d01d1eb20b59 + F test/bigfile2.test 1b489a3a39ae90c7f027b79110d6b4e1dbc71bfc F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747 -F test/bind.test 3c7b320969000c441a70952b0b15938fbb66237c +F test/bind.test 30af0fc61bc3836034215cdbdeca46113ca1b4a1 F test/bindxfer.test efecd12c580c14df5f4ad3b3e83c667744a4f7e0 F test/bitvec.test 75894a880520164d73b1305c1c3f96882615e142 F test/blob.test e7ac6c7d3a985cc4678c64f325292529a69ae252 @@@ -314,21 -361,24 +365,24 @@@ F test/boundary3.tcl 23361e108a125dca9c F test/boundary3.test 56ef82096b4329aca2be74fa1e2b0f762ea0eb45 F test/boundary4.tcl 0bb4b1a94f4fc5ae59b79b9a2b7a140c405e2983 F test/boundary4.test 89e02fa66397b8a325d5eb102b5806f961f8ec4b + F test/btreefault.test c2bcb542685eea44621275cfedbd8a13f65201e3 F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0 - F test/cache.test 3e50417948e06959aca785db81896b28a38c36dd - F test/capi2.test 835d4cee9f542ea50fa8d01f3fe6de80b0627360 - F test/capi3.test 56ab450125ead38846cbae7e5b6a216686c3cffa -F test/cache.test 13bc046b26210471ca6f2889aceb1ea52dc717de ++F test/cache.test 0bc2195f4a7207108af2617ed356e77daf4412f7 + F test/capi2.test 011c16da245fdc0106a2785035de6b242c05e738 + F test/capi3.test 71bcf2fbd36a9732f617766dfd752552c8e491b5 F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4 - F test/capi3c.test 93d24621c9ff84da9da060f30431e0453db1cdb0 - F test/capi3d.test 17b57ca28be3e37e14c2ba8f787d292d84b724a1 - F test/capi3e.test f7408dda65c92b9056199fdc180f893015f83dde + F test/capi3c.test a21869e4d50d5dbb7e566e328fc0bc7c2efa6a32 + F test/capi3d.test 6d0fc0a86d73f42dd19a7d8b7761ab9bc02277d0 + F test/capi3e.test 3d49c01ef2a1a55f41d73cba2b23b5059ec460fe F test/cast.test 4c275cbdc8202d6f9c54a3596701719868ac7dc3 - F test/check.test 193f47ed43a8d29aca12b30cd30ceb105fbe710d + F test/check.test 5831ddb6f2c687782eaf2e1a07b6e17f24c4f763 + F test/close.test 340bd24cc58b16c6bc01967402755027c37eb815 + F test/closure01.test b1703ba40639cfc9b295cf478d70739415eec6a4 F test/coalesce.test cee0dccb9fbd2d494b77234bccf9dc6c6786eb91 - F test/collate1.test e3eaa48c21e150814be1a7b852d2a8af24458d04 - F test/collate2.test 04cebe4a033be319d6ddbb3bbc69464e01700b49 - F test/collate3.test d28d2cfab2c3a3d4628ae4b2b7afc9965daa3b4c - F test/collate4.test d37682293d3c32223dec2e6afdeaf9de18415248 + F test/collate1.test 73b91005f264b7c403e2d63a6708d150679ac99a + F test/collate2.test 9aaa410a00734e48bcb27f3872617d6f69b2a621 + F test/collate3.test 79558a286362cb9ed603c6fa543f1cda7f563f0f + F test/collate4.test f04d5168685f2eef637ecfa2d4ddf8ec0d600177 F test/collate5.test 65d928034d30d2d263a80f6359f7549ee1598ec6 F test/collate6.test 8be65a182abaac8011a622131486dafb8076e907 F test/collate7.test 8ec29d98f3ee4ccebce6e16ce3863fb6b8c7b868 @@@ -367,54 -424,57 +428,57 @@@ F test/crashtest1.c 09c1c7d728ccf4feb9e F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c F test/ctime.test 7bd009071e242aac4f18521581536b652b789a47 - F test/date.test f3228180c87bbe5d39c9397bf001c0095c3821b9 - F test/dbstatus.test 207e5b63fcb7b9c3bb8e1fdf38ebd4654ad0e54b - F test/dbstatus2.test 3efd4beb77136cd02f826d81d83bc3b94cf9d276 - F test/default.test 6faf23ccb300114924353007795aa9a8ec0aa9dc + F test/date.test 42973251b9429f2c41b77eb98a7b0b0ba2d3b2c0 + F test/dbstatus.test 8de104bb5606f19537d23cd553b41349b5ab1204 -F test/dbstatus2.test 10418e62b3db5dca070f0c3eef3ea13946f339c2 ++F test/dbstatus2.test fc968d3005b4d827eba807a06573a6c528aa119a + F test/default.test 792c3c70836f1901e2a8cb34fa0880ed71e2c1a9 F test/delete.test a065b05d2ebf60fd16639c579a4adfb7c381c701 F test/delete2.test 3a03f2cca1f9a67ec469915cb8babd6485db43fa F test/delete3.test 555e84a00a99230b7d049d477a324a631126a6ab - F test/descidx1.test 533dcbda614b0463b0ea029527fd27e5a9ab2d66 + F test/descidx1.test 6d03b44c8538fe0eb4924e19fba10cdd8f3c9240 F test/descidx2.test 9f1a0c83fd57f8667c82310ca21b30a350888b5d - F test/descidx3.test fe720e8b37d59f4cef808b0bf4e1b391c2e56b6f + F test/descidx3.test 09ddbe3f5295f482d2f8b687cf6db8bad7acd9a2 F test/diskfull.test 106391384780753ea6896b7b4f005d10e9866b6e - F test/distinct.test c239558222e5ae357aade535bfe61aaabcb00bbf + F test/distinct.test 086e70c765f172e8974e9f83b9ac5ca03c154e77 F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376 - F test/e_createtable.test 0a2465736199cb5e084645a8714ee04299b81721 - F test/e_delete.test 89aa84d3d1bd284a0689ede04bce10226a5aeaa5 - F test/e_droptrigger.test afd5c4d27dec607f5997a66bf7e2498a082cb235 - F test/e_dropview.test 583411e470458c5d76148542cfb5a5fa84c8f93e - F test/e_expr.test 5489424d3d9a452ac3701cdf4b680ae31a157894 - F test/e_fkey.test a79ab1d3213c7ac64621eec28f8e8bb219775445 + F test/e_createtable.test ed82efcedc4b3656b27a5fcd12335cdb7e20eeee + F test/e_delete.test d5186e2f5478b659f16a2c8b66c09892823e542a + F test/e_droptrigger.test 3cd080807622c13e5bbb61fc9a57bd7754da2412 + F test/e_dropview.test 0c9f7f60989164a70a67a9d9c26d1083bc808306 + F test/e_expr.test 5c71d183fbf519a4769fd2e2124afdc70b5b1f42 + F test/e_fkey.test a1783fe1f759e1990e6a11adfcf0702dac4d0707 F test/e_fts3.test 5c02288842e4f941896fd44afdef564dd5fc1459 - F test/e_insert.test c6ac239a97cb16dfbd0c16496f8cd871b4068c0c - F test/e_reindex.test dfedfc32c5a282b0596c6537cbcd4217fbb1a216 + F test/e_insert.test 1e44f84d2abe44d66e4fbf198be4b20e3cc724a0 + F test/e_reindex.test 396b7b4f0a66863b4e95116a67d93b227193e589 F test/e_resolve.test dcce9308fb13b934ce29591105d031d3e14fbba6 - F test/e_select.test 07e8d81268ba1ffcaf1dc4bec48956af150c42f9 - F test/e_select2.test 5c3d3da19c7b3e90ae444579db2b70098599ab92 - F test/e_update.test 161d5dc6a3ed9dd08f5264d13e20735d7a89f00c - F test/e_uri.test 9e190ca799d9190eec6e43f2aadf1d10c06a57a3 - F test/e_vacuum.test 331da289ae186656cf5f2eb27f577a89c0c221af + F test/e_select.test 52692ff3849541e828ad4661fe3773a9b8711763 + F test/e_select2.test aceb80ab927d46fba5ce7586ebabf23e2bb0604f + F test/e_update.test 312cb8f5ccfe41515a6bb092f8ea562a9bd54d52 + F test/e_uri.test a2c92d80093a7efdcfbb11093651cbea87097b6b + F test/e_vacuum.test 5bfbdc21b65c0abf24398d0ba31dc88d93ca77a9 F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea - F test/enc2.test 796c59832e2b9a52842f382ffda8f3e989db03ad + F test/enc2.test 83437a79ba1545a55fb549309175c683fb334473 F test/enc3.test 90683ad0e6ea587b9d5542ca93568af9a9858c40 F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020 - F test/eqp.test 46aa946dd55c90635327898275d3e533d23a9845 - F test/errmsg.test 3bb606db9d040cc6854459f8f5e5a2bcd9b7fd2a + F test/eqp.test 90b56d03a93a2e7bb90f88be6083a8ea53f11a0e + F test/errmsg.test f31592a594b44ee121371d25ddd5d63497bb3401 F test/eval.test bc269c365ba877554948441e91ad5373f9f91be3 - F test/exclusive.test bd8976a6e67daf8e9948eb1c6a27afafe79752fa - F test/exclusive2.test 372be98f6de44dd78734e364b7b626ea211761a6 -F test/exclusive.test c7ebbc756eacf544c108b15eed64d7d4e5f86b75 ++F test/exclusive.test c0d5e3c0756ac6ccd4d45e0b21ff9f01b963fa61 + F test/exclusive2.test 32798111aae78a5deec980eee383213f189df308 F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7 F test/exists.test 8f7b27b61c2fbe5822f0a1f899c715d14e416e30 F test/expr.test 67c9fd6f8f829e239dc8b0f4a08a73c08b09196d - F test/fallocate.test 9b74e7469ac8c1c19871a667dac1dd642d06a9ed - F test/filectrl.test f0327bd804d9c7bd048fa7a151c5eab8e27df42b - F test/filefmt.test ffa17b5aebc3eb4b1e3be1ccb5ee906ffbd97f6e - F test/fkey1.test 01c7de578e11747e720c2d9aeef27f239853c4da - F test/fkey2.test 080969fe219b3b082b0e097ac18c6af2e5b0631f - F test/fkey3.test 5ec899d12b13bcf1e9ef40eff7fb692fdb91392e - F test/fkey4.test c6c8f9f9be885f95c85c7bceb26f243ad906fd49 - F test/fkey_malloc.test c3a12acd053c976de09036498eef09b83afa4a80 -F test/fallocate.test 3e979af17dfa7e5e9dda5eba1a696c04fa9d47f7 ++F test/fallocate.test fe52076a43ff99da8411990dbb4f374e81e88c85 + F test/filectrl.test 14fa712e42c4cb791e09dfd58a6a03efb47ef13a + F test/filefmt.test cb34663f126cbc2d358af552dcaf5c72769b0146 + F test/fkey1.test e1d1fa84cde579185ea01358436839703e415a5b + F test/fkey2.test 32ca728bcb854feed72d1406ea375fe423eebff2 + F test/fkey3.test 76d475c80b84ee7a5d062e56ccb6ea68882e2b49 + F test/fkey4.test 86446017011273aad8f9a99c1a65019e7bd9ca9d + F test/fkey5.test 8a1fde4e7721ae00b05b3178888833726ca2df8d + F test/fkey6.test abb59f866c1b44926fd02d1fdd217d831fe04f48 + F test/fkey7.test e31d0e71a41c1d29349a16448d6c420e2c53a8fc + F test/fkey_malloc.test 594a7ea1fbab553c036c70813cd8bd9407d63749 F test/format4.test 1f0cac8ff3895e9359ed87e41aaabee982a812eb F test/fts-9fd058691.test 78b887e30ae6816df0e1fed6259de4b5a64ad33c F test/fts1a.test 46090311f85da51bb33bd5ce84f7948359c6d8d7 @@@ -505,53 -575,62 +579,62 @@@ F test/fts4langid.test 24a6e41063b416bb F test/fts4merge.test c424309743fdd203f8e56a1f1cd7872cd66cc0ee F test/fts4merge2.test 5faa558d1b672f82b847d2a337465fa745e46891 F test/fts4merge3.test aab02a09f50fe6baaddc2e159c3eabc116d45fc7 - F test/fts4unicode.test aad033abdcfa0f87ce5f56468f59fdf2a0acbcef + F test/fts4merge4.test c19c85ca1faa7b6d536832b49c12e1867235f584 + F test/fts4noti.test aed33ba44808852dcb24bf70fa132e7bf530f057 + F test/fts4unicode.test 01ec3fe2a7c3cfff3b4c0581b83caa11b33efa36 F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d - F test/func.test 0d89043dab9a8853358d14c68e028ee0093bf066 + F test/func.test ae97561957aba6ca9e3a7b8a13aac41830d701ef F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f - F test/func3.test 001021e5b88bd02a3b365a5c5fd8f6f49d39744a + F test/func3.test dbccee9133cfef1473c59ec07b5f0262b9d72f9a + F test/func4.test 6beacdfcb0e18c358e6c2dcacf1b65d1fa80955f + F test/func5.test cdd224400bc3e48d891827cc913a57051a426fa4 F test/fuzz-oss1.test 4912e528ec9cf2f42134456933659d371c9e0d74 - F test/fuzz.test 77fd50afc12847af50fcf1941679d90adebadde6 + F test/fuzz.test 96083052bf5765e4518c1ba686ce2bab785670d1 F test/fuzz2.test 207d0f9d06db3eaf47a6b7bfc835b8e2fc397167 - F test/fuzz3.test aec64345184d1662bd30e6a17851ff659d596dc5 + F test/fuzz3.test efd384b896c647b61a2c1848ba70d42aad60a7b3 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b F test/fuzz_malloc.test 328f70aaca63adf29b4c6f06505ed0cf57ca7c26 - F test/fuzzer1.test 69cf1036b92fd3b8e1fd65bef4d7ee3f085c28fb - F test/fuzzerfault.test ff2282c81797b6a355f0748d8b54c7287c5d2b25 - F test/hook.test 5f3749de6462a6b87b4209b74adf7df5ac2df639 + F test/fuzzer1.test d4c52aaf3ef923da293a2653cfab33d02f718a36 + F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 + F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98 + F test/hook.test 162d7cef7a2d2b04839fe14402934e6a1b79442f F test/icu.test 70df4faca133254c042d02ae342c0a141f2663f4 - F test/in.test 5941096407d8c133b9eff15bd3e666624b6cbde3 + F test/in.test 047c4671328e9032ab95666a67021adbbd36e98e F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75 F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0 - F test/in4.test 64f3cc1acde1b9161ccdd8e5bde3daefdb5b2617 + F test/in4.test 41c1c031aa46b1eb4411df2687ed2ed498da23b5 F test/in5.test 99f9a40af01711b06d2d614ecfe96129f334fba3 - F test/incrblob.test 34765fa6fb5d8e0f256fc7d6497c04b205398849 - F test/incrblob2.test edc3a96e557bd61fb39acc8d2edd43371fbbaa19 - F test/incrblob3.test 086482e7937202be9f8cf327117a042d8628fe7d - F test/incrblob4.test 09be37d3dd996a31ea6993bba7837ece549414a8 + F test/incrblob.test e81846d214f3637622620fbde7cd526781cfe328 + F test/incrblob2.test bf4d549aa4a466d7fbe3e3a3693d3861263d5600 -F test/incrblob3.test d8d036fde015d4a159cd3cbae9d29003b37227a4 ++F test/incrblob3.test 5fa6f2665ae37da05928bb16851d4f86515af78a + F test/incrblob4.test f26502a5697893e5acea268c910f16478c2f0fab F test/incrblob_err.test d2562d2771ebffd4b3af89ef64c140dd44371597 - F test/incrblobfault.test 917c0292224c64a56ef7215fd633a3a82f805be0 + F test/incrblobfault.test 280474078f6da9e732cd2a215d3d854969014b6e F test/incrvacuum.test d2a6ddf5e429720b5fe502766af747915ccf6c32 -F test/incrvacuum2.test 379eeb8740b0ef60c372c439ad4cbea20b34bb9b +F test/incrvacuum2.test a1828b6165af6c248c4eb80aeaee2bcbb45768c1 - F test/incrvacuum_ioerr.test 22f208d01c528403240e05beecc41dc98ed01637 - F test/index.test b5429732b3b983fa810e3ac867d7ca85dae35097 + F test/incrvacuum3.test 75256fb1377e7c39ef2de62bfc42bbff67be295a + F test/incrvacuum_ioerr.test 6ae2f783424e47a0033304808fe27789cf93e635 + F test/index.test 4d990005a67a36984e4f1a5f1bdccea8d08da4ee F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6 - F test/index3.test 423a25c789fc8cc51aaf2a4370bbdde2d9e9eed7 - F test/index4.test 2983216eb8c86ee62d9ed7cb206b5cc3331c0026 - F test/index5.test edc8c64ca78bee140c21ce3836820fadf47906bb - F test/indexedby.test be501e381b82b2f8ab406309ba7aac46e221f4ad + F test/index3.test 55a90cff99834305e8141df7afaef39674b57062 + F test/index4.test ab92e736d5946840236cd61ac3191f91a7856bf6 + F test/index5.test fc07c14193c0430814e7a08b5da46888ee795c33 + F test/index6.test fb370966ac3cd0989053dd5385757b5c3e24ab6a + F test/index7.test a3baf9a625bda7fd49471e99aeae04095fbfeecf + F test/indexedby.test b2f22f3e693a53813aa3f50b812eb609ba6df1ec F test/indexfault.test 31d4ab9a7d2f6e9616933eb079722362a883eb1d F test/init.test 15c823093fdabbf7b531fe22cf037134d09587a7 - F test/insert.test 489aa12a027c83d291f5034a83c8c32e6be1dca2 + F test/insert.test acf909b067b838eb55338d619e800e148c17f1f5 F test/insert2.test 4f3a04d168c728ed5ec2c88842e772606c7ce435 F test/insert3.test 1b7db95a03ad9c5013fdf7d6722b6cd66ee55e30 - F test/insert4.test 87f6798f31d60c4e177622fcc3663367e6ecbd90 + F test/insert4.test 4791662c50518bdd37d394cae9a7a8014e845bb3 F test/insert5.test 394f96728d1258f406fe5f5aeb0aaf29487c39a6 + F test/instr.test 737bbf80685232033f3abedc6ae92f75860b5dd2 F test/intarray.test 066b7d7ac38d25bf96f87f1b017bfc687551cdd4 - F test/interrupt.test 42e7cf98646fd9cb4a3b131a93ed3c50b9e149f1 - F test/intpkey.test 7af30f6ae852d8d1c2b70e4bf1551946742e92d8 - F test/io.test 36d251507d72e92b965fb2f0801c2f0b56335bcf - F test/ioerr.test 40bb2cfcab63fb6aa7424cd97812a84bc16b5fb8 + F test/interrupt.test dfe9a67a94b0b2d8f70545ba1a6cca10780d71cc + F test/intpkey.test 7506090fc08e028712a8bf47e5f54111947e3844 + F test/io.test 3a7abcef18727cc0f2399e04b0e8903eccae50f8 + F test/ioerr.test 2a24bd6ed5a8b062e64bfe1f6cf94fb25e92210d F test/ioerr2.test 9d71166f8466eda510f1af6137bdabaa82b5408d F test/ioerr3.test d3cec5e1a11ad6d27527d0d38573fbff14c71bdd F test/ioerr4.test f130fe9e71008577b342b8874d52984bd04ede2c @@@ -580,18 -660,17 +664,18 @@@ F test/lock.test 87af515b0c4cf928576d0f F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00 F test/lock4.test e175ae13865bc87680607563bafba21f31a26f12 -F test/lock5.test 5ad6a1f536036ff1be915cfdd41481aeafda3273 -F test/lock6.test ad5b387a3a8096afd3c68a55b9535056431b0cf5 +F test/lock5.test 71d0ba9cd23212b5ce1a433107c806203fa6d5f9 +F test/lock6.test 83434ae8ca1d1c5e2eaf74d4e44aa24ab62b291c - F test/lock7.test 64006c84c1c616657e237c7ad6532b765611cf64 + F test/lock7.test 49f1eaff1cdc491cc5dee3669f3c671d9f172431 F test/lock_common.tcl 0c270b121d40959fa2f3add382200c27045b3d95 +F test/lock_proxy.test 95be9c32d79be25cf643b4e41a0aa0e53aa21621 F test/lookaside.test 93f07bac140c5bb1d49f3892d2684decafdc7af2 -F test/main.test 39c4bb8a157f57298ed1659d6df89d9f35aaf2c8 +F test/main.test 3991157c720c2b2b9ec27254d940f06ab81aab84 F test/make-where7.tcl 05c16b5d4f5d6512881dfec560cb793915932ef9 - F test/malloc.test bc745155ff4252d4f35ec8316625b0dfe2abc659 - F test/malloc3.test de8eca0c3e748878845fdca3663ec4b642073caf + F test/malloc.test fd368e31fe98d4779ed80442f311ed9f03bcd1f7 + F test/malloc3.test e3b32c724b5a124b57cb0ed177f675249ad0c66a F test/malloc4.test 957337613002b7058a85116493a262f679f3a261 - F test/malloc5.test a577cbbcc1594c7763b9b3515b3633555751c7f0 + F test/malloc5.test fafce0aa9157060445cd1a56ad50fc79d82f28c3 F test/malloc6.test 2f039d9821927eacae43e1831f815e157659a151 F test/malloc7.test 7c68a32942858bc715284856c5507446bba88c3a F test/malloc8.test 9b7a3f8cb9cf0b12fff566e80a980b1767bd961d @@@ -608,59 -687,75 +692,75 @@@ F test/mallocH.test 79b65aed612c9b3ed2d F test/mallocI.test a88c2b9627c8506bf4703d8397420043a786cdb6 F test/mallocJ.test b5d1839da331d96223e5f458856f8ffe1366f62e F test/mallocK.test d79968641d1b70d88f6c01bdb9a7eb4a55582cc9 - F test/malloc_common.tcl 11838863dc689f2d2b10896c8f4276771a60b42f -F test/malloc_common.tcl 58e54229c4132ef882a11fab6419ec4cd3073589 -F test/manydb.test 28385ae2087967aa05c38624cec7d96ec74feb3e ++F test/malloc_common.tcl e0fbe63a9a0bb8c42fe8d3ebf502141f485acbc2 +F test/manydb.test 3cd8e52ab3112cb8365afeedd6e8231977920577 F test/mem5.test c6460fba403c5703141348cd90de1c294188c68f - F test/memdb.test 499d199e612bc229f52d1c46c6038deeef93d1f2 -F test/memdb.test fcb5297b321b562084fc79d64d5a12a1cd2b639b ++F test/memdb.test da09b7f354f3dc0b74d992f5451ae03ebfb36920 F test/memleak.test 10b9c6c57e19fc68c32941495e9ba1c50123f6e2 - F test/memsubsys1.test c5fcd4bfda423c7cca6edbba96491af631758939 -F test/memsubsys1.test f97cfd0b30e85c2f1ed16d642e7ac58006be84b2 ++F test/memsubsys1.test 04b6c76f91070bbb7cb8713cd51882d6e49f7530 F test/memsubsys2.test 3a1c1a9de48e5726faa85108b02459fae8cb9ee9 - F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d - F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0 + F test/minmax.test 42fbad0e81afaa6e0de41c960329f2b2c3526efd + F test/minmax2.test b44bae787fc7b227597b01b0ca5575c7cb54d3bc F test/minmax3.test cc1e8b010136db0d01a6f2a29ba5a9f321034354 F test/minmax4.test 536a3360470633a177e42fbc19660d146b51daef - F test/misc1.test 889b40722442380a2f6575f30831b32b2372d70e + F test/misc1.test 441a0fafc7087f841db09fbfca54e7aea9f5a84c F test/misc2.test 00d7de54eda90e237fc9a38b9e5ccc769ebf6d4d - F test/misc3.test fe55130a43e444ee75e2156ff75dc96e964b5738 + F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6 F test/misc5.test 528468b26d03303b1f047146e5eefc941b9069f5 F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91 - F test/misc7.test f00dad9a004da659330013e6f21819d018b683d3 - F test/misuse.test ba4fb5d1a6101d1c171ea38b3c613d0661c83054 + F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2 + F test/misuse.test 3c34719944ba045cc6c188a4852ba04680728912 + F test/mmap1.test 93d167b328255cbe6679fe1e1a23be1b1197d07b + F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022 + F test/mmap3.test c92273e16eb8d23c1d55c9815b446bb72ef0512e + F test/mmapfault.test d4c9eff9cd8c2dc14bc43e71e042f175b0a26fe3 -F test/multiplex.test e08cc7177bd6d85990ee1d71100bb6c684c02256 +F test/multiplex.test 85a4be2b23e7294d468b6e3a578ec00020723bee F test/multiplex2.test 580ca5817c7edbe4cc68fa150609c9473393003a F test/multiplex3.test d228f59eac91839a977eac19f21d053f03e4d101 F test/mutex1.test 78b2b9bb320e51d156c4efdb71b99b051e7a4b41 F test/mutex2.test bfeaeac2e73095b2ac32285d2756e3a65e681660 F test/nan.test e9648b9d007c7045242af35e11a984d4b169443a + F test/nolock.test 0540dd96f39b8876e3ffdd8814fad0ea425efeee F test/notify1.test 669b2b743618efdc18ca4b02f45423d5d2304abf - F test/notify2.test 9503e51b9a272a5405c205ad61b7623d5a9ca489 - F test/notify3.test a86259abbfb923aa27d30f0fc038c88e5251488a - F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347 + F test/notify2.test ce23eb522c9e1fff6443f96376fe67872202061c + F test/notify3.test 10ff25cde502e72a92053a2f215d64bece4ef934 + F test/notnull.test f8fcf58669ddba79274daa2770d61dfad8274f62 F test/null.test a8b09b8ed87852742343b33441a9240022108993 + F test/numcast.test 5d126f7f581432e86a90d1e35cac625164aec4a1 F test/openv2.test 0d3040974bf402e19b7df4b783e447289d7ab394 - F test/orderby1.test 31c9865626046666e81cd22ecf8e1c24a4ea41b6 + F test/orderby1.test 9b524aff9147288da43a6d7ddfdcff47fa2303c6 + F test/orderby2.test bc11009f7cd99d96b1b11e57b199b00633eb5b04 + F test/orderby3.test 8619d06a3debdcd80a27c0fdea5c40b468854b99 + F test/orderby4.test 4d39bfbaaa3ae64d026ca2ff166353d2edca4ba4 + F test/orderby5.test 8f08a54836d21fb7c70245360751aedd1c2286fb + F test/orderby6.test 8b38138ab0972588240b3fca0985d2e400432859 + F test/orderby7.test 3d1383d52ade5b9eb3a173b3147fdd296f0202da F test/oserror.test 50417780d0e0d7cd23cf12a8277bb44024765df3 - F test/pager1.test f1f261a4dc5a40b385dfcef946c2e772180d12a9 - F test/pager2.test 745b911dde3d1f24ae0870bd433dfa83d7c658c1 -F test/pager1.test 1acbdb14c5952a72dd43129cabdbf69aaa3ed1fa ++F test/pager1.test 1c39b52a036afd0813fdd47c9d2ebc83dec8fd90 + F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71 F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f - F test/pagerfault.test a15ef77c8495882d7debb43794e87b6e46174c8a - F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401 - F test/pagerfault3.test f16e2efcb5fc9996d1356f7cbc44c998318ae1d7 - F test/pageropt.test 9191867ed19a2b3db6c42d1b36b6fbc657cd1ab0 + F test/pager4.test a122e9e6925d5b23b31e3dfef8c6a44bbf19590e -F test/pagerfault.test ae9ee0db5a30aecda9db8290ce3dd12e5f7bbaa1 ++F test/pagerfault.test 3ae5dafba16772a2349af57ebc5549fcf14646b0 + F test/pagerfault2.test caf4c7facb914fd3b03a17b31ae2b180c8d6ca1f + F test/pagerfault3.test 1003fcda009bf48a8e22a516e193b6ef0dd1bbd8 + F test/pageropt.test 6b8f6a123a5572c195ad4ae40f2987007923bbd6 F test/pagesize.test 1dd51367e752e742f58e861e65ed7390603827a0 - F test/pcache.test fa8a2b0677225765eced806d9d1676b78a9e2c40 -F test/pcache.test b09104b03160aca0d968d99e8cd2c5b1921a993d ++F test/pcache.test 488061b5dd685df2234d690370285c9b4813377b F test/pcache2.test a83efe2dec0d392f814bfc998def1d1833942025 - F test/permutations.test 360b92859c0af814b3fe10b68746936389606501 - F test/pragma.test eaf172eb376b20b9d6c639e03903dd43e476f0b8 - F test/pragma2.test 3a55f82b954242c642f8342b17dffc8b47472947 + F test/percentile.test b98fc868d71eb5619d42a1702e9ab91718cbed54 + F test/permutations.test 40add071ba71aefe1c04f5845308cf46f7de8d04 -F test/pragma.test adb21a90875bc54a880fa939c4d7c46598905aa0 ++F test/pragma.test 8ee8929dd652a5753d9cd72dbcbcb9b152bd6fd8 + F test/pragma2.test aea7b3d82c76034a2df2b38a13745172ddc0bc13 F test/printf.test ec9870c4dce8686a37818e0bf1aba6e6a1863552 - F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301 + F test/printf2.test bed79b4c3e5da08ba88ad637c0bf62586843cfb1 + F test/progress.test a282973d1d17f08071bc58a77d6b80f2a81c354d F test/ptrchng.test ef1aa72d6cf35a2bbd0869a649b744e9d84977fc + F test/queryonly.test 5f653159e0f552f0552d43259890c1089391dcca F test/quick.test 1681febc928d686362d50057c642f77a02c62e57 F test/quota-glob.test 32901e9eed6705d68ca3faee2a06b73b57cb3c26 - F test/quota.test b5b3eec55a059e0fe493c66c6e27bd2c07676cfd - F test/quota2.test 6d2bd57e8a4da28817f46db9da18551211cd325f + F test/quota.test 2379902c25e291eac5c12b4cf96946a3447e3744 + F test/quota2.test 7dc12e08b11cbc4c16c9ba2aa2e040ea8d8ab4b8 F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6 F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459 F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df @@@ -683,41 -781,49 +786,49 @@@ F test/schema.test 8f7999be894260f151ad F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5 F test/schema3.test 1bc1008e1f8cb5654b248c55f27249366eb7ed38 F test/schema4.test e6a66e20cc69f0e306667c08be7fda3d11707dc5 - F test/schema5.test 0103e4c0313b3725b5ae5600bdca53006ab53db3 - F test/securedel.test 87a2561151af1f1e349071a89fdd77059f50113c - F test/securedel2.test f13a916155f790a6b9de835049641b14ef312986 - F test/select1.test deba017eed9daa5af33de868676c997e7eebb931 + F test/schema5.test 29699b4421f183c8f0e88bd28ce7d75d13ea653e + F test/securedel.test 21749c32ccc30f1ea9e4b9f33295a6521ec20fa0 + F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5 + F test/select1.test fc2a61f226a649393664ad54bc5376631801517c F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56 F test/select3.test 2ce595f8fb8e2ac10071d3b4e424cadd4634a054 - F test/select4.test 00179be44e531fe04c1c3f15df216439dff2519d + F test/select4.test 8c5a60d439e2df824aed56223566877a883c5c84 F test/select5.test e758b8ef94f69b111df4cb819008856655dcd535 F test/select6.test e76bd10a56988f15726c097a5d5a7966fe82d3b2 - F test/select7.test dad6f00f0d49728a879d6eb6451d4752db0b0abe + F test/select7.test 7fd2ef598cfabb6b9ff6ac13973b91d0527df49d F test/select8.test 391de11bdd52339c30580dabbbbe97e3e9a3c79d - F test/select9.test c0ca3cd87a8ebb04de2cb1402c77df55d911a0ea - F test/selectA.test 06d1032fa9009314c95394f2ca2e60d9f7ae8532 + F test/select9.test aebc2bb0c3bc44606125033cbcaac2c8d1f33a95 + F test/selectA.test 64b88a80271c1710966e50e633380696b60a12a4 F test/selectB.test 954e4e49cf1f896d61794e440669e03a27ceea25 F test/selectC.test 871fb55d884d3de5943c4057ebd22c2459e71977 + F test/selectD.test b0f02a04ef7737decb24e08be2c39b9664b43394 + F test/selectE.test fc02a1eb04c8eb537091482644b7d778ae8759b7 + F test/selectF.test 21c94e6438f76537b72532fa9fd4710cdd455fc3 F test/server1.test 46803bd3fe8b99b30dbc5ff38ffc756f5c13a118 -F test/shared.test 1da9dbad400cee0d93f252ccf76e1ae007a63746 +F test/shared.test 13376ba3be1c5685ab1ec184189adabd15fa70be F test/shared2.test 03eb4a8d372e290107d34b6ce1809919a698e879 - F test/shared3.test ebf77f023f4bdaa8f74f65822b559e86ce5c6257 + F test/shared3.test fcd65cb11d189eff5f5c85cc4fad246fb0933108 F test/shared4.test 72d90821e8d2fc918a08f16d32880868d8ee8e9d F test/shared6.test 866bb4982c45ce216c61ded5e8fde4e7e2f3ffa9 - F test/shared7.test 960760bc8d03e1419e70dea69cf41db62853616e - F test/shared8.test b27befbefbe7f4517f1d6b7ff8f64a41ec74165d - F test/shared_err.test 91e26ec4f3fbe07951967955585137e2f18993de - F test/sharedlock.test ffa0a3c4ac192145b310f1254f8afca4d553eabf - F test/shell1.test 272384163432c0efd2c6817396beb0d119565d53 - F test/shell2.test 037d6ad16e873354195d30bb2dc4b5321788154a - F test/shell3.test 9196c42772d575685e722c92b4b39053c6ebba59 + F test/shared7.test a81e99f83e6c51b02ac99c96fb3a2a7b5978c956 + F test/shared8.test 00a07bf5e1337ecf72e94542bdefdc330d7a2538 + F test/shared9.test 5f2a8f79b4d6c7d107a01ffa1ed05ae7e6333e21 + F test/sharedA.test 0cdf1a76dfa00e6beee66af5b534b1e8df2720f5 + F test/shared_err.test 0079c05c97d88cfa03989b7c20a8b266983087aa + F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304 + F test/shell1.test f2a1d471e5cd2b42f7a65b166dc1ace2b8d11583 + F test/shell2.test c57da3a381c099b02c813ba156298d5c2f5c93a3 + F test/shell3.test 5e8545ec72c4413a0e8d4c6be56496e3c257ca29 F test/shell4.test aa4eef8118b412d1a01477a53426ece169ea86a9 - F test/shell5.test fa2188bbb13fe2d183fd04a5f7b512650c35ef5d + F test/shell5.test bb755ea9144b8078a752fc56223582627070b5f1 F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3 + F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5 -F test/shrink.test 8c70f62b6e8eb4d54533de6d65bd06b1b9a17868 +F test/shrink.test 41ab166b276af4812bcaf6f1b99c53fab4e706d0 F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329 + F test/skipscan1.test bed8cbe9d554c8c27afb6c88500f704c86a9196f + F test/skipscan2.test d77f79cdbba25f0f6f35298136cff21a7d7a553a F test/soak.test 0b5b6375c9f4110c828070b826b3b4b0bb65cd5f - F test/softheap1.test c16709a16ad79fa43b32929b2e623d1d117ccf53 + F test/softheap1.test 40562fe6cac6d9827b7b42b86d45aedf12c15e24 F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5 F test/speed1.test f2974a91d79f58507ada01864c0e323093065452 F test/speed1p.explain d841e650a04728b39e6740296b852dccdca9b2cb @@@ -727,26 -833,28 +838,28 @@@ F test/speed3.test d32043614c08c53eafdc F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa F test/speed4p.test 0e51908951677de5a969b723e03a27a1c45db38b - F test/spellfix.test 2953e9da0e46dab5f83059ef6bfdebca66e13418 + F test/speedtest1.c d29c8048beb7ea9254191f3fde9414709166a920 + F test/spellfix.test 61309f5efbec53603b3f86457d34a504f80abafe F test/sqllimits1.test b1aae27cc98eceb845e7f7adf918561256e31298 - F test/stat.test 6d55845481374066804847cafadb2285839556ff -F test/stat.test 76fd746b85459e812a0193410fb599f0531f22de -F test/stmt.test 25d64e3dbf9a3ce89558667d7f39d966fe2a71b9 ++F test/stat.test 1e5faf39649a0bb368770f780f926847520ea3f4 +F test/stmt.test 78a6764439cfa5abdcbf98d4d084739e81eeec4f - F test/subquery.test d4aea23ac267463d4aa604bf937c3992347b20f7 - F test/subquery2.test edcad5c118f0531c2e21bf16a09bbb105252d4cd + F test/subquery.test 666fdecceac258f5fd84bed09a64e49d9f37edd9 + F test/subquery2.test 91e1e364072aeff431d1f9689b15147e421d88c7 F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4 F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a -F test/superlock.test 1cde669f68d2dd37d6c9bd35eee1d95491ae3fc2 +F test/superlock.test 2b27b4ae7c6b9d534b0412e0d99f989aa1f3b9cf F test/sync.test a34cd43e98b7fb84eabbf38f7ed8f7349b3f3d85 - F test/syscall.test bea9bf329bff733c791310244617c2a76974e64a - F test/sysfault.test c79441d88d23696fbec7b147dba98d42a04f523f - F test/table.test a59d985ca366e39b17b175f387f9d5db5a18d4e2 + F test/syscall.test d2fdaad713f103ac611fe7ef9b724c7b69f8149c + F test/sysfault.test fa776e60bf46bdd3ae69f0b73e46ee3977a58ae6 + F test/table.test 580d23530187026d4502fae74a490f0408cf2cc7 F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126 - F test/tclsqlite.test a3d2df21ee98957f5de4f9dc1db0eab68047ab5d + F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930 + F test/tclsqlite.test 37a61c2da7e3bfe3b8c1a2867199f6b860df5d43 -F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c +F test/tempdb.test 3263e5c3f0604e54d307481e8587327c54544d18 - F test/temptable.test 51edd31c65ed1560dd600b1796e8325df96318e2 - F test/temptrigger.test 26670ed7a39cf2296a7f0a9e0a1d7bdb7abe936d - F test/tester.tcl 5764d5fe85275f9e40272754d6d06f1a43c32a38 - F test/thread001.test 7cc2ce08f9cde95964736d11e91f9ab610f82f91 + F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30 + F test/temptrigger.test 8ec228b0db5d7ebc4ee9b458fc28cb9e7873f5e1 -F test/tester.tcl f31bea1483ea1d39620f982130026e76f872d744 ++F test/tester.tcl 8c152084186b281f2d16aa4ef7cac35e71027adf + F test/thread001.test 9f22fd3525a307ff42a326b6bc7b0465be1745a5 F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 F test/thread004.test f51dfc3936184aaf73ee85f315224baad272a87f @@@ -759,17 -867,20 +872,20 @@@ F test/threadtest2.c ace893054fa134af3f F test/threadtest3.c 0ed13e09690f6204d7455fac3b0e8ece490f6eef F test/tkt-02a8e81d44.test 6c80d9c7514e2a42d4918bf87bf6bc54f379110c F test/tkt-26ff0c2d1e.test 888324e751512972c6e0d1a09df740d8f5aaf660 - F test/tkt-2a5629202f.test 1ab32e084e9fc3d36be6dee2617530846a0eb0b6 - F test/tkt-2d1a5c67d.test 0e23cbbbecda6ce453ffb560fdac28489d491d36 + F test/tkt-2a5629202f.test 0521bd25658428baa26665aa53ffed9367d33af2 -F test/tkt-2d1a5c67d.test d371279946622698ab393ff88cad9f5f6d82960b ++F test/tkt-2d1a5c67d.test 8f48335224537ac91aa16277a1d5a44c9fc1bb3d F test/tkt-2ea2425d34.test 1cf13e6f75d149b3209a0cb32927a82d3d79fb28 - F test/tkt-31338dca7e.test 1f714c14b6682c5db715e0bda347926a3456f7a9 + F test/tkt-31338dca7e.test 6fb8807851964da0d24e942f2e19c7c705b9fb58 -F test/tkt-313723c356.test c47f8a9330523e6f35698bf4489bcb29609b53ac +F test/tkt-313723c356.test 54a1558d2719e171bd88967d66c73be4c617ec55 - F test/tkt-385a5b56b9.test 7782a382912a51f09f1d1a1442bca1e75f9c549b + F test/tkt-385a5b56b9.test c0a06ada41d7f06b1686da0e718553f853771d1e F test/tkt-38cb5df375.test f3cc8671f1eb604d4ae9cf886ed4366bec656678 F test/tkt-3998683a16.test 6d1d04d551ed1704eb3396ca87bb9ccc8c5c1eb7 - F test/tkt-3a77c9714e.test 32bb28afa8c63fc76e972e996193139b63551ed9 - F test/tkt-3fe897352e.test 10de1a67bd5c66b238a4c96abe55531b37bb4f00 - F test/tkt-4a03edc4c8.test 2865e4edbc075b954daa82f8da7cc973033ec76e + F test/tkt-3a77c9714e.test b08bca26de1140bdf004a37716582a43d7bd8be8 + F test/tkt-3fe897352e.test 27e26eb0f1811aeba4d65aba43a4c52e99da5e70 + F test/tkt-4a03edc4c8.test 91c0e135888cdc3d4eea82406a44b05c8c1648d0 + F test/tkt-4c86b126f2.test cbcc611becd0396890169ab23102dd70048bbc9a + F test/tkt-4dd95f6943.test 3d0ce415d2ee15d3d564121960016b9c7be79407 + F test/tkt-4ef7e3cfca.test 3965ae11cc9cf6e334f9d7d3c1e20bf8d56254b1 F test/tkt-54844eea3f.test a12b851128f46a695e4e378cca67409b9b8f5894 F test/tkt-5d863f876e.test c9f36ca503fa154a3655f92a69d2c30da1747bfa F test/tkt-5e10420e8d.test 904d1687b3c06d43e5b3555bbcf6802e7c0ffd84 @@@ -847,8 -968,8 +973,8 @@@ F test/tkt3346.test 6f67c3ed7db94dfc5df F test/tkt3357.test 77c37c6482b526fe89941ce951c22d011f5922ed F test/tkt3419.test 1bbf36d7ea03b638c15804251287c2391f5c1f6b F test/tkt3424.test 61f831bd2b071bd128fa5d00fbda57e656ca5812 - F test/tkt3442.test 0adb70e9fe9cb750a702065a68ad647409dbc158 - F test/tkt3457.test 026dae357d34b416b07cf042794c0c83ea661d23 + F test/tkt3442.test 53840ec5325bb94544792aad4c20476f81dc26b1 -F test/tkt3457.test 44e980fe5334753dcc27b94fa4deabc485a92f74 ++F test/tkt3457.test 08d2d9b3fc37fcc7ad9f24e5d1e004571f2a79c8 F test/tkt3461.test 228ea328a5a21e8663f80ee3d212a6ad92549a19 F test/tkt3493.test 1686cbde85f8721fc1bdc0ee72f2ef2f63139218 F test/tkt3508.test d75704db9501625c7f7deec119fcaf1696aefb7d @@@ -935,51 -1059,69 +1064,69 @@@ F test/vtabE.test 7c4693638d7797ce2eda1 F test/vtabF.test fd5ad376f5a34fe0891df1f3cddb4fe7c3eb077e F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 - F test/vtab_shared.test 82f463886e18d7f8395a4b6167c91815efe54839 - F test/wal.test 5759631b0e610d616c33cc21124b3395f39cd0c7 - F test/wal2.test b715008438d7332d8c3d9f8dbead2a455d847ba8 + F test/vtab_shared.test ea8778d5b0df200adef2ca7c00c3c37d4375f772 -F test/wal.test 885f32b2b390b30b4aa3dbb0e568f8f78d40f5cc -F test/wal2.test 1f841d2048080d32f552942e333fd99ce541dada -F test/wal3.test b22eb662bcbc148c5f6d956eaf94b047f7afe9c0 -F test/wal4.test 4744e155cd6299c6bd99d3eab1c82f77db9cdb3c -F test/wal5.test 8f888b50f66b78821e61ed0e233ded5de378224b -F test/wal6.test 527581f5527bf9c24394991e2be83000aace5f9e ++F test/wal.test 0ae504805b7e41b64a55fb5b7745de5ca2a0db2a ++F test/wal2.test 703b87c21c1e3e169d607158de414c7c2655b93e +F test/wal3.test de822707fbc8e9d056edc895adfb8abcccee4590 +F test/wal4.test 5755887f321baa4c55de0b91066fa7d0cafcac9d - F test/wal5.test 187ae92cc9ba1ec6803681b9025cad89af1a8c69 - F test/wal6.test c561d1e44c89f9cb458a7b03003ed4baac08ba07 ++F test/wal5.test da70332902b19fea23b74c657a941a180e1cb777 ++F test/wal6.test 54ac71d59046014c70ad78957139984c5bfb7eb2 + F test/wal64k.test 163655ecd2cb8afef4737cac2a40fdd2eeaf20b8 -F test/wal7.test 2ae8f427d240099cc4b2dfef63cff44e2a68a1bd -F test/wal8.test 75c42e1bc4545c277fed212f8fc9b7723cd02216 +F test/wal7.test 18cf68ab8010ae0a2baaa48e5b59567a9503e63e +F test/wal8.test c35dd183708148120928dca908641c361f58062c + F test/wal9.test 378e76a9ad09cd9bee06c172ad3547b0129a6750 -F test/wal_common.tcl a98f17fba96206122eff624db0ab13ec377be4fe -F test/walbak.test b9f68e39646375c2b877be906babcc15d38b4877 -F test/walbig.test f437473a16cfb314867c6b5d1dbcd519e73e3434 -F test/walcksum.test 9afeb96240296c08c72fc524d199c912cfe34daa -F test/walcrash.test 451d79e528add5c42764cea74aa2750754171b25 -F test/walcrash2.test a0edab4e5390f03b99a790de89aad15d6ec70b36 -F test/walcrash3.test e426aa58122d20f2b9fbe9a507f9eb8cab85b8af -F test/walfault.test 1f8389f7709877e9b4cc679033d71d6fe529056b -F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483 -F test/walmode.test 4022fe03ae6e830583672caa101f046438a0473c -F test/walnoshm.test 84ca10c544632a756467336b7c3b864d493ee496 -F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6 -F test/walro.test 34422d1d95aaff0388f0791ec20edb34e2a3ed57 -F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417 -F test/walslow.test e7be6d9888f83aa5d3d3c7c08aa9b5c28b93609a -F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e +F test/wal_common.tcl 15f152fd55703975878741beca6cfa4209d5b3b3 +F test/walbak.test 67339b9e54db0cdaaf21287349bc8056e2919f96 +F test/walbig.test 3ca3d94751b80054eed5bda20a1339ae1f619483 - F test/walcksum.test 6510e82303f6fffc2c55bb77a7774cd0eed21a6e - F test/walcrash.test a8fa8d8a9a50a49b7abaf8a4a7e2c7ea352c49be - F test/walcrash2.test c032d0040374ae28b41f99fc0cc290b4e2e34f17 - F test/walcrash3.test 97e775404f4c76e5c46f71fbd09691c7e9c25c68 - F test/walfault.test e5309befcaf4ab08151c35dba20cc5b8a5846748 ++F test/walcksum.test 932d12a2a36fb2765560d35e7eaa1e5f0b198385 ++F test/walcrash.test 011e05e9170da888851cb9ec4276bb1894ad32e3 ++F test/walcrash2.test 6eb6842d34cc5955726264c80566963c32a9cbea ++F test/walcrash3.test 279640ffafa23f7564529ccd69bfb97849ccae9d ++F test/walfault.test f4160abd02d583d06d7ea9554e7a3f749f6b3410 +F test/walhook.test 5d2bdb04fd3e220e2f96e6b566d57e00020bdaec +F test/walmode.test aa45339b4afa435dde5d88e71a95459cc221a3f4 +F test/walnoshm.test 559b878f3aab838971d820329ca35f1caa7b038e +F test/walpersist.test abd956d66e2f36d2d9d05d3a969f48be6d2ddbec - F test/walro.test 3ce5c1d16a3d8c6b2f7504d44d1ebf1098efaa64 ++F test/walro.test 256ea9380825a34be43e8ff02bd1e240f1f62e8c +F test/walshared.test 04590b10c677f75318701818c50bc0dda5da64ab +F test/walslow.test 658066419a92d3bd85be71a11ce477af4ffe9153 +F test/walthread.test c13f5a12fbd9d81e58f49875dc9dd8a52a84cf03 - F test/where.test a6bfb5a29286811d798d326a8f1153a58c0fb2bd - F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554 - F test/where3.test 667e75642102c97a00bf9b23d3cb267db321d006 - F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2 + F test/where.test 28b64e93428961b07b0d486778d63fd672948f6b + F test/where2.test 455a2eb2666e66c1e84e2cb5815173a85e6237db + F test/where3.test 1ad55ba900bd7747f98b6082e65bd3e442c5004e + F test/where4.test d8420ceeb8323a41ceff1f1841fc528e824e1ecf F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b - F test/where7.test 5c566388f0cc318b0032ce860f4ac5548e3c265a - F test/where8.test a6c740fd286d7883e274e17b6230a9d672a7ab1f + F test/where7.test 5a4b0abc207d71da4deecd734ad8579e8dd40aa8 + F test/where8.test 806f1dcec4088be2b826b33f757fe6e17c3236a1 F test/where8m.test da346596e19d54f0aba35ebade032a7c47d79739 - F test/where9.test bcab47eff78f1412a6aec1d6b8a3939d4a9db098 - F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a + F test/where9.test 4f3eab951353a3ae164befc521c777dfa903e46c + F test/whereA.test 4d253178d135ec46d1671e440cd8f2b916aa6e6b F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5 - F test/whereC.test 13ff5ec0dba407c0e0c075980c75b3275a6774e5 - F test/whereD.test 304ccbe3c77e0d0764f37c91d43b8c4792a5e02f + F test/whereC.test d6f4ecd4fa2d9429681a5b22a25d2bda8e86ab8a + F test/whereD.test fd9120e262f9da3c45940f52aefeef4d15b904e5 + F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f + F test/whereF.test 5b2ba0dbe8074aa13e416b37c753991f0a2492d7 + F test/whereG.test 0ac23e5e8311b69d87245f4a85112de321031658 + F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2 F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31 - F test/win32lock.test b2a539e85ae6b2d78475e016a9636b4451dc7fb9 + F test/wild001.test bca33f499866f04c24510d74baf1e578d4e44b1c + F test/win32heap.test ea19770974795cff26e11575e12d422dbd16893c + F test/win32lock.test 7a6bd73a5dcdee39b5bb93e92395e1773a194361 + F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d + F test/with1.test 268081a6b14817a262ced4d0ee34d4d2a1dd2068 + F test/with2.test ee227a663586aa09771cafd4fa269c5217eaf775 + F test/withM.test e97f2a8c506ab3ea9eab94e6f6072f6cc924c991 + F test/without_rowid1.test e00a0a9dc9f0be651f011d61e8a32b7add5afb30 + F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99 + F test/without_rowid3.test eac3d5c8a1924725b58503a368f2cbd24fd6c8a0 + F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a + F test/without_rowid5.test b4a639a367f04d382d20e8f44fc1be4f2d57d107 + F test/wordcount.c 9915e06cb33d8ca8109b8700791afe80d305afda F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688 - F test/zerodamage.test e7f77fded01dfcdf92ac2c5400f1e35d7a21463c - F tool/build-all-msvc.bat 1a18aa39983ae7354d834bc55a850a54fc007576 x - F tool/build-shell.sh b64a481901fc9ffe5ca8812a2a9255b6cfb77381 + F test/zerodamage.test cf6748bad89553cc1632be51a6f54e487e4039ac + F tool/build-all-msvc.bat a0534c971b86fe95f1983f445db5b896d3394818 x + F tool/build-shell.sh 950f47c6174f1eea171319438b93ba67ff5bf367 F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2 F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b F tool/extract.c 054069d81b095fbdc189a6f5d4466e40380505e2 @@@ -987,27 -1130,31 +1135,31 @@@ F tool/fragck.tcl 5265a95126abcf6ab357f F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4 F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5 F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce - F tool/lemon.c 680980c7935bfa1edec20c804c9e5ba4b1dd96f5 + F tool/lemon.c 07aba6270d5a5016ba8107b09e431eea4ecdc123 F tool/lempar.c 01ca97f87610d1dac6d8cd96ab109ab1130e76dc - F tool/mkkeywordhash.c bb52064aa614e1426445e4b2b9b00eeecd23cc79 + F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6 + F tool/mkautoconfamal.sh f8d8dbf7d62f409ebed5134998bf5b51d7266383 + F tool/mkkeywordhash.c c9e05e4a7bcab8fab9f583d5b321fb72f565ad97 F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e + F tool/mkpragmatab.tcl 78a77b2c554d534c6f2dc903130186ed15715460 F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 - F tool/mksqlite3c-noext.tcl 8bce31074e4cbe631bb7676526a048335f4c9f02 - F tool/mksqlite3c.tcl 4edfe153b7e9f7b5e3df5ef5dd2e28a4c7fd3aed - F tool/mksqlite3h.tcl 78013ad79a5e492e5f764f3c7a8ef834255061f8 - F tool/mksqlite3internalh.tcl 3dca7bb5374cee003379b8cbac73714f610ef795 - F tool/mkvsix.tcl 19b2ab9ea16445953a76568a5bbe4cb864f92dfe + F tool/mksqlite3c-noext.tcl 1712d3d71256ca1f297046619c89e77a4d7c8f6d -F tool/mksqlite3c.tcl ba274df71f5e6534b0a913c7c48eabfcbd0934b6 ++F tool/mksqlite3c.tcl 071ff81a618ca48c89662c0c38284d96887d09c3 + F tool/mksqlite3h.tcl ba24038056f51fde07c0079c41885ab85e2cff12 + F tool/mksqlite3internalh.tcl b6514145a7d5321b47e64e19b8116cc44f973eb1 + F tool/mkvsix.tcl 924dcdecda86969686833301c08f84cca2600d94 F tool/offsets.c fe4262fdfa378e8f5499a42136d17bf3b98f6091 - F tool/omittest.tcl 4665982e95a6e5c1bd806cf7bc3dea95be422d77 + F tool/omittest.tcl 34d7ac01fe4fd18e3637f64abe12c40eca0f6b97 F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c + F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5 - F tool/showdb.c 2e28d8e499b016485672e9a7ac65dacc0d28ff69 + F tool/showdb.c 1f3fe634d6f690b8d39ab1b9fd34583d468921e1 F tool/showjournal.c b62cecaab86a4053d944c276bb5232e4d17ece02 - F tool/showwal.c f09e5a80a293919290ec85a6a37c85a5ddcf37d9 + F tool/showwal.c 3f7f7da5ec0cba51b1449a75f700493377da57b5 F tool/soak1.tcl 8d407956e1a45b485a8e072470a3e629a27037fe F tool/space_used.tcl f714c41a59e326b8b9042f415b628b561bafa06b - F tool/spaceanal.tcl e42273000686a4afbf6a5e5d7fb12be65e92afb1 + F tool/spaceanal.tcl 8e50b217c56a6a086a1b47eac9d09c5cd65b996f F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355 F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff @@@ -1018,11 -1165,12 +1170,12 @@@ F tool/stack_usage.tcl f8e71b92cdb099a1 F tool/symbols-mingw.sh 4dbcea7e74768305384c9fd2ed2b41bbf9f0414d F tool/symbols.sh fec58532668296d7c7dc48be9c87f75ccdb5814f F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 - F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 + F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 + F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 - F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 - F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 - P bc9b9cd0589c4a51ece2e4657d622a04fc203315 1e874629d7cf568368b912b295bd3001147d0b52 - R 729e26131787df9859d2cc515ea0c277 + F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 + F tool/win/sqlite.vsix a94fb9b1b1ef06efc2898975cdfcfa9643731f5e -P 68766f837491cb89c2103f2627eb9e23ab326a68 -R 1b75d6e5e9a19ccc14f8e59e21c749f6 ++P 6a5c59dd7e0de9b5a2136f1c333afe522f724a71 116bed5af664899a73b46dca528ac0c021fc50c3 ++R 06b2bd1e0552b0311ec4ae7a91709791 U drh - Z 2ac0e014d1bc5c5d9d375cc66ce59204 -Z 3528e73d8f87faaf66e6658213b6d573 ++Z 342cd5aa6e06528e5576874b8f28089b diff --cc manifest.uuid index e12e197b31,150ca37810..d502576b53 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 6a5c59dd7e0de9b5a2136f1c333afe522f724a71 -116bed5af664899a73b46dca528ac0c021fc50c3 ++9411d7dc6fbee689730c6f74736341bccd333d9e diff --cc src/legacy.c index 3cf025c73f,94649ae705..725c8d5619 --- a/src/legacy.c +++ b/src/legacy.c @@@ -46,12 -42,10 +45,12 @@@ int sqlite3_exec if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT; if( zSql==0 ) zSql = ""; - +#ifdef SQLITE_ENABLE_SQLRR + SRRecExec(db, zSql); +#endif sqlite3_mutex_enter(db->mutex); sqlite3Error(db, SQLITE_OK, 0); - while( (rc==SQLITE_OK || (rc==SQLITE_SCHEMA && (++nRetry)<2)) && zSql[0] ){ + while( rc==SQLITE_OK && zSql[0] ){ int nCol; char **azVals = 0; diff --cc src/main.c index 835dfde483,65521f4466..c8aed113b3 --- a/src/main.c +++ b/src/main.c @@@ -2389,11 -2495,12 +2591,15 @@@ static int openDatabase memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit)); db->autoCommit = 1; db->nextAutovac = -1; + db->szMmap = sqlite3GlobalConfig.szMmap; db->nextPagesize = 0; - db->flags |= SQLITE_ShortColNames | SQLITE_AutoIndex | SQLITE_EnableTrigger + db->flags |= SQLITE_ShortColNames | SQLITE_EnableTrigger | SQLITE_CacheSpill + #if !defined(SQLITE_DEFAULT_AUTOMATIC_INDEX) || SQLITE_DEFAULT_AUTOMATIC_INDEX + | SQLITE_AutoIndex + #endif +#if SQLITE_DEFAULT_CKPTFULLFSYNC + | SQLITE_CkptFullFSync +#endif #if SQLITE_DEFAULT_FILE_FORMAT<4 | SQLITE_LegacyFileFmt #endif @@@ -2549,29 -2656,13 +2755,36 @@@ opendb_out }else if( rc!=SQLITE_OK ){ db->magic = SQLITE_MAGIC_SICK; } +#if defined(__APPLE__) && ENABLE_FORCE_WAL + if( db && !rc ){ + if ((0 == access("/var/db/enableForceWAL", R_OK))) { +#ifdef SQLITE_DEBUG + fprintf(stderr, "SQLite WAL journal_mode ENABLED by default.\n"); +#endif + + sqlite3_exec(db, "pragma journal_mode=wal", NULL, NULL, NULL); +#ifdef SQLITE_DEBUG +// } else { +// fprintf(stderr, "SQLite WAL journal_mode NOT ENABLED by default.\n"); +#endif + } + } +#endif +#if defined(SQLITE_ENABLE_AUTO_PROFILE) + if( db && !rc ){ + enableAutoLogging(db); + } +#endif *ppDb = db; +#ifdef SQLITE_ENABLE_SQLRR + SRRecOpen(db, zFilename, flags); ++#endif + #ifdef SQLITE_ENABLE_SQLLOG + if( sqlite3GlobalConfig.xSqllog ){ + /* Opening a db handle. Fourth parameter is passed 0. */ + void *pArg = sqlite3GlobalConfig.pSqllogArg; + sqlite3GlobalConfig.xSqllog(pArg, db, zFilename, 0); + } #endif return sqlite3ApiExit(0, rc); } diff --cc src/os_unix.c index f039f0f917,fc320a4926..5c90d1ffe7 --- a/src/os_unix.c +++ b/src/os_unix.c @@@ -226,12 -192,20 +200,23 @@@ struct unixFile const char *zPath; /* Name of the file */ unixShm *pShm; /* Shared memory segment information */ int szChunk; /* Configured by FCNTL_CHUNK_SIZE */ + #if SQLITE_MAX_MMAP_SIZE>0 + int nFetchOut; /* Number of outstanding xFetch refs */ + sqlite3_int64 mmapSize; /* Usable size of mapping at pMapRegion */ + sqlite3_int64 mmapSizeActual; /* Actual size of mapping at pMapRegion */ + sqlite3_int64 mmapSizeMax; /* Configured FCNTL_MMAP_SIZE value */ + void *pMapRegion; /* Memory mapped region */ + #endif + #ifdef __QNXNTO__ + int sectorSize; /* Device sector size */ + int deviceCharacteristics; /* Precomputed device characteristics */ + #endif -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE || defined(__APPLE__) int openFlags; /* The flags specified at open() */ #endif +#if SQLITE_ENABLE_DATA_PROTECTION + int protFlags; /* Data protection flags from unixOpen */ +#endif #if SQLITE_ENABLE_LOCKING_STYLE || defined(__APPLE__) unsigned fsFlags; /* cached details from statfs() */ #endif @@@ -306,290 -289,17 +300,301 @@@ static int randomnessPid = 0 #define threadid 0 #endif +#ifdef __APPLE__ +#define SQLITE_ENABLE_SUPERLOCK 1 +#endif + +#if SQLITE_ENABLE_SUPERLOCK +#include "sqlite3.h" +#include +#include + +/* +** A structure to collect a busy-handler callback and argument and a count +** of the number of times it has been invoked. +*/ +struct SuperlockBusy { + int (*xBusy)(void*,int); /* Pointer to busy-handler function */ + void *pBusyArg; /* First arg to pass to xBusy */ + int nBusy; /* Number of times xBusy has been invoked */ +}; +typedef struct SuperlockBusy SuperlockBusy; + +/* +** An instance of the following structure is allocated for each active +** superlock. The opaque handle returned by sqlite3demo_superlock() is +** actually a pointer to an instance of this structure. +*/ +struct Superlock { + sqlite3 *db; /* Database handle used to lock db */ + int bWal; /* True if db is a WAL database */ +}; +typedef struct Superlock Superlock; + +/* +** The pCtx pointer passed to this function is actually a pointer to a +** SuperlockBusy structure. Invoke the busy-handler function encapsulated +** by the structure and return the result. +*/ +static int superlockBusyHandler(void *pCtx, int UNUSED){ + SuperlockBusy *pBusy = (SuperlockBusy *)pCtx; + if( pBusy->xBusy==0 ) return 0; + return pBusy->xBusy(pBusy->pBusyArg, pBusy->nBusy++); +} + +/* +** This function is used to determine if the main database file for +** connection db is open in WAL mode or not. If no error occurs and the +** database file is in WAL mode, set *pbWal to true and return SQLITE_OK. +** If it is not in WAL mode, set *pbWal to false. +** +** If an error occurs, return an SQLite error code. The value of *pbWal +** is undefined in this case. +*/ +static int superlockIsWal(Superlock *pLock){ + int rc; /* Return Code */ + sqlite3_stmt *pStmt; /* Compiled PRAGMA journal_mode statement */ + + rc = sqlite3_prepare(pLock->db, "PRAGMA main.journal_mode", -1, &pStmt, 0); + if( rc!=SQLITE_OK ) return rc; + + pLock->bWal = 0; + if( SQLITE_ROW==sqlite3_step(pStmt) ){ + const char *zMode = (const char *)sqlite3_column_text(pStmt, 0); + if( zMode && strlen(zMode)==3 && sqlite3_strnicmp("wal", zMode, 3)==0 ){ + pLock->bWal = 1; + } + } + + return sqlite3_finalize(pStmt); +} + +/* +** Obtain an exclusive shm-lock on nByte bytes starting at offset idx +** of the file fd. If the lock cannot be obtained immediately, invoke +** the busy-handler until either it is obtained or the busy-handler +** callback returns 0. +*/ +static int superlockShmLock( + sqlite3_file *fd, /* Database file handle */ + int idx, /* Offset of shm-lock to obtain */ + int nByte, /* Number of consective bytes to lock */ + SuperlockBusy *pBusy /* Busy-handler wrapper object */ +){ + int rc; + int (*xShmLock)(sqlite3_file*, int, int, int) = fd->pMethods->xShmLock; + do { + rc = xShmLock(fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE); + }while( rc==SQLITE_BUSY && superlockBusyHandler((void *)pBusy, 0) ); + return rc; +} + +/* +** Obtain the extra locks on the database file required for WAL databases. +** Invoke the supplied busy-handler as required. +*/ +static int superlockWalLock( + sqlite3 *db, /* Database handle open on WAL database */ + SuperlockBusy *pBusy /* Busy handler wrapper object */ +){ + int rc; /* Return code */ + sqlite3_file *fd = 0; /* Main database file handle */ + void volatile *p = 0; /* Pointer to first page of shared memory */ + + /* Obtain a pointer to the sqlite3_file object open on the main db file. */ + rc = sqlite3_file_control(db, "main", SQLITE_FCNTL_FILE_POINTER, (void *)&fd); + if( rc!=SQLITE_OK ) return rc; + + /* Obtain the "recovery" lock. Normally, this lock is only obtained by + ** clients running database recovery. + */ + rc = superlockShmLock(fd, 2, 1, pBusy); + if( rc!=SQLITE_OK ) return rc; + + /* Zero the start of the first shared-memory page. This means that any + ** clients that open read or write transactions from this point on will + ** have to run recovery before proceeding. Since they need the "recovery" + ** lock that this process is holding to do that, no new read or write + ** transactions may now be opened. Nor can a checkpoint be run, for the + ** same reason. + */ + rc = fd->pMethods->xShmMap(fd, 0, 32*1024, 1, &p); + if( rc!=SQLITE_OK ) return rc; + memset((void *)p, 0, 32); + + /* Obtain exclusive locks on all the "read-lock" slots. Once these locks + ** are held, it is guaranteed that there are no active reader, writer or + ** checkpointer clients. + */ + rc = superlockShmLock(fd, 3, SQLITE_SHM_NLOCK-3, pBusy); + return rc; +} + +/* +** Release a superlock held on a database file. The argument passed to +** this function must have been obtained from a successful call to +** sqlite3demo_superlock(). +*/ +static void sqlite3demo_superunlock(void *pLock){ + Superlock *p = (Superlock *)pLock; + if( p->bWal ){ + int rc; /* Return code */ + int flags = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE; + sqlite3_file *fd = 0; + rc = sqlite3_file_control(p->db, "main", SQLITE_FCNTL_FILE_POINTER, + (void *)&fd); + if( rc==SQLITE_OK ){ + fd->pMethods->xShmLock(fd, 2, 1, flags); + fd->pMethods->xShmLock(fd, 3, SQLITE_SHM_NLOCK-3, flags); + } + } + sqlite3_close(p->db); + sqlite3_free(p); +} + +/* +** Obtain a superlock on the database file identified by zPath, using the +** locking primitives provided by VFS zVfs. If successful, SQLITE_OK is +** returned and output variable *ppLock is populated with an opaque handle +** that may be used with sqlite3demo_superunlock() to release the lock. +** +** If an error occurs, *ppLock is set to 0 and an SQLite error code +** (e.g. SQLITE_BUSY) is returned. +** +** If a required lock cannot be obtained immediately and the xBusy parameter +** to this function is not NULL, then xBusy is invoked in the same way +** as a busy-handler registered with SQLite (using sqlite3_busy_handler()) +** until either the lock can be obtained or the busy-handler function returns +** 0 (indicating "give up"). +*/ +static int sqlite3demo_superlock( + const char *zPath, /* Path to database file to lock */ + const char *zVfs, /* VFS to use to access database file */ + int flags, /* Additional flags to pass to sqlite3_open_v2 */ + int (*xBusy)(void*,int), /* Busy handler callback */ + void *pBusyArg, /* Context arg for busy handler */ + void **ppLock /* OUT: Context to pass to superunlock() */ +){ + SuperlockBusy busy = {0, 0, 0}; /* Busy handler wrapper object */ + int rc; /* Return code */ + Superlock *pLock; + + pLock = sqlite3_malloc(sizeof(Superlock)); + if( !pLock ) return SQLITE_NOMEM; + memset(pLock, 0, sizeof(Superlock)); + + /* Open a database handle on the file to superlock. */ + rc = sqlite3_open_v2( + zPath, &pLock->db, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|flags, zVfs + ); + + /* Install a busy-handler and execute a BEGIN EXCLUSIVE. If this is not + ** a WAL database, this is all we need to do. + ** + ** A wrapper function is used to invoke the busy-handler instead of + ** registering the busy-handler function supplied by the user directly + ** with SQLite. This is because the same busy-handler function may be + ** invoked directly later on when attempting to obtain the extra locks + ** required in WAL mode. By using the wrapper, we are able to guarantee + ** that the "nBusy" integer parameter passed to the users busy-handler + ** represents the total number of busy-handler invocations made within + ** this call to sqlite3demo_superlock(), including any made during the + ** "BEGIN EXCLUSIVE". + */ + if( rc==SQLITE_OK ){ + busy.xBusy = xBusy; + busy.pBusyArg = pBusyArg; + sqlite3_busy_handler(pLock->db, superlockBusyHandler, (void *)&busy); + rc = sqlite3_exec(pLock->db, "BEGIN EXCLUSIVE", 0, 0, 0); + } + + /* If the BEGIN EXCLUSIVE was executed successfully and this is a WAL + ** database, call superlockWalLock() to obtain the extra locks required + ** to prevent readers, writers and/or checkpointers from accessing the + ** db while this process is holding the superlock. + ** + ** Before attempting any WAL locks, commit the transaction started above + ** to drop the WAL read and write locks currently held. Otherwise, the + ** new WAL locks may conflict with the old. + */ + if( rc==SQLITE_OK ){ + if( SQLITE_OK==(rc = superlockIsWal(pLock)) && pLock->bWal ){ + rc = sqlite3_exec(pLock->db, "COMMIT", 0, 0, 0); + if( rc==SQLITE_OK ){ + rc = superlockWalLock(pLock->db, &busy); + } + } + } + + if( rc!=SQLITE_OK ){ + sqlite3demo_superunlock(pLock); + *ppLock = 0; + }else{ + *ppLock = pLock; + } + + return rc; +} + +/* A corrupt DB won't work with the sql-based locking attempt, grab an +** exclusive lock and return SQLITE_OK or SQLITE_BUSY if the lock fails +** returns the current lock level held on sqlite3_file +*/ +static int sqlite3demo_superlock_corrupt( + sqlite3_file *id, + int eTargetFileLock, + int *pFileLock +){ + unixFile *pFile = (unixFile*)id; + int eFileLock = pFile->eFileLock; + int rc = SQLITE_OK; + + if( eFileLockpMethod->xLock(id, SQLITE_LOCK_SHARED); + } + if( !rc && SQLITE_LOCK_SHAREDpMethod->xLock(id, SQLITE_LOCK_EXCLUSIVE); + } + if( rc ){ + if( pFile->eFileLock > eFileLock ){ + pFile->pMethod->xUnlock(id, eFileLock); + } + return rc; + } + if (pFileLock) { + *pFileLock = eFileLock; + } + return SQLITE_OK; +} + +static int sqlite3demo_superunlock_corrupt(sqlite3_file *id, int eFileLock) { + unixFile *pFile = (unixFile*)id; + int rc = SQLITE_OK; + + if( pFile->eFileLock > eFileLock ){ + rc = pFile->pMethod->xUnlock(id, SQLITE_LOCK_SHARED); + } + if( pFile->eFileLock > eFileLock ){ + int unlockRC = pFile->pMethod->xUnlock(id, SQLITE_LOCK_NONE); + if (!rc) rc = unlockRC; + } + return rc; +} + +#endif /* SQLITE_ENABLE_SUPERLOCK */ + + + /* + ** HAVE_MREMAP defaults to true on Linux and false everywhere else. + */ + #if !defined(HAVE_MREMAP) + # if defined(__linux__) && defined(_GNU_SOURCE) + # define HAVE_MREMAP 1 + # else + # define HAVE_MREMAP 0 + # endif + #endif + /* ** Different Unix systems declare open() in different ways. Same use ** open(const char*,int,mode_t). Others use open(const char*,int,...). @@@ -3573,6 -3310,23 +3699,22 @@@ static int unixWrite } } } -#endif + + #if SQLITE_MAX_MMAP_SIZE>0 + /* Deal with as much of this write request as possible by transfering + ** data from the memory mapping using memcpy(). */ + if( offsetmmapSize ){ + if( offset+amt <= pFile->mmapSize ){ + memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, amt); + return SQLITE_OK; + }else{ + int nCopy = pFile->mmapSize - offset; + memcpy(&((u8 *)(pFile->pMapRegion))[offset], pBuf, nCopy); + pBuf = &((u8 *)pBuf)[nCopy]; + amt -= nCopy; + offset += nCopy; + } + } #endif while( amt>0 && (wrote = seekAndWrite(pFile, offset, pBuf, amt))>0 ){ @@@ -5086,415 -4664,226 +5429,634 @@@ static int unixShmUnmap # define unixShmUnmap 0 #endif /* #ifndef SQLITE_OMIT_WAL */ +#if (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__) +static const char *unixTempFileDir(void); + +static int unixInvalidateSupportFiles(unixFile *pFile, int skipWAL) { + char jPath[MAXPATHLEN+9]; + int zLen = strlcpy(jPath, pFile->zPath, MAXPATHLEN+9); + if( zLenpInode is shared across threads */ + unixShmNode *pShmNode = pFile->pInode->pShmNode; + if( pShmNode && !pShmNode->isReadonly ){ + struct stat sStat; + sqlite3_mutex_enter(pShmNode->mutex); + + if( pShmNode->h>=0 && !osFstat(pShmNode->h, &sStat) ){ + unsigned long size = (sStat.st_size<4) ? sStat.st_size : 4; + if( size>0 ){ + bzero(pShmNode->apRegion[0], size); + sqlite3_mutex_leave(pShmNode->mutex); + unixLeaveMutex(); + continue; + } + } + sqlite3_mutex_leave(pShmNode->mutex); + } + unixLeaveMutex(); + } + jLen = strlcpy(&jPath[zLen], extensions[j], 9); + if( jLen < 9 ){ + int jflags = (j<2) ? O_TRUNC : O_RDWR; + int jfd = open(jPath, jflags); + if( jfd==(-1) ){ + if( errno!=ENOENT ){ + perror(jPath); + } + } else { + if( j==2 ){ + struct stat sStat; + if( !osFstat(jfd, &sStat) ){ + unsigned long size = (sStat.st_size<4) ? sStat.st_size : 4; + if( size>0 ){ + uint32_t zero = 0; + pwrite(jfd, &zero, (size_t)size, 0); + } + } + } + fsync(jfd); + close(jfd); + } + } + } + } + return SQLITE_OK; +} + +static int unixUnsafeTruncateDatabase(unixFile *pFile){ + /* this is nasty & bad. destruction with prejudice. we'll lose all the + ** file locks in this process, however. sqlite3_file_control works properly. + ** But if it fails, this works approximately + */ + char journalPath[MAXPATHLEN]; + char walPath[MAXPATHLEN]; + int rc = SQLITE_OK; + +#ifdef DEBUG + fprintf(stderr, "Force truncating database %s\n", pFile->zPath); +#endif + strlcpy(journalPath, pFile->zPath, MAXPATHLEN); + strlcat(journalPath, "-journal", MAXPATHLEN); + strlcpy(walPath, pFile->zPath, MAXPATHLEN); + strlcat(walPath, "-wal", MAXPATHLEN); + int fd1 = pFile->h; + int result = 0; + result = ftruncate(fd1, 0ll); + if (result) { + result = errno; + } + if (result) { + rc = SQLITE_IOERR; + storeLastErrno(pFile, result); + } + + int fd2 = open(journalPath, O_RDWR); + int result2 = 0; + if (fd2 < 0) { + if (errno != ENOENT) { + result2 = errno; + } else { + result2 = 0; + } + } else { + result2 = ftruncate(fd2, 0ll); + if (result2) { + result2 = errno; + } + } + if (result2 && !result) { + rc = SQLITE_IOERR; + storeLastErrno(pFile, result2); + } + + int fd3 = open(walPath, O_RDWR); + int result3 = 0; + if (fd3 < 0) { + if (errno != ENOENT) { + result3 = errno; + } else { + result3 = 0; + } + } else { + result3 = ftruncate(fd3, 0ll); + if (result3) { + result3 = errno; + } + } + if (result3 && !(result || result2)) { + rc = SQLITE_IOERR; + storeLastErrno(pFile, result2); + } + + if (fd3 >= 0) { + fsync(fd3); + close(fd3); + } + if (fd2 >= 0) { + fsync(fd2); + close(fd2); + } + fsync(fd1); + + return rc; +} + +static int unixTruncateDatabase(unixFile *pFile, int bFlags) { + sqlite3_file *id = (sqlite3_file *)pFile; + int rc = SQLITE_OK; + void *pLock = NULL; + int flags = 0; + int corruptFileLock = 0; + int isCorrupt = 0; + int force = (bFlags & SQLITE_TRUNCATE_FORCE); + int safeFailed = 0; + +#if SQLITE_ENABLE_DATA_PROTECTION + flags |= pFile->protFlags; +#endif +#if SQLITE_ENABLE_LOCKING_STYLE + if( isProxyLockingMode(pFile) ){ + flags |= SQLITE_OPEN_AUTOPROXY; + } +#endif + + rc = sqlite3demo_superlock(pFile->zPath, 0, flags, 0, 0, &pLock); + if( rc ){ + if( rc==SQLITE_CORRUPT || rc==SQLITE_NOTADB ){ + isCorrupt = 1; + rc = sqlite3demo_superlock_corrupt(id, SQLITE_LOCK_EXCLUSIVE, + &corruptFileLock); + } + if( rc && !force ){ + return rc; + } + rc = SQLITE_OK; /* Ignore the locking failure if force is true */ + } + if( (bFlags&SQLITE_TRUNCATE_INITIALIZE_HEADER_MASK)!=0 ){ + /* initialize a new database in TMPDIR and copy the contents over */ + const char *tDir = unixTempFileDir(); + int tDirLen = strlen(tDir); + int tLen = sizeof(char) * (tDirLen + 12); + char *tDbPath = (char *)malloc(tLen); + int tFd = -1; + + strlcpy(tDbPath, tDir, tLen); + if( tDbPath[(tDirLen-1)] != '/' ){ + strlcat(tDbPath, "/tmpdbXXXXX", tLen); + } else { + strlcat(tDbPath, "tmpdbXXXXX", tLen); + } + tFd = mkstemp(tDbPath); + if( tFd==-1 ){ + storeLastErrno(pFile, errno); + rc = SQLITE_IOERR; + safeFailed = 1; + }else{ + sqlite3 *tDb = NULL; + copyfile_state_t s; + int trc = sqlite3_open_v2(tDbPath, &tDb, + (SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE + | SQLITE_OPEN_AUTOPROXY), NULL); + char *errmsg = NULL; + const char *sql = ""; + if( !trc && (bFlags&SQLITE_TRUNCATE_PAGESIZE_MASK) ){ + const char pagesize_sql[4][22] = { + "pragma page_size=1024", + "pragma page_size=2048", + "pragma page_size=4096", + "pragma page_size=8192" + }; + int iPagesize = (((bFlags&SQLITE_TRUNCATE_PAGESIZE_MASK) >> 4) - 1); + assert( iPagesize>=0 && iPagesize<=4 ); + sql = pagesize_sql[iPagesize]; + trc = sqlite3_exec(tDb, sql, 0, 0, &errmsg); + } + if( !trc ){ + const char autovacuum_sql[3][21] = { + "pragma auto_vacuum=0", + "pragma auto_vacuum=1", + "pragma auto_vacuum=2" + }; + int iAutovacuum = 2; /* default to incremental */ + if( (bFlags&SQLITE_TRUNCATE_AUTOVACUUM_MASK) ){ + iAutovacuum = (((bFlags&SQLITE_TRUNCATE_AUTOVACUUM_MASK) >> 2) - 1); + } + assert( iAutovacuum>=0 && iAutovacuum<=2 ); + sql = autovacuum_sql[iAutovacuum]; + trc = sqlite3_exec(tDb, sql, 0, 0, &errmsg); + } + if( !trc && (bFlags&SQLITE_TRUNCATE_JOURNALMODE_WAL) ){ + sql = "pragma journal_mode=wal"; + trc = sqlite3_exec(tDb, sql, 0, 0, &errmsg); + } + if( trc ){ + if( !tDb ){ + fprintf(stderr, "failed to open temp database '%s' to reset " + "truncated database %s with flags %x: %d\n", + tDbPath, pFile->zPath, bFlags, trc); + }else{ + fprintf(stderr, "failed to set '%s' on truncated database %s, %d: " + "%s\n", sql, pFile->zPath, trc, errmsg); + } + } + if( tDb ){ + int off = 0; + /* merge the wal into the db */ + sqlite3_file_control(tDb, NULL, SQLITE_FCNTL_PERSIST_WAL, &off); + sqlite3_close(tDb); + } + s = copyfile_state_alloc(); + lseek(tFd, 0, SEEK_SET); + lseek(pFile->h, 0, SEEK_SET); + if( fcopyfile(tFd, pFile->h, s, COPYFILE_DATA) ){ + int err=errno; + switch(err) { + case ENOMEM: + trc = SQLITE_NOMEM; + break; + default: + storeLastErrno(pFile, err); + trc = SQLITE_IOERR; + } + } + copyfile_state_free(s); + fsync(pFile->h); + close(tFd); + unlink(tDbPath); + if( trc!=SQLITE_OK ){ + safeFailed = 1; + rc = trc; + } + } + free(tDbPath); + } else { + rc = pFile->pMethod->xTruncate(id, + ((pFile->fsFlags & SQLITE_FSFLAGS_IS_MSDOS) != 0) ? 1L : 0L); + if( rc ){ + safeFailed = 1; + } + } + if( rc==SQLITE_OK || force ){ + rc = unixInvalidateSupportFiles(pFile, 0); + if( rc ){ + safeFailed = 1; + } + } + pFile->pMethod->xSync(id, SQLITE_SYNC_FULL); + + + if( isCorrupt ){ + sqlite3demo_superunlock_corrupt(id, corruptFileLock); + }else if( pLock ){ + sqlite3demo_superunlock(pLock); + }else{ + assert(force); + } + + if( force && safeFailed){ + rc = unixUnsafeTruncateDatabase(pFile); + } + + return rc; +} + +/* + ** Lock locations for shared-memory locks used by WAL mode. + */ +#ifndef SHM_BASE +# define SHM_BASE 120 +# define SHM_WRITE SHM_BASE +# define SHM_CHECKPOINT (SHM_BASE+1) +# define SHM_RECOVER (SHM_BASE+2) +# define SHM_READ_FIRST (SHM_BASE+3) +# define SHM_READ_SIZE 5 +#endif /* SHM_BASE */ + +/* +** This test only works for lock testing on unix/posix VFS. +** Adapted from tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce +*/ +static int unixLockstatePid(unixFile *pFile, pid_t pid, int *pLockstate){ + int hDb; /* File descriptor for the open database file */ + int hShm = -1; /* File descriptor for WAL shared-memory file */ + ssize_t got; /* Bytes read from header */ + int isWal = 0; /* True if in WAL mode */ + int nLock = 0; /* Number of locks held */ + int noHdr = 0; /* Zero byte DB has no header */ + unsigned char aHdr[100]; /* Database header */ + + assert(pLockstate); + + /* make sure we are dealing with a database file */ + hDb = pFile->h; + if( hDb<0 ){ + *pLockstate = SQLITE_LOCKSTATE_ERROR; + return SQLITE_ERROR; + } + assert( (strlen(SQLITE_FILE_HEADER)+1)==SQLITE_FILE_HEADER_LEN ); + got = pread(hDb, aHdr, 100, 0); + if( got<0 ){ + *pLockstate = SQLITE_LOCKSTATE_ERROR; + return SQLITE_ERROR; + } + if( got==0 ){ + noHdr = 1; + }else if( got!=100 + || memcmp(aHdr, SQLITE_FILE_HEADER, SQLITE_FILE_HEADER_LEN)!=0 + ){ + *pLockstate = SQLITE_LOCKSTATE_NOTADB; + return SQLITE_NOTADB; + } + + /* First check for an exclusive lock */ + nLock += unixIsLocked(pid, hDb, F_RDLCK, SHARED_FIRST, SHARED_SIZE, + "EXCLUSIVE"); + if (!noHdr) { + isWal = aHdr[18]==2; + } + if( nLock==0 && isWal==0 ){ + /* Rollback mode */ + nLock += unixIsLocked(pid, hDb, F_WRLCK, PENDING_BYTE, SHARED_SIZE+2, + "PENDING|RESERVED|SHARED"); + } + if( nLock==0 && isWal!=0 ){ + /* lookup the file descriptor for the shared memory file if we have it open + ** in this process */ + unixEnterMutex(); /* Because pFile->pInode is shared across threads */ + unixShmNode *pShmNode = pFile->pInode->pShmNode; + if( pShmNode ){ + sqlite3_mutex_enter(pShmNode->mutex); + + hShm = pShmNode->h; + if( hShm >= 0){ + if( unixIsLocked(pid, hShm, F_RDLCK, SHM_RECOVER, 1, "WAL-RECOVERY") || + unixIsLocked(pid, hShm, F_RDLCK, SHM_WRITE, 1, "WAL-WRITE") ){ + nLock = 1; + } + } + + sqlite3_mutex_leave(pShmNode->mutex); + } + + if( hShm<0 ){ + /* the shared memory file isn't open in this process space, open our + ** own FD */ + char zShm[MAXPATHLEN]; + + /* WAL mode */ + strlcpy(zShm, pFile->zPath, MAXPATHLEN); + strlcat(zShm, "-shm", MAXPATHLEN); + hShm = open(zShm, O_RDONLY, 0); + if( hShm<0 ){ + *pLockstate = SQLITE_LOCKSTATE_OFF; + unixLeaveMutex(); + return SQLITE_OK; + } + if( unixIsLocked(pid, hShm, F_RDLCK, SHM_RECOVER, 1, "WAL-RECOVERY") || + unixIsLocked(pid, hShm, F_RDLCK, SHM_WRITE, 1, "WAL-WRITE") ){ + nLock = 1; + } + close(hShm); + } + unixLeaveMutex(); + } + if( nLock>0 ){ + *pLockstate = SQLITE_LOCKSTATE_ON; + } else { + *pLockstate = SQLITE_LOCKSTATE_OFF; + } + return SQLITE_OK; +} + +#endif /* (SQLITE_ENABLE_APPLE_SPI>0) && defined(__APPLE__) */ + + #if SQLITE_MAX_MMAP_SIZE>0 + /* + ** If it is currently memory mapped, unmap file pFd. + */ + static void unixUnmapfile(unixFile *pFd){ + assert( pFd->nFetchOut==0 ); + if( pFd->pMapRegion ){ + osMunmap(pFd->pMapRegion, pFd->mmapSizeActual); + pFd->pMapRegion = 0; + pFd->mmapSize = 0; + pFd->mmapSizeActual = 0; + } + } + + /* + ** Attempt to set the size of the memory mapping maintained by file + ** descriptor pFd to nNew bytes. Any existing mapping is discarded. + ** + ** If successful, this function sets the following variables: + ** + ** unixFile.pMapRegion + ** unixFile.mmapSize + ** unixFile.mmapSizeActual + ** + ** If unsuccessful, an error message is logged via sqlite3_log() and + ** the three variables above are zeroed. In this case SQLite should + ** continue accessing the database using the xRead() and xWrite() + ** methods. + */ + static void unixRemapfile( + unixFile *pFd, /* File descriptor object */ + i64 nNew /* Required mapping size */ + ){ + const char *zErr = "mmap"; + int h = pFd->h; /* File descriptor open on db file */ + u8 *pOrig = (u8 *)pFd->pMapRegion; /* Pointer to current file mapping */ + i64 nOrig = pFd->mmapSizeActual; /* Size of pOrig region in bytes */ + u8 *pNew = 0; /* Location of new mapping */ + int flags = PROT_READ; /* Flags to pass to mmap() */ + + assert( pFd->nFetchOut==0 ); + assert( nNew>pFd->mmapSize ); + assert( nNew<=pFd->mmapSizeMax ); + assert( nNew>0 ); + assert( pFd->mmapSizeActual>=pFd->mmapSize ); + assert( MAP_FAILED!=0 ); + + if( (pFd->ctrlFlags & UNIXFILE_RDONLY)==0 ) flags |= PROT_WRITE; + + if( pOrig ){ + #if HAVE_MREMAP + i64 nReuse = pFd->mmapSize; + #else + const int szSyspage = osGetpagesize(); + i64 nReuse = (pFd->mmapSize & ~(szSyspage-1)); + #endif + u8 *pReq = &pOrig[nReuse]; + /* Unmap any pages of the existing mapping that cannot be reused. */ + if( nReuse!=nOrig ){ + osMunmap(pReq, nOrig-nReuse); + } + + #if HAVE_MREMAP + pNew = osMremap(pOrig, nReuse, nNew, MREMAP_MAYMOVE); + zErr = "mremap"; + #else + pNew = osMmap(pReq, nNew-nReuse, flags, MAP_SHARED, h, nReuse); + if( pNew!=MAP_FAILED ){ + if( pNew!=pReq ){ + osMunmap(pNew, nNew - nReuse); + pNew = 0; + }else{ + pNew = pOrig; + } + } + #endif + + /* The attempt to extend the existing mapping failed. Free it. */ + if( pNew==MAP_FAILED || pNew==0 ){ + osMunmap(pOrig, nReuse); + } + } + + /* If pNew is still NULL, try to create an entirely new mapping. */ + if( pNew==0 ){ + pNew = osMmap(0, nNew, flags, MAP_SHARED, h, 0); + } + + if( pNew==MAP_FAILED ){ + pNew = 0; + nNew = 0; + unixLogError(SQLITE_OK, zErr, pFd->zPath); + + /* If the mmap() above failed, assume that all subsequent mmap() calls + ** will probably fail too. Fall back to using xRead/xWrite exclusively + ** in this case. */ + pFd->mmapSizeMax = 0; + } + pFd->pMapRegion = (void *)pNew; + pFd->mmapSize = pFd->mmapSizeActual = nNew; + } + + /* + ** Memory map or remap the file opened by file-descriptor pFd (if the file + ** is already mapped, the existing mapping is replaced by the new). Or, if + ** there already exists a mapping for this file, and there are still + ** outstanding xFetch() references to it, this function is a no-op. + ** + ** If parameter nByte is non-negative, then it is the requested size of + ** the mapping to create. Otherwise, if nByte is less than zero, then the + ** requested size is the size of the file on disk. The actual size of the + ** created mapping is either the requested size or the value configured + ** using SQLITE_FCNTL_MMAP_LIMIT, whichever is smaller. + ** + ** SQLITE_OK is returned if no error occurs (even if the mapping is not + ** recreated as a result of outstanding references) or an SQLite error + ** code otherwise. + */ + static int unixMapfile(unixFile *pFd, i64 nByte){ + i64 nMap = nByte; + int rc; + + assert( nMap>=0 || pFd->nFetchOut==0 ); + if( pFd->nFetchOut>0 ) return SQLITE_OK; + + if( nMap<0 ){ + struct stat statbuf; /* Low-level file information */ + rc = osFstat(pFd->h, &statbuf); + if( rc!=SQLITE_OK ){ + return SQLITE_IOERR_FSTAT; + } + nMap = statbuf.st_size; + } + if( nMap>pFd->mmapSizeMax ){ + nMap = pFd->mmapSizeMax; + } + + if( nMap!=pFd->mmapSize ){ + if( nMap>0 ){ + unixRemapfile(pFd, nMap); + }else{ + unixUnmapfile(pFd); + } + } + + return SQLITE_OK; + } + #endif /* SQLITE_MAX_MMAP_SIZE>0 */ + + /* + ** If possible, return a pointer to a mapping of file fd starting at offset + ** iOff. The mapping must be valid for at least nAmt bytes. + ** + ** If such a pointer can be obtained, store it in *pp and return SQLITE_OK. + ** Or, if one cannot but no error occurs, set *pp to 0 and return SQLITE_OK. + ** Finally, if an error does occur, return an SQLite error code. The final + ** value of *pp is undefined in this case. + ** + ** If this function does return a pointer, the caller must eventually + ** release the reference by calling unixUnfetch(). + */ + static int unixFetch(sqlite3_file *fd, i64 iOff, int nAmt, void **pp){ + #if SQLITE_MAX_MMAP_SIZE>0 + unixFile *pFd = (unixFile *)fd; /* The underlying database file */ + #endif + *pp = 0; + + #if SQLITE_MAX_MMAP_SIZE>0 + if( pFd->mmapSizeMax>0 ){ + if( pFd->pMapRegion==0 ){ + int rc = unixMapfile(pFd, -1); + if( rc!=SQLITE_OK ) return rc; + } + if( pFd->mmapSize >= iOff+nAmt ){ + *pp = &((u8 *)pFd->pMapRegion)[iOff]; + pFd->nFetchOut++; + } + } + #endif + return SQLITE_OK; + } + + /* + ** If the third argument is non-NULL, then this function releases a + ** reference obtained by an earlier call to unixFetch(). The second + ** argument passed to this function must be the same as the corresponding + ** argument that was passed to the unixFetch() invocation. + ** + ** Or, if the third argument is NULL, then this function is being called + ** to inform the VFS layer that, according to POSIX, any existing mapping + ** may now be invalid and should be unmapped. + */ + static int unixUnfetch(sqlite3_file *fd, i64 iOff, void *p){ + #if SQLITE_MAX_MMAP_SIZE>0 + unixFile *pFd = (unixFile *)fd; /* The underlying database file */ + UNUSED_PARAMETER(iOff); + + /* If p==0 (unmap the entire file) then there must be no outstanding + ** xFetch references. Or, if p!=0 (meaning it is an xFetch reference), + ** then there must be at least one outstanding. */ + assert( (p==0)==(pFd->nFetchOut==0) ); + + /* If p!=0, it must match the iOff value. */ + assert( p==0 || p==&((u8 *)pFd->pMapRegion)[iOff] ); + + if( p ){ + pFd->nFetchOut--; + }else{ + unixUnmapfile(pFd); + } + + assert( pFd->nFetchOut>=0 ); + #else + UNUSED_PARAMETER(fd); + UNUSED_PARAMETER(p); + UNUSED_PARAMETER(iOff); + #endif + return SQLITE_OK; + } /* ** Here ends the implementation of all sqlite3_file methods. diff --cc src/os_win.c index 202250ef32,fcac665dff..ac158de7f7 --- a/src/os_win.c +++ b/src/os_win.c @@@ -2668,21 -3133,15 +3133,24 @@@ static int winFileControl(sqlite3_file SimulateIOErrorBenign(0); } } + OSTRACE(("FCNTL file=%p, rc=%s\n", pFile->h, sqlite3ErrName(rc))); return rc; } + OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h)); return SQLITE_OK; } + case SQLITE_FCNTL_PERSIST_WAL: { + int bPersist = *(int*)pArg; + if( bPersist<0 ){ + *(int*)pArg = pFile->bPersistWal; + }else{ + pFile->bPersistWal = bPersist!=0; + } + return SQLITE_OK; + } case SQLITE_FCNTL_PERSIST_WAL: { winModeBit(pFile, WINFILE_PERSIST_WAL, (int*)pArg); + OSTRACE(("FCNTL file=%p, rc=SQLITE_OK\n", pFile->h)); return SQLITE_OK; } case SQLITE_FCNTL_POWERSAFE_OVERWRITE: { diff --cc src/pager.c index 2b362f4c77,a77dcecc4c..51588a27e8 --- a/src/pager.c +++ b/src/pager.c @@@ -6836,15 -7111,12 +7146,16 @@@ static int pagerOpenWal(Pager *pPager) ** (e.g. due to malloc() failure), return an error code. */ if( rc==SQLITE_OK ){ - rc = sqlite3WalOpen(pPager->pVfs, - pPager->fd, pPager->zWal, pPager->exclusiveMode, - pPager->journalSizeLimit, &pPager->pWal - ); +#if SQLITE_ENABLE_DATA_PROTECTION + rc = sqlite3WalOpen(pPager->pVfs, pPager->fd, pPager->zWal, pPager->exclusiveMode, + pPager->journalSizeLimit, (pPager->vfsFlags & (SQLITE_OPEN_FILEPROTECTION_MASK | SQLITE_OPEN_READONLY)), + &pPager->pWal); +#else + rc = sqlite3WalOpen(pPager->pVfs, pPager->fd, pPager->zWal, pPager->exclusiveMode, + pPager->journalSizeLimit, (pPager->vfsFlags & SQLITE_OPEN_READONLY), &pPager->pWal); +#endif } + pagerFixMaplimit(pPager); return rc; } @@@ -6935,12 -7207,7 +7246,13 @@@ int sqlite3PagerCloseWal(Pager *pPager) rc = sqlite3WalClose(pPager->pWal, pPager->ckptSyncFlags, pPager->pageSize, (u8*)pPager->pTmpSpace); pPager->pWal = 0; + pagerFixMaplimit(pPager); + + /* Ensure that the WAL file is deleted even if the PERSIST_WAL + ** hint is enabled. */ + if( rc==SQLITE_OK ){ + rc = sqlite3OsDelete(pPager->pVfs, pPager->zWal, 0); + } } } return rc; diff --cc src/pragma.c index a13fdc7944,4c69ceb4fd..d84dca8ea8 --- a/src/pragma.c +++ b/src/pragma.c @@@ -464,9 -895,9 +895,9 @@@ void sqlite3Pragma ** secure_delete flag. The second form changes the secure_delete ** flag setting and reports thenew value. */ - if( sqlite3StrICmp(zLeft,"secure_delete")==0 ){ + case PragTyp_SECURE_DELETE: { Btree *pBt = pDb->pBt; - int b = -1; + sqlite3_int64 b = -1; assert( pBt!=0 ); if( zRight ){ b = sqlite3GetBoolean(zRight, 0); @@@ -474,12 -905,13 +905,13 @@@ if( pId2->n==0 && b>=0 ){ int ii; for(ii=0; iinDb; ii++){ - sqlite3BtreeSecureDelete(db->aDb[ii].pBt, b); + sqlite3BtreeSecureDelete(db->aDb[ii].pBt, (int)b); } } - b = sqlite3BtreeSecureDelete(pBt, b); - returnSingleInt(pParse, "secure_delete", b); + b = (int)sqlite3BtreeSecureDelete(pBt, (int)b); + returnSingleInt(pParse, "secure_delete", &b); - }else + break; + } /* ** PRAGMA [database.]max_page_count @@@ -641,8 -1052,9 +1066,9 @@@ if( iLimit<-1 ) iLimit = -1; } iLimit = sqlite3PagerJournalSizeLimit(pPager, iLimit); - returnSingleInt(pParse, "journal_size_limit", iLimit); + returnSingleInt(pParse, "journal_size_limit", &iLimit); - }else + break; + } #endif /* SQLITE_OMIT_PAGER_PRAGMAS */ @@@ -743,12 -1144,10 +1158,11 @@@ ** number of pages is adjusted so that the cache uses -N kibibytes ** of memory. */ - if( sqlite3StrICmp(zLeft,"cache_size")==0 ){ - if( sqlite3ReadSchema(pParse) ) goto pragma_out; + case PragTyp_CACHE_SIZE: { assert( sqlite3SchemaMutexHeld(db, iDb, 0) ); if( !zRight ){ - returnSingleInt(pParse, "cache_size", pDb->pSchema->cache_size); + i64 cacheSize = pDb->pSchema->cache_size; + returnSingleInt(pParse, "cache_size", &cacheSize); }else{ int size = sqlite3Atoi(zRight); pDb->pSchema->cache_size = size; @@@ -767,10 -1211,9 +1226,10 @@@ ** Note that it is possible for the library compile-time options to ** override this setting */ - if( sqlite3StrICmp(zLeft, "temp_store")==0 ){ + case PragTyp_TEMP_STORE: { if( !zRight ){ - returnSingleInt(pParse, "temp_store", db->temp_store); + i64 tempStore = db->temp_store; + returnSingleInt(pParse, "temp_store", &tempStore); }else{ changeTempStorage(pParse, zRight); } @@@ -924,22 -1364,20 +1380,23 @@@ ** default value will be restored the next time the database is ** opened. */ - if( sqlite3StrICmp(zLeft,"synchronous")==0 ){ - if( sqlite3ReadSchema(pParse) ) goto pragma_out; + case PragTyp_SYNCHRONOUS: { if( !zRight ){ - returnSingleInt(pParse, "synchronous", pDb->safety_level-1); + u8 level = pDb->safety_level; + i64 safetyLevel = (i64)(SQLITE_DbSafetyLevelValue(level)-1); + returnSingleInt(pParse, "synchronous", &safetyLevel); }else{ if( !db->autoCommit ){ sqlite3ErrorMsg(pParse, "Safety level may not be changed inside a transaction"); }else{ - pDb->safety_level = getSafetyLevel(zRight,0,1)+1; + u8 level = getSafetyLevel(zRight,0,1)+1; + pDb->safety_level = (level | SQLITE_SAFETYLEVEL_FIXED); + setAllPagerFlags(db); } } - }else + break; + } #endif /* SQLITE_OMIT_PAGER_PRAGMAS */ #ifndef SQLITE_OMIT_FLAG_PRAGMAS @@@ -1537,16 -2170,15 +2189,17 @@@ ** after accumulating N frames in the log. Or query for the current value ** of N. */ - if( sqlite3StrICmp(zLeft, "wal_autocheckpoint")==0 ){ + case PragTyp_WAL_AUTOCHECKPOINT: { + i64 walArg = 0; if( zRight ){ sqlite3_wal_autocheckpoint(db, sqlite3Atoi(zRight)); } - returnSingleInt(pParse, "wal_autocheckpoint", - db->xWalCallback==sqlite3WalDefaultHook ? - SQLITE_PTR_TO_INT(db->pWalArg) : 0); + if( db->xWalCallback==sqlite3WalDefaultHook ){ + walArg = SQLITE_PTR_TO_INT(db->pWalArg); + } + returnSingleInt(pParse, "wal_autocheckpoint", &walArg); - }else + } + break; #endif /* @@@ -1572,8 -2206,25 +2227,25 @@@ if( zRight ){ sqlite3_busy_timeout(db, sqlite3Atoi(zRight)); } - returnSingleInt(pParse, "timeout", db->busyTimeout); + returnSingleInt(pParse, "timeout", &db->busyTimeout); - }else + break; + } + + /* + ** PRAGMA soft_heap_limit + ** PRAGMA soft_heap_limit = N + ** + ** Call sqlite3_soft_heap_limit64(N). Return the result. If N is omitted, + ** use -1. + */ + case PragTyp_SOFT_HEAP_LIMIT: { + sqlite3_int64 N; + if( zRight && sqlite3Atoi64(zRight, &N, 1000000, SQLITE_UTF8)==SQLITE_OK ){ + sqlite3_soft_heap_limit64(N); + } + returnSingleInt(pParse, "soft_heap_limit", sqlite3_soft_heap_limit64(-1)); + break; + } #if defined(SQLITE_DEBUG) || defined(SQLITE_TEST) /* diff --cc src/sqlite.h.in index 1b1ba53367,9be07fc1e6..5b83da8af3 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@@ -868,10 -958,13 +959,17 @@@ struct sqlite3_io_methods #define SQLITE_FCNTL_VFSNAME 12 #define SQLITE_FCNTL_POWERSAFE_OVERWRITE 13 #define SQLITE_FCNTL_PRAGMA 14 + #define SQLITE_FCNTL_BUSYHANDLER 15 + #define SQLITE_FCNTL_TEMPFILENAME 16 + #define SQLITE_FCNTL_MMAP_SIZE 18 + #define SQLITE_FCNTL_TRACE 19 + #define SQLITE_FCNTL_HAS_MOVED 20 + #define SQLITE_FCNTL_SYNC 21 + #define SQLITE_FCNTL_COMMIT_PHASETWO 22 +/* deprecated names */ +#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE +#define SQLITE_SET_LOCKPROXYFILE SQLITE_FCNTL_SET_LOCKPROXYFILE +#define SQLITE_LAST_ERRNO SQLITE_FCNTL_LAST_ERRNO /* ** CAPI3REF: Mutex Handle diff --cc src/test1.c index dcdbca531f,44f56a6c84..2dedf01c97 --- a/src/test1.c +++ b/src/test1.c @@@ -6353,10 -6476,9 +6679,11 @@@ int Sqlitetest1_Init(Tcl_Interp *interp { "file_control_persist_wal", file_control_persist_wal, 0 }, { "file_control_powersafe_overwrite",file_control_powersafe_overwrite,0}, { "file_control_vfsname", file_control_vfsname, 0 }, + { "file_control_tempfilename", file_control_tempfilename, 0 }, { "sqlite3_vfs_list", vfs_list, 0 }, { "sqlite3_create_function_v2", test_create_function_v2, 0 }, + { "path_is_local", path_is_local, 0 }, + { "path_is_dos", path_is_dos, 0 }, /* Functions from os.h */ #ifndef SQLITE_OMIT_UTF16 diff --cc src/test_backup.c index 24133de011,e967424a29..6b4d6b9b1c --- a/src/test_backup.c +++ b/src/test_backup.c @@@ -14,12 -14,14 +14,14 @@@ */ #include "tcl.h" -#include +#include "sqlite3.h" #include + /* These functions are implemented in main.c. */ + extern const char *sqlite3ErrName(int); + /* These functions are implemented in test1.c. */ - int getDbPointer(Tcl_Interp *, const char *, sqlite3 **); - const char *sqlite3TestErrorName(int); + extern int getDbPointer(Tcl_Interp *, const char *, sqlite3 **); static int backupTestCmd( ClientData clientData, diff --cc src/test_rtree.c index 59a256ffbc,9d19fa0e2c..7beec66455 --- a/src/test_rtree.c +++ b/src/test_rtree.c @@@ -13,7 -13,8 +13,8 @@@ ** is not included in the SQLite library. */ -#include +#include "sqlite3.h" + #include /* Solely for the UNUSED_PARAMETER() macro. */ #include "sqliteInt.h" diff --cc src/vdbe.c index f1e6f0892d,a64e5bf5e1..44f2fcf0cd --- a/src/vdbe.c +++ b/src/vdbe.c @@@ -579,8 -524,10 +524,10 @@@ int sqlite3VdbeExec ** sqlite3_column_text16() failed. */ goto no_mem; } - assert( p->rc==SQLITE_OK || p->rc==SQLITE_BUSY ); + assert( p->rc==SQLITE_OK || p->rc==SQLITE_BUSY || ((p->rc&0xFF) == SQLITE_LOCKED)); + assert( p->bIsReader || p->readOnly!=0 ); p->rc = SQLITE_OK; + p->iCurrentTime = 0; assert( p->explain==0 ); p->pResultSet = 0; db->busyHandler.nBusy = 0; diff --cc test/dbstatus2.test index 77a1cbb98c,2541a1a823..7743136f25 --- a/test/dbstatus2.test +++ b/test/dbstatus2.test @@@ -38,11 -38,9 +38,12 @@@ proc db_write {db {reset 0}} } do_test 1.1 { + ifcapable enable_persist_wal { + file_control_persist_wal db 0 + } db close sqlite3 db test.db + execsql { PRAGMA mmap_size = 0 } expr {[file size test.db] / 1024} } 6 diff --cc test/tkt3457.test index af2c2f9e05,0475741322..1d0ba11d6a --- a/test/tkt3457.test +++ b/test/tkt3457.test @@@ -62,27 -62,40 +62,41 @@@ do_test tkt3457-1.1 execsql COMMIT } {} + # Disable fchmod to make sure SQLite itself does not try to change the + # permission bits on us + # + catch { + test_syscall install fchmod + test_syscall fault 1 1 + } + -do_test tkt3457-1.2 { - forcecopy bak.db-journal test.db-journal - file attributes test.db-journal -permissions --------- - catchsql { SELECT * FROM t1 } -} {1 {unable to open database file}} -do_test tkt3457-1.3 { - forcecopy bak.db-journal test.db-journal - file attributes test.db-journal -permissions -w--w--w- - catchsql { SELECT * FROM t1 } -} {1 {unable to open database file}} -do_test tkt3457-1.4 { - forcecopy bak.db-journal test.db-journal - file attributes test.db-journal -permissions r--r--r-- - catchsql { SELECT * FROM t1 } -} {1 {unable to open database file}} - -do_test tkt3457-1.5 { - forcecopy bak.db-journal test.db-journal - file attributes test.db-journal -permissions rw-rw-rw- - catchsql { SELECT * FROM t1 } -} {0 {1 2 3 4 5 6}} +if { ![path_is_dos "."] } { + do_test tkt3457-1.2 { + forcecopy bak.db-journal test.db-journal + file attributes test.db-journal -permissions --------- + catchsql { SELECT * FROM t1 } + } {1 {unable to open database file}} + do_test tkt3457-1.3 { + forcecopy bak.db-journal test.db-journal + file attributes test.db-journal -permissions -w--w--w- + catchsql { SELECT * FROM t1 } + } {1 {unable to open database file}} + do_test tkt3457-1.4 { + forcecopy bak.db-journal test.db-journal + file attributes test.db-journal -permissions r--r--r-- + catchsql { SELECT * FROM t1 } + } {1 {unable to open database file}} + do_test tkt3457-1.5 { + forcecopy bak.db-journal test.db-journal + file attributes test.db-journal -permissions rw-rw-rw- + catchsql { SELECT * FROM t1 } + } {0 {1 2 3 4 5 6}} +} + # Reenable fchmod + catch { + test_syscall uninstall + test_syscall fault 0 0 + } + finish_test diff --cc test/wal.test index 237d1de3cb,675be73791..92f64fc865 --- a/test/wal.test +++ b/test/wal.test @@@ -743,9 -727,9 +743,12 @@@ do_test wal-11.9 list [expr [file size test.db]/1024] [log_deleted test.db-wal] } {37 1} sqlite3_wal db test.db + set nWal 39 + if {[permutation]!="mmap"} {set nWal 37} + ifcapable !mmap {set nWal 37} +ifcapable enable_persist_wal { + file_control_persist_wal db 0 +} do_test wal-11.10 { execsql { PRAGMA cache_size = 10; @@@ -874,11 -852,7 +877,10 @@@ do_test wal-13.1.2 sqlite3 db test.db execsql { SELECT * FROM t2 } } {B 2} - breakpoint do_test wal-13.1.3 { + ifcapable enable_persist_wal { + file_control_persist_wal db 0 + } db close file exists test.db-wal } {0} diff --cc test/walro.test index 170c2d8ad3,6d920b1e24..e40b90a90a --- a/test/walro.test +++ b/test/walro.test @@@ -30,19 -30,8 +30,16 @@@ ifcapable !wal finish_test return } +if ![wal_is_ok] { finish_test; return } + +set shmpath test.db-shm +if {[forced_proxy_locking]} { + sqlite3 db test.db + set shmpath [execsql { pragma lock_proxy_file }]-shm + db close +} do_multiclient_test tn { - # Do not run tests with the connections in the same process. - # - if {$tn==2} continue # Close all connections and delete the database. #