debuggers (most notably MSVC) are unable to deal with files longer than 64K
lines. To work around this, a separate Tcl script, tool/split-sqlite3c.tcl,
can be run on the amalgamation to break it up into a single small C file
-called **sqlite3-all.c** that does #include on about five other files
-named **sqlite3-1.c**, **sqlite3-2.c**, ..., **sqlite3-5.c**. In this way,
+called **sqlite3-all.c** that does #include on about seven other files
+named **sqlite3-1.c**, **sqlite3-2.c**, ..., **sqlite3-7.c**. In this way,
all of the source code is contained within a single translation unit so
that the compiler can do extra cross-procedure optimization, but no
individual source file exceeds 32K lines in length.
trying to understand how the library works internally.
* **sqliteInt.h** - this header file defines many of the data objects
- used internally by SQLite.
+ used internally by SQLite. In addition to "sqliteInt.h", some
+ subsystems have their own header files.
* **parse.y** - This file describes the LALR(1) grammar that SQLite uses
to parse SQL statements, and the actions that are taken at each step
which defines internal data objects. The rest of SQLite interacts
with the VDBE through an interface defined by vdbe.h.
- * **where.c** - This file analyzes the WHERE clause and generates
+ * **where.c** - This file (together with its helper files named
+ by "where*.c") analyzes the WHERE clause and generates
virtual machine code to run queries efficiently. This file is
sometimes called the "query optimizer". It has its own private
header file, whereInt.h, that defines data objects used internally.
* **btree.c** - This file contains the implementation of the B-Tree
- storage engine used by SQLite.
+ storage engine used by SQLite. The interface to the rest of the system
+ is defined by "btree.h". The "btreeInt.h" header defines objects
+ used internally by btree.c and not published to the rest of the system.
* **pager.c** - This file contains the "pager" implementation, the
- module that implements transactions.
+ module that implements transactions. The "pager.h" header file
+ defines the interface between pager.c and the rest of the system.
* **os_unix.c** and **os_win.c** - These two files implement the interface
between SQLite and the underlying operating system using the run-time
pluggable VFS interface.
- * **shell.c** - This file is not part of the core SQLite library. This
+ * **shell.c.in** - This file is not part of the core SQLite library. This
is the file that, when linked against sqlite3.a, generates the
- "sqlite3.exe" command-line shell.
+ "sqlite3.exe" command-line shell. The "shell.c.in" file is transformed
+ into "shell.c" as part of the build process.
* **tclsqlite.c** - This file implements the Tcl bindings for SQLite. It
is not part of the core SQLite library. But as most of the tests in this
repository are written in Tcl, the Tcl language bindings are important.
+ * **test*.c** - Files in the src/ folder that begin with "test" go into
+ building the "testfixture.exe" program. The testfixture.exe program is
+ an enhanced TCL shell. The testfixture.exe program runs scripts in the
+ test/ folder to validate the core SQLite code. The testfixture program
+ (and some other test programs too) is build and run when you type
+ "make test".
+
+ * **ext/misc/json1.c** - This file implements the various JSON functions
+ that are build into SQLite.
+
There are many other source files. Each has a succinct header comment that
describes its purpose and role within the larger system.
-C Fix\san\sunreachable\sbranch\sin\scases\swhen\sSQLITE_ENABLE_STAT4\sis\snot\sdefined.
-D 2017-12-06T20:50:08.379
+C Updates\sto\sthe\smain\sREADME.md\sfile.
+D 2017-12-07T13:15:48.698
F Makefile.in 6a879cbf01e37f9eac131414955f71774b566502d9a57ded1b8585b507503cb8
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc e5d7606238f55816da99f719969598df5b091aa2e9a6935c9412fcae8f53fc44
-F README.md f5c87359573c4d255425e588a56554b50fdcc2afba4e017a2e02a43701456afd
+F README.md eeae1e552f93ef72ef7c5b8f6647b368a001c28820ad1df179d3dae602bef681
F VERSION 0c10cdfed866fdd2d80434f64f042c3330f1daaed12e54287beb104f04b3faaf
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 0342ce510d2063a63839399a2cfa25b7fc02f4fde17764082676b332d6136241
-R dd71a721334f8be84f1b50254aaa4af8
+P 6a55bd67720451cdf316155cf348103bfce1056a78bcddf0029b45ff0fdbcc71
+R 5db6dab0cbf463182c8a99af07dcc6eb
U drh
-Z e071d47cd491bbadd8e0c9ee301f9ca9
+Z 889514808bfb806c866b9adca4b0ed44