| Index: third_party/sqlite/src/test/wal.test
|
| diff --git a/third_party/sqlite/src/test/wal.test b/third_party/sqlite/src/test/wal.test
|
| index bfe3634577b753272fe28b4aebc58b696e1c3593..bb164bb76ad1aa38a4e5d4203e608679e1001e50 100644
|
| --- a/third_party/sqlite/src/test/wal.test
|
| +++ b/third_party/sqlite/src/test/wal.test
|
| @@ -712,7 +712,7 @@ do_test wal-11.5 {
|
| do_test wal-11.6 {
|
| execsql COMMIT
|
| list [expr [file size test.db]/1024] [file size test.db-wal]
|
| -} [list 3 [wal_file_size 41 1024]]
|
| +} [list 3 [wal_file_size 40 1024]]
|
| do_test wal-11.7 {
|
| execsql {
|
| SELECT count(*) FROM t1;
|
| @@ -722,15 +722,22 @@ do_test wal-11.7 {
|
| do_test wal-11.8 {
|
| execsql { PRAGMA wal_checkpoint }
|
| list [expr [file size test.db]/1024] [file size test.db-wal]
|
| -} [list 37 [wal_file_size 41 1024]]
|
| +} [list 37 [wal_file_size 40 1024]]
|
| do_test wal-11.9 {
|
| db close
|
| 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}
|
| +
|
| +# After adding the capability of WAL to overwrite prior uncommitted
|
| +# frame in the WAL-file with revised content, the size of the WAL file
|
| +# following cache-spill is smaller.
|
| +#
|
| +#set nWal 39
|
| +#if {[permutation]!="mmap"} {set nWal 37}
|
| +#ifcapable !mmap {set nWal 37}
|
| +set nWal 34
|
| +
|
| do_test wal-11.10 {
|
| execsql {
|
| PRAGMA cache_size = 10;
|
| @@ -818,91 +825,6 @@ db2 close
|
| 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 {
|
| - 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.
|
| #
|
| # The problem was that after performing a checkpoint using a connection
|
| @@ -1456,6 +1378,7 @@ do_test wal-21.3 {
|
| #-------------------------------------------------------------------------
|
| # Test reading and writing of databases with different page-sizes.
|
| #
|
| +incr ::do_not_use_codec
|
| foreach pgsz {512 1024 2048 4096 8192 16384 32768 65536} {
|
| do_multiclient_test tn [string map [list %PGSZ% $pgsz] {
|
| do_test wal-22.%PGSZ%.$tn.1 {
|
| @@ -1476,6 +1399,7 @@ foreach pgsz {512 1024 2048 4096 8192 16384 32768 65536} {
|
| } {0}
|
| }]
|
| }
|
| +incr ::do_not_use_codec -1
|
|
|
| #-------------------------------------------------------------------------
|
| # Test that when 1 or more pages are recovered from a WAL file,
|
|
|