diff options
author | drh <drh@noemail.net> | 2005-03-12 15:55:10 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2005-03-12 15:55:10 +0000 |
commit | 9179fd93ffd2ffcd7f9eb2b009e83ff303dc0793 (patch) | |
tree | eebb157e993e4519d29abb9471d8220d08545c3d | |
parent | f5803804631d78812b7130fc2805da8b0537e4e8 (diff) | |
download | sqlite-9179fd93ffd2ffcd7f9eb2b009e83ff303dc0793.tar.gz sqlite-9179fd93ffd2ffcd7f9eb2b009e83ff303dc0793.zip |
Documentation updates. Added the "distinctive features" page. (CVS 2383)
FossilOrigin-Name: 33a0191638a4d6b33422f62487bfb9a0089d3cff
-rw-r--r-- | main.mk | 4 | ||||
-rw-r--r-- | manifest | 20 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | www/different.tcl | 92 | ||||
-rw-r--r-- | www/docs.tcl | 7 | ||||
-rw-r--r-- | www/speed.tcl | 4 | ||||
-rw-r--r-- | www/vdbe.tcl | 9 |
7 files changed, 116 insertions, 22 deletions
@@ -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 \ @@ -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 diff --git a/manifest.uuid b/manifest.uuid index 9dc6e1e7c..20a487ed3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b1792ae51666f27bc47cf986937a3caacdd3a9f7
\ No newline at end of file +33a0191638a4d6b33422f62487bfb9a0089d3cff
\ No newline at end of file diff --git a/www/different.tcl b/www/different.tcl index c529f62fc..f2330f247 100644 --- a/www/different.tcl +++ b/www/different.tcl @@ -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>. } diff --git a/www/docs.tcl b/www/docs.tcl index 3985d96d1..56ed15c2a 100644 --- a/www/docs.tcl +++ b/www/docs.tcl @@ -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. } diff --git a/www/speed.tcl b/www/speed.tcl index e6d7f9e63..b60cfe1ef 100644 --- a/www/speed.tcl +++ b/www/speed.tcl @@ -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> diff --git a/www/vdbe.tcl b/www/vdbe.tcl index a9341ba94..ed0b71205 100644 --- a/www/vdbe.tcl +++ b/www/vdbe.tcl @@ -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> } |