From: drh Date: Wed, 18 Feb 2004 16:56:32 +0000 (+0000) Subject: Begin updating the architecture description to better describe how things X-Git-Tag: version-3.6.10~4821 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=fef9765507ec928041eb63f1505fd21e064f60cb;p=thirdparty%2Fsqlite.git Begin updating the architecture description to better describe how things are currently put together. (CVS 1247) FossilOrigin-Name: 062ecc1368d6bb6d15da31e8d6f5953e8f5628b9 --- diff --git a/manifest b/manifest index b6eca890bf..b1dc18ae51 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\smore\stests\sof\sthe\ssqlite_interrupt()\slogic\s-\slooking\sfor\sa\sreported\nmemory\sleak.\s\s(Didn't\sfind\sit.)\s(CVS\s1246) -D 2004-02-18T01:31:54 +C Begin\supdating\sthe\sarchitecture\sdescription\sto\sbetter\sdescribe\show\sthings\nare\scurrently\sput\stogether.\s(CVS\s1247) +D 2004-02-18T16:56:32 F Makefile.in cfd75c46b335881999333a9e4b982fa8491f200b F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -161,7 +161,9 @@ F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F www/arch.fig d5f9752a4dbf242e9cfffffd3f5762b6c63b3bcf F www/arch.png 82ef36db1143828a7abc88b1e308a5f55d4336f4 -F www/arch.tcl 44b589fc01d6829d43447ab40588b00aec5b9734 +F www/arch.tcl 1e5289d63fc45564c67e205bc503db74718436ca +F www/arch2.fig 613b5ac63511109064c2f93c5754ee662219937d +F www/arch2.gif 49c6bb36160f03ca2b89eaa5bfb1f560c7d68ee7 F www/audit.tcl 90e09d580f79c7efec0c7d6f447b7ec5c2dce5c0 F www/c_interface.tcl 17d8bd9e7b4fbdca47c30c8b9bcb728c351d55c0 F www/changes.tcl ca9871eb52fa669e40f2052ab45154dfe0b72985 @@ -184,7 +186,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P 50e67948f89380f2f4b536add0b8179e6db960a5 -R 0fd46cdcb719452c286af1cf356d38ce +P e4c8b1c3aa9d288f518c6394187354e6fa18978e +R 9c0d8e2f5a853263270cb382693ec393 U drh -Z 8eb9cfa9eaeb9d935dda443dd1d5d0a4 +Z 385597eeec31fcd3b70006a6664f87b7 diff --git a/manifest.uuid b/manifest.uuid index 32f20546ec..44b0a48c37 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e4c8b1c3aa9d288f518c6394187354e6fa18978e \ No newline at end of file +062ecc1368d6bb6d15da31e8d6f5953e8f5628b9 \ No newline at end of file diff --git a/www/arch.tcl b/www/arch.tcl index 628512e9fc..ef8a4799db 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.9 2003/03/19 03:14:03 drh Exp $} +set rcsid {$Id: arch.tcl,v 1.10 2004/02/18 16:56:32 drh Exp $} puts { @@ -20,7 +20,7 @@ puts { - +
Block Diagram Of SQLite

This document describes the architecture of the SQLite library. The information here is useful to those who want to understand or @@ -33,11 +33,30 @@ and how they interrelate is shown at the right. The text that follows will provide a quick overview of each of these components.

+

History

+ +

+There are two main C interfaces to the SQLite library: +sqlite_exec() and sqlite_compile(). Prior to +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, +the plumbing is very different. The diagram at the right shows +the structure of SQLite for version 2.8.13 and following. +

+

Interface

-

Most of the public interface to the SQLite library is implemented by -four functions found in the main.c source file. The +

Much of the public interface to the SQLite library is implemented by +functions found in the main.c source file though some routines are +scattered about in other files where they can have access to data +structures with file scope. The sqlite_get_table() routine is implemented in table.c. +sqlite_step() is found in vdbe.c. +sqlite_mprintf() is found in printf.c. The Tcl interface is implemented by tclsqlite.c. More information on the C interface to SQLite is available separately.

@@ -48,6 +67,10 @@ Those symbols that are intended for external use (in other words, those symbols which form the API for SQLite) begin with sqlite_.

+

SQL Command Process

+ +

+

Tokenizer

When a string containing SQL statements is to be executed, the @@ -117,7 +140,20 @@ 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.

-

B-tree Driver

+

Backend

+ +

The backend is an abstraction layer that presents a uniform interface +to the virtual machine for either the B-Tree drivers for disk-based +databases or the Red/Black Tree driver for in-memory databases. +The btree.h source file contains the details.

+ +

Red/Black Tree

+ +

In-memory databases are stored in a red/black tree implementation +contain in the btree_rb.c source file. +

+ +

B-Tree

An SQLite database is maintained on disk using a B-tree implementation found in the btree.c source file. A separate B-tree is used for diff --git a/www/arch2.fig b/www/arch2.fig new file mode 100644 index 0000000000..97a1a38245 --- /dev/null +++ b/www/arch2.fig @@ -0,0 +1,136 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +0 32 #000000 +0 33 #868686 +0 34 #dfefd7 +0 35 #d7efef +0 36 #efdbef +0 37 #efdbd7 +0 38 #e7efcf +0 39 #9e9e9e +6 4950 4275 6525 4800 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5025 4350 6525 4350 6525 4800 5025 4800 5025 4350 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 4950 4275 6450 4275 6450 4725 4950 4725 4950 4275 +4 1 0 50 0 2 12 0.0000 4 135 1335 5700 4575 Red/Black Tree\001 +-6 +6 5400 5475 6825 6000 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 5400 5475 6750 5475 6750 5925 5400 5925 5400 5475 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5475 5550 6825 5550 6825 6000 5475 6000 5475 5550 +4 1 0 50 0 2 12 0.0000 4 135 630 6000 5775 Utilities\001 +-6 +6 5400 6300 6825 6825 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 5400 6300 6750 6300 6750 6750 5400 6750 5400 6300 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5475 6375 6825 6375 6825 6825 5475 6825 5475 6375 +4 1 0 50 0 2 12 0.0000 4 135 855 6000 6600 Test Code\001 +-6 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5475 2625 6825 2625 6825 3525 5475 3525 5475 2625 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 5400 2550 6750 2550 6750 3450 5400 3450 5400 2550 +2 3 0 1 0 35 55 0 20 0.000 0 0 -1 0 0 9 + 2850 3675 4875 3675 4875 3975 6750 3975 6750 5025 4875 5025 + 4875 6975 2850 6975 2850 3675 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 6300 4575 6300 4575 6750 3225 6750 3225 6300 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 6375 4650 6375 4650 6825 3300 6825 3300 6375 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 5475 4575 5475 4575 5925 3225 5925 3225 5475 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 5550 4650 5550 4650 6000 3300 6000 3300 5550 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 4725 4575 4725 4575 5175 3225 5175 3225 4725 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 4800 4650 4800 4650 5250 3300 5250 3300 4800 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 3900 4575 3900 4575 4350 3225 4350 3225 3900 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 3975 4650 3975 4650 4425 3300 4425 3300 3975 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 5400 1800 6750 1800 6750 2250 5400 2250 5400 1800 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5475 1875 6825 1875 6825 2325 5475 2325 5475 1875 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 5400 1050 6750 1050 6750 1500 5400 1500 5400 1050 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 5475 1125 6825 1125 6825 1575 5475 1575 5475 1125 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 1050 4575 1050 4575 1500 3225 1500 3225 1050 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 1125 4650 1125 4650 1575 3300 1575 3300 1125 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 1800 4575 1800 4575 2250 3225 2250 3225 1800 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 1875 4650 1875 4650 2325 3300 2325 3300 1875 +2 2 0 1 0 7 51 0 20 0.000 0 0 -1 0 0 5 + 3225 2550 4575 2550 4575 3000 3225 3000 3225 2550 +2 2 0 0 0 33 52 0 20 0.000 0 0 -1 0 0 5 + 3300 2625 4650 2625 4650 3075 3300 3075 3300 2625 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 1500 3900 1800 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 2250 3900 2550 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 3000 3900 3900 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4575 1950 5400 1350 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 5400 2925 4650 2175 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 4350 3900 4725 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 4575 4200 4950 4500 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 5175 3900 5475 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 3900 5925 3900 6300 +2 2 0 1 0 37 55 0 20 0.000 0 0 -1 0 0 5 + 5175 750 7200 750 7200 3750 5175 3750 5175 750 +2 2 0 1 0 34 55 0 20 0.000 0 0 -1 0 0 5 + 2850 750 4875 750 4875 3375 2850 3375 2850 750 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 6075 1500 6075 1800 +2 1 0 1 0 38 50 0 -1 0.000 0 0 -1 1 0 2 + 1 1 1.00 60.00 120.00 + 6075 2250 6075 2550 +2 2 0 1 0 38 55 0 20 0.000 0 0 -1 0 0 5 + 5175 5250 7200 5250 7200 6975 5175 6975 5175 5250 +4 1 0 50 0 2 12 0.0000 4 135 855 6075 1350 Tokenizer\001 +4 1 0 50 0 2 12 0.0000 4 135 570 6075 2100 Parser\001 +4 1 0 50 0 2 12 0.0000 4 135 420 6075 2925 Code\001 +4 1 0 50 0 2 12 0.0000 4 135 855 6075 3150 Generator\001 +4 1 0 50 0 2 12 0.0000 4 135 720 3900 4200 Backend\001 +4 1 0 50 0 2 12 0.0000 4 135 1050 3900 6600 OS Interface\001 +4 1 0 50 0 2 12 0.0000 4 135 615 3900 5025 B-Tree\001 +4 1 0 50 0 2 12 0.0000 4 180 495 3900 5775 Pager\001 +4 1 0 50 0 1 12 1.5708 4 180 1020 7125 2250 SQL Compiler\001 +4 1 0 50 0 1 12 1.5708 4 135 885 7125 6150 Accessories\001 +4 1 0 50 0 1 12 1.5708 4 135 645 3075 5250 Backend\001 +4 1 0 50 0 1 12 1.5708 4 135 345 3075 2025 Core\001 +4 1 0 50 0 2 12 0.0000 4 135 1290 3900 2850 Virtual Machine\001 +4 1 0 50 0 2 12 0.0000 4 165 1185 3900 1995 SQL Command\001 +4 1 0 50 0 2 12 0.0000 4 135 855 3900 2183 Processor\001 +4 1 0 50 0 2 14 0.0000 4 150 870 3900 1350 Interface\001 diff --git a/www/arch2.gif b/www/arch2.gif new file mode 100644 index 0000000000..ef91eacdcc Binary files /dev/null and b/www/arch2.gif differ