Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fixes to tcl test files so that they work in auto-vacuum mode. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ea9eaf7480f6fbe2a37813508d1b730d |
User & Date: | dan 2010-08-11 11:35:50.000 |
Context
2010-08-11
| ||
11:59 | Use sqlite3DbFree() instead of sqlite3_free() to free any error message reported by the parser layer while attempting to parse a CREATE TABLE statement passed to sqlite3_declare_vtab(). (check-in: 7c674aaba5 user: dan tags: trunk) | |
11:35 | Fixes to tcl test files so that they work in auto-vacuum mode. (check-in: ea9eaf7480 user: dan tags: trunk) | |
06:14 | Fix memory allocation in proxy locking so that it works with SQLITE_MEMDEBUG. (check-in: f854cbe063 user: drh tags: trunk) | |
Changes
Changes to test/dbstatus.test.
︙ | ︙ | |||
178 179 180 181 182 183 184 | drop_all_tables 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}] # Tests for which the test name ends in an "x" report slightly less | | | < | > > > > > | | 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | drop_all_tables 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}] # Tests for which the test name ends in an "x" report slightly less # memory than is actually freed when all schema items are finalized. # This is because memory allocated by virtual table implementations # for any reason is not counted as "schema memory". # # Additionally, in auto-vacuum mode, dropping tables and indexes causes # the page-cache to shrink. So the amount of memory freed is always # much greater than just that reported by DBSTATUS_SCHEMA_USED in this # case. # if {[string match *x $tn] || $AUTOVACUUM} { 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" |
︙ | ︙ | |||
319 320 321 322 323 324 325 | # 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". # | | | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | # 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". # #puts "$nStmt1 $nFree" 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] } } finish_test |
Changes to test/ioerr5.test.
︙ | ︙ | |||
87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # Dirty (at least) one of the pages in the cache. do_test ioerr5-1.$locking_mode-$iFail.1 { execsql { BEGIN EXCLUSIVE; INSERT INTO a VALUES(1, 'ABCDEFGHIJKLMNOP'); } } {} # Now try to commit the transaction. Cause an IO error to occur # within this operation, which moves the pager into the error state. # set ::sqlite_io_error_persist 1 set ::sqlite_io_error_pending $iFail do_test ioerr5-1.$locking_mode-$iFail.2 { | > > > > > > > > > | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | # Dirty (at least) one of the pages in the cache. do_test ioerr5-1.$locking_mode-$iFail.1 { execsql { BEGIN EXCLUSIVE; INSERT INTO a VALUES(1, 'ABCDEFGHIJKLMNOP'); } } {} # Open a read-only cursor on table "a". If the COMMIT below is # interrupted by a persistent IO error, the pager will transition to # PAGER_ERROR state. If there are no other read-only cursors open, # from there the pager immediately discards all cached data and # switches to PAGER_OPEN state. This read-only cursor stops that # from happening, leaving the pager stuck in PAGER_ERROR state. # set channel [db incrblob -readonly a Name [db last_insert_rowid]] # Now try to commit the transaction. Cause an IO error to occur # within this operation, which moves the pager into the error state. # set ::sqlite_io_error_persist 1 set ::sqlite_io_error_pending $iFail do_test ioerr5-1.$locking_mode-$iFail.2 { |
︙ | ︙ | |||
114 115 116 117 118 119 120 | # Set a very low soft-limit and then try to compile an SQL statement # from UTF-16 text. To do this, SQLite will need to reclaim memory # from the pager that is in error state. Including that associated # with the dirty page. # do_test ioerr5-1.$locking_mode-$iFail.3 { | < < | < < < < | < < < < < | < < < | | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | # Set a very low soft-limit and then try to compile an SQL statement # from UTF-16 text. To do this, SQLite will need to reclaim memory # from the pager that is in error state. Including that associated # with the dirty page. # do_test ioerr5-1.$locking_mode-$iFail.3 { sqlite3_soft_heap_limit 1024 compilesql16 "SELECT 10" } {} close $channel # Ensure that nothing was written to the database while reclaiming # memory from the pager in error state. # do_test ioerr5-1.$locking_mode-$iFail.4 { set fd [open test.db] fconfigure $fd -translation binary -encoding binary set zDatabase2 [read $fd] close $fd expr {$zDatabase eq $zDatabase2} } {1} if {$rc eq [list 0 {}]} { do_test ioerr5.1-$locking_mode-$iFail.3 { execsql { SELECT count(*) FROM a } } [expr $nRow+1] break } } |
︙ | ︙ |