Up the version number and prepare documentation files for the 3.0.7 release. (CVS 1969)

FossilOrigin-Name: 63e4ed3cc698d660867c297cbedfc25f9eb7c40d
This commit is contained in:
drh
2004-09-18 18:00:23 +00:00
parent cc01bc037f
commit 2d7c0609ed
9 changed files with 136 additions and 116 deletions
+16
View File
@@ -21,6 +21,22 @@ proc chng {date desc} {
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
+5 -1
View File
@@ -1,7 +1,7 @@
# This script generates the "docs.html" page that describes various
# sources of documentation available for SQLite.
#
set rcsid {$Id: docs.tcl,v 1.5 2004/06/17 19:04:17 drh Exp $}
set rcsid {$Id: docs.tcl,v 1.6 2004/09/18 18:00:24 drh Exp $}
source common.tcl
header {SQLite Documentation}
puts {
@@ -19,6 +19,10 @@ proc doc {name url 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.
+47 -44
View File
@@ -1,7 +1,7 @@
#
# Run this script to generated a faq.html output file
#
set rcsid {$Id: faq.tcl,v 1.24 2004/05/31 15:06:30 drh Exp $}
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>}
@@ -55,14 +55,16 @@ INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
<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 is typeless. All data is stored as null-terminated strings.
The datatype information that follows the column name in CREATE TABLE
statements is ignored (mostly). You can put any type of data you want
<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>
@@ -70,14 +72,17 @@ faq {
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</a>
<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 is typeless. Any data can be
<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
@@ -106,7 +111,9 @@ INSERT INTO t1 VALUES('0.0'); INSERT INTO t2 VALUES(0.0);
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</a>
<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>
}
@@ -138,7 +145,9 @@ SELECT count(*) FROM t3 WHERE b=='00';
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</a>
<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>
}
@@ -307,23 +316,14 @@ faq {
Are there any known size limits to SQLite databases?
} {
<p>As of version 2.7.4,
SQLite can handle databases up to 2^41 bytes (2 terabytes)
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^31 bytes (2 gigabytes).</p>
were limited to databases of 2<sup>31</sup> bytes (2 gigabytes).</p>
<p>SQLite arbitrarily limits the amount of data in one row to 1 megabyte.
There is a single #define in the source code that can be changed to raise
this limit as high as 16 megabytes if desired.</p>
<p>There is a theoretical limit of about 2^32 (4 billion) rows
in a single table, but this limit has never been tested.</p>
There is also a theoretical limit of about 2^32
tables and indices.</p>
<p>The name and "CREATE TABLE" statement for a table must fit entirely
within a 1-megabyte row of the SQLITE_MASTER table. Other than this,
there are no constraints on the length of the name of a table, or on the
number of columns, etc. Indices are similarly unconstrained.</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
@@ -334,32 +334,21 @@ faq {
faq {
What is the maximum size of a VARCHAR in SQLite?
} {
<p>Remember, SQLite is typeless. A VARCHAR column can hold as much
data as any other column. The total amount of data in a single row
of the database is limited to 1 megabyte. You can increase this limit
to 16 megabytes, if you need to, by adjusting a single #define in the
source tree and recompiling.</p>
<p>For maximum speed and space efficiency, you should try to keep the
amount of data in a single row below about 230 bytes.</p>
<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>You can declare a table column to be of type "BLOB" but it will still
only store null-terminated strings. This is because the only way to
insert information into an SQLite database is using an INSERT SQL statement,
and you can not include binary data in the middle of the ASCII text string
of an INSERT statement.</p>
<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 is 8-bit clean with regard to the data it stores as long as
the data does not contain any '\000' characters. If you want to store binary
data, consider encoding your data in such a way that it contains no NUL
characters and inserting it that way. You might use URL-style encoding:
encode NUL as "%00" and "%" as "%25". Or, you might consider encoding your
binary data using base-64. There is a source file named
"<b>src/encode.c</b>" in the SQLite distribution that contains
<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>
@@ -370,7 +359,7 @@ faq {
faq {
How do I add or delete columns from an existing table in SQLite.
} {
<p>SQLite does not support the "ALTER TABLE" SQL command. If you
<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
@@ -419,6 +408,20 @@ faq {
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.
#############
+11 -25
View File
@@ -14,17 +14,19 @@ Features include:
</p>
<p><ul>
<li>ACID (Atomic, Consistent, Isolated, Durable) transactions.</li>
<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^41 bytes) in size.</li>
<li>Small memory footprint: less than 30K lines of C code,
<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 other popular database
<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.
@@ -58,26 +60,10 @@ proc newsitem {date title text} {
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-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.
}
@@ -94,4 +80,4 @@ puts {
<p align="right"><a href="oldnews.html">Old news...</a></p>
</td></tr></table>
}
footer {$Id: index.tcl,v 1.95 2004/09/02 16:53:12 drh Exp $}
footer {$Id: index.tcl,v 1.96 2004/09/18 18:00:24 drh Exp $}
+23 -1
View File
@@ -9,6 +9,28 @@ proc newsitem {date title text} {
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
@@ -94,4 +116,4 @@ newsitem {2004-Apr-23} {Work Begins On SQLite Version 3} {
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.4 2004/08/09 00:04:05 drh Exp $}
footer {$Id: oldnews.tcl,v 1.5 2004/09/18 18:00:24 drh Exp $}
+20 -31
View File
@@ -1,13 +1,9 @@
#
# Run this TCL script to generate HTML for the quickstart.html file.
#
set rcsid {$Id: quickstart.tcl,v 1.4 2003/02/15 23:09:17 drh Exp $}
puts {<html>
<head><title>SQLite In 5 Minutes Or Less</title></head>
<body bgcolor=white>
<h1 align=center>SQLite In 5 Minutes Or Less</h1>}
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>
@@ -15,7 +11,7 @@ to do a lot of tedious reading and configuration:</p>
<h2>Download The Code</h2>
<ul>
<li><p>Get a copy of the prebuild binaries for your machine, or get a copy
<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>
@@ -23,7 +19,7 @@ the <a href="download.html">download</a> page for more information.</p></li>
<h2>Create A New Database</h2>
<ul>
<li><p>At a shell or DOS prompt, enter: "<b>sqlite test.db</b>". This will
<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
@@ -36,7 +32,7 @@ new database.</p></li>
<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>sqlite</b> command
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
@@ -49,8 +45,8 @@ if {$argc!=2} {
puts stderr "Usage: %s DATABASE SQL-STATEMENT"
exit 1
}
load /usr/lib/tclsqlite.so Sqlite
<b>sqlite</b> db [lindex $argv 0]
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)"
@@ -65,14 +61,14 @@ load /usr/lib/tclsqlite.so Sqlite
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>sqlite_open()</b> on line 22 which opens
the database, <b>sqlite_exec()</b> on line 27 that executes SQL
commands against the database, and <b>sqlite_close()</b> on line 31
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 &lt;stdio.h&gt;
#include &lt;sqlite.h&gt;
#include &lt;sqlite3.h&gt;
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
@@ -84,7 +80,7 @@ static int callback(void *NotUsed, int argc, char **argv, char **azColName){
}
int main(int argc, char **argv){
sqlite *db;
sqlite3 *db;
char *zErrMsg = 0;
int rc;
@@ -92,28 +88,21 @@ int main(int argc, char **argv){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
db = <b>sqlite_open</b>(argv[1], 0, &zErrMsg);
if( db==0 ){
fprintf(stderr, "Can't open database: %s\n", zErrMsg);
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>sqlite_exec</b>(db, argv[2], callback, 0, &zErrMsg);
rc = <b>sqlite3_exec</b>(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
<b>sqlite_close</b>(db);
<b>sqlite3_close</b>(db);
return 0;
}
</pre></blockquote>
</li>
</ul>
}
puts {
<p><hr /></p>
<p>
<a href="index.html"><img src="/goback.jpg" border=0 />
Back to the SQLite home page</a>
</p>
</body></html>}
footer {$Id: quickstart.tcl,v 1.5 2004/09/18 18:00:24 drh Exp $}