- C Update\stest\scases\sto\saccount\sfor\sthe\schange\sin\sthe\sprevious\scommit.
- D 2010-11-18T16:14:24
-C Added\ssome\stests\sto\scheck\sthat\sumlaut\scharacters\sare\ssupported\sin\sfilenames.
-D 2010-11-18T15:44:59
++C Merge\swith\slatest\strunk\schanges.
++D 2010-11-18T16:32:54
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in e7a59672eaeb04408d1fa8501618d7501a3c5e39
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
F src/select.c 550d67688f5e8bc8022faf6d014838afba1415af
F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
- F src/sqlite.h.in 4645a3bddf4481fcc9422ba41acf4e71c1c81e22
-F src/sqlite.h.in 74768e9a569d65a62c99f3d383b37904b4ed7f66
++F src/sqlite.h.in 0dc08ed5d4decf11002e5fee2be0d6ef87798960
F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
-F src/sqliteInt.h dd28f6138c74cf4833e032a989b6ff7885798cf6
+F src/sqliteInt.h 4e7045f17606296bc8e7898d69567fc3cd06b761
F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b
F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e
F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
F src/util.c cd78524566fe45671863eee78685969a4bfd4e4c
F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
- F src/vdbe.c 4bec828e70654c698ef843c29b557bee2c8a0a00
-F src/vdbe.c 63bb1e56a035bc65b20d6f9c7d7c876f19b4605f
++F src/vdbe.c 06f868b6daff465cd805d09b43661d0e0bee62a7
F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4
- F src/vdbeapi.c 5368714fa750270cf6430160287c21adff44582d
+ 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/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
-F src/wal.c f26b8d297bd11cb792e609917f9d4c6718ac8e0e
-F src/wal.h c1aac6593a0b02b15dc625987e619edeab39292e
+F src/wal.c 8eca619a28a70a667c913e5927131250836377a2
+F src/wal.h 7a5fbb00114b7f2cd40c7e1003d4c41ce9d26840
F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
- F src/where.c d5cc65f51661a038a2c6a663a945d5cf4c277b81
+ F src/where.c fa22d45b2577c77146f2e894d58011d472d64103
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
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 c794b8b257af54190bb913678ad3984cbf3311b9
-F test/wal3.test 957a5f2a8fe8a6ff01de1a15285ecf2f376fcaf8
+F test/wal.test dea22218fd68c61fe206f53d508a0552894144b7
+F test/wal2.test 894d55dda774340fe7bebe239bed9b6130ff23d7
+F test/wal3.test 55529a3fbf0a04670558dbf0b06f04a2f3508db4
F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30
- F test/wal5.test 4e2854d7584dd97a73e7ce0f47bcbbe5c592fe29
-F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b
++F test/wal5.test e5330471fc284d9ae62a2a18c9dfd10b6605d8b6
+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 72787c010c8944e8fcf9c98aa4482f129142d8e9
- R e8b8625daa4f884d804e2c6d9b55ed2e
-P 76681870a4705179f78976e7fda638a6fea0b9f9
-R 919bf4eab147c8998416dfbf378b675b
-U shaneh
-Z aafd80be2caa03cdbfe5df1baca3e3f0
++P ae089ec881beb1c2d278303ba964aaeffad1afe4 c36f275d70ec8f6dead6adac02885026fdff9666
++R dda1122b35baa4cce662182aeeace1c2
+U dan
- Z f89794a71de2f3c0c0dca2ba94548ae2
++Z ba40359d70663cc285a38d5d7d7027de
--- /dev/null
- breakpoint
+# 2010 April 13
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library. The
+# focus of this file is testing the operation of "blocking-checkpoint"
+# operations.
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+source $testdir/lock_common.tcl
+source $testdir/wal_common.tcl
+ifcapable !wal {finish_test ; return }
+
+set testprefix wal5
+
+do_multiclient_test tn {
+
+ proc db_page_count {} { expr [file size test.db] / 1024 }
+ proc wal_page_count {} { wal_frame_count test.db-wal 1024 }
+
+ set ::nBusyHandler 0
+ set ::busy_handler_script ""
+ proc busyhandler {n} {
+ incr ::nBusyHandler
+ eval $::busy_handler_script
+ return 0
+ }
+
+ proc reopen_all {} {
+ code1 {db close}
+ code2 {db2 close}
+ code3 {db3 close}
+ code1 {sqlite3 db test.db}
+ code2 {sqlite3 db2 test.db}
+ code3 {sqlite3 db3 test.db}
+ sql1 { PRAGMA synchronous = NORMAL }
+ code1 { db busy busyhandler }
+ }
+
+ do_test 1.$tn.1 {
+ reopen_all
+ sql1 {
+ PRAGMA page_size = 1024;
+ PRAGMA auto_vacuum = 0;
+ CREATE TABLE t1(x, y);
+ PRAGMA journal_mode = WAL;
+ INSERT INTO t1 VALUES(1, zeroblob(1200));
+ INSERT INTO t1 VALUES(2, zeroblob(1200));
+ INSERT INTO t1 VALUES(3, zeroblob(1200));
+ }
+ expr [file size test.db] / 1024
+ } {2}
+
+ # Have connection 2 grab a read-lock on the current snapshot.
+ do_test 1.$tn.2 { sql2 { BEGIN; SELECT x FROM t1 } } {1 2 3}
+
+ # Attempt a checkpoint.
+ do_test 1.$tn.3 {
+ sql1 { PRAGMA wal_checkpoint }
+ list [db_page_count] [wal_page_count]
+ } {5 9}
+
+ # Write to the db again. The log cannot wrap because of the lock still
+ # held by connection 2. The busy-handler has not yet been invoked.
+ do_test 1.$tn.4 {
+ sql1 { INSERT INTO t1 VALUES(4, zeroblob(1200)) }
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {5 12 0}
+
+ # Now do a blocking-checkpoint. Set the busy-handler up so that connection
+ # 2 releases its lock on the 6th invocation. The checkpointer should then
+ # proceed to checkpoint the entire log file. Next write should go to the
+ # start of the log file.
+ #
+ set ::busy_handler_script { if {$n==5} { sql2 COMMIT } }
+ do_test 1.$tn.5 {
+ sql1 { PRAGMA wal_checkpoint = RESTART }
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {6 12 6}
+ do_test 1.$tn.6 {
+ set ::nBusyHandler 0
+ sql1 { INSERT INTO t1 VALUES(5, zeroblob(1200)) }
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {6 12 0}
+
+ do_test 1.$tn.7 {
+ reopen_all
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {7 0 0}
+
+ do_test 1.$tn.8 { sql2 { BEGIN ; SELECT x FROM t1 } } {1 2 3 4 5}
+ do_test 1.$tn.9 {
+ sql1 { INSERT INTO t1 VALUES(6, zeroblob(1200)) }
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {7 5 0}
+ do_test 1.$tn.10 { sql3 { BEGIN ; SELECT x FROM t1 } } {1 2 3 4 5 6}
+
+ set ::busy_handler_script {
+ if {$n==5} { sql2 COMMIT }
+ if {$n==6} { set ::db_file_size [db_page_count] }
+ if {$n==7} { sql3 COMMIT }
+ }
+ do_test 1.$tn.11 {
+ sql1 { PRAGMA wal_checkpoint = RESTART }
+ list [db_page_count] [wal_page_count] $::nBusyHandler
+ } {10 5 8}
+ do_test 1.$tn.12 { set ::db_file_size } 10
+}
+
+finish_test