Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Prepare for the release of version 3.3.0. (CVS 2913) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
302993ae16750c56fd1418531ba716cf |
User & Date: | drh 2006-01-11 01:08:34.000 |
Context
2006-01-11
| ||
01:28 | Add new APIs to the sqlite3.def file. (CVS 2914) (check-in: 9258931a80 user: drh tags: trunk) | |
01:08 | Prepare for the release of version 3.3.0. (CVS 2913) (check-in: 302993ae16 user: drh tags: trunk) | |
2006-01-10
| ||
23:00 | Fix a typo in the FAQ. (CVS 2912) (check-in: 5be03a361d user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 3.3.0 |
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.34 2006/01/11 01:08:34 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl rename finish_test really_finish_test proc finish_test {} {memleak_check} if {[file exists ./sqlite_test_count]} { |
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | crash.test autovacuum_crash.test quick.test malloc.test misuse.test memleak.test } # Test files btree2.test and btree4.test don't work if the # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend # on tables being allocated starting at page 2). # ifcapable default_autovacuum { lappend EXCLUDE btree2.test lappend EXCLUDE btree4.test } for {set Counter 0} {$Counter<$COUNT && $nErr==0} {incr Counter} { if {$Counter%2} { set ::SETUP_SQL {PRAGMA default_synchronous=off;} } else { catch {unset ::SETUP_SQL} } foreach testfile [lsort -dictionary [glob $testdir/*.test]] { set tail [file tail $testfile] if {[lsearch -exact $EXCLUDE $tail]>=0} continue source $testfile catch {db close} if {$sqlite_open_file_count>0} { puts "$tail did not close all files: $sqlite_open_file_count" incr nErr lappend ::failList $tail } | > > > > > > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 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 | crash.test autovacuum_crash.test quick.test malloc.test misuse.test memleak.test } # Files to include in the test. If this list is empty then everything # that is not in the EXCLUDE list is run. # set INCLUDE { } # Test files btree2.test and btree4.test don't work if the # SQLITE_DEFAULT_AUTOVACUUM macro is defined to true (because they depend # on tables being allocated starting at page 2). # ifcapable default_autovacuum { lappend EXCLUDE btree2.test lappend EXCLUDE btree4.test } for {set Counter 0} {$Counter<$COUNT && $nErr==0} {incr Counter} { if {$Counter%2} { set ::SETUP_SQL {PRAGMA default_synchronous=off;} } else { catch {unset ::SETUP_SQL} } foreach testfile [lsort -dictionary [glob $testdir/*.test]] { set tail [file tail $testfile] if {[lsearch -exact $EXCLUDE $tail]>=0} continue if {[llength $INCLUDE]>0 && [lsearch -exact $INCLUDE $tail]<0} continue source $testfile catch {db close} if {$sqlite_open_file_count>0} { puts "$tail did not close all files: $sqlite_open_file_count" incr nErr lappend ::failList $tail } |
︙ | ︙ |
Changes to test/manydb.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests the ability of the library to open # many different databases at the same time without leaking memory. # | | > | 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 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests the ability of the library to open # many different databases at the same time without leaking memory. # # $Id: manydb.test,v 1.3 2006/01/11 01:08:34 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl set N 300 # First test how many file descriptors are available for use. To open a # database for writing SQLite requires 3 file descriptors (the database, the # journal and the directory). set filehandles {} catch { for {set i 0} {$i<($N * 3)} {incr i} { lappend filehandles [open testfile.1 w] } } foreach fd $filehandles { close $fd |
︙ | ︙ |
Changes to test/shared.test.
1 2 3 4 5 6 7 8 9 10 11 | # 2005 December 30 # # 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. # #*********************************************************************** # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 2005 December 30 # # 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. # #*********************************************************************** # # $Id: shared.test,v 1.10 2006/01/11 01:08:34 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl db close ifcapable !shared_cache { finish_test |
︙ | ︙ | |||
481 482 483 484 485 486 487 488 489 490 491 492 493 494 | sqlite3 db2 test.db execsql { PRAGMA auto_vacuum = 1; BEGIN; CREATE TABLE t1(a PRIMARY KEY, b); CREATE TABLE t2(a PRIMARY KEY, b); } for {set i 0} {$i < 100} {incr i} { set a [string repeat "$i " 20] set b [string repeat "$i " 20] db eval { INSERT INTO t1 VALUES($a, $b); } lappend ::contents [list [expr $i+1] $a $b] | > | 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 | sqlite3 db2 test.db execsql { PRAGMA auto_vacuum = 1; BEGIN; CREATE TABLE t1(a PRIMARY KEY, b); CREATE TABLE t2(a PRIMARY KEY, b); } set ::contents {} for {set i 0} {$i < 100} {incr i} { set a [string repeat "$i " 20] set b [string repeat "$i " 20] db eval { INSERT INTO t1 VALUES($a, $b); } lappend ::contents [list [expr $i+1] $a $b] |
︙ | ︙ | |||
543 544 545 546 547 548 549 550 551 552 553 554 555 556 | } } set error } {0} catch {db close} catch {db2 close} #-------------------------------------------------------------------------- # The following tests try to trick the shared-cache code into assuming # the wrong encoding for a database. # file delete -force test.db test.db-journal do_test shared-8.1.1 { | > | 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 | } } set error } {0} catch {db close} catch {db2 close} unset -nocomplain contents #-------------------------------------------------------------------------- # The following tests try to trick the shared-cache code into assuming # the wrong encoding for a database. # file delete -force test.db test.db-journal do_test shared-8.1.1 { |
︙ | ︙ | |||
656 657 658 659 660 661 662 | db2 close } {} } ; # End shared-9.* finish_test sqlite3_enable_shared_cache $::enable_shared_cache | < | 658 659 660 661 662 663 664 | db2 close } {} } ; # End shared-9.* finish_test sqlite3_enable_shared_cache $::enable_shared_cache |
Changes to www/changes.tcl.
︙ | ︙ | |||
21 22 23 24 25 26 27 | set label [string map {. _} $vers] puts "<A NAME=\"version_$label\">" } puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } | | | | > | > > > | 21 22 23 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 | set label [string map {. _} $vers] puts "<A NAME=\"version_$label\">" } puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2006 January 10 (3.3.0 alpha)} { <li>CHECK constraints</li> <li>IF EXISTS and IF NOT EXISTS clauses on CREATE/DROP TABLE/INDEX.</li> <li>DESC indices</li> <li>More efficient encoding of boolean values resulting in smaller database files</li> <li>More aggressive SQLITE_OMIT_FLOATING_POINT</li> <li>Separate INTEGER and REAL affinity</li> <li>Added a virtual function layer for the OS interface</li> <li>"exists" method added to the TCL interface</li> <li>Improved response to out-of-memory errors</li> <li>Database cache can be optionally shared between connections in the same thread</li> <li>Optional READ UNCOMMITTED isolation (instead of the default isolation level of SERIALIZABLE) and table level locking when database connections share a common cache.</li> } chng {2005 December 19 (3.2.8)} { <li>Fix an obscure bug that can cause database corruption under the following unusual circumstances: A large INSERT or UPDATE statement which is part of an even larger transaction fails due to a uniqueness contraint but the containing transaction commits.</li> |
︙ | ︙ |
Changes to www/faq.tcl.
1 2 3 | # # Run this script to generated a faq.html output file # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this script to generated a faq.html output file # set rcsid {$Id: faq.tcl,v 1.33 2006/01/11 01:08:34 drh Exp $} source common.tcl header {SQLite Frequently Asked Questions</title>} set cnt 1 proc faq {question answer} { set ::faq($::cnt) [list [string trim $question] [string trim $answer]] incr ::cnt |
︙ | ︙ | |||
198 199 200 201 202 203 204 | or more threads.</p> <p>An <b>sqlite3</b> structure can only be used in the same thread that called <a href="capi3ref#sqlite3_open">sqlite3_open</a> to create it. You cannot open a database in one thread then pass the handle off to another thread for it to use. This is due to limitations (bugs?) in many common threading | | > > > > > > | | | 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | or more threads.</p> <p>An <b>sqlite3</b> structure can only be used in the same thread that called <a href="capi3ref#sqlite3_open">sqlite3_open</a> to create it. You cannot open a database in one thread then pass the handle off to another thread for it to use. This is due to limitations (bugs?) in many common threading implementations such as on RedHat9. Specifically, an fcntl() lock created by one thread cannot be removed or modified by a different thread on the troublesome systems. And since SQLite uses fcntl() locks heavily for concurrency control, serious problems arise if you start moving database connections across threads.</p> <p>There may be ways to work around the fcntl() lock problems in Linux, but they are complex and exceedingly difficult to test for correctness. For that reason, SQLite currently takes the safe approach and disallows the sharing of handles among threads.</p> <p>Under UNIX, you should not carry an open SQLite database across a fork() system call into the child process. Problems will result if you do.</p> } |
︙ | ︙ |
Changes to www/formatchng.tcl.
1 2 3 | # # Run this Tcl script to generate the formatchng.html file. # | | | 1 2 3 4 5 6 7 8 9 10 11 | # # Run this Tcl script to generate the formatchng.html file. # set rcsid {$Id: formatchng.tcl,v 1.15 2006/01/11 01:08:34 drh Exp $ } source common.tcl header {File Format Changes in SQLite} puts { <h2>File Format Changes in SQLite</h2> <p> Every effort is made to keep SQLite fully backwards compatible from |
︙ | ︙ | |||
207 208 209 210 211 212 213 214 215 216 217 218 219 220 | not be read by a version of SQLite prior to 3.1.4. Running <a href="lang_vacuum.html">VACUUM</a> after the ALTER TABLE restores the database to a format such that it can be read by earlier SQLite versions.</p> </td> </tr> </table> </blockquote> <p> To perform a database reload, have ready versions of the <b>sqlite</b> command-line utility for both the old and new version of SQLite. Call these two executables "<b>sqlite-old</b>" | > > > > > > > > > > | 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | not be read by a version of SQLite prior to 3.1.4. Running <a href="lang_vacuum.html">VACUUM</a> after the ALTER TABLE restores the database to a format such that it can be read by earlier SQLite versions.</p> </td> </tr> <tr> <td valign="top">3.2.8 to 3.3.0</td> <td valign="top">2006-Jan-10</td> <td><p>Version 3.3.0 uses a new encoding for binary values that uses less disk space. Version 3.3.0 can read and write database files created by prior versions of SQLite. But prior versions of SQLite will not be able to read or write databases created by Version 3.3.0</p> </td> </tr> </table> </blockquote> <p> To perform a database reload, have ready versions of the <b>sqlite</b> command-line utility for both the old and new version of SQLite. Call these two executables "<b>sqlite-old</b>" |
︙ | ︙ |
Changes to www/index.tcl.
︙ | ︙ | |||
61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 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 {2005-Dec-19} {Versions 3.2.8 and 2.8.17} { These versions contain one-line changes to 3.2.7 and 2.8.16 to fix a bug that has been present since March of 2002 and version 2.4.0. That bug might possibly cause database corruption if a large INSERT or UPDATE statement within a multi-statement transaction fails due to a uniqueness constraint but the containing transaction commits. | > > > > > > > > > > > > > > > | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 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 {2006-Jan-10} {Version 3.3.0 alpha} { Version 3.3.0 adds support for CHECK constraints, DESC indices, separate REAL and INTEGER column affinities, a new OS interface layer design, and many other changes. The code passed a regression test but should still be considered alpha. Please report any problems. The file format for version 3.3.0 has changed slightly in order provide a more efficient encoding of binary values. SQLite 3.3.0 will read and write legacy databases created with any prior version of SQLite 3. But databases created by version 3.3.0 will not be readable or writable by earlier versions of the SQLite. The older file format can be specified at compile-time for those rare cases where it is needed. } newsitem {2005-Dec-19} {Versions 3.2.8 and 2.8.17} { These versions contain one-line changes to 3.2.7 and 2.8.16 to fix a bug that has been present since March of 2002 and version 2.4.0. That bug might possibly cause database corruption if a large INSERT or UPDATE statement within a multi-statement transaction fails due to a uniqueness constraint but the containing transaction commits. |
︙ | ︙ | |||
116 117 118 119 120 121 122 | } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } | | | 131 132 133 134 135 136 137 138 | } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } footer {$Id: index.tcl,v 1.129 2006/01/11 01:08:34 drh Exp $} |