diff --git a/manifest b/manifest index 79ab2b14bc..4792a3a28f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\sallowing\ssome\sconflicting\stransactions\sto\sbe\scommitted. -D 2015-08-26T18:02:20.162 +C Fix\san\sassert()\sin\spager.c\sthat\scould\sfail\sin\sa\sconcurrent\stransaction. +D 2015-08-26T18:54:45.787 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in e2218eb228374422969de7b1680eda6864affcef F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -324,7 +324,7 @@ F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa F src/os_unix.c 388c023582b17890f10c980b30ec1922b471753b F src/os_win.c 40b3af7a47eb1107d0d69e592bec345a3b7b798a F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca -F src/pager.c 2e2559e64e825e39c033c0744237733cec70d636 +F src/pager.c bb8e237a54d162a6cc22503f71895851dae9a0bb F src/pager.h 1335b624cd540815c8c977172589d208d1c251a6 F src/parse.y 1e645cacb93979c59f2a510ee2c100e769bd5e3c F src/pcache.c cde06aa50962595e412d497e22fd2e07878ba1f0 @@ -524,9 +524,9 @@ F test/collateA.test b8218ab90d1fa5c59dcf156efabb1b2599c580d6 F test/colmeta.test 2c765ea61ee37bc43bbe6d6047f89004e6508eb1 F test/colname.test 08948a4809d22817e0e5de89c7c0a8bd90cb551b F test/concfault.test 500f17c3fcfe7705114422bcc6ddd3c740001a43 -F test/concurrent.test ecf97fdcfb11dda1db52b2714d7d52d0922789f1 +F test/concurrent.test 634b6a88f1942f5d68cc89d4d5efa2b11ba7913c F test/concurrent2.test de43cd6703360dc6268907f1617f0d353d8a43c1 -F test/concurrent3.test 8474b7ac80bc977bab4fe014c0b036c16779d8cb +F test/concurrent3.test 0a5f7e3036d1eccf0782d7153ac21f5f222e9468 F test/conflict.test 841bcf7cabbfca39c577eb8411ea8601843b46a8 F test/conflict2.test 0d3af4fb534fa1bd020c79960bb56e4d52655f09 F test/conflict3.test dec0634c0f31dec9a4b01c63063e939f0cd21b6b @@ -1382,7 +1382,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 779b1d0e17bc54062b2b09cdbf94e9e2f4bae4f7 -R 522c73a54721e2428308711f9566b92e +P a0566382d564ca17fd13475a44fed8f714742d97 +R 82cb8297df85a5e2338dab90f8e6448e U dan -Z 5afacf522fa16d68d46082708ed9d148 +Z 29e210082fd7b7d5f83c5decd49ba489 diff --git a/manifest.uuid b/manifest.uuid index 5d4bfea3dc..fc6505589c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a0566382d564ca17fd13475a44fed8f714742d97 \ No newline at end of file +69394ddaa2bc9d26477b4359c676c598b733ac9f \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index ecdad403dc..9e6c2a0b9c 100644 --- a/src/pager.c +++ b/src/pager.c @@ -906,7 +906,7 @@ static int assert_pager_state(Pager *p){ if( !pagerUseWal(pPager) ){ assert( p->eLock>=RESERVED_LOCK ); } - assert( pPager->dbSize==pPager->dbOrigSize ); + assert( pPager->dbSize==pPager->dbOrigSize || pPager->pAllRead ); assert( pPager->dbOrigSize==pPager->dbFileSize ); assert( pPager->dbOrigSize==pPager->dbHintSize ); assert( pPager->setMaster==0 ); diff --git a/test/concurrent.test b/test/concurrent.test index 4bc2852c60..4e62d9e33f 100644 --- a/test/concurrent.test +++ b/test/concurrent.test @@ -505,5 +505,26 @@ do_multiclient_test tn { } {1234 5678 ok} } +do_multiclient_test tn { + do_test 5.$tn.1 { + sql1 { + PRAGMA journal_mode = wal; + CREATE TABLE tt(a INTEGER PRIMARY KEY, b); + CREATE TABLE t2(a INTEGER PRIMARY KEY, b); + INSERT INTO tt VALUES(1, randomblob(400)); + BEGIN CONCURRENT; + } + } {wal} + + do_test 5.$tn.2 { + sql1 { UPDATE t2 SET b=5 WHERE a=3 } + sql2 { INSERT INTO tt VALUES(2, randomblob(6000)) } + } {} + + do_test 5.$tn.3 { + sql1 { COMMIT } + } {} +} + finish_test diff --git a/test/concurrent3.test b/test/concurrent3.test index a90fa2b973..3ad6a1cce4 100644 --- a/test/concurrent3.test +++ b/test/concurrent3.test @@ -176,6 +176,7 @@ foreach {tn nRepeat oplist} { 3 100 { 1d 2i } 4 50 { 1d 2i 3d } 5 500 { 1i 2i 3i 4i } + 6 500 { 1i 2d 3d 4d } } { if {[string range $oplist 0 0]=="-"} { array unset rows @@ -205,7 +206,6 @@ foreach {tn nRepeat oplist} { } foreach db $DBLIST { - if {$i==272 && $db=="db4"} breakpoint set rc [catch { $db eval COMMIT } msg] if {$rc} { $db eval ROLLBACK } incr stats($db,$rc)