diff options
-rw-r--r-- | manifest | 26 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/malloc.c | 1 | ||||
-rw-r--r-- | test/dbstatus.test | 50 |
4 files changed, 56 insertions, 23 deletions
@@ -1,8 +1,5 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -C Further\sfixes\sto\sthe\sP4_MEM\ssize\smeasurement\slogic. -D 2010-07-26T14:20:07 +C Add\svirtual\stable\stest\scases\sto\sdbstatus.test. +D 2010-07-26T14:47:14 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -139,7 +136,7 @@ F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e F src/loadext.c 6d422ea91cf3d2d00408c5a8f2391cd458da85f8 F src/main.c a487fe90aecaccb142e4a6b738c7e26e99145bcd -F src/malloc.c 1cf0f2f45926c40b638e85e9b67fe5fabd072829 +F src/malloc.c 9d7dc6a52aa13ba3639eb40c573dd7adb3a16813 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 89d4ea8d5cdd55635cbaa48ad53132af6294cbb2 F src/mem2.c 12c91260fd2320eda9355dea5445b137f848c05b @@ -333,7 +330,7 @@ F test/createtab.test 199cf68f44e5d9e87a0b8afc7130fdeb4def3272 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c F test/ctime.test 7bd009071e242aac4f18521581536b652b789a47 F test/date.test 6354b883f922c38046a8efbad187cc95df6da023 -F test/dbstatus.test 77ff0d38db69b4136a6db168c9e1b23f41276201 +F test/dbstatus.test 1a536e002020392ec946a916f727836394566e3d F test/default.test 6faf23ccb300114924353007795aa9a8ec0aa9dc F test/delete.test f7629d9eb245dfca170169cc5c7a735dec34aeb4 F test/delete2.test 3a03f2cca1f9a67ec469915cb8babd6485db43fa @@ -841,14 +838,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 8166f33885b86029bb8a0fbaf70606a0d2d5ec2e -R 206ab46db8056d477c83ba4fb6c527f4 -U drh -Z 33466832801b7ba31895995976b46d64 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFMTZmaoxKgR168RlERAn+pAJ4rC1olXw/iDp2XbDUFSLTSJSuc+wCfRE9f -5SDUlQ0qZ1NrdW8jGONN1jQ= -=xJpP ------END PGP SIGNATURE----- +P 934cda2987c331b57a195ed45e9a91794896672a +R c1701c0ea6fc39bdd7ca655ca980d689 +U dan +Z 9ecff26939461d0a9295122b2a8fa08b diff --git a/manifest.uuid b/manifest.uuid index 0cee61f47..0bdf26ee7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -934cda2987c331b57a195ed45e9a91794896672a
\ No newline at end of file +72b84d066a4eac90a77142c3ea66ef3d21a1104e
\ No newline at end of file diff --git a/src/malloc.c b/src/malloc.c index 73508bdef..6c107f9aa 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -581,6 +581,7 @@ void *sqlite3DbMallocZero(sqlite3 *db, int n){ void *sqlite3DbMallocRaw(sqlite3 *db, int n){ void *p; assert( db==0 || sqlite3_mutex_held(db->mutex) ); + assert( db==0 || db->pnBytesFreed==0 ); #ifndef SQLITE_OMIT_LOOKASIDE if( db ){ LookasideSlot *pBuf; diff --git a/test/dbstatus.test b/test/dbstatus.test index b719e8178..f2caace06 100644 --- a/test/dbstatus.test +++ b/test/dbstatus.test @@ -133,6 +133,10 @@ foreach ::lookaside_buffer_size {0 64 120} { END; SELECT * FROM v1; } + 8x { + CREATE TABLE t1(a, b, UNIQUE(a, b)); + CREATE VIRTUAL TABLE t2 USING echo(t1); + } } { set tn "$::lookaside_buffer_size-$tn" @@ -142,6 +146,9 @@ foreach ::lookaside_buffer_size {0 64 120} { sqlite3 db test.db sqlite3_db_config_lookaside db 0 $::lookaside_buffer_size 500 db cache size 0 + + catch { register_echo_module db } + ifcapable !vtab { if {[string match *x $tn]} continue } # Step 2. execsql $schema @@ -166,9 +173,20 @@ foreach ::lookaside_buffer_size {0 64 120} { set nAlloc4 [lindex [sqlite3_status SQLITE_STATUS_MEMORY_USED 0] 1] incr nAlloc4 [lookaside db] set nSchema4 [lindex [sqlite3_db_status db SQLITE_DBSTATUS_SCHEMA_USED 0] 1] - set nFree [expr {$nAlloc1-$nAlloc2}] - do_test dbstatus-2.$tn.a { expr {$nSchema1-$nSchema2} } $nFree + + # Tests for which the test name ends in an "x" report slightly less + # memory than is actually freed when all statements are finalized. + # This is because a small amount of memory allocated by a virtual table + # implementation using sqlite3_mprintf() is technically considered + # external and so is not counted as "statement memory". + # + if {[string match *x $tn]} { + do_test dbstatus-2.$tn.ax { expr {($nSchema1-$nSchema2)<=$nFree} } 1 + } else { + do_test dbstatus-2.$tn.a { expr {$nSchema1-$nSchema2} } $nFree + } + do_test dbstatus-2.$tn.b { list $nAlloc1 $nSchema1 } "$nAlloc3 $nSchema3" do_test dbstatus-2.$tn.c { list $nAlloc2 $nSchema2 } "$nAlloc4 $nSchema4" } @@ -239,6 +257,14 @@ foreach ::lookaside_buffer_size {0 64 120} { } { SELECT count(*) FROM t1 WHERE upper(a)='ABC'; } + 5x { + CREATE TABLE t1(a, b UNIQUE); + CREATE VIRTUAL TABLE t2 USING echo(t1); + } { + SELECT count(*) FROM t2; + SELECT * FROM t2 WHERE b>5; + SELECT * FROM t2 WHERE b='abcdefg'; + } } { set tn "$::lookaside_buffer_size-$tn" @@ -248,6 +274,9 @@ foreach ::lookaside_buffer_size {0 64 120} { sqlite3 db test.db sqlite3_db_config_lookaside db 0 $::lookaside_buffer_size 500 db cache size 1000 + + catch { register_echo_module db } + ifcapable !vtab { if {[string match *x $tn]} continue } execsql $schema db cache flush @@ -279,8 +308,21 @@ foreach ::lookaside_buffer_size {0 64 120} { set nStmt4 [lindex [sqlite3_db_status db SQLITE_DBSTATUS_STMT_USED 0] 1] set nFree [expr {$nAlloc1-$nAlloc2}] - do_test dbstatus-3.$tn.a { list $nStmt2 } {0} - do_test dbstatus-3.$tn.b { list $nStmt1 } [list $nFree] + + do_test dbstatus-3.$tn.a { expr $nStmt2 } {0} + + # Tests for which the test name ends in an "x" report slightly less + # memory than is actually freed when all statements are finalized. + # This is because a small amount of memory allocated by a virtual table + # implementation using sqlite3_mprintf() is technically considered + # external and so is not counted as "statement memory". + # + if {[string match *x $tn]} { + do_test dbstatus-3.$tn.bx { expr $nStmt1<=$nFree } {1} + } else { + do_test dbstatus-3.$tn.b { expr $nStmt1==$nFree } {1} + } + do_test dbstatus-3.$tn.c { list $nAlloc1 $nStmt1 } [list $nAlloc3 $nStmt3] do_test dbstatus-3.$tn.d { list $nAlloc2 $nStmt2 } [list $nAlloc4 $nStmt4] } |