-C Version\s2.1.3\s(CVS\s458)
-D 2001-11-24T00:45:00
+C Update\sthe\sFAQ.\s\sChange\sthe\sGMT\stimezone\slabel\sto\sUTC\son\sall\sfiles.\s(CVS\s318)
+D 2001-11-24T13:23:05
F Makefile.in 352fed589f09dd94347e0bb391d047118ebd6105
F Makefile.template b6c3d3ba089e97e3a721e967f3151350f36cb42b
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
F tool/report1.txt 9eae07f26a8fc53889b45fc833a66a33daa22816
F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
-F www/arch.tcl 03b521d252575f93b9c52f7c8b0007011512fcfb
-F www/c_interface.tcl d446234c1d3ed747fcefd30e972a19f2b2fc0e05
+F www/arch.tcl 72a0c80e9054cc7025a50928d28d9c75c02c2b8b
+F www/c_interface.tcl 1b05a758844273509800b04aa38841fab8dd9891
F www/changes.tcl 0a54872839461f49b7300b36571d342f0ef0d4fb
-F www/crosscompile.tcl c99efacb3aefaa550c6e80d91b240f55eb9fd33e
-F www/download.tcl 3e51c9ff1326b0a182846134987301310dff7d60
+F www/crosscompile.tcl 3622ebbe518927a3854a12de51344673eb2dd060
+F www/download.tcl 1ea61f9d89a2a5a9b2cee36b0d5cf97321bdefe0
F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
-F www/faq.tcl 55c7fbb5490d045a3e8223e41b51d8b93310b52c
-F www/index.tcl 7e1afccc37548b7107f666105749bfe7d99d267b
-F www/lang.tcl f0e953bfeaaba4c33117ec4bca639dd71ba0e13e
-F www/mingw.tcl fc5f4ba9d336b6e8c97347cc6496d6162461ef60
-F www/opcode.tcl 7989ed328316454c7030dcdb60f09ae1e017286d
-F www/speed.tcl 212a91d555384e01873160d6a189f1490c791bc2
-F www/sqlite.tcl 6a21242a272e9c0939a04419a51c3d50cae33e3e
-F www/tclsqlite.tcl 13d50723f583888fc80ae1a38247c0ab415066fa
-F www/vdbe.tcl eb4e1768cffa266cbbb7133488022a7a6cb278d9
-P fc2aae04578c305304a45ec6b76d3ab216cc7526
-R 4107b50dd67a5b31593969d21ca32f97
+F www/faq.tcl f1fd488bef706934f6e13cc56bc642ae09c72515
+F www/index.tcl 6d6d847dd3e39e9aa7b0c9b8f3144819ff3f9f51
+F www/lang.tcl 87ba01664d4ae7126a4a25bcf04407c8ea5a626b
+F www/mingw.tcl f1c7c0a7f53387dd9bb4f8c7e8571b7561510ebc
+F www/opcode.tcl 1d60621d3550b9723447bd2dc6875d97290bec5f
+F www/speed.tcl 83457b2bf6bb430900bd48ca3dd98264d9a916a5
+F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
+F www/tclsqlite.tcl 880ef67cb4f2797b95bf1368fc4e0d8ca0fda956
+F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
+P 974d42839b6ced9c9b9ea14abec0c4723388a991
+R 510051e75409b6b257f01060b1675252
U drh
-Z e3ec2c565db6eedb5055591c44e9acbb
+Z 99119da7cfe58575444c98fda1901651
-974d42839b6ced9c9b9ea14abec0c4723388a991
\ No newline at end of file
+f1a5808288e4204aee03531de0b9e6646062bd94
\ No newline at end of file
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: arch.tcl,v 1.6 2001/09/28 23:11:24 drh Exp $}
+set rcsid {$Id: arch.tcl,v 1.7 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
The Architecture Of SQLite
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: c_interface.tcl,v 1.19 2001/10/31 15:44:47 drh Exp $}
+set rcsid {$Id: c_interface.tcl,v 1.20 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
The C language interface to the SQLite library
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the crosscompile.html file.
#
-set rcsid {$Id: crosscompile.tcl,v 1.4 2001/01/31 13:28:09 drh Exp $}
+set rcsid {$Id: crosscompile.tcl,v 1.5 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
Notes On How To Compile SQLite Using The MinGW Cross-Compiler
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this TCL script to generate HTML for the download.html file.
#
-set rcsid {$Id: download.tcl,v 1.1 2001/10/06 16:33:04 drh Exp $}
+set rcsid {$Id: download.tcl,v 1.2 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head><title>SQLite Download Page</title></head>
<body bgcolor=white>
<h1 align=center>SQLite Download Page</h1>}
#<p align=center>}
-#puts "This page was last modified on [lrange $rcsid 3 4] GMT<br>"
+#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] GMT"
+#puts " created on [exec cat last_change] UTC"
#puts {</p>}
puts {<h2>Precompiled Binaries For Linux</h2>}
#
# Run this script to generated a faq.html output file
#
+set rcsid {$Id: faq.tcl,v 1.2 2001/11/24 13:23:05 drh Exp $}
+
puts {<html>
<head>
<title>SQLite Frequently Asked Questions</title>
<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 cnt 1
proc faq {question answer} {
a typical command for transferring an SQLite databases between two
machines:
<blockquote><pre>
-echo .dump | sqlite from.db | ssh sparc 'sqlite to.db'
+echo .dump | sqlite from.db | ssh sparc sqlite to.db
</pre></blockquote>
The command above assumes the name of the destination machine is
<b>sparc</b> and that you have SSH running on both the source and
while redirecting input from the temporary file.</p>
}
+faq {
+ Can multiple applications or multiple instances of the same
+ application access a single database file at the same time?
+} {
+ <p>Multiple processes can have the same database open at the same
+ time. On unix systems, multiple processes can be doing a SELECT
+ at the same time. But only one process can be making changes to
+ the database at once. On windows, only a single process can be
+ reading from the database at one time since Win95/98/ME does not
+ support reader/writer locks.</p>
+
+ <p>The locking mechanism used to control simultaneous access might
+ not work correctly if the database file is kept on an NFS filesystem.
+ You should avoid putting SQLite database files on NFS if multiple
+ processes might try to access the file at the same time.</p>
+
+ <p>Locking in SQLite is very course-grained. SQLite locks the
+ entire database. Big database servers (PostgreSQL, MySQL, Oracle, etc.)
+ generally have finer grained locking, such as locking on a single
+ table or a single row within a table. If you have a massively
+ parallel database application, you should consider using a big database
+ server instead of SQLite.</p>
+
+ <p>When SQLite tries to access a file that is locked by another
+ process, the default behavior is to return SQLITE_BUSY. You can
+ adjust this behavior from C code using the <b>sqlite_busy_handler()</b> or
+ <b>sqlite_busy_timeout()</b> API functions. See the API documentation
+ for details.</p>
+}
+
+faq {
+ Is SQLite threadsafe?
+} {
+ <p>Almost. In the source file named "<b>os.c</b>" there are two functions
+ named <b>sqliteOsEnterMutex()</b> and <b>sqliteOsLeaveMutex()</b>. In
+ the default distribution these functions are stubs. They do not do anything.
+ If you change them so that they actually implement a mutex, then SQLite
+ will be threadsafe. But because these routines are stubs, the default
+ SQLite distribution is not threadsafe.</p>
+}
+
+faq {
+ How do I list all tables/indices contained in an SQLite database
+} {
+ <p>If you are running the <b>sqlite</b> command-line access program
+ you can type "<b>.tables</b>" to get a list of all tables. Or you
+ can type "<b>.schema</b>" to see the complete database schema including
+ all tables and indices. Either of these commands can be followed by
+ a LIKE pattern that will restrict the tables that are displayed.</p>
+
+ <p>From within a C/C++ program (or a script using Tcl/Ruby/Perl/Python
+ bindings) you can get access to table and index names by doing a SELECT
+ on a special table named "<b>SQLITE_MASTER</b>". Every SQLite database
+ has an SQLITE_MASTER table that defines the schema for the database.
+ The SQLITE_MASTER table looks like this:</p>
+<blockquote><pre>
+CREATE TABLE sqlite_master (
+ type TEXT,
+ name TEXT,
+ tbl_name TEXT,
+ rootpage INTEGER,
+ sql TEXT
+);
+</pre></blockquote>
+ <p>For tables, the <b>type</b> field will always be <b>'table'</b> and the
+ <b>name</b> field will be the name of the table. So to get a list of
+ all tables in the database, use the following SELECT command:</p>
+<blockquote><pre>
+SELECT name FROM sqlite_master
+WHERE type='table'
+ORDER BY name;
+</pre></blockquote>
+ <p>For indices, <b>type</b> is equal to <b>'index'</b>, <b>name</b> is the
+ name of the index and <b>tbl_name</b> is the name of the table to which
+ the index belongs. For both tables and indices, the <b>sql</b> field is
+ the text of the original CREATE TABLE or CREATE INDEX statement that
+ created the table or index. For automatically created indices (used
+ to implement the PRIMARY KEY or UNIQUE constraints) the <b>sql</b> field
+ is NULL.</p>
+
+ <p>The SQLITE_MASTER table is read-only. You cannot change this table
+ using UPDATE, INSERT, or DELETE. The table is automatically updated by
+ CREATE TABLE, CREATE INDEX, DROP TABLE, and DROP INDEX commands.</p>
+
+ <p>Temporary tables do not appear in the SQLITE_MASTER table. At this time
+ there is no way to get a listing of temporary tables and indices.</p>
+}
+
# End of questions and answers.
#############
#
# Run this TCL script to generate HTML for the index.html file.
#
-set rcsid {$Id: index.tcl,v 1.48 2001/11/24 00:31:47 drh Exp $}
+set rcsid {$Id: index.tcl,v 1.49 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head><title>SQLite: An SQL Database Engine In A C Library</title></head>
<body bgcolor=white>
<h1 align=center>SQLite: An SQL Database Engine In A C Library</h1>
<p align=center>}
-puts "This page was last modified on [lrange $rcsid 3 4] GMT<br>"
+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] GMT"
+puts " created on [exec cat last_change] UTC"
puts {</p>}
puts {<h2>Introduction</h2>
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: lang.tcl,v 1.15 2001/11/06 14:10:42 drh Exp $}
+set rcsid {$Id: lang.tcl,v 1.16 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
SQL As Understood By SQLite
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the crosscompile.html file.
#
-set rcsid {$Id: mingw.tcl,v 1.2 2000/07/31 19:16:32 drh Exp $}
+set rcsid {$Id: mingw.tcl,v 1.3 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
Notes On How To Build MinGW As A Cross-Compiler
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: opcode.tcl,v 1.7 2001/11/01 14:41:34 drh Exp $}
+set rcsid {$Id: opcode.tcl,v 1.8 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
SQLite Virtual Machine Opcodes
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
set fd [open [lindex $argv 0] r]
#
# Run this Tcl script to generate the speed.html file.
#
-set rcsid {$Id: speed.tcl,v 1.4 2001/10/31 15:44:48 drh Exp $ }
+set rcsid {$Id: speed.tcl,v 1.5 2001/11/24 13:23:05 drh Exp $ }
puts {<html>
<head>
Database Speed Comparison
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: sqlite.tcl,v 1.15 2001/09/28 23:11:24 drh Exp $}
+set rcsid {$Id: sqlite.tcl,v 1.16 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
sqlite: A program to administer SQLite databases
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the tclsqlite.html file.
#
-set rcsid {$Id: tclsqlite.tcl,v 1.4 2001/09/20 01:44:44 drh Exp $}
+set rcsid {$Id: tclsqlite.tcl,v 1.5 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
The Tcl interface to the SQLite library
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {
#
# Run this Tcl script to generate the vdbe.html file.
#
-set rcsid {$Id: vdbe.tcl,v 1.8 2001/11/21 02:21:13 drh Exp $}
+set rcsid {$Id: vdbe.tcl,v 1.9 2001/11/24 13:23:05 drh Exp $}
puts {<html>
<head>
The Virtual Database Engine of SQLite
</h1>}
puts "<p align=center>
-(This page was last modified on [lrange $rcsid 3 4] GMT)
+(This page was last modified on [lrange $rcsid 3 4] UTC)
</p>"
puts {