1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Website redesign in preparation for adding version 3 documentation. (CVS 1506)

FossilOrigin-Name: 2052911b1fd119af9dbd81fdfe80244685f58212
This commit is contained in:
drh
2004-05-31 15:06:28 +00:00
parent 3a81de11b6
commit e100f835d3
24 changed files with 546 additions and 676 deletions

View File

@ -1,5 +1,5 @@
C Some\stest\scases\sfor\sread\slocks\s(CVS\s1505)
D 2004-05-31T12:34:54
C Website\sredesign\sin\spreparation\sfor\sadding\sversion\s3\sdocumentation.\s(CVS\s1506)
D 2004-05-31T15:06:29
F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@ -179,32 +179,36 @@ F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
F www/arch.tcl b329ca2c8dc75cd1cf0dd714b8bb47bdd458d0da
F www/arch.tcl a40f956733cbd99e4aace05c9fb9d7a999c9477e
F www/arch2.fig 613b5ac63511109064c2f93c5754ee662219937d
F www/arch2.gif 49c6bb36160f03ca2b89eaa5bfb1f560c7d68ee7
F www/audit.tcl 90e09d580f79c7efec0c7d6f447b7ec5c2dce5c0
F www/c_interface.tcl 17d8bd9e7b4fbdca47c30c8b9bcb728c351d55c0
F www/changes.tcl a3d043896631a14091dbafdb4068980974c3834c
F www/conflict.tcl 81dd21f9a679e60aae049e9dd8ab53d59570cda2
F www/datatypes.tcl 0fe2b810f114a909b844e50ad37a25e6ed8c7271
F www/download.tcl 0932d7f4f0e8b2adbbd22fac73132f86e43ab4a9
F www/c_interface.tcl 2176519fc2bd2d2cf6fe74fd806fc2d8362de2c8
F www/changes.tcl 9d562205db584d26b358ebe93fb58039feefd1b8
F www/common.tcl e548490c8444489064f6c1cce59d1cf177fb8664
F www/conflict.tcl fb8a2ba83746c7fdfd9e52fa7f6aaf5c422b8246
F www/copyright-release.html 294e011760c439c44951a6bfecd4c81a1ae359e8
F www/copyright-release.pdf cfca3558fc97095e57c6117d08f1f5b80d95125a
F www/datatypes.tcl 566004b81c36877397ddbe6e1907aae6065f6b41
F www/docs.tcl 60a7ce60d6f04cd5f56ab9329e0ffc22ebd6f021
F www/download.tcl cfe0a12bc9073fe34b880b6d259fb88ba5bb502f
F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
F www/faq.tcl 88d3b95d9cd8e374772daa3a646c4d107e7f3e9b
F www/fileformat.tcl 56f77e435a6306b337b20b416e3b89500ba2d029
F www/formatchng.tcl ca6cc1cb1bef9bc36f0619049d3c95e749bc6983
F www/index.tcl bacb2a0d052845bbe3bf078765cce907ed7080a4
F www/lang.tcl 17954f37c8bb1d25e026d97041ff6459fb89ac95
F www/faq.tcl 3a1776818d9bd973ab0c3048ec7ad6b1ad091ae5
F www/fileformat.tcl f71a06a0d533c7df408539c64113b4adeaf29764
F www/formatchng.tcl 7ed8a5c871ab105f01e5defe1822ec39f70675bb
F www/index.tcl 007cbb4c92459c45c2cc097a1193cc305c989772
F www/lang.tcl fc528581c4a406cabc138e2f17db5ef6f38615ff
F www/mingw.tcl d96b451568c5d28545fefe0c80bee3431c73f69c
F www/nulls.tcl 38117d24afb81efd079b59723b985a6d654cc2e8
F www/omitted.tcl 11037a1b557bd01405092d93dfa08898a4c26cd7
F www/opcode.tcl b8d561f33597c62955796b797646f00144d97332
F www/nulls.tcl f31330db8c978e675f5cd263067b32b822effa6f
F www/omitted.tcl 7bd62b6f0f53b60c5360895b16b3af8407bbca03
F www/opcode.tcl e8c421fd2c70c503b25cedb3f9617a1f387ac7ea
F www/quickstart.tcl 4e97bef825e6a4153c43afb9f97235fc4da278ab
F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3
F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
F www/speed.tcl 19cf0c1bf73c4b534dfafc95b3eacff4825740b4
F www/sqlite.tcl b51fd15f0531a54874de785a9efba323eecd5975
F www/tclsqlite.tcl 19191cf2a1010eaeff74c51d83fd5f5a4d899075
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
P 6c100887eeb32631e1aa914a69db959e1f58f192
R 1d8f5d0a6729c7e39d4d87422195d60b
U danielk1977
Z 3129e3edc85b79121f4ae67280793a64
P 0e07006704cd441f91d5fadbf3b644fd20da79bd
R a59b4bd6ff95128c135d3274ecbe26b7
U drh
Z 972496f8c6b40a74144e347477ed1839

View File

@ -1 +1 @@
0e07006704cd441f91d5fadbf3b644fd20da79bd
2052911b1fd119af9dbd81fdfe80244685f58212

View File

@ -1,22 +1,13 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: arch.tcl,v 1.11 2004/03/14 11:57:58 drh Exp $}
puts {<html>
<head>
<title>Architecture of SQLite</title>
</head>
<body bgcolor=white>
<h1 align=center>
The Architecture Of SQLite
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: arch.tcl,v 1.12 2004/05/31 15:06:29 drh Exp $}
source common.tcl
header {Architecture of SQLite}
puts {
<h2>Introduction</h2>
<h2>The Architecture Of SQLite</h2>
<h3>Introduction</h3>
<table align="right" border="1" cellpadding="15" cellspacing="1">
<tr><th>Block Diagram Of SQLite</th></tr>
@ -33,7 +24,7 @@ and how they interrelate is shown at the right. The text that
follows will provide a quick overview of each of these components.
</p>
<h2>History</h2>
<h3>History</h3>
<p>
There are two main C interfaces to the SQLite library:
@ -48,7 +39,7 @@ the plumbing is very different. The diagram at the right shows
the structure of SQLite for version 2.8.13 and following.
</p>
<h2>Interface</h2>
<h3>Interface</h3>
<p>Much of the public interface to the SQLite library is implemented by
functions found in the <b>main.c</b> source file though some routines are
@ -67,11 +58,11 @@ Those symbols that are intended for external use (in other words,
those symbols which form the API for SQLite) begin
with <b>sqlite_</b>.</p>
<h2>SQL Command Process</h2>
<h3>SQL Command Process</h3>
<p>
<h2>Tokenizer</h2>
<h3>Tokenizer</h3>
<p>When a string containing SQL statements is to be executed, the
interface passes that string to the tokenizer. The job of the tokenizer
@ -87,7 +78,7 @@ of SQLite
has done it both ways and finds things generally work out nicer for
the tokenizer to call the parser. YACC has it backwards.</p>
<h2>Parser</h2>
<h3>Parser</h3>
<p>The parser is the piece that assigns meaning to tokens based on
their context. The parser for SQLite is generated using the
@ -106,7 +97,7 @@ SQLite distribution in the "tool" subdirectory. Documentation on
lemon is found in the "doc" subdirectory of the distribution.
</p>
<h2>Code Generator</h2>
<h3>Code Generator</h3>
<p>After the parser assembles tokens into complete SQL statements,
it calls the code generator to produce virtual machine code that
@ -126,7 +117,7 @@ for SQL statements with the same names. (Each of these files calls routines
in <b>expr.c</b> and <b>where.c</b> as necessary.) All other
SQL statements are coded out of <b>build.c</b>.</p>
<h2>Virtual Machine</h2>
<h3>Virtual Machine</h3>
<p>The program generated by the code generator is executed by
the virtual machine. Additional information about the virtual
@ -146,20 +137,20 @@ The <b>vdbeaux.c</b> file contains utilities used by the virtual
machine and interface modules used by the rest of the library to
construct VM programs.</p>
<h2>Backend</h2>
<h3>Backend</h3>
<p>The backend is an abstraction layer that presents a uniform interface
to the virtual machine for either the B-Tree drivers for disk-based
databases or the Red/Black Tree driver for in-memory databases.
The <b>btree.h</b> source file contains the details.</p>
<h2>Red/Black Tree</h2>
<h3>Red/Black Tree</h3>
<p>In-memory databases are stored in a red/black tree implementation
contain in the <b>btree_rb.c</b> source file.
</p>
<h2>B-Tree</h2>
<h3>B-Tree</h3>
<p>An SQLite database is maintained on disk using a B-tree implementation
found in the <b>btree.c</b> source file. A separate B-tree is used for
@ -173,7 +164,7 @@ entry. Any additional payload is stored in a chain of overflow pages.</p>
<b>btree.h</b>.
</p>
<h2>Page Cache</h2>
<h3>Page Cache</h3>
<p>The B-tree module requests information from the disk in 1024 byte
chunks. The page cache is reponsible for reading, writing, and
@ -190,7 +181,7 @@ source file <b>pager.c</b>. The interface to the page cache subsystem
is defined by the header file <b>pager.h</b>.
</p>
<h2>OS Interface</h2>
<h3>OS Interface</h3>
<p>
In order to provide portability between POSIX and Win32 operating systems,
@ -203,12 +194,4 @@ for Win32. The interface to the OS abstraction layer is defined by
the <b>os.h</b> header file.
</p>
}
puts {
<br clear="both" />
<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 $rcsid

View File

@ -1,26 +1,17 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: c_interface.tcl,v 1.39 2003/10/18 09:37:27 danielk1977 Exp $}
puts {<html>
<head>
<title>The C language interface to the SQLite library</title>
</head>
<body bgcolor=white>
<h1 align=center>
The C language interface to the SQLite library
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: c_interface.tcl,v 1.40 2004/05/31 15:06:29 drh Exp $}
source common.tcl
header {The C language interface to the SQLite library}
puts {
<h2>The C language interface to the SQLite library</h2>
<p>The SQLite library is designed to be very easy to use from
a C or C++ program. This document gives an overview of the C/C++
programming interface.</p>
<h2>1.0 The Core API</h2>
<h3>1.0 The Core API</h3>
<p>The interface to the SQLite library consists of three core functions,
one opaque data structure, and some constants used as return values.
@ -51,7 +42,7 @@ the core functions shown above.
</p>
<a name="sqlite_open">
<h3>1.1 Opening a database</h3>
<h4>1.1 Opening a database</h4>
<p>Use the <b>sqlite_open</b> function to open an existing SQLite
database or to create a new SQLite database. The first argument
@ -83,7 +74,7 @@ deal with the same database. NULL is returned if the open fails
for any reason.</p>
<a name="sqlite_close">
<h3>1.2 Closing the database</h3>
<h4>1.2 Closing the database</h4>
<p>To close an SQLite database, call the <b>sqlite_close</b>
function passing it the sqlite structure pointer that was obtained
@ -92,7 +83,7 @@ If a transaction is active when the database is closed, the transaction
is rolled back.</p>
<a name="sqlite_exec">
<h3>1.3 Executing SQL statements</h3>
<h4>1.3 Executing SQL statements</h4>
<p>The <b>sqlite_exec</b> function is used to process SQL statements
and queries. This function requires 5 parameters as follows:</p>
@ -170,7 +161,7 @@ result set is empty.</p>
function returns non-zero, the query is immediately aborted and
<b>sqlite_exec</b> will return SQLITE_ABORT.</p>
<h3>1.4 Error Codes</h3>
<h4>1.4 Error Codes</h4>
<p>
The <b>sqlite_exec</b> function normally returns SQLITE_OK. But
@ -344,7 +335,7 @@ the <b>sqlite_finalize</b> routine is ready to be called.
</dl>
</blockquote>
<h2>2.0 Accessing Data Without Using A Callback Function</h2>
<h3>2.0 Accessing Data Without Using A Callback Function</h3>
<p>
The <b>sqlite_exec</b> routine described above used to be the only
@ -390,7 +381,7 @@ once for each row of output, and finally call <b>sqlite_finalize</b>
to clean up after the SQL has finished execution.
</p>
<h3>2.1 Compiling An SQL Statement Into A Virtual Machine</h3>
<h4>2.1 Compiling An SQL Statement Into A Virtual Machine</h4>
<p>
The <b>sqlite_compile</b> "compiles" a single SQL statement (specified
@ -436,7 +427,7 @@ On success, <b>sqlite_compile</b> returns SQLITE_OK.
Otherwise and error code is returned.
</p>
<h3>2.2 Step-By-Step Execution Of An SQL Statement</h3>
<h4>2.2 Step-By-Step Execution Of An SQL Statement</h4>
<p>
After a virtual machine has been generated using <b>sqlite_compile</b>
@ -521,7 +512,7 @@ usage prior to a mishap. The misuse detection logic is not guaranteed
to work in every case.
</p>
<h3>2.3 Deleting A Virtual Machine</h3>
<h4>2.3 Deleting A Virtual Machine</h4>
<p>
Every virtual machine that <b>sqlite_compile</b> creates should
@ -556,7 +547,7 @@ It is also acceptable to call <b>sqlite_finalize</b> on a virtual machine
that has never been passed to <b>sqlite_step</b> even once.
</p>
<h2>3.0 The Extended API</h2>
<h3>3.0 The Extended API</h3>
<p>Only the three core routines described in section 1.0 are required to use
SQLite. But there are many other functions that provide
@ -642,7 +633,7 @@ void sqlite_progress_handler(sqlite*, int, int (*)(void*), void*);
<p>All of the above definitions are included in the "sqlite.h"
header file that comes in the source tree.</p>
<h3>3.1 The ROWID of the most recent insert</h3>
<h4>3.1 The ROWID of the most recent insert</h4>
<p>Every row of an SQLite table has a unique integer key. If the
table has a column labeled INTEGER PRIMARY KEY, then that column
@ -658,7 +649,7 @@ the key is automatically generated. You can find the value of the key
for the most recent INSERT statement using the
<b>sqlite_last_insert_rowid</b> API function.</p>
<h3>3.2 The number of rows that changed</h3>
<h4>3.2 The number of rows that changed</h4>
<p>The <b>sqlite_changes</b> API function returns the number of rows
that have been inserted, deleted, or modified since the database was
@ -686,7 +677,7 @@ will be zero regardless of the number of elements that were originally
in the table. If an accurate count of the number of elements deleted
is necessary, use "<b>DELETE FROM table WHERE 1</b>" instead.</p>
<h3>3.3 Querying into memory obtained from malloc()</h3>
<h4>3.3 Querying into memory obtained from malloc()</h4>
<p>The <b>sqlite_get_table</b> function is a wrapper around
<b>sqlite_exec</b> that collects all the information from successive
@ -773,7 +764,7 @@ as would be returned if the result set is empty.</p>
<p>The <b>sqlite_get_table</b> routine returns the same integer
result code as <b>sqlite_exec</b>.</p>
<h3>3.4 Interrupting an SQLite operation</h3>
<h4>3.4 Interrupting an SQLite operation</h4>
<p>The <b>sqlite_interrupt</b> function can be called from a
different thread or from a signal handler to cause the current database
@ -781,7 +772,7 @@ operation to exit at its first opportunity. When this happens,
the <b>sqlite_exec</b> routine (or the equivalent) that started
the database operation will return SQLITE_INTERRUPT.</p>
<h3>3.5 Testing for a complete SQL statement</h3>
<h4>3.5 Testing for a complete SQL statement</h4>
<p>The next interface routine to SQLite is a convenience function used
to test whether or not a string forms a complete SQL statement.
@ -803,7 +794,7 @@ then <b>sqlite_exec</b> is called and the input buffer is reset. If
the continuation prompt and another line of text is read and added to
the input buffer.</p>
<h3>3.6 Library version string</h3>
<h4>3.6 Library version string</h4>
<p>The SQLite library exports the string constant named
<b>sqlite_version</b> which contains the version number of the
@ -813,7 +804,7 @@ the SQLITE_VERSION macro against the <b>sqlite_version</b>
string constant to verify that the version number of the
header file and the library match.</p>
<h3>3.7 Library character encoding</h3>
<h4>3.7 Library character encoding</h4>
<p>By default, SQLite assumes that all data uses a fixed-size
8-bit character (iso8859). But if you give the --enable-utf8 option
@ -830,7 +821,7 @@ be changed at run-time. This is a compile-time option only. The
<b>sqlite_encoding</b> character string just tells you how the library
was compiled.</p>
<h3>3.8 Changing the library's response to locked files</h3>
<h4>3.8 Changing the library's response to locked files</h4>
<p>The <b>sqlite_busy_handler</b> procedure can be used to register
a busy callback with an open SQLite database. The busy callback will
@ -860,7 +851,7 @@ will wait for the lock to clear for at least the number of milliseconds
specified before it returns SQLITE_BUSY. Specifying zero milliseconds for
the timeout restores the default behavior.</p>
<h3>3.9 Using the <tt>_printf()</tt> wrapper functions</h3>
<h4>3.9 Using the <tt>_printf()</tt> wrapper functions</h4>
<p>The four utility functions</p>
@ -981,7 +972,7 @@ routine. The string pointer that these routines return should be freed
by passing it to <b>sqlite_freemem()</b>.
</p>
<h3>3.10 Performing background jobs during large queries </h2>
<h4>3.10 Performing background jobs during large queries</h3>
<p>The <b>sqlite_progress_handler()</b> routine can be used to register a
callback routine with an SQLite database to be invoked periodically during long
@ -1006,7 +997,7 @@ determine whether or not background jobs need to be run.
</p>
<a name="cfunc">
<h2>4.0 Adding New SQL Functions</h2>
<h3>4.0 Adding New SQL Functions</h3>
<p>Beginning with version 2.4.0, SQLite allows the SQL language to be
extended with new functions implemented as C code. The following interface
@ -1089,7 +1080,7 @@ new SQL functions, review the SQLite source code in the file
<b>func.c</b>.
</p>
<h2>5.0 Multi-Threading And SQLite</h2>
<h3>5.0 Multi-Threading And SQLite</h3>
<p>
If SQLite is compiled with the THREADSAFE preprocessor macro set to 1,
@ -1112,7 +1103,7 @@ Under Unix, an <b>sqlite*</b> pointer should not be carried across a
should open its own copy of the database after the <b>fork()</b>.
</p>
<h2>6.0 Usage Examples</h2>
<h3>6.0 Usage Examples</h3>
<p>For examples of how the SQLite C/C++ interface can be used,
refer to the source code for the <b>sqlite</b> program in the
@ -1122,11 +1113,4 @@ Additional information about sqlite is available at
See also the sources to the Tcl interface for SQLite in
the source file <b>src/tclsqlite.c</b>.</p>
}
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 $rcsid

View File

@ -1,15 +1,11 @@
#
# Run this script to generated a changes.html output file
#
puts {<html>
<head>
<title>SQLite Change Log</title>
</head>
<body bgcolor="white">
<h1 align="center">Recent Changes To SQLite</h1>
source common.tcl
header {SQLite changes}
puts {
<p>
This file provides a high-level summary of changes to SQLite.
This page provides a high-level summary of changes to SQLite.
For more detail, refer the the checkin logs generated by
CVS at
<a href="http://www.sqlite.org/cvstrac/timeline">
@ -1097,9 +1093,5 @@ chng {2000 May 29} {
puts {
</DL>
<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:}

45
www/common.tcl Normal file
View File

@ -0,0 +1,45 @@
# This file contains TCL procedures used to generate standard parts of
# web pages.
#
proc header {txt} {
puts "<html><head><title>$txt</title></head>"
puts \
{<body bgcolor="white" link="#50695f" vlink="#508896">
<table width="100%" border="0">
<tr><td valign="top"><img src="sqlite.gif"></td>
<td width="100%"></td>
<td valign="bottom">
<ul>
<li><a href="http://www.sqlite.org/cvstrac/tktnew">bugs</a></li>
<li><a href="changes.html">changes</a></li>
<li><a href="download.html">download</a></li>
<li><a href="docs.html">documentation</a></li>
</ul>
</td>
<td width="10"></td>
<td valign="bottom">
<ul>
<li><a href="index.html">home</a></li>
<li><a href="faq.html">faq</a></li>
<li><a href="http://www.sqlite.org/cvstrac/timeline">timeline</a></li>
<li><a href="http://www.sqlite.org/cvstrac/wiki">wiki</a></li>
</ul>
</td>
</tr></table>
<table width="100%">
<tr><td bgcolor="#80a796"></td></tr>
</table>}
}
proc footer {{rcsid {}}} {
puts {
<table width="100%">
<tr><td bgcolor="#80a796"></td></tr>
</table>}
set date [lrange $rcsid 3 4]
if {$date!=""} {
puts "<small><i>This page last modified on $date</i></small>"
}
puts {</body></html>}
}

View File

@ -1,29 +1,18 @@
#
# Run this Tcl script to generate the constraint.html file.
#
set rcsid {$Id: conflict.tcl,v 1.2 2002/02/03 00:56:11 drh Exp $ }
puts {<html>
<head>
<title>Constraint Conflict Resolution in SQLite</title>
</head>
<body bgcolor=white>
<h1 align=center>
Constraint Conflict Resolution in SQLite
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: conflict.tcl,v 1.3 2004/05/31 15:06:30 drh Exp $ }
source common.tcl
header {Constraint Conflict Resolution in SQLite}
puts {
<h2>Introduction</h2>
<h1>Constraint Conflict Resolution in SQLite</h1>
<p>
In most SQL databases, if you have a UNIQUE constraint on
a table and you try to do an UPDATE or INSERT that violates
that constraint, the database will aborts the operation in
progress, back out any prior changes associated with that
one UPDATE or INSERT command, and return an error.
the constraint, the database will abort the operation in
progress, back out any prior changes associated with
UPDATE or INSERT command, and return an error.
This is the default behavior of SQLite.
Beginning with version 2.3.0, though, SQLite allows you to
define alternative ways for dealing with constraint violations.
@ -99,11 +88,4 @@ What you really want is to use the IGNORE algorithm to insert
all but the malformed record.</p>
}
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 $rcsid

109
www/copyright-release.html Normal file
View File

@ -0,0 +1,109 @@
<html>
<body bgcolor="white">
<h1 align="center">
Copyright Release for<br>
Contributions To SQLite
</h1>
<p>
SQLite is software that implements an embeddable SQL database engine.
SQLite is available for free download from http://www.sqlite.org/.
The principal author and maintainer of SQLite has disclaimed all
copyright interest in his contributions to SQLite
and thus released his contributions into the public domain.
In order to keep the SQLite software unencumbered by copyright
claims, the principal author asks others who may from time to
time contribute changes and enhancements to likewise disclaim
their own individual copyright interest.
</p>
<p>
Because the SQLite software found at http://www.sqlite.org/ is in the
public domain, anyone is free to download the SQLite software
from that website, make changes to the software, use, distribute,
or sell the modified software, under either the original name or
under some new name, without any need to obtain permission, pay
royalties, acknowledge the original source of the software, or
in any other way compensate, identify, or notify the original authors.
Nobody is in any way compelled to contribute their SQLite changes and
enhancements back to the SQLite website. This document concerns
only changes and enhancements to SQLite that are intentionally and
deliberately contributed back to the SQLite website.
</p>
<p>
For the purposes of this document, "SQLite software" shall mean any
computer source code, documentation, makefiles, test scripts, or
other information that is published on the SQLite website,
http://www.sqlite.org/. Precompiled binaries are excluded from
the definition of "SQLite software" in this document because the
process of compiling the software may introduce information from
outside sources which is not properly a part of SQLite.
</p>
<p>
The header comments on the SQLite source files exhort the reader to
share freely and to never take more than one gives.
In the spirit of that exhortation I make the following declarations:
</p>
<ol>
<li><p>
I dedicate to the public domain
any and all copyright interest in the SQLite software that
was publicly available on the SQLite website (http://www.sqlite.org/) prior
to the date of the signature below and any changes or enhancements to
the SQLite software
that I may cause to be published on that website in the future.
I make this dedication for the benefit of the public at large and
to the detriment of my heirs and successors. I intend this
dedication to be an overt act of relinquishment in perpetuity of
all present and future rights to the SQLite software under copyright
law.
</p></li>
<li><p>
To the best of my knowledge and belief, the changes and enhancements that
I have contributed to SQLite are either originally written by me
or are derived from prior works which I have verified are also
in the public domain and are not subject to claims of copyright
by other parties.
</p></li>
<li><p>
To the best of my knowledge and belief, no individual, business, organization,
government, or other entity has any copyright interest
in the SQLite software as it existed on the
SQLite website as of the date on the signature line below.
</p></li>
<li><p>
I agree never to publish any additional information
to the SQLite website (by CVS, email, scp, FTP, or any other means) unless
that information is an original work of authorship by me or is derived from
prior published versions of SQLite.
I agree never to copy and paste code into the SQLite code base from
other sources.
I agree never to publish on the SQLite website any information that
would violate a law or breach a contract.
</p></li>
</ol>
<p>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="60%" valign="top">
Signature:
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</td><td valign="top" align="left">
Date:
</td></tr>
<td colspan=2>
Name (printed):
</td>
</tr>
</table>
</body>
</html>

BIN
www/copyright-release.pdf Normal file

Binary file not shown.

View File

@ -1,22 +1,13 @@
#
# Run this script to generated a datatypes.html output file
#
set rcsid {$Id: datatypes.tcl,v 1.6 2003/12/18 14:19:41 drh Exp $}
set rcsid {$Id: datatypes.tcl,v 1.7 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {Datatypes In SQLite version 2}
puts {
<h2>Datatypes In SQLite Version 2</h2>
puts {<html>
<head>
<title>Datatypes In SQLite</title>
</head>
<body bgcolor="white">
<h1 align="center">
Datatypes In SQLite
</h1>
}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {<h2>1.0 &nbsp; Typelessness</h2>
<h3>1.0 &nbsp; Typelessness</h3>
<p>
SQLite is "typeless". This means that you can store any
kind of data you want in any column of any table, regardless of the
@ -79,7 +70,7 @@ And so forth. Basically any sequence of names optionally followed by
one or two signed integers in parentheses will do.
</p>
<h2>2.0 &nbsp; The INTEGER PRIMARY KEY</h2>
<h3>2.0 &nbsp; The INTEGER PRIMARY KEY</h3>
<p>
One exception to the typelessness of SQLite is a column whose type
@ -101,7 +92,7 @@ the <b>sqlite_last_insert_rowid()</b> API function or using the
<b>last_insert_rowid()</b> SQL function in a subsequent SELECT statement.
</p>
<h2>3.0 &nbsp; Comparison and Sort Order</h2>
<h3>3.0 &nbsp; Comparison and Sort Order</h3>
<p>
SQLite is typeless for the purpose of deciding what data is allowed
@ -144,7 +135,7 @@ A comparison of any value against NULL using operators like "&lt;" or
"&gt;=" is always false.
</p>
<h2>4.0 &nbsp; How SQLite Determines Datatypes</h2>
<h3>4.0 &nbsp; How SQLite Determines Datatypes</h3>
<p>
For SQLite version 2.6.3 and earlier, all values used the numeric datatype.
@ -193,7 +184,7 @@ then the datatype is numeric. Note in particular that the datatype for columns
with an empty type declaration is numeric.
</p>
<h2>5.0 &nbsp; Examples</h2>
<h3>5.0 &nbsp; Examples</h3>
<p>
Consider the following two command sequences:
@ -249,11 +240,4 @@ are treated as numbers and are therefore indistinct. But the SELECT
statement on the right returns two rows since 0 and 0.0 are treated
a strings which are different.</p>
}
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 $rcsid

84
www/docs.tcl Normal file
View File

@ -0,0 +1,84 @@
# This script generates the "docs.html" page that describes various
# sources of documentation available for SQLite.
#
set rcsid {$Id: docs.tcl,v 1.1 2004/05/31 15:06:30 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 {\&nbsp;} 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 {SQL Syntax} {lang.html} {
This document describes the SQL language that is understood by
SQLite.
}
doc {Version 2 C/C++ API} {c_interface.html} {
A description of the C/C++ interface bindings for SQLite through version
2.8
}
doc {Tcl API} {tclsqlite.html} {
A description of the TCL interface bindings for SQLite.
}
doc {Version 2 DataTypes } {datatypes.html} {
A description of how SQLite version 2 handles SQL datatypes.
}
doc {Release History} {changes.html} {
A chronology of SQLite releases going back to version 1.0.0
}
doc {Null Handling} {nulls.html} {
Different SQL database engines handle NULLs in different ways. The
SQL standards are ambiguous. This document describes how SQLite handles
NULLs in comparison with other SQL database engines.
}
doc {Copyright} {copyright.html} {
SQLite is in the public domain. This document describes what that means
and the implications for contributors.
}
doc {Unsupported SQL} {omitted.html} {
This page describes features of SQL that SQLite does not support.
}
doc {Speed Comparison} {speed.html} {
The speed of version 2.7.6 of SQLite is compared against PostgreSQL and
MySQL.
}
doc {Architecture} {arch.html} {
An architectural overview of the SQLite library, useful for those who want
to hack the code.
}
doc {VDBE Tutorial} {vdbe.html} {
The VDBE is the subsystem within SQLite that does the actual work of
executing SQL statements. This page describes the principles of operation
for the VDBE in SQLite version 2.7. This is essential reading for anyone
who want to modify the SQLite sources.
}
doc {VDBE Opcodes} {opcode.html} {
This document is an automatically generated description of the various
opcodes that the VDBE understands. Programmers can use this document as
a reference to better understand the output of EXPLAIN listings from
SQLite.
}
puts {</table>}
footer $rcsid

View File

@ -1,12 +1,12 @@
#
# Run this TCL script to generate HTML for the download.html file.
#
set rcsid {$Id: download.tcl,v 1.6 2002/08/15 13:45:17 drh Exp $}
set rcsid {$Id: download.tcl,v 1.7 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {SQLite Download Page}
puts {<html>
<head><title>SQLite Download Page</title></head>
<body bgcolor=white>
<h1 align=center>SQLite Download Page</h1>
puts {
<h2>SQLite Download Page</h1>
<table width="100%" cellpadding="5">
}
@ -95,13 +95,4 @@ foreach name [lsort -dict -decreasing [glob -nocomplain sqlite-*.tar.gz]] {
Version $vers of the source tree including all documentation.
"
}
puts {
</table>
<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 $rcsid

View File

@ -1,19 +1,9 @@
#
# Run this script to generated a faq.html output file
#
set rcsid {$Id: faq.tcl,v 1.23 2003/05/29 17:43:08 drh Exp $}
puts {<html>
<head>
<title>SQLite Frequently Asked Questions</title>
</head>
<body bgcolor="white">
<h1 align="center">Frequently Asked Questions</h1>
}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: faq.tcl,v 1.24 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {SQLite Frequently Asked Questions</title>}
set cnt 1
proc faq {question answer} {
@ -432,12 +422,19 @@ faq {
# End of questions and answers.
#############
puts {<DL COMPACT>}
puts {<h2>Frequently Asked Questions</h2>}
# puts {<DL COMPACT>}
# for {set i 1} {$i<$cnt} {incr i} {
# puts " <DT><A HREF=\"#q$i\">($i)</A></DT>"
# puts " <DD>[lindex $faq($i) 0]</DD>"
# }
# puts {</DL>}
puts {<OL>}
for {set i 1} {$i<$cnt} {incr i} {
puts " <DT><A HREF=\"#q$i\">($i)</A></DT>"
puts " <DD>[lindex $faq($i) 0]</DD>"
puts "<li><a href=\"#q$i\">[lindex $faq($i) 0]</a></li>"
}
puts {</DL>}
puts {</OL>}
for {set i 1} {$i<$cnt} {incr i} {
puts "<A NAME=\"q$i\"><HR />"
@ -445,11 +442,5 @@ for {set i 1} {$i<$cnt} {incr i} {
puts "<BLOCKQUOTE>[lindex $faq($i) 1]</BLOCKQUOTE></LI>\n"
}
puts {
</OL>
<p><hr /></p>
<p><a href="index.html"><img src="/goback.jpg" border=0 />
Back to the SQLite Home Page</a>
</p>
</body></html>}
puts {</OL>}
footer $rcsid

View File

@ -1,23 +1,19 @@
#
# Run this script to generated a fileformat.html output file
#
set rcsid {$Id: fileformat.tcl,v 1.11 2003/11/25 23:48:57 drh Exp $}
puts {<html>
<head>
<title>SQLite Database File Format</title>
</head>
<body bgcolor="white">
<h1 align="center">
SQLite Database File Format
</h1>
}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: fileformat.tcl,v 1.12 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {SQLite Database File Format (Version 2)}
puts {
<h2>1.0 &nbsp; Layers</h2>
<h2>SQLite 2.X Database File Format</h2>
<p>
This document describes the disk file format for SQLite versions 2.1
through 2.8. SQLite version 3.0 and following uses a very different
format which is described separately.
</p>
<h3>1.0 &nbsp; Layers</h3>
<p>
SQLite is implemented in layers.
@ -37,7 +33,7 @@ We wil describe each layer beginning with the bottom (pager)
layer and working upwards.
</p>
<h2>2.0 &nbsp; The Pager Layer</h2>
<h3>2.0 &nbsp; The Pager Layer</h3>
<p>
An SQLite database consists of
@ -158,7 +154,7 @@ Here is a summary of the journal file format:
</li>
</ul>
<h2>3.0 &nbsp; The B-Tree Layer</h2>
<h3>3.0 &nbsp; The B-Tree Layer</h3>
<p>
The B-Tree layer builds on top of the pager layer to implement
@ -206,7 +202,7 @@ The b-tree itself does not record which pages are root pages and which
are not. That information is handled entirely at the schema layer.
</p>
<h3>3.1 &nbsp; B-Tree Page 1 Details</h3>
<h4>3.1 &nbsp; B-Tree Page 1 Details</h4>
<p>
Page 1 begins with the following 48-byte string:
@ -275,7 +271,7 @@ Here is a summary of the information contained on page 1 in the b-tree layer:
<li>928 bytes of unused space</li>
</ul>
<h3>3.2 &nbsp; Structure Of A Single B-Tree Page</h3>
<h4>3.2 &nbsp; Structure Of A Single B-Tree Page</h4>
<p>
Conceptually, a b-tree page contains N database entries and N+1 pointers
@ -502,7 +498,7 @@ the page by moving all cells to the beginning and constructing a single
freeblock at the end to take up all remaining space.
</p>
<h3>3.3 &nbsp; The B-Tree Free Page List</h3>
<h4>3.3 &nbsp; The B-Tree Free Page List</h4>
<p>
When information is removed from an SQLite database such that one or
@ -571,7 +567,7 @@ these two optimizations allow some database operations
to go four to six times faster than they would otherwise.
</p>
<h2>4.0 &nbsp; The Schema Layer</h2>
<h3>4.0 &nbsp; The Schema Layer</h3>
<p>
The schema layer implements an SQL database on top of one or more
@ -591,7 +587,7 @@ extracted. For indices, the b-tree key varies in size depending on the
size of the fields being indexed and the b-tree data is empty.
</p>
<h3>4.1 &nbsp; SQL Table Implementation Details</h3>
<h4>4.1 &nbsp; SQL Table Implementation Details</h4>
<p>Each row of an SQL table is stored in a single b-tree entry.
The b-tree key is a 4-byte big-endian integer that is the ROWID
@ -659,7 +655,7 @@ INTEGER PRIMARY KEY, just like any other column. But the Value
associated with that offset is always NULL.
</p>
<h3>4.2 &nbsp; SQL Index Implementation Details</h3>
<h4>4.2 &nbsp; SQL Index Implementation Details</h4>
<p>
SQL indices are implement using a b-tree in which the key is used
@ -685,7 +681,7 @@ NULLs being sorted first, followed by numerical values in numerical
order, followed by text values in lexigraphical order.
</p>
<h3>4.4 &nbsp; SQL Schema Storage And Root B-Tree Page Numbers</h3>
<h4>4.4 &nbsp; SQL Schema Storage And Root B-Tree Page Numbers</h4>
<p>
The database schema is stored in the database in a special tabled named
@ -720,7 +716,7 @@ database. But the schema table for the temporary database named
name change, it works exactly the same.
</p>
<h3>4.4 &nbsp; Schema Version Numbering And Other Meta-Information</h3>
<h4>4.4 &nbsp; Schema Version Numbering And Other Meta-Information</h4>
<p>
The nine 32-bit integers that are stored beginning at byte offset
@ -785,13 +781,5 @@ to a SYNCHRONOUS setting of NORMAL. A value of 3 corresponds to a
SYNCHRONOUS setting of FULL. If the value is 0, that means it has not
been initialized so the default synchronous setting of NORMAL is used.
</p>
}
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 $rcsid

View File

@ -1,21 +1,12 @@
#
# Run this Tcl script to generate the formatchng.html file.
#
set rcsid {$Id: formatchng.tcl,v 1.9 2003/06/29 16:11:13 drh Exp $ }
puts {<html>
<head>
<title>File Format Changes in SQLite</title>
</head>
<body bgcolor=white>
<h1 align=center>
File Format Changes in SQLite
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: formatchng.tcl,v 1.10 2004/05/31 15:06:30 drh Exp $ }
source common.tcl
header {File Format Changes in SQLite}
puts {
<h2>File Format Changes in SQLite</h2>
<p>
From time to time, enhancements or bug fixes require a change to
the underlying file format for SQLite. When this happens and you
@ -175,6 +166,16 @@ occurred since version 1.0.0:
to restore the database.</p>
</td>
</tr>
<tr>
<td valign="top">2.8.13 to 3.0.0</td>
<td valign="top">(pending)</td>
<td><p>Version 3.0.0 is a major upgrade for SQLite that incorporates
support for UTF-16, BLOBs, and a more compact encoding that results
in database files that are typically 25% to 35% smaller. The new file
format is radically different and completely incompatible with the
version 2 file format.</p>
</td>
</tr>
</table>
</blockquote>
@ -192,11 +193,4 @@ this is as follows:
echo .dump | sqlite-old old.db | sqlite-new new.db
</blockquote>
}
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 $rcsid

View File

@ -1,223 +1,82 @@
#
# Run this TCL script to generate HTML for the index.html file.
#
set rcsid {$Id: index.tcl,v 1.82 2004/04/23 17:04:45 drh Exp $}
puts {<html>
<head><title>SQLite: An Embeddable SQL Database Engine</title></head>
<body bgcolor=white>
<h1 align=center>SQLite<br>An Embeddable SQL Database Engine</h1>
<p align=center>}
puts "This page was last modified on [lrange $rcsid 3 4] UTC<br>"
set vers [lindex $argv 0]
puts "The latest SQLite version is <b>$vers</b>"
puts " created on [exec cat last_change] UTC"
puts {</p>}
puts {<h2>Introduction</h2>
<p>SQLite is a C library that implements an embeddable SQL database engine.
Programs that link with the SQLite library can have SQL database
access without running a separate RDBMS process.
The distribution comes with a standalone command-line
access program (<a href="sqlite.html">sqlite</a>) that can
be used to administer an SQLite database and which serves as
an example of how to use the SQLite library.</p>
<p>SQLite is <b>not</b> a client library used to connect to a
big database server. SQLite <b>is</b> the server. The SQLite
library reads and writes directly to and from the database files
on disk.</p>}
#!/usr/bin/tclsh
source common.tcl
header {SQLite home page}
puts {
<table align="right" hspace="10" cellpadding=0 cellspacing=0 broder=0>
<tr><td align="right" bgcolor="#cacae4">
<table border="2" width="100%" cellspacing=0 cellpadding=5><tr><td align="left">
Quick Links:
<ul>
<li><a href="download.html">Download</a></li>
<li><a href="http://www.sqlite.org/cvstrac/timeline">Change Log</a></li>
<li><a href="http://www.sqlite.org/cvstrac/tktnew">Report a bug</a></li>
<li><a href="quickstart.html">Quick start</a></li>
</ul>
</td></tr></table>
</td></tr>
</table>
}
puts {<h2>Features</h2>
<table width="100%" border="0" cellspacing="5">
<tr>
<td width="50%" valign="top">
<h2>About SQLite</h2>
<p>
SQLite is a small C library that implements a
self-contained, embeddable,
zero-configuration SQL database engine.
Features include:
</p>
<p><ul>
<li>ACID (Atomic, Consistent, Isolated, Durable) transactions.</li>
<li>A zero-configuration - no DBA needed.</li>
<li>Implements most of SQL92.
(<a href="omitted.html">Features not supported</a>)</li>
<li>A complete database (with multiple tables and indices) is
stored in a single disk file.</li>
<li>ACID (Atomic, Consistent, Isolated, Durable) transactions.</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>A zero-configuration database engine - no DBA needed.</li>
<li>Small memory footprint: less than 30K lines of C code.</li>
<li><a href="speed.html">Two times faster</a> than PostgreSQL and
MySQL for many common operations.</li>
<li>Very simple
<a href="c_interface.html">C/C++ interface</a> requires the use of only
three functions and one opaque structure.</li>
<li>Small memory 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
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>Simple, well-commented source code.</li>
<li>Automated test suite provides over 90% code coverage.</li>
<li>Well-commented source code with over 90% test coverage.</li>
<li>Self-contained: no external dependencies.</li>
<li>Built and tested under Linux and Windows.</li>
<li>Sources are in the <a href="copyright.html">public domain</a>.
Use for any purpose.</li>
</ul>
</p>
}
puts {<h2>Current Status</h2>
<p>A <a href="changes.html">Change Summary</a> is available on this
website. You can also access a detailed
<a href="http://www.sqlite.org/cvstrac/timeline">change history</a>,
<a href="http://www.sqlite.org/cvstrac/rptview?rn=2">view open bugs</a>,
or
<a href="http://www.sqlite.org/cvstrac/tktnew">report new bugs</a>
at the
<a href="http://www.sqlite.org/cvstrac/">CVS server</a>.</p>
<p>Complete source code and precompiled binaries for the latest release are
<a href="download.html">available for download</a> on this site. You
can also obtain the latest changes by anonymous CVS access:
<blockquote><pre>
cvs -d :pserver:anonymous@www.sqlite.org:/sqlite login
cvs -d :pserver:anonymous@www.sqlite.org:/sqlite checkout sqlite
</pre></blockquote>
When prompted for a password, enter "anonymous".
</p>
<p>
Whenever either of the first two digits in the version number
for SQLite change, it means that the underlying file format
has changed. Usually these changes are backwards compatible.
See <a href="formatchng.html">formatchng.html</a>
for additional information.
The SQLite distribution comes with a standalone command-line
access program (<a href="sqlite.html">sqlite</a>) that can
be used to administer an SQLite database and which serves as
an example of how to use the SQLite library.
</p>
</td>
<td width="1" bgcolor="#80a796"></td>
<td valign="top" width="50%">
<h2>News</h2>
}
puts {<h2>Documentation</h2>
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%\">"
}
<p>The following documentation is currently available:</p>
newsitem {2004-May-31} {CVS Access Temporarily Suspended} {
Anonymous access to the CVS repository will be suspended
temporarily beginning on 2004-June-04
so that the developers working on version 3.0 can have a free hand to
implement features that a covered by a non-compete agreement.
Access will be reenabled after the non-compete expires on 2004-June-17.
}
<p><ul>
<li>A <a href="quickstart.html">Quick Start</a> guide to using SQLite in
5 minutes or less.</li>
<li><a href="faq.html">Frequently Asked Questions</a> are available online.</li>
<li>Information on the <a href="sqlite.html">sqlite</a>
command-line utility.</li>
<li>SQLite is <a href="datatypes.html">typeless</a>.
<li>The <a href="lang.html">SQL Language</a> subset understood by SQLite.</li>
<li>The <a href="c_interface.html">C/C++ Interface</a>.</li>
<li>The <a href="nulls.html">NULL handling</a> in SQLite versus
other SQL database engines.</li>
<li>The <a href="tclsqlite.html">Tcl Binding</a> to SQLite.</li>
<li>The <a href="arch.html">Architecture of the SQLite Library</a> describes
how the library is put together.</li>
<li>A description of the <a href="opcode.html">virtual machine</a> that
SQLite uses to access the database.</li>
<li>A description of the
<a href="fileformat.html">database file format</a> used by SQLite.
<li>A <a href="speed.html">speed comparison</a> between SQLite, PostgreSQL,
and MySQL.</li>
<li>User-written documentation is available on the
<a href="http://www.sqlite.org/cvstrac/wiki">SQLite Wiki</a>. Please
contribute if you can.</li>
</ul>
</p>
<p>The SQLite source code is 30% comment. These comments are
another important source of information. </p>
newsitem {2004-Apr-23} {Work Begins On SQLite Version 3} {
Work has begun on version 3 of SQLite. Version 3 is a major
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.
}
puts {
<a name="mailinglist" />
<h2>Mailing List</h2>
<p>A mailing list has been set up for discussion of
SQLite design issues or for asking questions about SQLite.
To subscribe send an email to
<a href="mailto:sqlite-users-subscribe@sqlite.org">
sqlite-users-subscribe@sqlite.org</a>.
If you would prefer to get digests rather than individual
emails, send a message to to
<a href="mailto:sqlite-users-digest-subscribe@sqlite.org">
sqlite-users-digest-subscribe@sqlite.org</a>.
For additional information about operating and using this
mailing list, send a message to
<a href="mailto:sqlite-users-help@sqlite.org">
sqlite-users-help@sqlite.org</a> and instructions will be
sent by to you by return email.
</p>
</td></tr></table>
}
puts {<h2>Professional Support and Custom Modifications</h2>}
puts {
<p>
If you would like professional support for SQLite
or if you want custom modifications to SQLite performed by the
original author, these services are available for a modest fee.
For additional information visit
<a href="http://www.hwaci.com/sw/sqlite/support.html">
http://www.hwaci.com/sw/sqlite/support.html</a> or contact:</p>
<blockquote>
D. Richard Hipp <br />
Hwaci - Applied Software Research <br />
704.948.4565 <br />
<a href="mailto:drh@hwaci.com">drh@hwaci.com</a>
</blockquote>
}
puts {<h2>Building From Source</h2>}
puts {
<p>To build sqlite under Unix, just unwrap the tarball, create a separate
build directory, run configure from the build directory and then
type "make". For example:</p>
<blockquote><pre>
$ tar xzf sqlite.tar.gz <i> Unpacks into directory named "sqlite" </i>
$ mkdir bld <i> Create a separate build directory </i>
$ cd bld
$ ../sqlite/configure
$ make <i> Builds "sqlite" and "libsqlite.a" </i>
$ make test <i> Optional: run regression tests </i>
</pre></blockquote>
<p>If you prefer, you can also build by making whatever modifications
you desire to the file "Makefile.linux-gcc" and then executing that
makefile. The latter method is used for all official development
and testing of SQLite and for building the precompiled
binaries found on this website. Windows binaries are generated by
cross-compiling from Linux using <a href="http://www.mingw.org/">MinGW</a></p>
}
puts {<h2>Related Sites</h2>
<p>
For information bindings of SQLite to other programming languages
(Perl, Python, Ruby, PHP, etc.) and for a list of programs currently
using SQLite, visit the Wiki documentation at:
</p>
<blockquote>
<a href="http://www.sqlite.org/cvstrac/wiki">
http://www.sqlite.org/cvstrac/wiki</a>
</blockquote>
}
puts {
</body></html>}
footer {$Id: index.tcl,v 1.83 2004/05/31 15:06:30 drh Exp $}

View File

@ -1,21 +1,12 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: lang.tcl,v 1.67 2004/04/23 17:04:45 drh Exp $}
puts {<html>
<head>
<title>Query Language Understood By SQLite</title>
</head>
<body bgcolor=white>
<h1 align=center>
SQL As Understood By SQLite
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: lang.tcl,v 1.68 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {Query Language Understood by SQLite}
puts {
<h2>SQL As Understood By SQLite</h2>
<p>The SQLite library understands most of the standard SQL
language. But it does <a href="omitted.html">omit some features</a>
while at the same time
@ -1841,10 +1832,4 @@ keyword_list {
*SQLITE_TEMP_MASTER
}
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 $rcsid

View File

@ -1,22 +1,12 @@
#
# Run this script to generated a nulls.html output file
#
set rcsid {$Id: nulls.tcl,v 1.5 2003/11/08 12:07:01 drh Exp $}
puts {<html>
<head>
<title>NULL Handling In SQLite Versus Other Database Engines</title>
</head>
<body bgcolor="white">
<h1 align="center">
NULL Handling in SQLite Versus Other Database Engines
</h1>
}
puts "<p align=\"center\">
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: nulls.tcl,v 1.6 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {NULL Handling in SQLite}
puts {
<h2>NULL Handling in SQLite Versus Other Database Engines</h2>
<p>
The goal is
to make SQLite handle NULLs in a standards-compliant way.
@ -334,11 +324,6 @@ select * from t2;
drop table t1;
drop table t2;
</pre>
<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 $rcsid

View File

@ -1,22 +1,12 @@
#
# Run this script to generated a omitted.html output file
#
set rcsid {$Id: omitted.tcl,v 1.5 2003/08/22 02:34:30 drh Exp $}
puts {<html>
<head>
<title>SQL Features That SQLite Does Not Implement</title>
</head>
<body bgcolor="white">
<h1 align="center">
SQL Features That SQLite Does Not Implement
</h1>
}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: omitted.tcl,v 1.6 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {SQL Features That SQLite Does Not Implement}
puts {
<h2>SQL Features That SQLite Does Not Implement</h2>
<p>
Rather than try to list all the features of SQL92 that SQLite does
support, it is much easier to list those that it does not.
@ -104,9 +94,5 @@ add them to the Wiki page at
<a href="http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql">
http://www.sqlite.org/cvstrac/wiki?p=Unsupported</a>
</p>
<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 $rcsid

View File

@ -1,19 +1,12 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: opcode.tcl,v 1.12 2003/06/29 16:11:13 drh Exp $}
puts {<html>
<head>
<title>SQLite Virtual Machine Opcodes</title>
</head>
<body bgcolor=white>
<h1 align=center>
SQLite Virtual Machine Opcodes
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: opcode.tcl,v 1.13 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {SQLite Virtual Machine Opcodes}
puts {
<h2>SQLite Virtual Machine Opcodes</h2>
}
set fd [open [lindex $argv 0] r]
set file [read $fd [file size [lindex $argv 0]]]
@ -46,7 +39,7 @@ foreach line [split $file \n] {
unset file
puts {
<h2>Introduction</h2>
<h3>Introduction</h3>
<p>In order to execute an SQL statement, the SQLite library first parses
the SQL, analyzes the statement, then generates a short program to execute
@ -147,7 +140,7 @@ There are operations to read or write to memory slots of the aggregator
in focus. There are also operations to change the focus aggregator
and to scan through all aggregators.</p>
<h2>Viewing Programs Generated By SQLite</h2>
<h3>Viewing Programs Generated By SQLite</h3>
<p>Every SQL statement that SQLite interprets results in a program
for the virtual machine. But if you precede the SQL statement with
@ -224,7 +217,7 @@ PRAGMA vdbe_trace=on;
You can turn tracing back off by entering a similar statement but
changing the value "on" to "off".</p>
<h2>The Opcodes</h2>
<h3>The Opcodes</h3>
}
puts "<p>There are currently [llength $OpcodeList] opcodes defined by
@ -242,11 +235,4 @@ foreach op [lsort -dictionary $OpcodeList] {
puts "<td>[string trim $Opcode($op:text)]</td></tr>"
}
puts {</table></p>}
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 $rcsid

View File

@ -1,22 +1,14 @@
#
# Run this Tcl script to generate the speed.html file.
#
set rcsid {$Id: speed.tcl,v 1.13 2003/06/29 16:11:13 drh Exp $ }
puts {<html>
<head>
<title>Database Speed Comparison: SQLite versus PostgreSQL</title>
</head>
<body bgcolor=white>
<h1 align=center>
Database Speed Comparison
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: speed.tcl,v 1.14 2004/05/31 15:06:30 drh Exp $ }
source common.tcl
header {SQLite Database Speed Comparison}
puts {
<h2>Executive Summary</h2>
<h2>Database Speed Comparison</h2>
<h3>Executive Summary</h3>
<p>A series of tests were run to measure the relative performance of
SQLite 2.7.6, PostgreSQL 7.1.3, and MySQL 3.23.41.
@ -61,7 +53,7 @@ The results presented here come with the following caveats:
</p></li>
</ul>
<h2>Test Environment</h2>
<h3>Test Environment</h3>
<p>
The platform used for these tests is a 1.6GHz Athlon with 1GB or memory
@ -132,7 +124,7 @@ synchronous) and the asynchronous SQLite times are for
comparison against the asynchronous MySQL engine.
</p>
<h2>Test 1: 1000 INSERTs</h2>
<h3>Test 1: 1000 INSERTs</h3>
<blockquote>
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));<br>
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');<br>
@ -162,7 +154,7 @@ the disk surface before continuing. For most of the 13 seconds in the
synchronous test, SQLite was sitting idle waiting on disk I/O to complete.</p>
<h2>Test 2: 25000 INSERTs in a transaction</h2>
<h3>Test 2: 25000 INSERTs in a transaction</h3>
<blockquote>
BEGIN;<br>
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));<br>
@ -187,7 +179,7 @@ have to do any fsync()s until the very end. When unshackled in
this way, SQLite is much faster than either PostgreSQL and MySQL.
</p>
<h2>Test 3: 25000 INSERTs into an indexed table</h2>
<h3>Test 3: 25000 INSERTs into an indexed table</h3>
<blockquote>
BEGIN;<br>
CREATE TABLE t3(a INTEGER, b INTEGER, c VARCHAR(100));<br>
@ -211,7 +203,7 @@ SQLite is not as fast at creating new index entries as the other engines
(see Test 6 below) but its overall speed is still better.
</p>
<h2>Test 4: 100 SELECTs without an index</h2>
<h3>Test 4: 100 SELECTs without an index</h3>
<blockquote>
BEGIN;<br>
SELECT count(*), avg(b) FROM t2 WHERE b>=0 AND b<1000;<br>
@ -237,7 +229,7 @@ enhancements have increased its speed so that it is now the fastest
of the group.
</p>
<h2>Test 5: 100 SELECTs on a string comparison</h2>
<h3>Test 5: 100 SELECTs on a string comparison</h3>
<blockquote>
BEGIN;<br>
SELECT count(*), avg(b) FROM t2 WHERE c LIKE '%one%';<br>
@ -261,7 +253,7 @@ SQLite is over three times faster than PostgreSQL here and about 30%
faster than MySQL.
</p>
<h2>Test 6: Creating an index</h2>
<h3>Test 6: Creating an index</h3>
<blockquote>
CREATE INDEX i2a ON t2(a);<br>CREATE INDEX i2b ON t2(b);
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -278,7 +270,7 @@ is being worked on. Hopefully, future versions of SQLite will do better
here.
</p>
<h2>Test 7: 5000 SELECTs with an index</h2>
<h3>Test 7: 5000 SELECTs with an index</h3>
<blockquote>
SELECT count(*), avg(b) FROM t2 WHERE b>=0 AND b<100;<br>
SELECT count(*), avg(b) FROM t2 WHERE b>=100 AND b<200;<br>
@ -300,7 +292,7 @@ All three database engines run faster when they have indices to work with.
But SQLite is still the fastest.
</p>
<h2>Test 8: 1000 UPDATEs without an index</h2>
<h3>Test 8: 1000 UPDATEs without an index</h3>
<blockquote>
BEGIN;<br>
UPDATE t1 SET b=b*2 WHERE a>=0 AND a<10;<br>
@ -325,7 +317,7 @@ normally a very fast engine. Perhaps this problem has been addressed
in later versions of MySQL.
</p>
<h2>Test 9: 25000 UPDATEs with an index</h2>
<h3>Test 9: 25000 UPDATEs with an index</h3>
<blockquote>
BEGIN;<br>
UPDATE t2 SET b=468026 WHERE a=1;<br>
@ -348,7 +340,7 @@ MySQL on this test. But recent optimizations to SQLite have more
than doubled speed of UPDATEs.
</p>
<h2>Test 10: 25000 text UPDATEs with an index</h2>
<h3>Test 10: 25000 text UPDATEs with an index</h3>
<blockquote>
BEGIN;<br>
UPDATE t2 SET c='one hundred forty eight thousand three hundred eighty two' WHERE a=1;<br>
@ -377,7 +369,7 @@ knowledgeable administrator might be able to get PostgreSQL to run a lot
faster here by tweaking and tuning the server a little.
</p>
<h2>Test 11: INSERTs from a SELECT</h2>
<h3>Test 11: INSERTs from a SELECT</h3>
<blockquote>
BEGIN;<br>INSERT INTO t1 SELECT b,a,c FROM t2;<br>INSERT INTO t2 SELECT b,a,c FROM t1;<br>COMMIT;
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -394,7 +386,7 @@ The PostgreSQL engine is still thrashing - most of the 61 seconds it used
were spent waiting on disk I/O.
</p>
<h2>Test 12: DELETE without an index</h2>
<h3>Test 12: DELETE without an index</h3>
<blockquote>
DELETE FROM t2 WHERE c LIKE '%fifty%';
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -410,7 +402,7 @@ but the asynchronous version is the fastest.
The difference is the extra time needed to execute fsync().
</p>
<h2>Test 13: DELETE with an index</h2>
<h3>Test 13: DELETE with an index</h3>
<blockquote>
DELETE FROM t2 WHERE a>10 AND a<20000;
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -426,7 +418,7 @@ PostgreSQL is faster than MySQL. The asynchronous SQLite is,
however, faster then both the other two.
</p>
<h2>Test 14: A big INSERT after a big DELETE</h2>
<h3>Test 14: A big INSERT after a big DELETE</h3>
<blockquote>
INSERT INTO t2 SELECT * FROM t1;
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -443,7 +435,7 @@ sequence of DELETEs followed by new INSERTs. As this test shows, the
problem has now been resolved.
</p>
<h2>Test 15: A big DELETE followed by many small INSERTs</h2>
<h3>Test 15: A big DELETE followed by many small INSERTs</h3>
<blockquote>
BEGIN;<br>
DELETE FROM t1;<br>
@ -465,7 +457,7 @@ SQLite is very good at doing INSERTs within a transaction, which probably
explains why it is so much faster than the other databases at this test.
</p>
<h2>Test 16: DROP TABLE</h2>
<h3>Test 16: DROP TABLE</h3>
<blockquote>
DROP TABLE t1;<br>DROP TABLE t2;<br>DROP TABLE t3;
</blockquote><table border=0 cellpadding=0 cellspacing=0>
@ -489,10 +481,4 @@ so if SQLite takes a little longer, that is not seen as a big problem.
</p>
}
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 $rcsid

View File

@ -1,27 +1,18 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: sqlite.tcl,v 1.21 2003/06/29 16:11:13 drh Exp $}
puts {<html>
<head>
<title>sqlite: A program of interacting with SQLite databases</title>
</head>
<body bgcolor=white>
<h1 align=center>
sqlite: A program to administer SQLite databases
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: sqlite.tcl,v 1.22 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {sqlite: A program of interacting with SQLite databases}
puts {
<h2>sqlite: A command-line program to administer SQLite databases</h2>
<p>The SQLite library includes a simple command-line utility named
<b>sqlite</b> that allows the user to manually enter and execute SQL
commands against an SQLite database. This document provides a brief
introduction on how to use <b>sqlite</b>.
<h2>Getting Started</h2>
<h3>Getting Started</h3>
<p>To start the <b>sqlite</b> program, just type "sqlite" followed by
the name the file that holds the SQLite database. If the file does
@ -84,7 +75,7 @@ sqlite>
puts {
<h2>Aside: Querying the SQLITE_MASTER table</h2>
<h3>Aside: Querying the SQLITE_MASTER table</h3>
<p>The database schema in an SQLite database is stored in
a special table named "sqlite_master".
@ -123,7 +114,7 @@ is stored in another special table named "sqlite_temp_master". The
"sqlite_temp_master" table is temporary itself.
</p>
<h2>Special commands to sqlite</h2>
<h3>Special commands to sqlite</h3>
<p>
Most of the time, sqlite just reads lines of input and passes them
@ -168,7 +159,7 @@ sqlite>
}
puts {
<h2>Changing Output Formats</h2>
<h3>Changing Output Formats</h3>
<p>The sqlite program is able to show the results of a query
in five different formats: "line", "column", "list", "html", and "insert".
@ -305,7 +296,7 @@ CGI.</p>
}
puts {
<h2>Writing results to a file</h2>
<h3>Writing results to a file</h3>
<p>By default, sqlite sends query results to standard output. You
can change this using the ".output" command. Just put the name of
@ -326,7 +317,7 @@ $
}
puts {
<h2>Querying the database schema</h2>
<h3>Querying the database schema</h3>
<p>The sqlite program provides several convenience commands that
are useful for looking at the schema of the database. There is
@ -441,7 +432,7 @@ sqlite> (((.databases)))
}
puts {
<h2>Converting An Entire Database To An ASCII Text File</h2>
<h3>Converting An Entire Database To An ASCII Text File</h3>
<p>Use the ".dump" command to convert the entire contents of a
database into a single ASCII text file. This file can be converted
@ -495,7 +486,7 @@ $ (((pg_dump -a ex2 | sqlite ex3)))
}
puts {
<h2>Other Dot Commands</h2>
<h3>Other Dot Commands</h3>
<p>The ".explain" dot command can be used to set the output mode
to "column" and to set the column widths to values that are reasonable
@ -539,7 +530,7 @@ index is locked.</p>
<p>And finally, we mention the ".exit" command which causes the
sqlite program to exit.</p>
<h2>Using sqlite in a shell script</h2>
<h3>Using sqlite in a shell script</h3>
<p>
One way to use sqlite in a shell script is to use "echo" or
@ -564,7 +555,7 @@ $
}
puts {
<h2>Ending shell commands</h2>
<h3>Ending shell commands</h3>
<p>
SQLite commands are normally terminated by a semicolon. In the shell
@ -576,18 +567,11 @@ to that function.</p>
}
puts {
<h2>Compiling the sqlite program from sources</h2>
<h3>Compiling the sqlite program from sources</h3>
<p>
The sqlite program is built automatically when you compile the
sqlite library. Just get a copy of the source tree, run
"configure" and then "make".</p>
}
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 $rcsid

View File

@ -1,26 +1,17 @@
#
# Run this Tcl script to generate the tclsqlite.html file.
#
set rcsid {$Id: tclsqlite.tcl,v 1.8 2003/08/19 14:31:02 drh Exp $}
puts {<html>
<head>
<title>The Tcl interface to the SQLite library</title>
</head>
<body bgcolor=white>
<h1 align=center>
The Tcl interface to the SQLite library
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: tclsqlite.tcl,v 1.9 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {The Tcl interface to the SQLite library}
puts {
<h2>The Tcl interface to the SQLite library</h2>
<p>The SQLite library is designed to be very easy to use from
a Tcl or Tcl/Tk script. This document gives an overview of the Tcl
programming interface.</p>
<h2>The API</h2>
<h3>The API</h3>
<p>The interface to the SQLite library consists of single
tcl command named <b>sqlite</b>. Because there is only this
@ -69,7 +60,7 @@ defined:</p>
<p>We will explain all of these methods, though not in that order.
We will be begin with the "close" method.</p>
<h2>The "close" method</h2>
<h3>The "close" method</h3>
<p>
As its name suggests, the "close" method to an SQLite database just
@ -93,7 +84,7 @@ to the previous:</p>
rename db1 {}</b>
</blockquote>
<h2>The "eval" method</h2>
<h3>The "eval" method</h3>
<p>
The most useful <i>dbcmd</i> method is "eval". The eval method is used
@ -193,7 +184,7 @@ a=2 b=goodbye<br>
a=3 b=howdy!</b>
</blockquote>
<h2>The "complete" method</h2>
<h3>The "complete" method</h3>
<p>
The "complete" method takes a string of supposed SQL as its only argument.
@ -206,7 +197,7 @@ This is really just an interface to the <b>sqlite_complete()</b> C
function. Refer to the <a href="c_interface.html">C/C++ interface</a>
specification for additional information.</p>
<h2>The "timeout" method</h2>
<h3>The "timeout" method</h3>
<p>The "timeout" method is used to control how long the SQLite library
will wait for locks to clear before giving up on a database transaction.
@ -233,7 +224,7 @@ number. For example:</p>
to wait for the lock to clear. So in the example above, the maximum delay
would be 2 seconds.</p>
<h2>The "busy" method</h2>
<h3>The "busy" method</h3>
<p>The "busy" method, like "timeout", only comes into play when the
database is locked. But the "busy" method gives the programmer much more
@ -245,12 +236,12 @@ so that the lock can be tried again. The callback procedure should
return "0" if it wants SQLite to try again to open the database and
should return "1" if it wants SQLite to abandon the current operation.
<h2>The "last_insert_rowid" method</h2>
<h3>The "last_insert_rowid" method</h3>
<p>The "last_insert_rowid" method returns an integer which is the ROWID
of the most recently inserted database row.</p>
<h2>The "onecolumn" method</h2>
<h3>The "onecolumn" method</h3>
<p>The "onecolumn" method works like "eval" in that it evaluates the
SQL query statement given as its argument. The difference is that
@ -261,18 +252,11 @@ first row of the query result.</p>
do a "<tt>[lindex&nbsp;...&nbsp;0]</tt>" on the results of an "eval"
in order to extract a single column result.</p>
<h2>The "changes" method</h2>
<h3>The "changes" method</h3>
<p>The "changes" method returns an integer which is the number of rows
in the database that were inserted, deleted, and/or modified by the most
recent "eval" method.</p>
}
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 $rcsid

View File

@ -1,21 +1,12 @@
#
# Run this Tcl script to generate the vdbe.html file.
#
set rcsid {$Id: vdbe.tcl,v 1.11 2003/06/29 16:11:13 drh Exp $}
puts {<html>
<head>
<title>The Virtual Database Engine of SQLite</title>
</head>
<body bgcolor=white>
<h1 align=center>
The Virtual Database Engine of SQLite
</h1>}
puts "<p align=center>
(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set rcsid {$Id: vdbe.tcl,v 1.12 2004/05/31 15:06:30 drh Exp $}
source common.tcl
header {The Virtual Database Engine of SQLite}
puts {
<h2>The Virtual Database Engine of SQLite</h2>
<blockquote><b>
This document describes the virtual machine used in SQLite version 2.8.0.
</b></blockquote>
@ -1989,11 +1980,4 @@ feel free to fix them and/or contact the author at
<a href="mailto:drh@hwaci.com">drh@hwaci.com</a>. Your bug fixes or
suggestions are always welcomed.</p>
}
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 $rcsid