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:
52
manifest
52
manifest
@ -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
|
||||
|
@ -1 +1 @@
|
||||
0e07006704cd441f91d5fadbf3b644fd20da79bd
|
||||
2052911b1fd119af9dbd81fdfe80244685f58212
|
55
www/arch.tcl
55
www/arch.tcl
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
45
www/common.tcl
Normal 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>}
|
||||
}
|
@ -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
109
www/copyright-release.html
Normal 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> </p>
|
||||
<p> </p>
|
||||
<p> </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
BIN
www/copyright-release.pdf
Normal file
Binary file not shown.
@ -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 Typelessness</h2>
|
||||
<h3>1.0 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 The INTEGER PRIMARY KEY</h2>
|
||||
<h3>2.0 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 Comparison and Sort Order</h2>
|
||||
<h3>3.0 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 "<" or
|
||||
">=" is always false.
|
||||
</p>
|
||||
|
||||
<h2>4.0 How SQLite Determines Datatypes</h2>
|
||||
<h3>4.0 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 Examples</h2>
|
||||
<h3>5.0 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
84
www/docs.tcl
Normal 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 {\ } 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
|
@ -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
|
||||
|
41
www/faq.tcl
41
www/faq.tcl
@ -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
|
||||
|
@ -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 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 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 The Pager Layer</h2>
|
||||
<h3>2.0 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 The B-Tree Layer</h2>
|
||||
<h3>3.0 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 B-Tree Page 1 Details</h3>
|
||||
<h4>3.1 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 Structure Of A Single B-Tree Page</h3>
|
||||
<h4>3.2 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 The B-Tree Free Page List</h3>
|
||||
<h4>3.3 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 The Schema Layer</h2>
|
||||
<h3>4.0 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 SQL Table Implementation Details</h3>
|
||||
<h4>4.1 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 SQL Index Implementation Details</h3>
|
||||
<h4>4.2 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 SQL Schema Storage And Root B-Tree Page Numbers</h3>
|
||||
<h4>4.4 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 Schema Version Numbering And Other Meta-Information</h3>
|
||||
<h4>4.4 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
|
||||
|
@ -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
|
||||
|
247
www/index.tcl
247
www/index.tcl
@ -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 $}
|
||||
|
27
www/lang.tcl
27
www/lang.tcl
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ... 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
|
||||
|
28
www/vdbe.tcl
28
www/vdbe.tcl
@ -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
|
||||
|
Reference in New Issue
Block a user