Documentation updates. Added the "distinctive features" page. (CVS 2383)

FossilOrigin-Name: 33a0191638a4d6b33422f62487bfb9a0089d3cff
This commit is contained in:
drh 2005-03-12 15:55:10 +00:00
parent f580380463
commit 9179fd93ff
7 changed files with 116 additions and 22 deletions

View File

@ -421,6 +421,9 @@ datatypes.html: $(TOP)/www/datatypes.tcl
datatype3.html: $(TOP)/www/datatype3.tcl
tclsh $(TOP)/www/datatype3.tcl >datatype3.html
different.html: $(TOP)/www/different.tcl
tclsh $(TOP)/www/different.tcl >different.html
docs.html: $(TOP)/www/docs.tcl
tclsh $(TOP)/www/docs.tcl >docs.html
@ -509,6 +512,7 @@ DOC = \
conflict.html \
datatypes.html \
datatype3.html \
different.html \
docs.html \
download.html \
faq.html \

View File

@ -1,5 +1,5 @@
C Version\s3.1.5\s(CVS\s2382)
D 2005-03-11T18:06:53
C Documentation\supdates.\s\sAdded\sthe\s"distinctive\sfeatures"\spage.\s(CVS\s2383)
D 2005-03-12T15:55:11
F Makefile.in 5c00d0037104de2a50ac7647a5f12769795957a3
F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7
F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1
@ -16,7 +16,7 @@ F doc/lemon.html f0f682f50210928c07e562621c3b7e8ab912a538
F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
F ltmain.sh f6b283068efa69f06eb8aa1fe4bddfdbdeb35826
F main.mk 632150f494ae1a96c8ac3cda0229a77cd18cb843
F main.mk 3acc5ae52addd43fd1858fe99fca54a49bca6a56
F mkdll.sh 5ec23622515d5bf8969404e80cfb5e220ddf0512
F mkopcodec.awk bd46ad001c98dfbab07b1713cb8e692fa0e5415d
F mkopcodeh.awk e4d010870a3e98fd4323635c31565a3ca8584741
@ -249,8 +249,8 @@ F www/copyright-release.pdf cfca3558fc97095e57c6117d08f1f5b80d95125a
F www/copyright.tcl 82c9670c7ddb0311912ab7fe24703f33c531066c
F www/datatype3.tcl 1d14f70ab73075556b95e76a5c13e5b03f7f6c47
F www/datatypes.tcl 7c786d2e8ff434346764534ec015966d17efce60
F www/different.tcl 051086bc273a36808dc08d58ed098611fb53e315
F www/docs.tcl 09e5eccffad783fe65fac87772f5265e9bb64abe
F www/different.tcl 1bff4f968e7080f33148d91ca800f803838f320f
F www/docs.tcl 95f464d6ae02fe265a845ba60d44e053ab5cb5d5
F www/download.tcl 3af00c0e8fd915961707cddb4c2260f5cf59f3c1
F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c
F www/faq.tcl 1e348dec52dc0f21f4216fd6918c69c56daa4cfd
@ -267,14 +267,14 @@ F www/opcode.tcl 5bd68059416b223515a680d410a9f7cb6736485f
F www/optimizing.tcl f0b2538988d1bbad16cbfe63ec6e8f48c9eb04e5
F www/pragma.tcl 3b7d88d6545e9b8ea4a3661e0be5e0f0e9817466
F www/quickstart.tcl 6f6f694b6139be2d967b1492eb9a6bdf7058aa60
F www/speed.tcl 1f8fb33df0d5bebf29508af763db3ee019c45967
F www/speed.tcl 656ed5be8cc9d536353e1a96927b925634a62933
F www/sqlite.tcl b51fd15f0531a54874de785a9efba323eecd5975
F www/support.tcl 3955da0fd82be68cc5c83d347c05095e80967051
F www/tclsqlite.tcl e73f8f8e5f20e8277619433f7970060ab01088fc
F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
F www/whentouse.tcl 3e522a06ad41992023c80ca29a048ae2331ca5bd
P baddb06450e6948334faef4afa7cbfba40a2aa0f
R dc82974a3228fea88ec10f436f957e81
P b1792ae51666f27bc47cf986937a3caacdd3a9f7
R ae5ab2337936f8b14b51431c67974b2a
U drh
Z 182e19dd94e55cce93f9ec86e717bb1a
Z 6b216f6f11e1748fb1efcd8b223e6a22

View File

@ -1 +1 @@
b1792ae51666f27bc47cf986937a3caacdd3a9f7
33a0191638a4d6b33422f62487bfb9a0089d3cff

View File

@ -1,4 +1,4 @@
set rcsid {$Id: different.tcl,v 1.2 2005/01/20 22:48:49 drh Exp $}
set rcsid {$Id: different.tcl,v 1.3 2005/03/12 15:55:11 drh Exp $}
source common.tcl
header {Distinctive Features Of SQLite}
puts {
@ -81,7 +81,7 @@ feature onefile {Single Database File} {
feature small {Compact} {
When optimized for size, the whole SQLite library with everything enabled
is less than 220KiB in size (as measured on an ix86 using the "size"
is less than 225KiB in size (as measured on an ix86 using the "size"
utility from the GNU compiler suite.) Unneeded features can be disabled
at compile-time to further reduce the size of the library to under
170KiB if desired.
@ -96,24 +96,91 @@ feature small {Compact} {
}
feature typing {Manifest typing} {
Most SQL database engines use static typing. A datatype is associated
with each column in a table and only values of that particular datatype
are allowed to be stored in that column. SQLite relaxes this restriction
by using manifest typing.
In manifest typing, the datatype is a property of the value itself, not
of the column in which the value is stored.
SQLite thus allows the user to store
any value of any datatype into any column regardless of the declared type
of that column. (There are some exceptions to this rule: An INTEGER
PRIMARY KEY column may only store integers. And SQLite attempts to coerce
values into the declared datatype of the column when it can.)
<p>
The SQL language specification calls for static typing. So some people
feel that the use of manifest typing in SQLite is a bug. But the authors
of SQLite feel very strongly that this is a feature. The authors argue
that static typing is a bug in the SQL specification that SQLite has fixed
in a backwards compatible way.
}
feature flex {Variable-length records} {
Most other SQL database engines allocated a fixed amount of disk space
for each row in a most tables. They play special tricks for handling
BLOBs and CLOBs which can be of wildly varying length. But for most
tables, if you declare a column to be a VARCHAR(100) then the database
engine will allocate
100 bytes of disk space regardless of how much information you actually
store in that column.
<p>
SQLite, in contrast, use only the amount of disk space actually
needed to store the information in a row. If you store a single
character in a VARCHAR(100) column, then only a single byte of disk
space is consumed. (Actually two bytes - there is some overhead at
the beginning of each column to record its datatype and length.)
<p>
The use of variable-length records by SQLite has a number of advantages.
It results in smaller database files, obviously. It also makes the
database run faster, since there is less information to move to and from
disk. And, the use of variable-length records makes it possible for
SQLite to employ manifest typing instead of static typing.
}
feature readable {Readable source code} {
The source code to SQLite is designed to be readable and accessible to
the average programmer. All procedures and and data structures and many
automatic variables are carefully commented with useful information about
what they do. Boilerplate commenting is omitted.
}
feature vdbe {SQL statements compile into virtual machine code} {
Every SQL database engine compiles each SQL statement into some kind of
internal data structure which is then used to carry out the work of the
statement. But in most SQL engines that internal data structure is a
complex web of interlinked structures and objects. In SQLite, the compiled
form of statements is a short program in a machine-language like
representation. Users of the database can view this
<a href="opcode.html">virtual machine language</a>
by prepending the <a href="lang_explain.html">EXPLAIN</a> keyword
to a query.
<p>
The use of a virtual machine in SQLite has been a great benefit to
library's development. The virtual machine provides a crisp, well-defined
junction between the front-end of SQLite (the part that parses SQL
statements and generates virtual machine code) and the back-end (the
part that executes the virtual machine code and computes a result.)
The virtual machine allows the developers to see clearly and in an
easily readable form what SQLite is trying to do with each statement
it compiles, which is a tremendous help in debuggings.
Depending on how it is compiled, SQLite also has the capability of
tracing the execution of the virtual machine - printing each
virtual machine instruction and its result as it executes.
}
feature binding {Tight bindings to dynamic languages} {
}
#feature binding {Tight bindings to dynamic languages} {
# Because it is embedded, SQLite can have a much tighter and more natural
# binding to high-level dynamic languages such as Tcl, Perl, Python,
# PHP, and Ruby.
# For example,
#}
feature license {Public domain} {
The source code for SQLite is in the public domain. No claim of copyright
is made on any part of the core source code. (The documentation and test
code is a different matter - some sections of documentation and test logic
are governed by open-sources licenses.) All contributors to the
SQLite core software have signed releases specifically disavowing any
SQLite core software have signed affidavits specifically disavowing any
copyright interest in the code. This means that anybody is able to legally
do anything they want with the SQLite source code.
<p>
@ -134,6 +201,19 @@ feature license {Public domain} {
}
feature extensions {SQL language extensions} {
SQLite provides a number of enhancements to the SQL language
not normally found in other database engines.
The EXPLAIN keyword and manifest typing have already been mentioned
above. SQLite also provides statements such as
<a href="lang_replace.html">REPLACE</a> and the
<a href="lang_conflict.html">ON CONFLICT</a> clause that allow for
added control over the resolution of constraint conflicts.
SQLite supports <a href="lang_attach.html">ATTACH</a> and
<a href="lang_detach.html">DETACH</a> commands that allow multiple
independent databases to be used together in the same query.
And SQLite defines APIs that allows the user to add new
<a href="capi3ref.html#sqlite3_create_function>SQL functions</a>
and <a href="capi3ref.html#sqlite3_create_collation>collating sequences</a>.
}

View File

@ -1,7 +1,7 @@
# This script generates the "docs.html" page that describes various
# sources of documentation available for SQLite.
#
set rcsid {$Id: docs.tcl,v 1.9 2005/01/03 01:33:00 drh Exp $}
set rcsid {$Id: docs.tcl,v 1.10 2005/03/12 15:55:11 drh Exp $}
source common.tcl
header {SQLite Documentation}
puts {
@ -25,6 +25,11 @@ doc {Appropriate Uses For SQLite} {whentouse.html} {
database engine might be a better choice.
}
doc {Distinctive Features} {different.html} {
This document enumerates and describes some of the features of
SQLite that make it different from other SQL database engines.
}
doc {SQLite In 5 Minutes Or Less} {quickstart.html} {
A very quick introduction to programming with SQLite.
}

View File

@ -1,7 +1,7 @@
#
# Run this Tcl script to generate the speed.html file.
#
set rcsid {$Id: speed.tcl,v 1.16 2005/01/21 18:19:29 drh Exp $ }
set rcsid {$Id: speed.tcl,v 1.17 2005/03/12 15:55:11 drh Exp $ }
source common.tcl
header {SQLite Database Speed Comparison}
@ -10,7 +10,7 @@ puts {
<font color="red"><b>
Note: This document is old. It describes a speed comparison between
an older version of SQLite against archic versions of MySQL and PostgreSQL.
an older version of SQLite against archaic versions of MySQL and PostgreSQL.
Readers are invited to contribute more up-to-date speed comparisons
on the <a href="http://www.sqlite.org/cvstrac/wiki">SQLite Wiki</a>.
<p>

View File

@ -1,14 +1,19 @@
#
# Run this Tcl script to generate the vdbe.html file.
#
set rcsid {$Id: vdbe.tcl,v 1.13 2004/11/10 05:48:57 danielk1977 Exp $}
set rcsid {$Id: vdbe.tcl,v 1.14 2005/03/12 15:55:11 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.
This document describes the virtual machine used in SQLite version 2.8.0.
The virtual machine in SQLite version 3.0 and 3.1 is very similar in
concept but many of the opcodes have changed and the algorithms are
somewhat different. Use this document as a rough guide to the idea
behind the virtual machine in SQLite version 3, not as a reference on
how the virtual machine works.
</b></blockquote>
}