Up the version number and prepare documentation files for the 3.0.7 release. (CVS 1969)
FossilOrigin-Name: 63e4ed3cc698d660867c297cbedfc25f9eb7c40d
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 <stdio.h>
|
||||
#include <sqlite.h>
|
||||
#include <sqlite3.h>
|
||||
|
||||
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 $}
|
||||
|
||||
Reference in New Issue
Block a user