Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Up the version number and prepare documentation files for the 3.0.7 release. (CVS 1969) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
63e4ed3cc698d660867c297cbedfc25f |
User & Date: | drh 2004-09-18 18:00:24.000 |
Context
2004-09-18
| ||
18:45 | Version 3.0.7 (CVS 1970) (check-in: d82ded9543 user: drh tags: trunk) | |
18:00 | Up the version number and prepare documentation files for the 3.0.7 release. (CVS 1969) (check-in: 63e4ed3cc6 user: drh tags: trunk) | |
2004-09-17
| ||
21:35 | Always include -lpthread on link lines even if it is not needed. (CVS 1968) (check-in: 46a96890f7 user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 3.0.7 |
Changes to www/changes.tcl.
︙ | ︙ | |||
16 17 18 19 20 21 22 23 24 25 26 27 28 29 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2004 September 02 (3.0.6 beta)} { <li>Better detection and handling of corrupt database files.</li> <li>The sqlite3_step() interface returns SQLITE_BUSY if it is unable to commit a change because of a lock</li> <li>Combine the implementations of LIKE and GLOB into a single pattern-matching subroutine.</li> | > > > > > > > > > > > > > > > > | 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 45 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2004 September 18 (3.0.7)} { <li>The BTree module allocates large buffers using malloc() instead of off of the stack, in order to play better on machines with limited stack space.</li> <li>Fixed naming conflicts so that versions 2.8 and 3.0 can be linked and used together in the same ANSI-C source file.</li> <li>New interface: sqlite3_bind_parameter_index()</li> <li>Add support for wildcard parameters of the form: "?nnn"</li> <li>Fix problems found on 64-bit systems.</li> <li>Removed encode.c file (containing unused routines) from the version 3.0 source tree.</li> <li>The sqlite3_trace() callbacks occur before each statement is executed, not when the statement is compiled.</li> <li>Makefile updates and miscellaneous bug fixes.</li> } chng {2004 September 02 (3.0.6 beta)} { <li>Better detection and handling of corrupt database files.</li> <li>The sqlite3_step() interface returns SQLITE_BUSY if it is unable to commit a change because of a lock</li> <li>Combine the implementations of LIKE and GLOB into a single pattern-matching subroutine.</li> |
︙ | ︙ |
Changes to www/docs.tcl.
1 2 3 | # This script generates the "docs.html" page that describes various # sources of documentation available for SQLite. # | | > > > > | 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 | # This script generates the "docs.html" page that describes various # sources of documentation available for SQLite. # set rcsid {$Id: docs.tcl,v 1.6 2004/09/18 18:00:24 drh Exp $} source common.tcl header {SQLite Documentation} puts { <h2>Available Documentation</h2> <table width="100%" cellpadding="5"> } proc doc {name url desc} { puts {<tr><td valign="top" align="right">} regsub -all { +} $name {\ } name puts "<a href=\"$url\">$name</a></td>" puts {<td width="10"></td>} puts {<td align="top" align="left">} puts $desc puts {</td></tr>} } doc {SQLite In 5 Minutes Or Less} {quickstart.html} { A very quick introduction to programming with SQLite. } doc {SQL Syntax} {lang.html} { This document describes the SQL language that is understood by SQLite. } doc {Version 2 C/C++ API} {c_interface.html} { |
︙ | ︙ |
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.25 2004/09/18 18:00:24 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 |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 61 62 | semi-random key generation algorithm of SQLite version 2.3.3 and earlier.</p> <p>Beginning with version 2.2.3, there is a new API function named <b>sqlite_last_insert_rowid()</b> which will return the integer key for the most recent insert operation. See the API documentation for details.</p> } faq { What datatypes does SQLite support? } { | > > | | | | > > | > | 51 52 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 | semi-random key generation algorithm of SQLite version 2.3.3 and earlier.</p> <p>Beginning with version 2.2.3, there is a new API function named <b>sqlite_last_insert_rowid()</b> which will return the integer key for the most recent insert operation. See the API documentation for details.</p> <p>SQLite version 3.0 expands the size of the rowid to 64 bits.</p> } faq { What datatypes does SQLite support? } { <p>SQLite ignores the datatype information that follows the column name in CREATE TABLE. You can put any type of data you want into any column, without regard to the declared datatype of that column. </p> <p>An exception to this rule is a column of type INTEGER PRIMARY KEY. Such columns must hold an integer. An attempt to put a non-integer value into an INTEGER PRIMARY KEY column will generate an error.</p> <p>There is a page on <a href="datatypes.html">datatypes in SQLite version 2.8</a> and another for <a href="datatype3.html">version 3.0</a> that explains this concept further.</p> } faq { SQLite lets me insert a string into a database column of type integer! } { <p>This is a feature, not a bug. SQLite does not enforce data type constraints. Any data can be inserted into any column. You can put arbitrary length strings into integer columns, floating point numbers in boolean columns, or dates in character columns. The datatype you assign to a column in the CREATE TABLE command does not restrict what data can be put into that column. Every column is able to hold an arbitrary length string. (There is one exception: Columns of type INTEGER PRIMARY KEY may only hold an integer. An error will result |
︙ | ︙ | |||
102 103 104 105 106 107 108 | <p>In the sequence on the left, the second insert will fail. In this case, the strings '0' and '0.0' are treated as numbers since they are being inserted into a numeric column and 0==0.0 which violates the uniqueness constraint. But the second insert in the right-hand sequence works. In this case, the constants 0 and 0.0 are treated a strings which means that they are distinct.</p> | | > > | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | <p>In the sequence on the left, the second insert will fail. In this case, the strings '0' and '0.0' are treated as numbers since they are being inserted into a numeric column and 0==0.0 which violates the uniqueness constraint. But the second insert in the right-hand sequence works. In this case, the constants 0 and 0.0 are treated a strings which means that they are distinct.</p> <p>There is a page on <a href="datatypes.html">datatypes in SQLite version 2.8</a> and another for <a href="datatype3.html">version 3.0</a> that explains this concept further.</p> } faq { Why does SQLite think that the expression '0'=='00' is TRUE? } { <p>As of version 2.7.0, it doesn't.</p> |
︙ | ︙ | |||
134 135 136 137 138 139 140 | SELECT count(*) FROM t3 WHERE b=='00'; </pre></blockquote> <p>In this case the answer is 0. B is a text column so a text comparison is done against '00'. '0'!='00' so the WHERE clause returns FALSE and the count is zero.</p> | | > > | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | SELECT count(*) FROM t3 WHERE b=='00'; </pre></blockquote> <p>In this case the answer is 0. B is a text column so a text comparison is done against '00'. '0'!='00' so the WHERE clause returns FALSE and the count is zero.</p> <p>There is a page on <a href="datatypes.html">datatypes in SQLite version 2.8</a> and another for <a href="datatype3.html">version 3.0</a> that explains this concept further.</p> } faq { Why doesn't SQLite allow me to use '0' and '0.0' as the primary key on two different rows of the same table? } { |
︙ | ︙ | |||
303 304 305 306 307 308 309 | </pre></blockquote> } faq { Are there any known size limits to SQLite databases? } { <p>As of version 2.7.4, | | | | < < | < | < < | < < < < > | < < < < < < < < < | < | | | < < | | | | | 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 | </pre></blockquote> } faq { Are there any known size limits to SQLite databases? } { <p>As of version 2.7.4, SQLite can handle databases up to 2<sup>41</sup> bytes (2 terabytes) in size on both Windows and Unix. Older version of SQLite were limited to databases of 2<sup>31</sup> bytes (2 gigabytes).</p> <p>SQLite version 2.8 limits the amount of data in one row to 1 megabyte. SQLite version 3.0 has no limit on the amount of data that can be stored in a single row. </p> <p>The names of tables, indices, view, triggers, and columns can be as long as desired. However, the names of SQL functions (as created by the <a href="c_interface.html#cfunc">sqlite_create_function()</a> API) may not exceed 255 characters in length.</p> } faq { What is the maximum size of a VARCHAR in SQLite? } { <p>SQLite does not enforce datatype constraints. A VARCHAR column can hold as much data as you care to put it in.</p> } faq { Does SQLite support a BLOB type? } { <p>SQLite version 3.0 lets you puts BLOB data into any column, even columns that are declared to hold some other type.</p> <p>SQLite version 2.8 would hold store text data without embedded '\000' characters. If you need to store BLOB data in SQLite version 2.8 you'll want to encode that data first. There is a source file named "<b>src/encode.c</b>" in the SQLite version 2.8 distribution that contains implementations of functions named "<b>sqlite_encode_binary()</b> and <b>sqlite_decode_binary()</b> that can be used for converting binary data to ASCII and back again, if you like.</p> } faq { How do I add or delete columns from an existing table in SQLite. } { <p>SQLite does yes not support the "ALTER TABLE" SQL command. If you what to change the structure of a table, you have to recreate the table. You can save existing data to a temporary table, drop the old table, create the new table, then copy the data back in from the temporary table.</p> <p>For example, suppose you have a table named "t1" with columns names "a", "b", and "c" and that you want to delete column "c" from |
︙ | ︙ | |||
414 415 416 417 418 419 420 421 422 423 424 425 426 427 | faq { Can I use SQLite in my commerical product without paying royalties? } { <p>Yes. SQLite is in the public domain. No claim of ownership is made to any part of the code. You can do anything you want with it.</p> } # End of questions and answers. ############# puts {<h2>Frequently Asked Questions</h2>} # puts {<DL COMPACT>} | > > > > > > > > > > > > > > | 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 | faq { Can I use SQLite in my commerical product without paying royalties? } { <p>Yes. SQLite is in the public domain. No claim of ownership is made to any part of the code. You can do anything you want with it.</p> } faq { How do I use a string literal that contains an embedded single-quote (') character? } { <p>The SQL standard specifies that single-quotes in strings are escaped by putting two single quotes in a row. SQL works like the Pascal programming language in the regard. SQLite follows this standard. Example: </p> <blockquote><pre> INSERT INTO xyz VALUES('5 O''clock'); </pre></blockquote> } # End of questions and answers. ############# puts {<h2>Frequently Asked Questions</h2>} # puts {<DL COMPACT>} |
︙ | ︙ |
Changes to www/index.tcl.
︙ | ︙ | |||
10 11 12 13 14 15 16 | SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Features include: </p> <p><ul> | | > | > | | | 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 | SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Features include: </p> <p><ul> <li>Transaction are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures. <li>Zero-configuration - no setup or administration needed.</li> <li>Implements most of SQL92. (<a href="omitted.html">Features not supported</a>)</li> <li>A complete database is stored in a single disk file.</li> <li>Database files can be freely shared between machines with different byte orders.</li> <li>Supports databases up to 2 terabytes (2<sup>41</sup> bytes) in size.</li> <li>Sizes of strings and BLOBs limited only by available memory.</li> <li>Small code footprint: less than 30K lines of C code, less than 250KB code space (gcc on i486)</li> <li><a href="speed.html">Faster</a> than popular client/server database engines for most common operations.</li> <li>Simple, easy to use <a href="c_interface.html">API</a>.</li> <li><a href="tclsqlite.html">TCL bindings</a> included. Bindings for many other languages <a href="http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers"> available separately.</a></li> <li>Well-commented source code with over 90% test coverage.</li> |
︙ | ︙ | |||
54 55 56 57 58 59 60 | 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%\">" } | | < < < < < < | | < < < < | < < < < < < | | 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 | 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 {2004-Sep-18} {Version 3.0.7} { Version 3.0 has now been in use by multiple projects for several months with no major difficulties. We consider it stable and ready for production use. } newsitem {2004-Jly-22} {Version 2.8.15} { SQLite version 2.8.15 is a maintenance release for the version 2.8 series. Version 2.8 continues to be maintained with bug fixes, but no new features will be added to version 2.8. All the changes in this release are minor. If you are not having problems, there is there is no reason to upgrade. } puts { <p align="right"><a href="oldnews.html">Old news...</a></p> </td></tr></table> } footer {$Id: index.tcl,v 1.96 2004/09/18 18:00:24 drh Exp $} |
Changes to www/oldnews.tcl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/tclsh source common.tcl header {SQLite Older News} 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 {2004-Jly-22} {Version 3.0.3 (beta)} { The second beta release of SQLite version 3.0 is now available. This new beta fixes many bugs and adds support for databases with varying page sizes. The next 3.0 release will probably be called a final or stable release. | > > > > > > > > > > > > > > > > > > > > > > | 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 32 33 34 35 36 37 38 39 | #!/usr/bin/tclsh source common.tcl header {SQLite Older News} 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 {2004-Sep-02} {Version 3.0.6 (beta)} { Because of some important changes to sqlite3_step(), we have decided to do an additional beta release prior to the first "stable" release. If no serious problems are discovered in this version, we will release version 3.0 "stable" in about a week. } newsitem {2004-Aug-29} {Version 3.0.5 (beta)} { The fourth beta release of SQLite version 3.0 is now available. The next release is expected to be called "stable". } newsitem {2004-Aug-08} {Version 3.0.4 (beta)} { The third beta release of SQLite version 3.0 is now available. This new beta fixes several bugs including a database corruption problem that can occur when doing a DELETE while a SELECT is pending. Expect at least one more beta before version 3.0 goes final. } newsitem {2004-Jly-22} {Version 3.0.3 (beta)} { The second beta release of SQLite version 3.0 is now available. This new beta fixes many bugs and adds support for databases with varying page sizes. The next 3.0 release will probably be called a final or stable release. |
︙ | ︙ | |||
90 91 92 93 94 95 96 | changes to both the C-language API and the underlying file format that will enable SQLite to better support internationalization. The first beta is schedule for release on 2004-July-01. Plans are to continue to support SQLite version 2.8 with bug fixes. But all new development will occur in version 3.0. } | | | 112 113 114 115 116 117 118 119 | changes to both the C-language API and the underlying file format that will enable SQLite to better support internationalization. The first beta is schedule for release on 2004-July-01. Plans are to continue to support SQLite version 2.8 with bug fixes. But all new development will occur in version 3.0. } footer {$Id: oldnews.tcl,v 1.5 2004/09/18 18:00:24 drh Exp $} |
Changes to www/quickstart.tcl.
1 2 3 | # # Run this TCL script to generate HTML for the quickstart.html file. # | | | < < < | < | | | | | | | | | | | | | > | | | < < < < < < < < | 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 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 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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | # # Run this TCL script to generate HTML for the quickstart.html file. # set rcsid {$Id: quickstart.tcl,v 1.5 2004/09/18 18:00:24 drh Exp $} source common.tcl header {SQLite In 5 Minutes Or Less} puts { <p>Here is what you do to start experimenting with SQLite without having to do a lot of tedious reading and configuration:</p> <h2>Download The Code</h2> <ul> <li><p>Get a copy of the prebuilt binaries for your machine, or get a copy of the sources and compile them yourself. Visit the <a href="download.html">download</a> page for more information.</p></li> </ul> <h2>Create A New Database</h2> <ul> <li><p>At a shell or DOS prompt, enter: "<b>sqlite3 test.db</b>". This will create a new database named "test.db". (You can use a different name if you like.)</p></li> <li><p>Enter SQL commands at the prompt to create and populate the new database.</p></li> </ul> <h2>Write Programs That Use SQLite</h2> <ul> <li><p>Below is a simple TCL program that demonstrates how to use the TCL interface to SQLite. The program executes the SQL statements given as the second argument on the database defined by the first argument. The commands to watch for are the <b>sqlite3</b> command on line 7 which opens an SQLite database and creates a new TCL command named "<b>db</b>" to access that database, the invocation of the <b>db</b> command on line 8 to execute SQL commands against the database, and the closing of the database connection on the last line of the script.</p> <blockquote><pre> #!/usr/bin/tclsh if {$argc!=2} { puts stderr "Usage: %s DATABASE SQL-STATEMENT" exit 1 } load /usr/lib/tclsqlite3.so Sqlite <b>sqlite3</b> db [lindex $argv 0] <b>db</b> eval [lindex $argv 1] x { foreach v $x(*) { puts "$v = $x($v)" } puts "" } <b>db</b> close </pre></blockquote> </li> <li><p>Below is a simple C program that demonstrates how to use the C/C++ interface to SQLite. The name of a database is given by the first argument and the second argument is one or more SQL statements to execute against the database. The function calls to pay attention to here are the call to <b>sqlite3_open()</b> on line 22 which opens the database, <b>sqlite3_exec()</b> on line 27 that executes SQL commands against the database, and <b>sqlite3_close()</b> on line 31 that closes the database connection.</p> <blockquote><pre> #include <stdio.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv){ sqlite3 *db; char *zErrMsg = 0; int rc; if( argc!=3 ){ fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); exit(1); } rc = <b>sqlite3_open</b>(argv[1], &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } rc = <b>sqlite3_exec</b>(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); } <b>sqlite3_close</b>(db); return 0; } </pre></blockquote> </li> </ul> } footer {$Id: quickstart.tcl,v 1.5 2004/09/18 18:00:24 drh Exp $} |