Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Documentation updates prior to release 3.4.0. Enhanced support for soak testing in the test scripts. (CVS 4084) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
eec387103869940697487ec5226eaed0 |
User & Date: | drh 2007-06-18 12:22:43.000 |
Context
2007-06-18
| ||
13:33 | Version 3.4.0 (CVS 4085) (check-in: 2647980fba user: drh tags: trunk) | |
12:22 | Documentation updates prior to release 3.4.0. Enhanced support for soak testing in the test scripts. (CVS 4084) (check-in: eec3871038 user: drh tags: trunk) | |
2007-06-16
| ||
18:39 | Fix a faulty assert() in the pager. (CVS 4083) (check-in: 4cff47b061 user: drh tags: trunk) | |
Changes
Changes to main.mk.
︙ | ︙ | |||
449 450 451 452 453 454 455 456 457 458 459 460 461 462 | -DSQLITE_SERVER=1 -o testfixture$(EXE) \ $(TESTSRC) $(TOP)/src/tclsqlite.c \ libsqlite3.a $(LIBTCL) $(THREADLIB) fulltest: testfixture$(EXE) sqlite3$(EXE) ./testfixture$(EXE) $(TOP)/test/all.test test: testfixture$(EXE) sqlite3$(EXE) ./testfixture$(EXE) $(TOP)/test/quick.test sqlite3_analyzer$(EXE): $(TOP)/src/tclsqlite.c libsqlite3.a $(TESTSRC) \ $(TOP)/tool/spaceanal.tcl sed \ -e '/^#/d' \ | > > > | 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 | -DSQLITE_SERVER=1 -o testfixture$(EXE) \ $(TESTSRC) $(TOP)/src/tclsqlite.c \ libsqlite3.a $(LIBTCL) $(THREADLIB) fulltest: testfixture$(EXE) sqlite3$(EXE) ./testfixture$(EXE) $(TOP)/test/all.test soaktest: testfixture$(EXE) sqlite3$(EXE) ./testfixture$(EXE) $(TOP)/test/all.test -soak 1 test: testfixture$(EXE) sqlite3$(EXE) ./testfixture$(EXE) $(TOP)/test/quick.test sqlite3_analyzer$(EXE): $(TOP)/src/tclsqlite.c libsqlite3.a $(TESTSRC) \ $(TOP)/tool/spaceanal.tcl sed \ -e '/^#/d' \ |
︙ | ︙ |
Changes to test/all.test.
1 2 3 4 5 6 7 8 9 10 11 12 | # 2001 September 15 # # 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 runs all tests. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 2001 September 15 # # 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 runs all tests. # # $Id: all.test,v 1.44 2007/06/18 12:22:43 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl rename finish_test really_finish_test proc finish_test {} { memleak_check } |
︙ | ︙ | |||
30 31 32 33 34 35 36 37 38 39 40 41 42 43 | switch -- $name { -count { set COUNT $value } -quick { set ISQUICK $value } default { puts stderr "Unknown option: $name" exit } } } } | > > > | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | switch -- $name { -count { set COUNT $value } -quick { set ISQUICK $value } -soak { set SOAKTEST $value } default { puts stderr "Unknown option: $name" exit } } } } |
︙ | ︙ |
Changes to test/fuzz_malloc.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # # This file tests malloc failures in concert with fuzzy SQL generation. # | | > > > > > | > | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # # This file tests malloc failures in concert with fuzzy SQL generation. # # $Id: fuzz_malloc.test,v 1.5 2007/06/18 12:22:43 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Only run these tests if memory debugging is turned on. # if {[info command sqlite_malloc_stat]==""} { puts "Skipping fuzz_malloc tests: not compiled with -DSQLITE_MEMDEBUG=1" finish_test return } source $testdir/fuzz_common.tcl source $testdir/malloc_common.tcl if {[info exists ISQUICK]} { set ::REPEATS 20 } elseif {[info exists SOAKTEST]} { set ::REPEATS 100 } else { set ::REPEATS 40 } # # Usage: do_fuzzy_malloc_test <testname> ?<options>? # # -template # -sqlprep # -repeats |
︙ | ︙ |
Changes to test/quick.test.
1 2 3 4 5 6 7 8 | # # 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 runs all tests. # | | > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # # 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 runs all tests. # # $Id: quick.test,v 1.59 2007/06/18 12:22:43 drh Exp $ proc lshift {lvar} { upvar $lvar l set ret [lindex $l 0] set l [lrange $l 1 end] return $ret } while {[set arg [lshift argv]] != ""} { switch -- $arg { -sharedpagercache { sqlite3_enable_shared_cache 1 } -soak { set SOAKTEST 1 } default { set argv [linsert $argv 0 $arg] break } } } |
︙ | ︙ |
Changes to test/trans.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2001 September 15 # # 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 script is database locks. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2001 September 15 # # 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 script is database locks. # # $Id: trans.test,v 1.35 2007/06/18 12:22:43 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create several tables to work with. |
︙ | ︙ | |||
848 849 850 851 852 853 854 855 856 857 858 859 860 861 | # Repeat the following group of tests 20 times for quick testing and # 40 times for full testing. Each iteration of the test makes table # t3 a little larger, and thus takes a little longer, so doing 40 tests # is more than 2.0 times slower than doing 20 tests. Considerably more. # if {[info exists ISQUICK]} { set limit 20 } else { set limit 40 } # Do rollbacks. Make sure the signature does not change. # for {set i 2} {$i<=$limit} {incr i} { | > > | 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 | # Repeat the following group of tests 20 times for quick testing and # 40 times for full testing. Each iteration of the test makes table # t3 a little larger, and thus takes a little longer, so doing 40 tests # is more than 2.0 times slower than doing 20 tests. Considerably more. # if {[info exists ISQUICK]} { set limit 20 } elseif {[info exists SOAKTEST]} { set limit 100 } else { set limit 40 } # Do rollbacks. Make sure the signature does not change. # for {set i 2} {$i<=$limit} {incr i} { |
︙ | ︙ |
Changes to www/changes.tcl.
︙ | ︙ | |||
24 25 26 27 28 29 30 | puts "<DT><B>$date</B></DT>" regsub -all {[Tt]icket #(\d+)} $desc \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} desc puts "<DD><P><UL>$desc</UL></P>" puts "</DD>" } | | | > > > > > > > | > | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | puts "<DT><B>$date</B></DT>" regsub -all {[Tt]icket #(\d+)} $desc \ {<a href="http://www.sqlite.org/cvstrac/tktview?tn=\1">\0</a>} desc puts "<DD><P><UL>$desc</UL></P>" puts "</DD>" } chng {2007 June 18 (3.4.0)} { <li>Fix a bug that can lead to database corruption if an SQLITE_BUSY error occurs in the middle of an explicit transaction and that transaction is later committed. <a href="http://www.sqlite.org/cvstrac/tktview?tn=2409">Ticket #2409.</a> See the <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError"> CorruptionFollowingBusyError</a> wiki page for details.</i> <li>Fix a bug that can lead to database corruption if autovacuum mode is on and a malloc() failure follows a CREATE TABLE or CREATE INDEX statement which itself follows a cache overflow inside a transaction. See <a href="http://www.sqlite.org/cvstrac/tktview?tn=2418">ticket #2418</a>. </li> <li>Added explicit <a href="limits.html">upper bounds</a> on the sizes and quantities of things SQLite can process. This change might cause compatibility problems for applications that use SQLite in the extreme, which is why the current release is 3.4.0 instead of 3.3.18.</li> <li>Added support for <a href="capi3ref.html#sqlite3_blob_open"> Incremental BLOB I/O</a>.</li> <li>Added the <a href="capi3ref.html#sqlite3_bind_zeroblob">zeroblob API</a> and the <a href="lang_expr.html#zeroblob">zeroblob()</a> SQL function.</li> <li>Added support for <a href="pragma.html#pragma_incremental_vacuum"> Incremental Vacuum</a>.</li> <li>Added the SQLITE_MIXED_ENDIAN_64BIT_FLOAT compile-time option to suppport ARM7 processors with goofy endianness.</li> <li>Removed all instances of sprintf() and strcpy() from the core library.</li> <li>Added support for <a href="http://www.icu-project.org/"> International Components for Unicode (ICU)</a> to the full-text search extensions. </ul><p> |
︙ | ︙ |
Changes to www/index.tcl.
︙ | ︙ | |||
67 68 69 70 71 72 73 | proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } | | > | | > | > | > > > | > | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | proc newsitem {date title text} { puts "<h3>$date - $title</h3>" regsub -all "\n( *\n)+" $text "</p>\n\n<p>" txt puts "<p>$txt</p>" puts "<hr width=\"50%\">" } newsitem {2007-Jun-18} {Version 3.4.0} { This release fixes two separate bugs either of which can lead to database corruption. Upgrading is strongly recommended. If you must continue using an older version of SQLite, please at least read about how to avoid these bugs at <a href="http://www.sqlite.org/cvstrac/wiki?p=CorruptionFollowingBusyError"> CorruptionFollowingBusyError</a> and <a href="http://www.sqlite.org/cvstrac/tktview?tn=2418">ticket #2418</a> <p> This release also adds explicit <a href="limits.html">limits</a> on the sizes and quantities of things SQLite will handle. The new limits might causes compatibility problems for existing applications that use excessively large strings, BLOBs, tables, or SQL statements. The new limits can be increased at compile-time to work around any problems that arise. Nevertheless, the version number of this release is 3.4.0 instead of 3.3.18 in order to call attention to the possible incompatibility. </p> There are also new features, including <a href="capi3ref.html#sqlite3_blob_open">incremental BLOB I/O</a> and <a href="pragma.html#pragma_incremental_vacuum">incremental vacuum</a>. See the <a href="changes.html">change log</a> for additional information. } |
︙ | ︙ | |||
103 104 105 106 107 108 109 | VACUUM from running if a NULL value was in a UNIQUE column. } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } | | | 110 111 112 113 114 115 116 117 | VACUUM from running if a NULL value was in a UNIQUE column. } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } footer {$Id: index.tcl,v 1.157 2007/06/18 12:22:43 drh Exp $} |
Changes to www/limits.tcl.
1 2 3 | # # Run this script to generate the limits.html output file # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this script to generate the limits.html output file # set rcsid {$Id: limits.tcl,v 1.3 2007/06/18 12:22:43 drh Exp $} source common.tcl header {Implementation Limits For SQLite} puts { <h2>Limits In SQLite</h2> <p> "Limits" in the context of this article means sizes or |
︙ | ︙ | |||
295 296 297 298 299 300 301 | limit at run-time. </p> <p> Note that the transaction processing in SQLite requires two bits of heap memory for every page in the database file. For databases of a few megabytes in size, this amounts to only a few hundred | | | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 | limit at run-time. </p> <p> Note that the transaction processing in SQLite requires two bits of heap memory for every page in the database file. For databases of a few megabytes in size, this amounts to only a few hundred bytes of heap memory. But for gigabyte-sized databases the amount of heap memory required is getting into the kilobyte range and for terabyte-sized databases, megabytes of heap memory must be allocated and zeroed at each transaction. SQLite will support very large databases in theory, but the current implementation is optimized for the common SQLite use cases of embedded devices and persistent stores for desktop applications. In other words, SQLite is designed for use with databases sized in kilobytes or |
︙ | ︙ |
Changes to www/pragma.tcl.
1 2 3 | # # Run this Tcl script to generate the pragma.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the pragma.html file. # set rcsid {$Id: pragma.tcl,v 1.25 2007/06/18 12:22:43 drh Exp $} source common.tcl header {Pragma statements supported by SQLite} proc Section {name {label {}}} { puts "\n<hr />" if {$label!=""} { puts "<a name=\"$label\"></a>" |
︙ | ︙ | |||
251 252 253 254 255 256 257 | be removed from the freelist. The database file is truncated by the same amount. The incremental_vacuum pragma has no effect if the database is not in <a href="#pragma_auto_vacuum">auto_vacuum==incremental</a> mode or if there are no pages on the freelist. If there are fewer than <i>N</i> pages on the freelist, then the entire freelist is cleared.</p> | | | 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | be removed from the freelist. The database file is truncated by the same amount. The incremental_vacuum pragma has no effect if the database is not in <a href="#pragma_auto_vacuum">auto_vacuum==incremental</a> mode or if there are no pages on the freelist. If there are fewer than <i>N</i> pages on the freelist, then the entire freelist is cleared.</p> <p>As of version 3.4.0 (the first version that supports incremental_vacuum) this feature is still experimental. Possible future changes include enhancing incremental vacuum to do defragmentation and node repacking just as the full-blown <a href="lang_vacuum.html">VACUUM</a> command does. And incremental vacuum may be promoted from a pragma to a separate SQL command, or perhaps some variation on the VACUUM command. Programmers are cautioned to not become enamored with the |
︙ | ︙ |