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