- C Merge\sfts4aux\sbranch.
- D 2011-02-02T04:40:07.295
+ -----BEGIN PGP SIGNED MESSAGE-----
+ Hash: SHA1
+
-C Merge\sthe\scheckpoint_fullfsync\spragma\sand\sthe\ssuperlock\sdemonstration\sinto\nthe\scheckpoint-v2\sexperimental\sbranch.
-D 2010-11-19T18:51:31
++C Merge\sin\sthe\sblocking-checkpoint\senhancement,\sincluding\sthe\snew\nsqlite3_wal_checkpoint_v2()\sinterface\sand\sthe\nPRAGMA\swal_checkpoint(full)\sstatement.
++D 2011-02-02T16:34:08.739
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
-F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
+F Makefile.in de6498556d536ae60bb8bb10e8c1ba011448658c
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151
F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6
F ext/rtree/viewrtree.tcl eea6224b3553599ae665b239bd827e182b466024
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
- F main.mk 589cd0fdc9d9bf7a8220511ff5db5bd57efe3558
-F main.mk 731380a234515bd21ba4f930e12041ed3acfcc3a
++F main.mk 54190fab7cdba523e311c274c95ea480f32abfb5
F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a
F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f
F mkextw.sh 4123480947681d9b434a5e7b1ee08135abe409ac
F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
F src/alter.c 6a0c176e64a34929a4436048066a84ef4f1445b3
-F src/analyze.c 1ea594a912a14138e20a05db09d9065e46f29a2a
+F src/analyze.c a038162344265ac21dfb24b3fcc06c666ebb9c07
F src/attach.c 252c4f7e36cc219349451ed63e278c60e80b26f3
F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34
-F src/backup.c d5b0137bc20327af08c14772227cc35134839c30
+F src/backup.c 6728d6d48d55b449af76a3e51c0808849cb32a2e
F src/bitvec.c af50f1c8c0ff54d6bdb7a80e2fceca5a93670bef
F src/btmutex.c 96a12f50f7a17475155971a241d85ec5171573ff
- F src/btree.c 9004c98fc576306eee4fc0562ffeb362ef53912c
- F src/btree.h 10f9296bf4edf034f5adce921b7b4383a56a1c90
-F src/btree.c 3578a5e812ab9b434b1b705aad547939a055be11
++F src/btree.c cefe096650179dc4c5d876e7a27593ff1e6a86ed
+ F src/btree.h e2f2cd9933bf30724f53ffa12c4c5a3a864bbd6e
-F src/btreeInt.h c424f2f131cc61ddf130f9bd736b3df12c8a51f0
+F src/btreeInt.h 20f73dc93b1eeb83afd7259fbc6bd7dcf2df7fe4
F src/build.c 00a327120d81ace6267e714ae8010c997d55de5d
F src/callback.c a1d1b1c9c85415dff013af033e2fed9c8382d33b
F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
F src/loadext.c 8af9fcc75708d60b88636ccba38b4a7b3c155c3e
- F src/main.c 6653e46db7ecb5a7449d8a12900147192f748b97
-F src/main.c 84fdf5b2d823641f6bb394a81e467b6d7ff9b7ec
-F src/malloc.c 3d7284cd9346ab6e3945535761e68c23c6cf40ef
++F src/main.c 1b04ef67eb03d026c8cc2d438c61635163153c24
+F src/malloc.c 92d59a007d7a42857d4e9454aa25b6b703286be1
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c 00bd8265c81abb665c48fea1e0c234eb3b922206
F src/mem2.c e307323e86b5da1853d7111b68fd6b84ad6f09cf
F src/os.c 22ac61d06e72a0dac900400147333b07b13d8e1d
F src/os.h 9dbed8c2b9c1f2f2ebabc09e49829d4777c26bf9
F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f
-F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e
-F src/os_unix.c de5be4cdbf3d07018059934eaf7e5d8d594a895c
-F src/os_win.c 2f90f7bdec714fad51cd31b4ecad3cc1b4bb5aad
-F src/pager.c b3e86e5d27c04e05a73a55ce2c79bb6028196431
+F src/os_os2.c 2e452c9f2ca507623ad351c33a8a8b27849b1863
+F src/os_unix.c 1be46a35bad4bec5171e4de88aaff817260eb378
+F src/os_win.c 9abdcdd925416d854eabb0996c96debd92abfef5
- F src/pager.c c22b8531596c984dcc6b90645714b7ed951023fe
- F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76
++F src/pager.c d62dfc1d77168c4415e7f3e23c6dbee4f3fdff60
+ F src/pager.h 3f8c783de1d4706b40b1ac15b64f5f896bcc78d1
F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
-F src/pcache1.c e9578a3beac26f229ee558a4e16c863f2498185f
-F src/pragma.c 900f480cc266428218d1a745a3e670fbd33cf12d
-F src/prepare.c c2b318037d626fed27905c9446730b560637217a
-F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506
+F src/pcache1.c d548e31beafa792d1994b663a29a5303569efc4e
- F src/pragma.c 8a6cd3c787f882fa44f6490d2411fc26839ce8f3
++F src/pragma.c 3d48a7f0a90bae8740adcc0d86e583b79da57f5b
+F src/prepare.c 395b3fab1b93f45b6aa194b23ebc201221c47b99
+F src/printf.c df2ff3bb5409e8958136933342c46464fbd017e7
F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
-F src/select.c 550d67688f5e8bc8022faf6d014838afba1415af
-F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
-F src/sqlite.h.in daa5e94df834537708afb917e9b4cc4489c63c00
+F src/select.c 8a7ba246b0b4bb45df7fbc52681728a0e3deaaa7
+F src/shell.c 83c6f0cc5a79a081c7b9ddfe4f557b47e0bad976
- F src/sqlite.h.in 7599c4975cd0d0fff8d8d8cd3e423ca893b48f47
++F src/sqlite.h.in c0456330093737c74409e7f7d89d0f1e0dbf43b7
F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
- F src/sqliteInt.h 45926deaf59b1ce3f55d21d5f91a8cecb6a7eb4c
-F src/sqliteInt.h eea368b138c8c90ea1aef8f06f49ec29aacb2a8b
++F src/sqliteInt.h 4290fff17fabc6e07fc4338233df0e39e6350ca1
F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
-F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
+F src/status.c 4997380fbb915426fef9e500b4872e79c99267fc
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
-F src/tclsqlite.c 77c5c4b8ac7b2d94ee480e1ad626fbd921d948e4
-F src/test1.c c2aa29d0fd6db7506fb7f0de7bff1386078296df
+F src/tclsqlite.c 549859dc2c143f3deb6a92636a2d27973652c164
+F src/test1.c 771407a49ae199241f0efb7055634e4a1899c026
F src/test2.c 80d323d11e909cf0eb1b6fbb4ac22276483bcf31
F src/test3.c 056093cfef69ff4227a6bdb9108564dc7f45e4bc
F src/test4.c 0528360b5025688002a5feb6be906ddce52eaaee
F src/trigger.c b8bedb9c0084ceb51a40f54fcca2ce048c8de852
F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0
F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
-F src/util.c cd78524566fe45671863eee78685969a4bfd4e4c
+F src/util.c ab1c92426494f499f42b9e307537b03e923d75c1
F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
- F src/vdbe.c 5d310eaf1a4d8383602126fa82e01291ab7d3cf3
-F src/vdbe.c 06f868b6daff465cd805d09b43661d0e0bee62a7
++F src/vdbe.c 7f54982de40509458ee7ede8e356dccc19f5b161
F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
-F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
-F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f
-F src/vdbeaux.c 762c2b146cf5fe7a7f743af1bbfed4a966aa937a
-F src/vdbeblob.c e0ce3c54cc0c183af2ec67b63a289acf92251df4
-F src/vdbemem.c 23723a12cd3ba7ab3099193094cbb2eb78956aa9
-F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
+F src/vdbeInt.h 6e6f28e9bccc6c703dca1372fd661c57b5c15fb0
+F src/vdbeapi.c 8e9324fd35eb70d0b5904bd1af40f2598744dc4d
+F src/vdbeaux.c 33448d23b857654dd69ed2103611f5c733606f68
+F src/vdbeblob.c 18955f0ee6b133cd08e1592010cb9a6b11e9984c
+F src/vdbemem.c 411649a35686f54268ccabeda175322c4697f5a6
+F src/vdbetrace.c 3ba13bc32bdf16d2bdea523245fd16736bed67b5
F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
- F src/wal.c dbca424f71678f663a286ab2a98f947af1d412a7
- F src/wal.h c1aac6593a0b02b15dc625987e619edeab39292e
-F src/wal.c 23facfd0f148ac72729fe28bbf973fe0458757b6
++F src/wal.c e6a609ab090eeb27013cf908a979e448859d01c7
+ F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
-F src/where.c fa22d45b2577c77146f2e894d58011d472d64103
+F src/where.c af069e6b53234118014dabfece96a9515b69d76b
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
-F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
+F test/all.test 51756962d522e474338e9b2ebb26e7364d4aa125
F test/alter.test 15f9224868b290d6bf7a63f31437f31aee070636
F test/alter2.test 75f731508f1bf27ba09a6075c66cd02216ba464b
F test/alter3.test 8677e48d95536f7a6ed86a1a774744dadcc22b07
F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347
F test/null.test a8b09b8ed87852742343b33441a9240022108993
F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec
- F test/pager1.test 7006a8b5dd3df1fe0d51d7da014333d7dc099778
-F test/pager1.test 1e07368795dc6205a046a7a29f4455a9d5195d19
-F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3
++F test/pager1.test d8672fd0af5f4f9b99b06283d00f01547809bebe
+F test/pager2.test 745b911dde3d1f24ae0870bd433dfa83d7c658c1
F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
F test/pagerfault.test 9de4d3e0c59970b4c6cb8dac511fa242f335d8a7
F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401
F test/trigger9.test 5b0789f1c5c4600961f8e68511b825b87be53e31
F test/triggerA.test eaf11a29db2a11967d2d4b49d37f92bce598194e
F test/triggerB.test 56780c031b454abac2340dbb3b71ac5c56c3d7fe
-F test/triggerC.test 2a23edcc00684d084902ba5ec93e721775c3a70a
+F test/triggerC.test 8a691ff6dd47df2e57395bbec4b62101fac0f363
F test/triggerD.test c6add3817351451e419f6ff9e9a259b02b6e2de7
+ F test/tt3_checkpoint.c 415eccce672d681b297485fc20f44cdf0eac93af
F test/types.test bf816ce73c7dfcfe26b700c19f97ef4050d194ff
F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84
F test/types3.test a0f66bf12f80fad89493535474f7a6d16fa58150
F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d
- F test/wal.test 70227190e713b3e7eb2a7d5ec3510b66db01f327
- F test/wal2.test 3de797854de175323e7351b5f2514a30d1ee1410
- F test/wal3.test ac51126c36814bce334f66a0a4dbbfa56d429733
+ F test/wal.test f060cae4b2164c4375109a8f803873187234661d
-F test/wal2.test 894d55dda774340fe7bebe239bed9b6130ff23d7
-F test/wal3.test 55529a3fbf0a04670558dbf0b06f04a2f3508db4
++F test/wal2.test c9b23c97329a825415abb004d7502844d72fd8fc
++F test/wal3.test ec87d9dd9e9cebabed4024064e8ff531d336ead2
F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30
- F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b
+ F test/wal5.test 1f99651d856c8b9e1376781c981d1b903e93a478
+F test/wal6.test 07aa31ca8892d0527f2c5c5a9a2a87aa421dfaa8
+ F test/wal_common.tcl a98f17fba96206122eff624db0ab13ec377be4fe
F test/walbak.test 4df1c7369da0301caeb9a48fa45997fd592380e4
F test/walbig.test e882bc1d014afffbfa2b6ba36e0f07d30a633ad0
F test/walcksum.test a37b36375c595e61bdb7e1ec49b5f0979b6fc7ce
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
- P ed759d5a9edb3bba5f48f243df47be29e3fe8cd7 0147d9739f318a02721d3ae0e7be339a19231f60
- R 531c9b98b4934054a140000876bf40a8
- U dan
- Z d29ed65f9181e7ba0766a4c73453d1ce
-P 648dd157ef3b7b790764698fd4dd7107c25212c9 570e79a8eb3bb2d2a15c46c55fbf52c9dd3e3ae8
-R 29ee6d2e4bc9e75a0c4b1469b6aa491c
++P c6d9f7d8c48e1ff405e1c1d98a166974fc829f58 ebf74015f09fe241c1c6902dc8954f2b59ab41ec
++R 0634baae0b43c2b82e8b9905e8c6ee5b
+ U drh
-Z 62a52f8bb2681a24e7959006560a6980
++Z d29f42a4b972ec3903a5f796629ef74c
+ -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
++Version: GnuPG v1.4.10 (Darwin)
+
-iD8DBQFM5sdNoxKgR168RlERAn8IAJ4xAREF+dTwudzwR6tkh9wg+ffZegCeIyuW
-SnmYKb+i1Y56lE+LONz+l/g=
-=HICj
++iEYEARECAAYFAk1Jh4EACgkQoxKgR168RlEDdgCfTySKHScQj7r5Q2WPZ7harLi+
++uBIAn0+3gnlHjhVd4fzemcV4FGDrMm/Y
++=REwF
+ -----END PGP SIGNATURE-----
}
catch { db close }
}
- }
+ }
+#-------------------------------------------------------------------------
+# Test that "PRAGMA checkpoint_fullsync" appears to be working.
+#
+foreach {tn sql reslist} {
+ 1 { } {8 0 3 0 5 0}
+ 2 { PRAGMA checkpoint_fullfsync = 1 } {8 4 3 2 5 2}
+ 3 { PRAGMA checkpoint_fullfsync = 0 } {8 0 3 0 5 0}
+} {
+ faultsim_delete_and_reopen
+
+ execsql $sql
+ do_execsql_test wal2-14.$tn.1 { PRAGMA journal_mode = WAL } {wal}
+
+ set sqlite_sync_count 0
+ set sqlite_fullsync_count 0
+
+ do_execsql_test wal2-14.$tn.2 {
+ PRAGMA wal_autocheckpoint = 10;
+ CREATE TABLE t1(a, b); -- 2 wal syncs
+ INSERT INTO t1 VALUES(1, 2); -- 1 wal sync
+ PRAGMA wal_checkpoint; -- 1 wal sync, 1 db sync
+ BEGIN;
+ INSERT INTO t1 VALUES(3, 4);
+ INSERT INTO t1 VALUES(5, 6);
+ COMMIT; -- 1 wal sync
+ PRAGMA wal_checkpoint; -- 1 wal sync, 1 db sync
+ } {10}
+
+ do_test wal2-14.$tn.3 {
+ list $sqlite_sync_count $sqlite_fullsync_count
+ } [lrange $reslist 0 1]
+
+ set sqlite_sync_count 0
+ set sqlite_fullsync_count 0
+
+ do_test wal2-14.$tn.4 {
+ execsql { INSERT INTO t1 VALUES(7, zeroblob(12*4096)) }
+ list $sqlite_sync_count $sqlite_fullsync_count
+ } [lrange $reslist 2 3]
+
+ set sqlite_sync_count 0
+ set sqlite_fullsync_count 0
+
+ do_test wal2-14.$tn.5 {
+ execsql { PRAGMA wal_autocheckpoint = 1000 }
+ execsql { INSERT INTO t1 VALUES(9, 10) }
+ execsql { INSERT INTO t1 VALUES(11, 12) }
+ execsql { INSERT INTO t1 VALUES(13, 14) }
+ db close
+ list $sqlite_sync_count $sqlite_fullsync_count
+ } [lrange $reslist 4 5]
+}
+
+catch { db close }
+
+# PRAGMA checkpoint_fullsync
+# PRAGMA fullfsync
+# PRAGMA synchronous
+#
+foreach {tn settings commit_sync ckpt_sync} {
+ 1 {0 0 off} {0 0} {0 0}
+ 2 {0 0 normal} {0 0} {2 0}
+ 3 {0 0 full} {1 0} {2 0}
+
+ 4 {0 1 off} {0 0} {0 0}
+ 5 {0 1 normal} {0 0} {0 2}
+ 6 {0 1 full} {0 1} {0 2}
+
+ 7 {1 0 off} {0 0} {0 0}
+ 8 {1 0 normal} {0 0} {0 2}
+ 9 {1 0 full} {1 0} {0 2}
+
+ 10 {1 1 off} {0 0} {0 0}
+ 11 {1 1 normal} {0 0} {0 2}
+ 12 {1 1 full} {0 1} {0 2}
+} {
+ forcedelete test.db
+
+ testvfs tvfs -default 1
+ tvfs filter xSync
+ tvfs script xSyncCb
+ proc xSyncCb {method file fileid flags} {
+ incr ::sync($flags)
+ }
+
+ sqlite3 db test.db
+ do_execsql_test 15.$tn.1 "
+ CREATE TABLE t1(x);
+ PRAGMA journal_mode = WAL;
+ PRAGMA checkpoint_fullfsync = [lindex $settings 0];
+ PRAGMA fullfsync = [lindex $settings 1];
+ PRAGMA synchronous = [lindex $settings 2];
+ " {wal}
+
+ do_test 15.$tn.2 {
+ set sync(normal) 0
+ set sync(full) 0
+ execsql { INSERT INTO t1 VALUES('abc') }
+ list $::sync(normal) $::sync(full)
+ } $commit_sync
+
+ do_test 15.$tn.3 {
+ set sync(normal) 0
+ set sync(full) 0
+ execsql { INSERT INTO t1 VALUES('def') }
+ list $::sync(normal) $::sync(full)
+ } $commit_sync
+
+ do_test 15.$tn.4 {
+ set sync(normal) 0
+ set sync(full) 0
+ execsql { PRAGMA wal_checkpoint }
+ list $::sync(normal) $::sync(full)
+ } $ckpt_sync
+
+ db close
+ tvfs delete
+}
+
+
+
finish_test