From: drh
Date: Sun, 14 Mar 2004 11:57:58 +0000 (+0000)
Subject: Updates to the architecture document. (CVS 1294)
X-Git-Tag: version-3.6.10~4774
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=371cb93a2ad14136704705856926b19a79492e0c;p=thirdparty%2Fsqlite.git
Updates to the architecture document. (CVS 1294)
FossilOrigin-Name: c661cc81b6981c536c107f40525ad9783b11ea82
---
diff --git a/manifest b/manifest
index e677848e26..c3b56b6dc7 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sthe\smin/max\soptimizer\sso\sthat\sit\sworks\swhen\sthe\sFROM\sclause\sis\sa\nsubquery.\s\sTicket\s#658.\s(CVS\s1293)
-D 2004-03-13T14:00:36
+C Updates\sto\sthe\sarchitecture\sdocument.\s(CVS\s1294)
+D 2004-03-14T11:57:58
F Makefile.in 46788b65500865e3fd965f7617d41697da8a11a1
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -163,7 +163,7 @@ F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf
F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4
-F www/arch.tcl 1e5289d63fc45564c67e205bc503db74718436ca
+F www/arch.tcl b329ca2c8dc75cd1cf0dd714b8bb47bdd458d0da
F www/arch2.fig 613b5ac63511109064c2f93c5754ee662219937d
F www/arch2.gif 49c6bb36160f03ca2b89eaa5bfb1f560c7d68ee7
F www/audit.tcl 90e09d580f79c7efec0c7d6f447b7ec5c2dce5c0
@@ -188,7 +188,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 5864fc6937b933b7da0c00e6c4c2ee1b9b939cff
-R 38ce5fb591e7b91ddde53b0f21b20e52
+P 31c94acc72d318b5dec0fef1485621943add45c8
+R 4444a9fae45099d79266fa1def7dab13
U drh
-Z b929c36981acffd0768f9e08052aab34
+Z 8aa570decc2b64f7981738dac3c42536
diff --git a/manifest.uuid b/manifest.uuid
index c86ca27f8e..e3c4aa5528 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-31c94acc72d318b5dec0fef1485621943add45c8
\ No newline at end of file
+c661cc81b6981c536c107f40525ad9783b11ea82
\ No newline at end of file
diff --git a/www/arch.tcl b/www/arch.tcl
index ef8a4799db..af23deca2b 100644
--- a/www/arch.tcl
+++ b/www/arch.tcl
@@ -1,7 +1,7 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
-set rcsid {$Id: arch.tcl,v 1.10 2004/02/18 16:56:32 drh Exp $}
+set rcsid {$Id: arch.tcl,v 1.11 2004/03/14 11:57:58 drh Exp $}
puts {
@@ -42,8 +42,8 @@ version 2.8.0 (2003-Feb-16) only sqlite_exec() was supported.
For version 2.8.0, the sqlite_exec and sqlite_compile methods
existed as peers. Beginning with version 2.8.13, the sqlite_compile
method is the primary interface, and sqlite_exec is implemented
-using sqlite_compile. Externally, there are API extensions but
-not changes that break backwards compatibility. But internally,
+using sqlite_compile. Externally, this change is an enhancement
+that maintains backwards compatibility. But internally,
the plumbing is very different. The diagram at the right shows
the structure of SQLite for version 2.8.13 and following.
@@ -110,17 +110,19 @@ lemon is found in the "doc" subdirectory of the distribution.
After the parser assembles tokens into complete SQL statements,
it calls the code generator to produce virtual machine code that
-will do the work that the SQL statements request. There are seven
-files in the code generator: build.c, delete.c,
-expr.c, insert.c select.c, update.c,
+will do the work that the SQL statements request. There are many
+files in the code generator: build.c, copy.c,
+delete.c,
+expr.c, insert.c, pragma.c,
+select.c, trigger.c, update.c, vacuum.c
and where.c.
In these files is where most of the serious magic happens.
expr.c handles code generation for expressions.
where.c handles code generation for WHERE clauses on
-SELECT, UPDATE and DELETE statements. The files
-delete.c, insert.c, select.c, and
-update.c handle the code generation for SQL statements
-with the same names. (Each of these files calls routines
+SELECT, UPDATE and DELETE statements. The files copy.c,
+delete.c, insert.c, select.c, trigger.c
+update.c, and vacuum.c handle the code generation
+for SQL statements with the same names. (Each of these files calls routines
in expr.c and where.c as necessary.) All other
SQL statements are coded out of build.c.
@@ -135,10 +137,14 @@ machine has a stack which is used for intermediate storage.
Each instruction contains an opcode and
up to three additional operands.
-The virtual machine is entirely contained in a single
+
The virtual machine itself is entirely contained in a single
source file vdbe.c. The virtual machine also has
-its own header file vdbe.h that defines an interface
-between the virtual machine and the rest of the SQLite library.
+its own header files: vdbe.h that defines an interface
+between the virtual machine and the rest of the SQLite library and
+vdbeInt.h which defines structure private the virtual machine.
+The vdbeaux.c file contains utilities used by the virtual
+machine and interface modules used by the rest of the library to
+construct VM programs.
Backend