From: drh Date: Fri, 5 Feb 2016 14:29:18 +0000 (+0000) Subject: Merge OOM handling optimizations and PRAGMA synchronous=EXTRA as well as X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=81ab26904bff2485e029d21d1d499ced843af94c;p=thirdparty%2Fsqlite.git Merge OOM handling optimizations and PRAGMA synchronous=EXTRA as well as other enhancements from trunk. FossilOrigin-Name: 201fcbeef35d3d06d71ef5770fb72152840fcc2e --- 81ab26904bff2485e029d21d1d499ced843af94c diff --cc manifest index 9d8e4df43f,8c2dfea1b7..f21612e136 --- a/manifest +++ b/manifest @@@ -1,6 -1,6 +1,6 @@@ - C Merge\srecent\senhancements\sfrom\strunk. - D 2016-02-02T02:30:01.672 -C Improvements\sto\sthe\sway\sout-of-memory\sconditions\sare\shandled,\sresulting\nin\san\salmost\s1%\sperformance\sgain\sin\sthe\scommmon\scase\swhere\sOOM\serrors\sdo\nnot\soccur. -D 2016-02-05T14:11:12.413 -F Makefile.in 027c1603f255390c43a426671055a31c0a65fdb4 ++C Merge\sOOM\shandling\soptimizations\sand\sPRAGMA\ssynchronous=EXTRA\sas\swell\sas\nother\senhancements\sfrom\strunk. ++D 2016-02-05T14:29:18.094 +F Makefile.in aa753ba4969643ec65009ff2e55beb95dd38ace4 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 72b7858f02017611c3ac1ddc965251017fed0845 F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7 @@@ -293,30 -291,30 +294,30 @@@ F src/auth.c b56c78ebe40a2110fd361379f7 F src/backup.c 2869a76c03eb393ee795416e2387005553df72bc F src/bitvec.c 1a78d450a17c5016710eec900bedfc5729bf9bdf F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73 - F src/btree.c af43a8326a8af14ae933853850da740f93163383 -F src/btree.c 0b359bcc2316a57acf12f583253974ad22b4654f ++F src/btree.c b5c39d04a4c1650df7a7b14bc31a6139e8fcfb57 F src/btree.h 368ceeb4bd9312dc8df2ffd64b4b7dbcf4db5f8e F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5 - F src/build.c 33dea2cef04c16a902c55f9d83b1a2065f213979 - F src/callback.c 29ae4faba226c7ebb9aee93016b5ce8a8f071261 + F src/build.c 198eaa849c193f28b802ed135b2483c68ef7a35c + F src/callback.c ed6c2a4a712eb7287ff64e20e3c23265dfb8a7ce F src/complete.c addcd8160b081131005d5bc2d34adf20c1c5c92f F src/ctime.c 60e135af364d777a9ab41c97e5e89cd224da6198 - F src/date.c 997651e3ee6c2818fbf7fcdb7156cef9eb3ece20 + F src/date.c ca17321bc17cca8f40e0843edea4fafff974998e F src/dbstat.c b2ec6793eef97aebb4d171d490a4ffdfa9f2475c - F src/delete.c 33ed87dc0746b1f8ce186f62b608bf40801af9c0 - F src/expr.c d10c1cdef5810cdbf73adc9f9b383684230b360a + F src/delete.c 48802aa3ee6339f576d074336d3ae1b5f40e240f + F src/expr.c fbf0706199aea23c54efe36b6932d8307c4eb872 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb - F src/fkey.c c66d3e5b35d4d95b5c1e2ee6c12f5df13a7f9ad6 - F src/func.c 42b24923328f65849f52f1659efb2a0907ad78fd + F src/fkey.c 08edad1fce30f761f14b3997e89bad58f9f7f4e0 + F src/func.c 86e55fee35b9577e485f47d9dd5c1d34cd513288 F src/global.c bd5a0af3f30b0c01be6db756c626cd3c33a3d260 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08 - F src/insert.c 410f52b9ef4603dc0aebb169b7cb6b3c60eda07e + F src/insert.c b84359365bace233919db550a15f131923190efc F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d - F src/legacy.c 9c17d86e06522c261307f0eb6bcb1254c8b04a59 -F src/legacy.c b1b0880fc474abfab89e737b0ecfde0bd7a60902 ++F src/legacy.c c6552d90c1422aeae86fe0191c6963946aa2fddf F src/loadext.c 84996d7d70a605597d79c1f1d7b2012a5fd34f2b - F src/main.c 9bef1b75e748da9b66b5dd7c51151e7c14a45d7b - F src/malloc.c b67c26c359c13836d370350b3f43d228dff5b360 -F src/main.c 62b7fe3ed245757d1ff2e6268a7ec0bc30100308 ++F src/main.c 83d9667de302d71a56905122d6c5c07cb3ec69e8 + F src/malloc.c 55ebb1701ebd39985dbcc497aaecb09192b69682 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3 @@@ -334,29 -332,28 +335,29 @@@ F src/os.c 5822c2b843a77219bba1e28887cd F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf F src/os_common.h abdb9a191a367793268fe553d25bab894e986a0e F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa - F src/os_unix.c fb027e79b1c8cc86b69ad5c7175905cf7969275e -F src/os_unix.c 821ed110197175165cf2f50b0930c7ff9a24504c -F src/os_win.c ccf29ddded3e41e506b6bd98c1171aa0963b23f2 ++F src/os_unix.c 20b22469512e061c015ae2cb171a0950658d5ace +F src/os_win.c dc10ba379eaff9a1b37b4a47671929733971a71e F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca - F src/pager.c 29b5eeb8bab35c33b3d698bd29ccf701c0f35173 - F src/pager.h fe401b665cf964539ac389387de36caeebe606dc - F src/parse.y 426a91fbbbf7cdde3fd4b8798de7317a8782bec5 -F src/pager.c 67cd2fbab58d0e35fed5f81432856f4f0af9fc6d -F src/pager.h f3eb324a3ff2408b28bab7e81c1c55c13720f865 ++F src/pager.c 184997e965838f7af174ef2a4b102d223ea9eff2 ++F src/pager.h 3de08f90567892585cce2e1db07686ff1422c4fb + F src/parse.y d7bff41d460f2df96fb890f36700e85cb0fc5634 F src/pcache.c 73895411fa6b7bd6f0091212feabbe833b358d23 F src/pcache.h 4d0ccaad264d360981ec5e6a2b596d6e85242545 F src/pcache1.c 72f644dc9e1468c72922eff5904048427b817051 - F src/pragma.c dc702fbc48d0043216c9b56639e59288fd5f4d76 -F src/pragma.c 80ee77226d0008d9188356a6cbbe6010866e1bee ++F src/pragma.c eb149efaf7459d4e83e013cf603c12eec6b9b753 F src/pragma.h 64c78a648751b9f4f297276c4eb7507b14b4628c - F src/prepare.c cdde978827b7db588dd0dc3c8ff4d9264ceddbb8 - F src/printf.c 98a5cef7fc84577ab8a3098cfa48ecfa5a70b9f8 -F src/prepare.c c12b786713df3e8270c0f85f988c5359d8b4d87c ++F src/prepare.c 3fef6600182375c49d98dc3acabc3ecfffe6f0b2 + F src/printf.c 63e6fb12bbe702dd664dc3703776c090383a5a26 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696 F src/resolve.c 9f7ce3a3c087afb7597b7c916c99126ff3f12f0c - F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e - F src/select.c ea6f3b0c279aa37eb3701792d094673a7ad1bf88 + F src/rowset.c 9fe4b3ad7cc00944386bb600233d8f523de07a6e + F src/select.c 57646a44ba9a0bc4aa926ae9c79b8199c246844b F src/shell.c dcd7a83645ef2a58ee9c6d0ea4714d877d7835c4 -F src/sqlite.h.in cf22ad1d52dca2c9862d63833e581028119aab7e +F src/sqlite.h.in 780a7899e1ddd11839495d7cf6d5def6f549800c F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 +F src/sqlite3_private.h a81a9c5f97c095cc3e86914a05f8fabe0011f4a1 F src/sqlite3ext.h dfbe62ffd95b99afe2140d8c35b180d11924072d - F src/sqliteInt.h d402565f4804c08a3bacc9727160bacabe53b6c8 -F src/sqliteInt.h 3aeaff9611acd790c8e76719b33db09ab885d537 ++F src/sqliteInt.h ab8b7a5e7d007e0d5ba254b9c304ba9d21da3ff7 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46 F src/status.c 70912d7be68e9e2dbc4010c93d344af61d4c59ba F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e @@@ -409,32 -406,32 +410,32 @@@ F src/test_windirent.c 8f5fada630348558 F src/test_windirent.h b12055cab6227f7be10f5c19296f67c60cc5e2a5 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0 - F src/tokenize.c 5606871a377f390af7040ec3c12e0d183512d785 + F src/tokenize.c 214b783d6138e9f9fbb6b225ce9a376db3b03d42 F src/treeview.c dc39ccf04e9331237388b9cb73289c9d87ea050b - F src/trigger.c 72d876b2d0c66604a112362bdae07dae9b104816 - F src/update.c 17332f9fe818cbc0444c36a811800af8498af4c3 + F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280 + F src/update.c 310ca7adb86a7d1f2afae46905b21c83580f3e17 F src/utf.c 10cc2519e82e3369344d0969ad4b1a333dc86d18 - F src/util.c 72d40df0a52d3f30b462a15f0e094fcbade6dc82 + F src/util.c 49ce0a65306c1c51d61cb5bc214c71cb62452de6 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 - F src/vdbe.c 464142f96d64acdf8755134f8df1d6d83b0003ed -F src/vdbe.c c193299e595a13eba247738e22fce25c49346a6c ++F src/vdbe.c d76cf7d7dbb51d8b009414cc4b2f2d2da228e572 F src/vdbe.h 7a733ea8aac1b77305a67698e784fa3484ee3337 F src/vdbeInt.h 4b69d5451bcadd473e745af53ef1e8abfdce0a79 - F src/vdbeapi.c 29f9b3c19c6ff8cddcb619864657b7bc9836ae35 - F src/vdbeaux.c f0e7cfa04f7ac44d69866868531dbaf20659d0a2 - F src/vdbeblob.c 37c3d11a753e403698c69e17383d282e1ae73e75 - F src/vdbemem.c b9181e77eca2a095929d46250daf85c8d2621fc0 -F src/vdbeapi.c 9324f6baee1a1b2284c6543e98f916888a81e459 ++F src/vdbeapi.c acc259f1b473cfeaf0459c482156579067bc3859 + F src/vdbeaux.c 49b536284c2b8a823dd342d653e18145ca2b393a + F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db + F src/vdbemem.c 68fcfac37dc6601d98c32cc5adee4d39f2c1b7b4 F src/vdbesort.c ef3c6d1f1a7d44cf67bb2bee59ea3d1fe5bad174 F src/vdbetrace.c f75c5455d8cf389ef86a8bfdfd3177e0e3692484 - F src/vtab.c 320682cca733115b4cbe71320b5c5eeb1074ebde + F src/vtab.c bef51b4f693d82b4b0184457faa8625654534091 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 -F src/wal.c d21b99fd1458159d0b1ecdccc8ee6ada4fdc4c54 -F src/wal.h 2f7c831cf3b071fa548bf2d5cac640846a7ff19c +F src/wal.c 9bd7a20c656171200725462a37183e53c549afda +F src/wal.h 29c2a284ddd9c665199273dadc7255a227092291 F src/walker.c 0f142b5bd3ed2041fc52d773880748b212e63354 - F src/where.c af9bf5dcec1a0e52726c550924aa91d837166251 + F src/where.c d89fd5cff448ab5c5ca492dd9793b35ffe31ab35 F src/whereInt.h 78b6b4de94db84aecbdc07fe3e38f648eb391e9a - F src/wherecode.c 923f5d04b379b7417bc29f3b86b5eae9d1923d72 - F src/whereexpr.c 197a448b52073aee43eca3a2233fc113369eb2d4 + F src/wherecode.c 791a784bbf8749d560fdb0b990b607bc4f44a38d + F src/whereexpr.c de117970b29471177a6901d60ad83a194671dc03 -F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 +F test/8_3_names.test 05034aadccd2253ffe6cbefb06662b8aa4600f77 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/aggnested.test b35b4cd69fc913f90d39a575e171e1116c3a4bb7 @@@ -901,11 -898,12 +903,12 @@@ F test/misc6.test 953cc693924d88e6117ae F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2 F test/misc8.test fc2754d38892f7dac30c22db3616c2764f117d66 F test/misuse.test 3c34719944ba045cc6c188a4852ba04680728912 - F test/mmap1.test 1bfd611b9841eafb44f7d83c0788e146d84a33c9 + F test/mmap1.test 44a5ff1c1bcc7dcf2de50227d1f997e75a8ef1ae F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022 F test/mmap3.test c92273e16eb8d23c1d55c9815b446bb72ef0512e + F test/mmap4.test 2e2b4e32555b58da15176e6fe750f17c9dcf7f93 F test/mmapfault.test d4c9eff9cd8c2dc14bc43e71e042f175b0a26fe3 -F test/multiplex.test efd015ca0b5b4a57dc9535b8feb1273eebeadb60 +F test/multiplex.test 2ed4db53c3304b7eb7b8744206ee9271799a32eb F test/multiplex2.test 580ca5817c7edbe4cc68fa150609c9473393003a F test/multiplex3.test d228f59eac91839a977eac19f21d053f03e4d101 F test/multiplex4.test e8ae4c4bd70606a5727743241f13b5701990abe4 @@@ -943,11 -941,11 +946,11 @@@ F test/pagerfault3.test 1003fcda009bf48 F test/pageropt.test 6b8f6a123a5572c195ad4ae40f2987007923bbd6 F test/pagesize.test 5769fc62d8c890a83a503f67d47508dfdc543305 F test/parser1.test 222b5cbf3e2e659fec1bf7d723488c8b9c94f1d0 -F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b +F test/pcache.test 9a04fa260cb47dd4fdc5d13c5e97054e05931592 F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442 F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff - F test/permutations.test 4ea119731c62d2f7d0aa86dd5b184cbb61ca411b - F test/pragma.test fc0c3c0ca53ad82b32c02db7000c1c6ba4449fce + F test/permutations.test 382a43c49f49bafe6fddffe904ea33d6bb3ff33e -F test/pragma.test 507ac7ef2ea5682241ea0ef041799ca70bb5e0bf ++F test/pragma.test 70826dc1f03bc0b051d4c907d4572c704d38dc58 F test/pragma2.test a9400a7289605280576098b97f5cde3f204075c0 F test/pragma3.test 6f849ccffeee7e496d2f2b5e74152306c0b8757c F test/printf.test b3ff34e73d59124140eaf89f7672e21bc2ca5fcc @@@ -983,6 -980,7 +985,7 @@@ F test/savepoint4.test c8f8159ade6d2acd F test/savepoint5.test 0735db177e0ebbaedc39812c8d065075d563c4fd F test/savepoint6.test f41279c5e137139fa5c21485773332c7adb98cd7 F test/savepoint7.test db3db281486c925095f305aad09fe806e5188ff3 -F test/savepointfault.test f044eac64b59f09746c7020ee261734de82bf9b2 ++F test/savepointfault.test f044eac64b59f09746c7020ee261734de82bf9b2 w test/savepoint3.test F test/scanstatus.test 5253c219e331318a437f436268e0e82345700285 F test/schema.test 8f7999be894260f151adf15c2c7540f1c6d6a481 F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5 @@@ -1067,9 -1065,9 +1070,9 @@@ F test/subquery2.test 438f8a7da1457277b F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4 F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a F test/subtype1.test 7fe09496352f97053af1437150751be2d0a0cae8 -F test/superlock.test 1cde669f68d2dd37d6c9bd35eee1d95491ae3fc2 +F test/superlock.test 2b27b4ae7c6b9d534b0412e0d99f989aa1f3b9cf F test/symlink.test c9ebe7330d228249e447038276bfc8a7b22f4849 - F test/sync.test a34cd43e98b7fb84eabbf38f7ed8f7349b3f3d85 + F test/sync.test 2f607e1821aa3af3c5c53b58835c05e511c95899 F test/syscall.test f59ba4e25f7ba4a4c031026cc2ef8b6e4b4c639c F test/sysfault.test c9f2b0d8d677558f74de750c75e12a5454719d04 F test/tabfunc01.test cc33684f9480fcf1fd5ce287ac28d22971cad1cc @@@ -1077,10 -1075,10 +1080,10 @@@ F test/table.test b708f3e5fa2542fa51dfa F test/tableapi.test 2674633fa95d80da917571ebdd759a14d9819126 F test/tableopts.test dba698ba97251017b7c80d738c198d39ab747930 F test/tclsqlite.test 7fb866443c7deceed22b63948ccd6f76b52ad054 -F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c +F test/tempdb.test 3263e5c3f0604e54d307481e8587327c54544d18 F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30 F test/temptrigger.test 8ec228b0db5d7ebc4ee9b458fc28cb9e7873f5e1 - F test/tester.tcl 15a496be4cc0f79401d121fdb7589b5ae00e1ec6 -F test/tester.tcl 462376b478c1429030911b4cb7c8c517ef1fbd9b ++F test/tester.tcl c6a1647968dcff0d69e2715740da52f5bc6f6d50 F test/thread001.test 9f22fd3525a307ff42a326b6bc7b0465be1745a5 F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7 @@@ -1298,34 -1296,35 +1301,35 @@@ F test/vtabI.test 751b07636700dbdea328e F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 F test/vtab_shared.test ea8778d5b0df200adef2ca7c00c3c37d4375f772 - F test/wal.test 40cc49c5e9aac2bb8b058b0e430576d68bb02e2a -F test/wal.test 0148c8b3421a25fdb4d9c160e84a681d0646371b -F test/wal2.test 1f841d2048080d32f552942e333fd99ce541dada -F test/wal3.test 5dd734147f1f8f958c5261a1f2775d346d7013ce -F test/wal4.test 4744e155cd6299c6bd99d3eab1c82f77db9cdb3c -F test/wal5.test 88b5d9a6a3d1532497ee9f4296f010d66f07e33c -F test/wal6.test 4421cd5a2fa99d29cc91ef12fb23bed171ed3a4c ++F test/wal.test 21c1bc3ca769350746cbaf0ba02119bc61e9c4ec +F test/wal2.test 703b87c21c1e3e169d607158de414c7c2655b93e - F test/wal3.test 80c314c403888c968bb80f3ce1be84f6e6ccfe2c ++F test/wal3.test 57b138012b14307e7d6298092db7f3632d360653 +F test/wal4.test 5755887f321baa4c55de0b91066fa7d0cafcac9d +F test/wal5.test 03043461be964ff80df96d629a7f8db1a95e1b37 +F test/wal6.test c7d532c76f9e16aec657e529184c52a6e834dae4 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/wal_common.tcl 15f152fd55703975878741beca6cfa4209d5b3b3 +F test/walbak.test 67339b9e54db0cdaaf21287349bc8056e2919f96 +F test/walbig.test 3ca3d94751b80054eed5bda20a1339ae1f619483 F test/walblock.test be48f3a75eff0b4456209f26b3ce186c2015497d - F test/walcksum.test 932d12a2a36fb2765560d35e7eaa1e5f0b198385 -F test/walcksum.test bb234a1bb42248b3515d992b719708015c384278 -F test/walcrash.test 21038858cc552077b0522f50b0fa87e38139306a -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/walcksum.test add42a54d7c7d9bc72a913792022a195293bef2b +F test/walcrash.test 065a041da88f980df3830f09b7fe308337bb594a +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/waloverwrite.test a0d2ae0783187374c1e6a9571e0916152977cb81 -F test/walpersist.test 8c6b7e3ec1ba91b5e4dc4e0921d6d3f87cd356a6 +F test/walpersist.test abd956d66e2f36d2d9d05d3a969f48be6d2ddbec + F test/walprotocol.test 059cb75484a1ecf6357a2c1b3324b8156749221e -F test/walro.test 34422d1d95aaff0388f0791ec20edb34e2a3ed57 -F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417 -F test/walslow.test c05c68d4dc2700a982f89133ce103a1a84cc285f -F test/walthread.test de8dbaf6d9e41481c460ba31ca61e163d7348f8e +F test/walro.test 256ea9380825a34be43e8ff02bd1e240f1f62e8c +F test/walshared.test 04590b10c677f75318701818c50bc0dda5da64ab - F test/walslow.test 658066419a92d3bd85be71a11ce477af4ffe9153 ++F test/walslow.test 07a51cbe9d4895d0a90c7af76d14a62d363ac162 +F test/walthread.test c13f5a12fbd9d81e58f49875dc9dd8a52a84cf03 F test/where.test 9902a3d84e9bc80357a2c54ed0e76c0d6d04a867 F test/where2.test af78c55589cbc82d793449493adba0dc3d659f23 F test/where3.test 1ad55ba900bd7747f98b6082e65bd3e442c5004e @@@ -1347,6 -1345,7 +1350,7 @@@ F test/whereH.test e4b07f7a3c2f5d31195c F test/whereI.test 1d89199697919d4930be05a71e7fe620f114e622 F test/whereJ.test 55a3221706a7ab706293f17cc8f96da563bf0767 F test/whereK.test f8e3cf26a8513ecc7f514f54df9f0572c046c42b -F test/wherefault.test 1374c3aa198388925246475f84ad4cd5f9528864 ++F test/wherefault.test 1374c3aa198388925246475f84ad4cd5f9528864 w test/where8m.test F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31 F test/wild001.test bca33f499866f04c24510d74baf1e578d4e44b1c F test/win32heap.test ea19770974795cff26e11575e12d422dbd16893c @@@ -1427,7 -1426,8 +1431,7 @@@ F tool/vdbe_profile.tcl 246d0da094856d7 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P 3ed49691a12455e8583d8b8394ab005124442e89 d8b7b1996eefae7768bfcb82d4ff22c69392aa63 - R e139d9de8e481434dda2ea2485ae061d -P fe123ab4f17f97ba9d64a7e0589ac47fd9d43877 0a802e96ab06e2643834b83671fa8353da1a348d -R 3749c59fe6fdfc59db76e85b115f2d1f -T +closed 0a802e96ab06e2643834b83671fa8353da1a348d ++P e6a4a16312bf71ed5f277cdcd326003eb2580e72 b082538da774ac77f284fd7e22f9b1b9c2abc343 ++R f00791f129fbb0e3354751dcd2ccfa8a U drh - Z f9f2ac104a3cba480bc61a87b31e4e4a -Z 89e3d20f1d49685c430d339bf1d58063 ++Z 369def5011931d9ec10abd9e79be7ab9 diff --cc manifest.uuid index 1261de97bd,96f1ef1f1f..76132aa5b3 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - e6a4a16312bf71ed5f277cdcd326003eb2580e72 -b082538da774ac77f284fd7e22f9b1b9c2abc343 ++201fcbeef35d3d06d71ef5770fb72152840fcc2e diff --cc src/os_unix.c index 4281752782,fe1fc6af19..86ff2c66d2 --- a/src/os_unix.c +++ b/src/os_unix.c @@@ -7088,21 -5887,10 +7088,16 @@@ static int unixDelete int fd; rc = osOpenDirectory(zPath, &fd); if( rc==SQLITE_OK ){ - #if OS_VXWORKS - if( fsync(fd)==-1 ) - #else - if( fsync(fd) ) - #endif - { + if( full_fsync(fd,0,0) ){ rc = unixLogError(SQLITE_IOERR_DIR_FSYNC, "fsync", zPath); } +#if OSCLOSE_CHECK_CLOSE_IOERR + if( close(fd)&&!rc ){ + rc = SQLITE_IOERR_DIR_CLOSE; + } +#else robust_close(0, fd, __LINE__); +#endif }else{ assert( rc==SQLITE_CANTOPEN ); rc = SQLITE_OK; diff --cc src/pager.c index 872f6d3995,5c61968e36..b940755fd3 --- a/src/pager.c +++ b/src/pager.c @@@ -4821,11 -4815,9 +4827,12 @@@ act_like_temp_file pPager->readOnly = (u8)readOnly; assert( useJournal || pPager->tempFile ); pPager->noSync = pPager->tempFile; + pPager->fullSync = pPager->noSync ?0:1; + pPager->syncFlags = pPager->noSync ? 0 : SQLITE_SYNC_NORMAL; + pPager->ckptSyncFlags = pPager->syncFlags; if( pPager->noSync ){ assert( pPager->fullSync==0 ); + assert( pPager->extraSync==0 ); assert( pPager->syncFlags==0 ); assert( pPager->walSyncFlags==0 ); assert( pPager->ckptSyncFlags==0 ); diff --cc src/sqliteInt.h index e95931c50b,760c1f4d21..722df70c70 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@@ -998,16 -998,6 +998,16 @@@ typedef struct With With #include "os.h" #include "mutex.h" +/* When using a default wal safety level, the safety level should only +** change with the journal mode if the user hasn't manually specified +** pragma synchronous, if they have the defaults shouldn't be applied. +** The SQLITE_SAFETYLEVEL_FIXED value is ORed into the Db->safety_level +** field when the user has specified a synchronous setting via pragma. +*/ +#define SQLITE_SAFETYLEVEL_FIXED 0x10 - #define SQLITE_SAFETYLEVEL_VALUE_MASK 0x03 ++#define SQLITE_SAFETYLEVEL_VALUE_MASK 0x07 +#define SQLITE_DbSafetyLevelValue(level) (level&SQLITE_SAFETYLEVEL_VALUE_MASK) +#define SQLITE_DbSafetyLevelIsFixed(level) (level&SQLITE_SAFETYLEVEL_FIXED) /* ** Each database file to be accessed by the system is an instance diff --cc test/tester.tcl index dc13ac0ea0,dc532c97fa..59a6a806e4 --- a/test/tester.tcl +++ b/test/tester.tcl @@@ -1934,19 -1905,12 +1934,25 @@@ proc presql {} set presql } +proc wal_is_ok {} { + if { [forced_proxy_locking] } { + return 1 + } + if { ![path_is_local "."] } { + return 0 + } + if { [path_is_dos "."] } { + return 0 + } + return 1 +} + + proc isquick {} { + set ret 0 + catch {set ret $::G(isquick)} + set ret + } + #------------------------------------------------------------------------- # proc slave_test_script {script} { diff --cc test/wal.test index eee5573886,92b65e66ba..3083eb3882 --- a/test/wal.test +++ b/test/wal.test @@@ -844,99 -822,8 +844,11 @@@ do_test wal-12.6 execsql { SELECT * FROM t2 } db2 } {B 2} db2 close +ifcapable enable_persist_wal { + file_control_persist_wal db 0 +} db close - #------------------------------------------------------------------------- - # Test large log summaries. - # - # In this case "large" usually means a log file that requires a wal-index - # mapping larger than 64KB (the default initial allocation). A 64KB wal-index - # is large enough for a log file that contains approximately 13100 frames. - # So the following tests create logs containing at least this many frames. - # - # wal-13.1.*: This test case creates a very large log file within the - # file-system (around 200MB). The log file does not contain - # any valid frames. Test that the database file can still be - # opened and queried, and that the invalid log file causes no - # problems. - # - # wal-13.2.*: Test that a process may create a large log file and query - # the database (including the log file that it itself created). - # - # wal-13.3.*: Test that if a very large log file is created, and then a - # second connection is opened on the database file, it is possible - # to query the database (and the very large log) using the - # second connection. - # - # wal-13.4.*: Same test as wal-13.3.*. Except in this case the second - # connection is opened by an external process. - # - do_test wal-13.1.1 { - list [file exists test.db] [file exists test.db-wal] - } {1 0} - do_test wal-13.1.2 { - set fd [open test.db-wal w] - seek $fd [expr 200*1024*1024] - puts $fd "" - close $fd - sqlite3 db test.db - execsql { SELECT * FROM t2 } - } {B 2} - do_test wal-13.1.3 { - ifcapable enable_persist_wal { - file_control_persist_wal db 0 - } - db close - file exists test.db-wal - } {0} - - do_test wal-13.2.1 { - sqlite3 db test.db - execsql { SELECT count(*) FROM t2 } - } {1} - do_test wal-13.2.2 { - db function blob blob - for {set i 0} {$i < 16} {incr i} { - execsql { INSERT INTO t2 SELECT blob(400), blob(400) FROM t2 } - } - execsql { SELECT count(*) FROM t2 } - } [expr int(pow(2, 16))] - do_test wal-13.2.3 { - expr [file size test.db-wal] > [wal_file_size 33000 1024] - } 1 - - do_multiclient_test tn { - incr tn 2 - - do_test wal-13.$tn.0 { - sql1 { - PRAGMA journal_mode = WAL; - CREATE TABLE t1(x); - INSERT INTO t1 SELECT randomblob(800); - } - sql1 { SELECT count(*) FROM t1 } - } {1} - - for {set ii 1} {$ii<16} {incr ii} { - do_test wal-13.$tn.$ii.a { - sql2 { INSERT INTO t1 SELECT randomblob(800) FROM t1 } - sql2 { SELECT count(*) FROM t1 } - } [expr (1<<$ii)] - do_test wal-13.$tn.$ii.b { - sql1 { SELECT count(*) FROM t1 } - } [expr (1<<$ii)] - do_test wal-13.$tn.$ii.c { - sql1 { SELECT count(*) FROM t1 } - } [expr (1<<$ii)] - do_test wal-13.$tn.$ii.d { - sql1 { PRAGMA integrity_check } - } {ok} - } - } - #------------------------------------------------------------------------- # Check a fun corruption case has been fixed. # diff --cc test/walslow.test index 2594144625,2a52a225d8..2550df56db --- a/test/walslow.test +++ b/test/walslow.test @@@ -16,9 -16,12 +16,12 @@@ set testdir [file dirname $argv0] source $testdir/tester.tcl + source $testdir/wal_common.tcl + source $testdir/lock_common.tcl ifcapable !wal {finish_test ; return } - +if ![wal_is_ok] { finish_test; return } + set testprefix walslow proc reopen_db {} { catch { db close }