]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge OOM handling optimizations and PRAGMA synchronous=EXTRA as well as
authordrh <drh@noemail.net>
Fri, 5 Feb 2016 14:29:18 +0000 (14:29 +0000)
committerdrh <drh@noemail.net>
Fri, 5 Feb 2016 14:29:18 +0000 (14:29 +0000)
other enhancements from trunk.

FossilOrigin-Name: 201fcbeef35d3d06d71ef5770fb72152840fcc2e

19 files changed:
1  2 
manifest
manifest.uuid
src/btree.c
src/legacy.c
src/main.c
src/os_unix.c
src/pager.c
src/pager.h
src/pragma.c
src/prepare.c
src/sqliteInt.h
src/vdbe.c
src/vdbeapi.c
test/pragma.test
test/tester.tcl
test/wal.test
test/wal3.test
test/walcksum.test
test/walslow.test

diff --cc manifest
index 9d8e4df43ff804148cdfd753dabe9125ac60a0a4,8c2dfea1b7a8f7e36f2fcd8ec0e702c1e9c067ab..f21612e1366f3c1626af6d338eb84b2aace4198a
+++ 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 1261de97bdfaeddd2afa87a543738b880817975d,96f1ef1f1f444e27b74fcc9cf831b1040d98ad69..76132aa5b337a98b3739cf378e1b1ad351ea2bf8
@@@ -1,1 -1,1 +1,1 @@@
- e6a4a16312bf71ed5f277cdcd326003eb2580e72
 -b082538da774ac77f284fd7e22f9b1b9c2abc343
++201fcbeef35d3d06d71ef5770fb72152840fcc2e
diff --cc src/btree.c
Simple merge
diff --cc src/legacy.c
Simple merge
diff --cc src/main.c
Simple merge
diff --cc src/os_unix.c
index 4281752782c33f5a33b412a25de0370719f3fe0c,fe1fc6af19a4a2b45a422805e34be3aec8369208..86ff2c66d2788e2ea8c369ad0d2d5865b0a20ca9
@@@ -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 872f6d399596145139b73669ea620660e8368f0f,5c61968e36068f66dca6aa744f6487ca4868d7f6..b940755fd376f11b9e0dc1a840c6258d09d366c4
@@@ -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/pager.h
Simple merge
diff --cc src/pragma.c
Simple merge
diff --cc src/prepare.c
Simple merge
diff --cc src/sqliteInt.h
index e95931c50b31849ecc15c4ec6fcd45d1b69f5d4c,760c1f4d219e6d060f8d1dde7802504d317f835a..722df70c7003e60debda28fe2e63357e454a4f76
@@@ -998,16 -998,6 +998,16 @@@ typedef struct With With
  #include "os.h"
  #include "mutex.h"
  
- #define SQLITE_SAFETYLEVEL_VALUE_MASK 0x03
 +/* 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 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 src/vdbe.c
Simple merge
diff --cc src/vdbeapi.c
Simple merge
Simple merge
diff --cc test/tester.tcl
index dc13ac0ea0c310c7fbbbd16cc54ddf8edb08c6d0,dc532c97fa370be598f920bdda9c56a92e8573d9..59a6a806e45024eb4c8192b295e80839e472bde6
@@@ -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 eee557388637e08be4234153dc6b3e4084cc3d26,92b65e66bad5f5be1caa82f3d6f5bc53a4403340..3083eb388260c6b140ff823772be2396382c0177
@@@ -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/wal3.test
Simple merge
Simple merge
index 25941446257f3c616a6ed24e068f541bdef298da,2a52a225d80e6c11a7b4df3f3a085c4905bcf5fe..2550df56dbcbce2c19ecb1f6456fab2d53a37eda
  
  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 }