From: dan Date: Thu, 18 Nov 2010 16:32:53 +0000 (+0000) Subject: Merge with latest trunk changes. X-Git-Tag: version-3.7.6~174^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7e0454fc7236beb481cf58e916b4a9e6d51e64f0;p=thirdparty%2Fsqlite.git Merge with latest trunk changes. FossilOrigin-Name: e376480f0855c598c91529abacbd73e31d9f4713 --- 7e0454fc7236beb481cf58e916b4a9e6d51e64f0 diff --cc manifest index d01e3580e2,3cb5c587f0..d497725beb --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - 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 @@@ -176,9 -176,9 +176,9 @@@ F src/resolve.c 1c0f32b64f8e3f555fe1f73 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 @@@ -227,19 -227,19 +227,19 @@@ F src/update.c 227e6cd512108b84f69421fc 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 @@@ -823,12 -824,11 +824,12 @@@ F test/vtabE.test 7c4693638d7797ce2eda1 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 @@@ -887,7 -887,7 +888,7 @@@ F tool/speedtest2.tcl ee2149167303ba8e9 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 diff --cc manifest.uuid index 109db3b96b,749e222b90..dba8fdc840 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - ae089ec881beb1c2d278303ba964aaeffad1afe4 -c36f275d70ec8f6dead6adac02885026fdff9666 ++e376480f0855c598c91529abacbd73e31d9f4713 diff --cc test/wal5.test index aa2014760c,0000000000..49cd839761 mode 100644,000000..100644 --- a/test/wal5.test +++ b/test/wal5.test @@@ -1,119 -1,0 +1,118 @@@ +# 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 { - breakpoint + 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