]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Continuing work on the C/C++ interface requirements that appears as
authordrh <drh@noemail.net>
Thu, 6 Dec 2007 02:42:07 +0000 (02:42 +0000)
committerdrh <drh@noemail.net>
Thu, 6 Dec 2007 02:42:07 +0000 (02:42 +0000)
comments in sqlite.h.in. (CVS 4594)

FossilOrigin-Name: 2130e7125187ca46df3f65237f933b0e568a36ed

manifest
manifest.uuid
src/sqlite.h.in

index d00e840a209ce576c9aa71e214135c372101a1fc..096e086db07995e37b0c4fc828e32980ec37a398 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Begin\sadding\srequirements\snumbers\sto\sthe\sC/C++\sinterface\sdocumentation.\s(CVS\s4593)
-D 2007-12-05T18:05:16
+C Continuing\swork\son\sthe\sC/C++\sinterface\srequirements\sthat\sappears\sas\ncomments\sin\ssqlite.h.in.\s(CVS\s4594)
+D 2007-12-06T02:42:08
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 30789bf70614bad659351660d76b8e533f3340e9
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -134,7 +134,7 @@ F src/random.c 4a22746501bf36b0a088c66e38dde5daba6a35da
 F src/select.c 7c0ab94b8f287eb94fdb1eb101be603832ecfc34
 F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
 F src/shell.c c97be281cfc3dcb14902f45e4b16f20038eb83ff
-F src/sqlite.h.in b886a911e1e72e3f79fb1d66553ce5c717042267
+F src/sqlite.h.in 544587c10005dde0ad8f132dd9b7816b132b2bea
 F src/sqlite3ext.h a93f59cdee3638dc0c9c086f80df743a4e68c3cb
 F src/sqliteInt.h a941ccf797b45c27bc0face4e75935b5cc019202
 F src/sqliteLimit.h 15ffe2116746c27ace2b428a26a4fcd6dba6fa65
@@ -597,7 +597,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P bdfc19e838b369a8c5d5d23663fad690f55ba3d7
-R 9ef2020d3fc9ded9ecb9c3353fddc20a
+P ae1936aadf00bec91750d41be7507cf1b81fc411
+R 7ac7d80a2d75b3b7bb12edb35b1b87a6
 U drh
-Z d0c1d862b6e3beefc5bad47c02091c37
+Z ee325aa2259ef8ee38a408857daf2088
index dd0ae2debfc4caf73b9ae2e425414b2519c3f0dd..d379b71530c61e74d2d8b51cc6bd68284acf7de9 100644 (file)
@@ -1 +1 @@
-ae1936aadf00bec91750d41be7507cf1b81fc411
\ No newline at end of file
+2130e7125187ca46df3f65237f933b0e568a36ed
\ No newline at end of file
index b2186892acb00afc1f2ee6c2550c54d4c965edab..565908249c3cbc258dcdd8eed2127962eeda648d 100644 (file)
@@ -30,7 +30,7 @@
 ** the version number) and changes its name to "sqlite3.h" as
 ** part of the build process.
 **
-** @(#) $Id: sqlite.h.in,v 1.275 2007/12/05 18:05:16 drh Exp $
+** @(#) $Id: sqlite.h.in,v 1.276 2007/12/06 02:42:08 drh Exp $
 */
 #ifndef _SQLITE3_H_
 #define _SQLITE3_H_
@@ -65,14 +65,12 @@ extern "C" {
 /*
 ** CAPI3REF: Compile-Time Library Version Numbers {F10010}
 **
-** {F10011} The version of the SQLite library is contained in the sqlite3.h
-** header file in a #define named SQLITE_VERSION.  {F10012} The SQLITE_VERSION
-** macro resolves to a string constant.
-**
-** {F10013} The format of the version string is "X.Y.Z", where
+** {F10011} The #define in the sqlite3.h header file named
+** SQLITE_VERSION resolves to a string literal that identifies
+** the version of the SQLite library in the format "X.Y.Z", where
 ** X is the major version number, Y is the minor version number and Z
 ** is the release number.  The X.Y.Z might be followed by "alpha" or "beta".
-** For example "3.1.1beta". {END}
+** {END} For example "3.1.1beta".
 **
 ** The X value is always 3 in SQLite.  The X value only changes when
 ** backwards compatibility is broken and we intend to never break
@@ -81,11 +79,12 @@ extern "C" {
 ** but not backwards compatible.  The Z value is incremented with
 ** each release but resets back to 0 when Y is incremented.
 **
-** {F10014} The SQLITE_VERSION_NUMBER is an integer with the value 
-** (X*1000000 + Y*1000 + Z). For example, for version "3.1.1beta", 
+** {F10014} The SQLITE_VERSION_NUMBER #define resolves to an integer
+** with the value  (X*1000000 + Y*1000 + Z) where X, Y, and Z are as
+** with SQLITE_VERSION. {END} For example, for version "3.1.1beta", 
 ** SQLITE_VERSION_NUMBER is set to 3001001. To detect if they are using 
 ** version 3.1.1 or greater at compile time, programs may use the test 
-** (SQLITE_VERSION_NUMBER>=3001001). {END}
+** (SQLITE_VERSION_NUMBER>=3001001).
 **
 ** See also: [sqlite3_libversion()] and [sqlite3_libversion_number()].
 */
@@ -95,9 +94,9 @@ extern "C" {
 /*
 ** CAPI3REF: Run-Time Library Version Numbers {F10020}
 **
-** {F10021} These routines return values equivalent to the header constants
-** [SQLITE_VERSION] and [SQLITE_VERSION_NUMBER].  {END} The values returned
-** by this routines should only be different from the header values
+** {F10021} The sqlite3_libversion_number() interface returns an integer
+** equal to [SQLITE_VERSION_NUMBER].  {END} The value returned
+** by this routine should only be different from the header values
 ** if the application is compiled using an sqlite3.h header from a
 ** different version of SQLite than library.  Cautious programmers might
 ** include a check in their application to verify that 
@@ -106,7 +105,8 @@ extern "C" {
 **
 ** {F10022} The sqlite3_version[] string constant contains the text of the
 ** [SQLITE_VERSION] string. {F10023} The sqlite3_libversion() function returns
-** a poiner to the sqlite3_version[] string constant. {END} The function
+** a pointer to the sqlite3_version[] string constant. {END} The 
+** sqlite3_libversion() function
 ** is provided for DLL users who can only access functions and not
 ** constants within the DLL.
 */
@@ -117,19 +117,20 @@ int sqlite3_libversion_number(void);
 /*
 ** CAPI3REF: Test To See If The Library Is Threadsafe {F10100}
 **
-** {F10101} This routine returns TRUE (nonzero) if SQLite was compiled with
-** all of its mutexes enabled and is thus threadsafe.  {F10102} It returns
-** zero if the particular build is for single-threaded operation
-** only. {END}
+** {F10101} The sqlite3_threadsafe() routine returns nonzero
+** if SQLite was compiled with its mutexes enabled or zero if
+** SQLite was compiled with mutexes disabled. {END}  If this
+** routine returns false, then it is not safe for simultaneously
+** running threads to both invoke SQLite interfaces.
 **
-** {F10103} Really all this routine does is return true if SQLite was
+** Really all this routine does is return true if SQLite was
 ** compiled with the -DSQLITE_THREADSAFE=1 option and false if
-** compiled with -DSQLITE_THREADSAFE=0.  {U10104} If SQLite uses an
+** compiled with -DSQLITE_THREADSAFE=0.  If SQLite uses an
 ** application-defined mutex subsystem, malloc subsystem, collating
 ** sequence, VFS, SQL function, progress callback, commit hook,
 ** extension, or other accessories and these add-ons are not
 ** threadsafe, then clearly the combination will not be threadsafe
-** either.  {END} Hence, this routine never reports that the library
+** either.  Hence, this routine never reports that the library
 ** is guaranteed to be threadsafe, only when it is guaranteed not
 ** to be.
 */
@@ -187,18 +188,19 @@ typedef sqlite_uint64 sqlite3_uint64;
 /*
 ** CAPI3REF: Closing A Database Connection {F12010}
 **
-** {F12010} Call this function with a pointer to a structure that was 
-** previously returned from [sqlite3_open()], [sqlite3_open16()], or
-** [sqlite3_open_v2()] and the corresponding database will by
-** closed. {END}
+** {F12011} The sqlite3_close() interfaces destroys an [sqlite3] object
+** allocated by a prior call to [sqlite3_open()], [sqlite3_open16()], or
+** [sqlite3_open_v2()]. {F12012} Sqlite3_close() releases all
+** memory used by the connection and closes all open files. {END}.
 **
-** {F12011} All SQL statements prepared using [sqlite3_prepare_v2()] or
-** [sqlite3_prepare16_v2()] must be destroyed using [sqlite3_finalize()]
-** before this routine is called. Otherwise, SQLITE_BUSY is returned and the
-** database connection remains open. {END}
+** {F12013} If the database connection contains
+** [sqlite3_stmt | prepared statements] that have not been finalized
+** by [sqlite3_finalize()], then sqlite3_close() returns SQLITE_BUSY
+** and leaves the connection open.  {F12014} Giving sqlite3_close()
+** a NULL pointer is a harmless no-op. {END}
 **
-** {U12012} Passing this routine a database connection that has already been
-** closed results in undefined behavior. {U12013} If other interfaces that
+** {U12015} Passing this routine a database connection that has already been
+** closed results in undefined behavior. {U12016} If other interfaces that
 ** reference the same database connection are pending (either in the
 ** same thread or in different threads) when this routine is called,
 ** then the behavior is undefined and is almost certainly undesirable.
@@ -216,10 +218,10 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** CAPI3REF: One-Step Query Execution Interface {F12100}
 **
 ** {F12101} The sqlite3_exec() interface evaluates zero or more 
-** UTF-8 encoded, semicolon-separated SQL
-** statements provided as its second argument.  {F12102} The SQL
+** UTF-8 encoded, semicolon-separated SQL statements in the zero-terminated
+** string of its second argument.  {F12102} The SQL
 ** statements are evaluated in the context of the database connection
-** provided in the first argument.
+** specified by in the first argument.
 ** {F12103} SQL statements are prepared one by one using
 ** [sqlite3_prepare()] or the equivalent, evaluated
 ** using one or more calls to [sqlite3_step()], then destroyed
@@ -243,7 +245,7 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** is an array of pointers to strings holding the values for each column
 ** as extracted using [sqlite3_column_text()].  NULL values in the result
 ** set result in a NULL pointer.  All other value are in their UTF-8
-** string representation. {F12110}
+** string representation. {F12117}
 ** The 4th parameter to the callback is an array of strings
 ** obtained using [sqlite3_column_name()] and holding
 ** the names of each column, also in UTF-8.
@@ -255,9 +257,16 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
 ** {F12112} If an error occurs while parsing or evaluating the SQL
 ** then an appropriate error message is written into memory obtained
 ** from [sqlite3_malloc()] and *errmsg is made to point to that message
-** assuming errmsg is not NULL.  {U12113} The calling function
-** is responsible for freeing the memory using [sqlite3_free()].
-** {F12114} If errmsg==NULL, then no error message is ever written.
+** assuming errmsg is not NULL.  
+** {U12113} The calling function is responsible for freeing the memory
+** using [sqlite3_free()].
+** {F12116} If [sqlite3_malloc()] fails while attempting to generate
+** the error message, *errmsg is set to NULL.
+** {F12114} If errmsg is NULL then no attempt is made to generate an
+** error message. <todo>Is the return code SQLITE_NOMEM or the original
+** error code?</todo> <todo>What happens if there are multiple errors?
+** Do we get code for the first error, or is the choice of reported
+** error arbitrary?</todo>
 **
 ** {F12115} The return value is is SQLITE_OK if there are no errors and
 ** some other [SQLITE_OK | return code] if there is an error.  
@@ -278,8 +287,8 @@ int sqlite3_exec(
 ** Many SQLite functions return an integer result code from the set shown
 ** above in order to indicates success or failure.
 **
-** {F10211} The result codes above are the only ones returned by SQLite in its
-** default configuration. {F10212} However, the
+** {F10211} The result codes shown here are the only ones returned 
+** by SQLite in its default configuration. {F10212} However, the
 ** [sqlite3_extended_result_codes()] API can be used to set a database
 ** connectoin to return more detailed result codes. {END}
 **
@@ -322,9 +331,9 @@ int sqlite3_exec(
 ** CAPI3REF: Extended Result Codes {F10220}
 **
 ** In its default configuration, SQLite API routines return one of 26 integer
-** [result codes].  However, experience has shown that
+** [SQLITE_OK | result codes].  However, experience has shown that
 ** many of these result codes are too course-grained.  They do not provide as
-** much information about problems as users might like.  In an effort to
+** much information about problems as programmers might like.  In an effort to
 ** address this, newer versions of SQLite (version 3.3.8 and later) include
 ** support for additional result codes that provide more detailed information
 ** about errors. {F10221} The extended result codes are enabled or disabled
@@ -573,8 +582,8 @@ struct sqlite3_io_methods {
 ** CAPI3REF: Mutex Handle {F17110}
 **
 ** The mutex module within SQLite defines [sqlite3_mutex] to be an
-** abstract type for a mutex object.  The SQLite core never looks
-** at the internal representation of an [sqlite3_mutex].  It only
+** abstract type for a mutex object.  {F17111} The SQLite core never looks
+** at the internal representation of an [sqlite3_mutex]. {END} It only
 ** deals with pointers to the [sqlite3_mutex] object.
 **
 ** Mutexes are created using [sqlite3_mutex_alloc()].
@@ -611,20 +620,21 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** The zName field holds the name of the VFS module.  The name must
 ** be unique across all VFS modules.
 **
-** SQLite will guarantee that the zFilename string passed to
+** {F11141} SQLite will guarantee that the zFilename string passed to
 ** xOpen() is a full pathname as generated by xFullPathname() and
 ** that the string will be valid and unchanged until xClose() is
-** called.  So the [sqlite3_file] can store a pointer to the
+** called.  {END} So the [sqlite3_file] can store a pointer to the
 ** filename if it needs to remember the filename for some reason.
 **
-** The flags argument to xOpen() is a copy of the flags argument
-** to [sqlite3_open_v2()].  If [sqlite3_open()] or [sqlite3_open16()]
-** is used, then flags is [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE].
+** {F11142} The flags argument to xOpen() includes all bits set in
+** the flags argument to [sqlite3_open_v2()].  Or if [sqlite3_open()]
+** or [sqlite3_open16()] is used, then flags includes at least
+** [SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]. {END}
 ** If xOpen() opens a file read-only then it sets *pOutFlags to
 ** include [SQLITE_OPEN_READONLY].  Other bits in *pOutFlags may be
 ** set.
 ** 
-** SQLite will also add one of the following flags to the xOpen()
+** {F11143} SQLite will also add one of the following flags to the xOpen()
 ** call, depending on the object being opened:
 ** 
 ** <ul>
@@ -635,7 +645,7 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** <li>  [SQLITE_OPEN_TRANSIENT_DB]
 ** <li>  [SQLITE_OPEN_SUBJOURNAL]
 ** <li>  [SQLITE_OPEN_MASTER_JOURNAL]
-** </ul>
+** </ul> {END}
 **
 ** The file I/O implementation can use the object type flags to
 ** changes the way it deals with files.  For example, an application
@@ -646,7 +656,7 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** be doing page-aligned sector reads and writes in a random order
 ** and set up its I/O subsystem accordingly.
 ** 
-** SQLite might also add one of the following flags to the xOpen
+** {F11144} SQLite might also add one of the following flags to the xOpen
 ** method:
 ** 
 ** <ul>
@@ -654,31 +664,31 @@ typedef struct sqlite3_mutex sqlite3_mutex;
 ** <li> [SQLITE_OPEN_EXCLUSIVE]
 ** </ul>
 ** 
-** The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
-** deleted when it is closed.  This will always be set for TEMP 
-** databases and journals and for subjournals.  The 
-** [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
+** {F11145} The [SQLITE_OPEN_DELETEONCLOSE] flag means the file should be
+** deleted when it is closed.  {F11146} The [SQLITE_OPEN_DELETEONCLOSE]
+** will be set for TEMP  databases, journals and for subjournals. 
+** {F11147} The [SQLITE_OPEN_EXCLUSIVE] flag means the file should be opened
 ** for exclusive access.  This flag is set for all files except
-** for the main database file.
+** for the main database file. {END}
 ** 
-** Space to hold the  [sqlite3_file] structure passed as the third 
-** argument to xOpen is allocated by caller (the SQLite core). 
-** szOsFile bytes are allocated for this object.  The xOpen method
-** fills in the allocated space.
+** {F11148} At least szOsFile bytes of memory is allocated by SQLite 
+** to hold the  [sqlite3_file] structure passed as the third 
+** argument to xOpen.  {END}  The xOpen method does not have to
+** allocate the structure; it should just fill it in.
 ** 
-** The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] 
+** {F11149} The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS] 
 ** to test for the existance of a file,
 ** or [SQLITE_ACCESS_READWRITE] to test to see
 ** if a file is readable and writable, or [SQLITE_ACCESS_READ]
-** to test to see if a file is at least readable.  The file can be a 
+** to test to see if a file is at least readable.  {END} The file can be a 
 ** directory.
 ** 
-** SQLite will always allocate at least mxPathname+1 byte for
-** the output buffers for xGetTempname and xFullPathname. The exact
+** {F11150} SQLite will always allocate at least mxPathname+1 byte for
+** the output buffers for xGetTempname and xFullPathname. {F11151} The exact
 ** size of the output buffer is also passed as a parameter to both 
-** methods. If the output buffer is not large enough, SQLITE_CANTOPEN
+** methods. {END} If the output buffer is not large enough, SQLITE_CANTOPEN
 ** should be returned. As this is handled as a fatal error by SQLite,
-** vfs implementations should endevour to prevent this by setting 
+** vfs implementations should endeavor to prevent this by setting 
 ** mxPathname to a sufficiently large value.
 ** 
 ** The xRandomness(), xSleep(), and xCurrentTime() interfaces
@@ -718,15 +728,15 @@ struct sqlite3_vfs {
 };
 
 /*
-** CAPI3REF: Flags for the xAccess VFS method {F11150}
+** CAPI3REF: Flags for the xAccess VFS method {F11190}
 **
-** {F11151} These integer constants can be used as the third parameter to
+** {F11191} These integer constants can be used as the third parameter to
 ** the xAccess method of an [sqlite3_vfs] object. {END}  They determine
 ** the kind of what kind of permissions the xAccess method is
-** looking for.  {F11152} With SQLITE_ACCESS_EXISTS, the xAccess method
-** simply checks to see if the file exists. {F11153} With
+** looking for.  {F11192} With SQLITE_ACCESS_EXISTS, the xAccess method
+** simply checks to see if the file exists. {F11193} With
 ** SQLITE_ACCESS_READWRITE, the xAccess method checks to see
-** if the file is both readable and writable.  {F11154} With
+** if the file is both readable and writable.  {F11194} With
 ** SQLITE_ACCESS_READ the xAccess method
 ** checks to see if the file is readable.
 */
@@ -737,8 +747,10 @@ struct sqlite3_vfs {
 /*
 ** CAPI3REF: Enable Or Disable Extended Result Codes {F12200}
 **
-** {F12201} This routine enables or disables the
-** [SQLITE_IOERR_READ | extended result codes] feature. {F12202}
+** {F12201} The sqlite3_extended_result_codes() routine enables or disables the
+** [SQLITE_IOERR_READ | extended result codes] feature on a database
+** connection if its 2nd parameter is
+** non-zero or zero, respectively. {F12202}
 ** By default, SQLite API routines return one of only 26 integer
 ** [SQLITE_OK | result codes].  {F12203} When extended result codes
 ** are enabled by this routine, the repetoire of result codes can be
@@ -799,12 +811,12 @@ sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
 ** triggers are not counted. {F12243} Use the [sqlite3_total_changes()] function
 ** to find the total number of changes including changes caused by triggers.
 **
-** {F12244} Within the body of a trigger, the sqlite3_changes() interface can be
-** called to find the number of
+** {F12244} Within the body of a trigger, the sqlite3_changes() interface
+** can be called to find the number of
 ** changes in the most recently completed INSERT, UPDATE, or DELETE
-** statement within the body of the trigger.
+** statement within the body of the same trigger.
 **
-** {F12245} All changes are counted, even if they were later undone by a
+** {F12245} All changes are counted, even if they are later undone by a
 ** ROLLBACK or ABORT.  {F12246} Except, changes associated with creating and
 ** dropping tables are not counted.
 **
@@ -840,8 +852,9 @@ int sqlite3_changes(sqlite3*);
 **
 ** See also the [sqlite3_change()] interface.
 **
-** SQLite implements the command "DELETE FROM table" without a WHERE clause
-** by dropping and recreating the table.  (This is much faster than going
+** {F12265} SQLite implements the command "DELETE FROM table" without
+** a WHERE clause by dropping and recreating the table.  (This is much
+** faster than going
 ** through and deleting individual elements form the table.)  Because of
 ** this optimization, the change count for "DELETE FROM table" will be
 ** zero regardless of the number of elements that were originally in the
@@ -868,10 +881,15 @@ int sqlite3_total_changes(sqlite3*);
 ** is not safe to call this routine with a database connection that
 ** is closed or might close before sqlite3_interrupt() returns.
 **
+** If an SQL is very nearly finished at the time when sqlite3_interrupt()
+** is called, then it might not have an opportunity to be interrupted.
+** It might continue to completion.
 ** {F12274} The SQL operation that is interrupted will return
-** [SQLITE_INTERRUPT].  {F12275} If an interrupted operation was an
-** update that is inside an explicit transaction, then the entire
-** transaction will be rolled back automatically.
+** [SQLITE_INTERRUPT].  {F12275} If the interrupted SQL operation is an
+** INSERT, UPDATE, or DELETE that is inside an explicit transaction, 
+** then the entire transaction will be rolled back automatically.
+** {F12276} A call to sqlite3_interrupt() has no effect on SQL statements
+** that are started after sqlite3_interrupt() returns.
 */
 void sqlite3_interrupt(sqlite3*);
 
@@ -879,13 +897,13 @@ void sqlite3_interrupt(sqlite3*);
 ** CAPI3REF: Determine If An SQL Statement Is Complete {F10510}
 **
 ** These routines are useful for command-line input to determine if the
-** currently entered text forms one or more complete SQL statements or
-** if additional input is needed before sending the statements into
+** currently entered text seems to form complete a SQL statement or
+** if additional input is needed before sending the text into
 ** SQLite for parsing.  These routines return true if the input string
 ** appears to be a complete SQL statement.  A statement is judged to be
 ** complete if it ends with a semicolon and is not a fragment of a
 ** CREATE TRIGGER statement.  These routines do not parse the SQL and
-** will not detect syntactically incorrect SQL.
+** so will not detect syntactically incorrect SQL.
 **
 ** {F10511} These functions return true if the given input string 
 ** ends with a semicolon optionally followed by whitespace or
@@ -909,7 +927,7 @@ int sqlite3_complete16(const void *sql);
 ** invoked whenever an attempt is made to open a database table 
 ** that another thread or process has locked.
 ** {F12312} If the busy callback is NULL, then [SQLITE_BUSY]
-** (or sometimes [SQLITE_IOERR_BLOCKED])
+** or [SQLITE_IOERR_BLOCKED]
 ** is returned immediately upon encountering the lock.
 ** {F12313} If the busy callback is not NULL, then the
 ** callback will be invoked with two arguments.  {F12314} The
@@ -922,23 +940,24 @@ int sqlite3_complete16(const void *sql);
 ** {F12317} If the callback returns non-zero, then another attempt
 ** is made to open the database for reading and the cycle repeats.
 **
-** {U12318} The presence of a busy handler does not guarantee that
-** it will be invoked when there is lock contention.
+** The presence of a busy handler does not guarantee that
+** it will be invoked when there is lock contention. {F12319}
 ** If SQLite determines that invoking the busy handler could result in
-** a deadlock, it will return [SQLITE_BUSY] instead. {END}
+** a deadlock, it will go ahead and return [SQLITE_BUSY] or
+** [SQLITE_IOERR_BLOCKED] instead of invoking the
+** busy handler. {END}
 ** Consider a scenario where one process is holding a read lock that
 ** it is trying to promote to a reserved lock and
 ** a second process is holding a reserved lock that it is trying
 ** to promote to an exclusive lock.  The first process cannot proceed
 ** because it is blocked by the second and the second process cannot
 ** proceed because it is blocked by the first.  If both processes
-** invoke the busy handlers, neither will make any progress.  
-** {F12319} Therefore,
+** invoke the busy handlers, neither will make any progress.  Therefore,
 ** SQLite returns [SQLITE_BUSY] for the first process, hoping that this
 ** will induce the first process to release its read lock and allow
 ** the second process to proceed.
 **
-** {F12321} The default busy callback is NULL.
+** {F12321} The default busy callback is NULL. {END}
 **
 ** {F12322} The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]
 ** when SQLite is in the middle of a large transaction where all the
@@ -972,14 +991,15 @@ int sqlite3_complete16(const void *sql);
 ** So if two database connections share a single cache, then changing
 ** the busy handler on one connection will also change the busy
 ** handler in the other connection.  {F12332} The busy handler is invoked
-** in the thread that was running when the SQLITE_BUSY was hit.
+** in the thread that was running when the lock contention occurs.
 */
 int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
 
 /*
 ** CAPI3REF: Set A Busy Timeout {F12340}
 **
-** {F12341} This routine sets a busy handler that sleeps for a while when a
+** {F12341} This routine sets a [sqlite3_busy_handler | busy handler]
+** that sleeps for a while when a
 ** table is locked.  {F12342} The handler will sleep multiple times until 
 ** at least "ms" milliseconds of sleeping have been done. {F12343} After
 ** "ms" milliseconds of sleeping, the handler returns 0 which
@@ -1153,9 +1173,10 @@ char *sqlite3_snprintf(int,char*,const char*, ...);
 /*
 ** CAPI3REF: Memory Allocation Subsystem {F17300}
 **
-** {F17301} The SQLite core (not counting operating-system specific VFS
-** implementations) uses these three routines for all of its own
-** internal memory allocation needs. {END}
+** {F17301} The SQLite core  uses these three routines for all of its own
+** internal memory allocation needs. {END}  "Core" in the previous sentence
+** does not include operating-system specific VFS implementation.  The
+** windows VFS uses native malloc and free for some operations.
 **
 ** {F17302} The sqlite3_malloc() routine returns a pointer to a block
 ** of memory at least N bytes in length, where N is the parameter.
@@ -1192,6 +1213,9 @@ char *sqlite3_snprintf(int,char*,const char*, ...);
 ** {F17315} If sqlite3_realloc() returns NULL, then the prior allocation
 ** is not freed.
 **
+** {F17316} The memory returned by sqlite3_malloc() and sqlite3_realloc()
+** is always aligned to at least an 8 byte boundary. {END}
+**
 ** {F17381} The default implementation
 ** of the memory allocation subsystem uses the malloc(), realloc()
 ** and free() provided by the standard C library. {F17382} However, if 
@@ -1210,7 +1234,7 @@ char *sqlite3_snprintf(int,char*,const char*, ...);
 ** is no longer provided.  Only built-in memory allocators can be
 ** used.
 **
-** <b>Exception:</b> The windows OS interface layer calls
+** The windows OS interface layer calls
 ** the system malloc() and free() directly when converting
 ** filenames between the UTF-8 encoding used by SQLite
 ** and whatever filename encoding is used by the particular windows
@@ -1236,10 +1260,12 @@ void sqlite3_free(void*);
 ** any overhead added by SQLite, but not overhead added by the
 ** library malloc() that backs the sqlite3_malloc() implementation.
 ** {F17373} The sqlite3_memory_highwater() routines returns the
-** maximum number of bytes that have been outstanding since the 
-** highwater mark was last reset.
+** maximum number of bytes that have been outstanding at any time
+** since the highwater mark was last reset.
 ** {F17374} The byte count returned by sqlite3_memory_highwater()
-** uses the same byte counting rules as sqlite3_memory_used().
+** uses the same byte counting rules as sqlite3_memory_used(). {END}
+** In other words, overhead added internally by SQLite is counted,
+** but overhead from the underlying system malloc is not.
 ** {F17375} If the parameter to sqlite3_memory_highwater() is true,
 ** then the highwater mark is reset to the current value of
 ** sqlite3_memory_used() and the prior highwater mark (before the
@@ -1260,20 +1286,28 @@ sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
 ** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()].  {F12503} At various
 ** points during the compilation process, as logic is being created
 ** to perform various actions, the authorizer callback is invoked to
-** see if those actions are allowed.  {X12504} The authorizer callback should
+** see if those actions are allowed.  The authorizer callback should
 ** return SQLITE_OK to allow the action, [SQLITE_IGNORE] to disallow the
 ** specific action but allow the SQL statement to continue to be
 ** compiled, or [SQLITE_DENY] to cause the entire SQL statement to be
-** rejected with an error.  {END}
-**
-** Depending on the action, the [SQLITE_IGNORE] and [SQLITE_DENY] return
-** codes might mean something different or they might mean the same
-** thing.  If the action is, for example, to perform a delete opertion,
-** then [SQLITE_IGNORE] and [SQLITE_DENY] both cause the statement compilation
-** to fail with an error.  But if the action is to read a specific column
-** from a specific table, then [SQLITE_DENY] will cause the entire
-** statement to fail but [SQLITE_IGNORE] will cause a NULL value to be
-** read instead of the actual column value.
+** rejected with an error.  {F12504} If the authorizer callback returns
+** any value other than [SQLITE_IGNORE], [SQLITE_OK], or [SQLITE_DENY]
+** then [sqlite3_prepare_v2()] or equivalent call that triggered
+** the authorizer shall
+** fail with an SQLITE_ERROR error code and an appropriate error message. {END}
+**
+** When the callback returns [SQLITE_OK], that means the operation
+** requested is ok.  {F12505} When the callback returns [SQLITE_DENY], the
+** [sqlite3_prepare_v2()] or equivalent call that triggered the
+** authorizer shall fail
+** with an SQLITE_ERROR error code and an error message explaining that
+** access is denied. {F12506} If the authorizer code (the 2nd parameter
+** to the authorizer callback is anything other than [SQLITE_READ], then
+** a return of [SQLITE_IGNORE] has the same effect as [SQLITE_DENY]. 
+** If the authorizer code is [SQLITE_READ] and the callback returns
+** [SQLITE_IGNORE] then the prepared statement is constructed to
+** insert a NULL value in place of the table column that would have
+** been read if [SQLITE_OK] had been returned. {END}
 **
 ** {F12510} The first parameter to the authorizer callback is a copy of
 ** the third parameter to the sqlite3_set_authorizer() interface.
@@ -1311,7 +1345,7 @@ int sqlite3_set_authorizer(
 );
 
 /*
-** CAPI3REF: Authorizer Return Codes {F12505}
+** CAPI3REF: Authorizer Return Codes {F12590}
 **
 ** The [sqlite3_set_authorizer | authorizer callback function] must
 ** return either [SQLITE_OK] or one of these two constants in order
@@ -1323,20 +1357,20 @@ int sqlite3_set_authorizer(
 #define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an error */
 
 /*
-** CAPI3REF: Authorizer Action Codes
+** CAPI3REF: Authorizer Action Codes {F12550}
 **
 ** The [sqlite3_set_authorizer()] interface registers a callback function
-** that is invoked to authorizer certain SQL statement actions.  The
+** that is invoked to authorizer certain SQL statement actions.  {F12551} The
 ** second parameter to the callback is an integer code that specifies
 ** what action is being authorized.  These are the integer action codes that
-** the authorizer callback may be passed.
+** the authorizer callback may be passed. {END}
 **
 ** These action code values signify what kind of operation is to be 
-** authorized.  The 3rd and 4th parameters to the authorization callback
-** function will be parameters or NULL depending on which of these
-** codes is used as the second parameter.  The 5th parameter to the
+** authorized.  {F12552} The 3rd and 4th parameters to the authorization
+** callback function will be parameters or NULL depending on which of these
+** codes is used as the second parameter. {F12553} The 5th parameter to the
 ** authorizer callback is the name of the database ("main", "temp", 
-** etc.) if applicable.  The 6th parameter to the authorizer callback
+** etc.) if applicable. {F12554} The 6th parameter to the authorizer callback
 ** is the name of the inner-most trigger or view that is responsible for
 ** the access attempt or NULL if this access attempt is directly from 
 ** top-level SQL code.
@@ -1376,21 +1410,33 @@ int sqlite3_set_authorizer(
 #define SQLITE_COPY                  0   /* No longer used */
 
 /*
-** CAPI3REF: Tracing And Profiling Functions {F12290}
+** CAPI3REF: Tracing And Profiling Functions {F12280}
 **
 ** These routines register callback functions that can be used for
 ** tracing and profiling the execution of SQL statements.
 **
-** {F12291} The callback function registered by sqlite3_trace() is invoked
+** {F12281} The callback function registered by sqlite3_trace() is invoked
 ** at the first [sqlite3_step()] for the evaluation of an SQL statement.
-** {F12292} Only a single trace callback can be registered at a time.
-** Each call to sqlite3_trace() overrides the previous.  {F12293} A
-** NULL callback for sqlite3_trace() disables tracing. 
-**
-** {F12295} The callback function registered by sqlite3_profile() is invoked
-** as each SQL statement finishes and includes
-** information on how long that statement ran.{END}
-**
+** {F12282} Only a single trace callback can be registered at a time.
+** Each call to sqlite3_trace() overrides the previous.  {F12283} A
+** NULL callback for sqlite3_trace() disables tracing.  {F12284} The
+** first argument to the trace callback is a copy of the pointer which
+** was the 3rd argument to sqlite3_trace.  {F12285} The second argument
+** to the trace callback is a zero-terminated UTF8 string containing
+** the original text of the SQL statement as it was passed into
+** [sqlite3_prepare_v2()] or the equivalent. {END}  Note that the
+** host parameter are not expanded in the SQL statement text.
+**
+** {F12287} The callback function registered by sqlite3_profile() is invoked
+** as each SQL statement finishes.  {F12288} The first parameter to the
+** profile callback is a copy of the 3rd parameter to sqlite3_profile().
+** {F12289} The second parameter to the profile callback is a
+** zero-terminated UTF-8 string that contains the complete text of
+** the SQL statement as it was processed by [sqlite3_prepare_v2()] or
+** the equivalent.  {F12290} The third parameter to the profile 
+** callback is an estimate of the number of nanoseconds of
+** wall-clock time required to run the SQL statement from start
+** to finish. {END}  
 **
 ** The sqlite3_profile() API is currently considered experimental and
 ** is subject to change.
@@ -1462,7 +1508,7 @@ void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
 ** to [sqlite3_close()] when it is no longer required.
 **
 ** {F12709} The [sqlite3_open_v2()] interface works like [sqlite3_open()] 
-** except that provides two additional parameters for additional control
+** except that it acccepts two additional parameters for additional control
 ** over the new database connection.  {F12710} The flags parameter can be
 ** one of:
 **
@@ -1563,8 +1609,8 @@ const void *sqlite3_errmsg16(sqlite3*);
 /*
 ** CAPI3REF: SQL Statement Object {F13000}
 **
-** Instance of this object represent single SQL statements.  This
-** is variously known as a "prepared statement" or a 
+** An instance of this object represent single SQL statements.  This
+** object is variously known as a "prepared statement" or a 
 ** "compiled SQL statement" or simply as a "statement".
 ** 
 ** The life of a statement object goes something like this:
@@ -1603,17 +1649,18 @@ typedef struct sqlite3_stmt sqlite3_stmt;
 ** than zero, then zSql is read up to the first zero terminator.
 ** {F13014} If nByte is non-negative, then it is the maximum number of 
 ** bytes read from zSql.  When nByte is non-negative, the
-** zSql string ends at either the first '\000' character or 
+** zSql string ends at either the first '\000' or '\u0000' character or 
 ** until the nByte-th byte, whichever comes first. {END}
 **
 ** {F13015} *pzTail is made to point to the first byte past the end of the
-** first SQL statement in zSql.  This routine only compiles the first statement
-** in zSql, so *pzTail is left pointing to what remains uncompiled. {END}
+** first SQL statement in zSql.  These routines only compiles the first
+** statement in zSql, so *pzTail is left pointing to what remains
+** uncompiled. {END}
 **
 ** {F13016} *ppStmt is left pointing to a compiled 
 ** [sqlite3_stmt | SQL statement structure] that can be
 ** executed using [sqlite3_step()].  Or if there is an error, *ppStmt may be
-** set to NULL.  {F13017} If the input text contained no SQL (if the input
+** set to NULL.  {F13017} If the input text contains no SQL (if the input
 ** is and empty string or a comment) then *ppStmt is set to NULL.
 ** {U13018} The calling procedure is responsible for deleting the
 ** compiled SQL statement
@@ -1696,7 +1743,8 @@ int sqlite3_prepare16_v2(
 ** pointer is valid until the statement
 ** is deleted using sqlite3_finalize().
 ** {F13103} The string returned by sqlite3_sql() is always UTF8 even
-** if a UTF16 string was originally entered using [sqlite3_prepare16_v2()].
+** if a UTF16 string was originally entered using [sqlite3_prepare16_v2()]
+** or the equivalent.
 **
 ** {F13104} If the statement was compiled using either of the legacy
 ** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this
@@ -1707,10 +1755,11 @@ const char *sqlite3_sql(sqlite3_stmt *pStmt);
 /*
 ** CAPI3REF:  Dynamically Typed Value Object  {F15000}
 **
-** SQLite uses dynamic typing for the values it stores.  Values can 
-** be integers, floating point values, strings, BLOBs, or NULL.  When
-** passing around values internally, each value is represented as
-** an instance of the sqlite3_value object.
+** {F15001} SQLite uses the sqlite3_value object to represent all values
+** that are or can be stored in a database table. {END}
+** SQLite uses dynamic typing for the values it stores.  
+** {F15002} Values stored in sqlite3_value objects can be
+** be integers, floating point values, strings, BLOBs, or NULL.
 */
 typedef struct Mem sqlite3_value;
 
@@ -1718,8 +1767,8 @@ typedef struct Mem sqlite3_value;
 ** CAPI3REF:  SQL Function Context Object {F16001}
 **
 ** The context in which an SQL function executes is stored in an
-** sqlite3_context object.  A pointer to such an object is the
-** first parameter to user-defined SQL functions.
+** sqlite3_context object.  {F16002} A pointer to an sqlite3_context
+** object is always first parameter to application-defined SQL functions.
 */
 typedef struct sqlite3_context sqlite3_context;
 
@@ -1727,7 +1776,7 @@ typedef struct sqlite3_context sqlite3_context;
 ** CAPI3REF:  Binding Values To Prepared Statements {F13500}
 **
 ** {F13501} In the SQL strings input to [sqlite3_prepare_v2()] and its
-** variants, one or more literals can be replace by a parameter in one
+** variants, literals may be replace by a parameter in one
 ** of these forms:
 **
 ** <ul>
@@ -1753,7 +1802,7 @@ typedef struct sqlite3_context sqlite3_context;
 ** occurrences have the same index as the first occurrence. 
 ** {F13506} The index for named parameters can be looked up using the
 ** [sqlite3_bind_parameter_name()] API if desired.  {F13507} The index
-** for "?NNN" parametes is the value of NNN.
+** for "?NNN" parameters is the value of NNN.
 ** {F13508} The NNN value must be between 1 and the compile-time
 ** parameter SQLITE_MAX_VARIABLE_NUMBER (default value: 999). {END}
 ** See <a href="limits.html">limits.html</a> for additional information.
@@ -1814,7 +1863,7 @@ int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
 **
 ** {F13601} Return the largest host parameter index in the precompiled
 ** statement given as the argument. {F13602} When the host parameters
-** are of the forms like ":AAA" or "?",
+** are of the forms like ":AAA", "$VVV", "@AAA", or "?",
 ** then they are assigned sequential increasing numbers beginning
 ** with one, so the value returned is the number of parameters.
 ** {F13603} However
@@ -1839,10 +1888,10 @@ int sqlite3_bind_parameter_count(sqlite3_stmt*);
 ** Host parameters of the form ":AAA" or "@AAA" or "$VVV" have a name
 ** which is the string ":AAA" or "@AAA" or "$VVV". 
 ** In other words, the initial ":" or "$" or "@"
-** is included as part of the name.  {F13623}
+** is included as part of the name.  {F13626}
 ** Parameters of the form "?" or "?NNN" have no name.
 **
-** {F13623} The first bound parameter has an index of 1, not 0.
+** {F13623} The first host parameter has an index of 1, not 0.
 **
 ** {F13624} If the value n is out of range or if the n-th parameter is
 ** nameless, then NULL is returned.  {F13625} The returned string is
@@ -1887,8 +1936,9 @@ int sqlite3_column_count(sqlite3_stmt *pStmt);
 **
 ** {F13721} These routines return the name assigned to a particular column
 ** in the result set of a SELECT statement.  {F13722} The sqlite3_column_name()
-** interface returns a pointer to a UTF8 string and sqlite3_column_name16()
-** returns a pointer to a UTF16 string. {F13723}  The first parameter is the
+** interface returns a pointer to a zero-terminated UTF8 string
+** and sqlite3_column_name16() returns a pointer to a zero-terminated
+** UTF16 string. {F13723}  The first parameter is the
 ** [sqlite3_stmt | prepared statement] that implements the SELECT statement.
 ** The second parameter is the column number.  The left-most column is
 ** number 0.
@@ -1956,7 +2006,7 @@ const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
 **
 ** The first parameter is a [sqlite3_stmt | compiled SQL statement]. 
 ** {F13761} If this statement is a SELECT statement and the Nth column of the 
-** returned result set  of that SELECT is a table column (not an
+** returned result set of that SELECT is a table column (not an
 ** expression or subquery) then the declared type of the table
 ** column is returned.  {F13762} If the Nth column of the result set is an
 ** expression or subquery, then a NULL pointer is returned.
@@ -2072,9 +2122,9 @@ int sqlite3_step(sqlite3_stmt*);
 int sqlite3_data_count(sqlite3_stmt *pStmt);
 
 /*
-** CAPI3REF: Fundamental Datatypes {F10260}
+** CAPI3REF: Fundamental Datatypes {F10265}
 **
-** {F10261}Every value in SQLite has one of five fundamental datatypes:
+** {F10266}Every value in SQLite has one of five fundamental datatypes:
 **
 ** <ul>
 ** <li> 64-bit signed integer
@@ -2370,7 +2420,7 @@ int sqlite3_create_function16(
 );
 
 /*
-** CAPI3REF: Text Encodings {F10260}
+** CAPI3REF: Text Encodings {F10267}
 **
 ** These constant define integer codes that represent the various
 ** text encodings supported by SQLite.
@@ -2426,9 +2476,9 @@ int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
 ** The sqlite3_value_numeric_type() interface attempts to apply
 ** numeric affinity to the value.  This means that an attempt is
 ** made to convert the value to an integer or floating point.  If
-** such a conversion is possible without loss of information (in order
-** words if the value is original a string that looks like a number)
-** then it is done.  Otherwise no conversion occurs.  The 
+** such a conversion is possible without loss of information (in other
+** words if the value is a string that looks like a number)
+** then the conversion is done.  Otherwise no conversion occurs.  The 
 ** [SQLITE_INTEGER | datatype] after conversion is returned.
 **
 ** Please pay particular attention to the fact that the pointer that
@@ -2442,6 +2492,7 @@ int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),void*,sqlite3_int64);
 ** Or, if the sqlite3_value* argument comes from the [sqlite3_column_value()]
 ** interface, then these routines should be called from the same thread
 ** that ran [sqlite3_column_value()].
+**
 */
 const void *sqlite3_value_blob(sqlite3_value*);
 int sqlite3_value_bytes(sqlite3_value*);
@@ -2460,14 +2511,17 @@ int sqlite3_value_numeric_type(sqlite3_value*);
 ** CAPI3REF: Obtain Aggregate Function Context {F16210}
 **
 ** The implementation of aggregate SQL functions use this routine to allocate
-** a structure for storing their state.  The first time this routine
-** is called for a particular aggregate, a new structure of size nBytes
-** is allocated, zeroed, and returned.  On subsequent calls (for the
-** same aggregate instance) the same buffer is returned.  The implementation
+** a structure for storing their state.  
+** {F16211} The first time the sqlite3_aggregate_context() routine is
+** is called for a particular aggregate, SQLite allocates nBytes of memory
+** zeros that memory, and returns a pointer to it.
+** {F16212} On second and subsequent calls to sqlite3_aggregate_context()
+** for the same aggregate function index, the same buffer is returned. {END}
+** The implementation
 ** of the aggregate can use the returned buffer to accumulate data.
 **
-** The buffer allocated is freed automatically by SQLite whan the aggregate
-** query concludes.
+** {F16213} SQLite automatically frees the allocated buffer when the aggregate
+** query concludes. {END}
 **
 ** The first parameter should be a copy of the 
 ** [sqlite3_context | SQL function context] that is the first
@@ -2482,13 +2536,14 @@ void *sqlite3_aggregate_context(sqlite3_context*, int nBytes);
 /*
 ** CAPI3REF: User Data For Functions {F16240}
 **
-** The pUserData parameter to the [sqlite3_create_function()]
-** and [sqlite3_create_function16()] routines
-** used to register user functions is available to
-** the implementation of the function using this call.
+** {F16241} The sqlite3_user_data() interface returns a copy of
+** the pointer that was the pUserData parameter (the 5th parameter)
+** of the the [sqlite3_create_function()]
+** and [sqlite3_create_function16()] routines that originally
+** registered the application defined function. {END}
 **
-** This routine must be called from the same thread in which
-** the SQL function is running.
+** {U16243} This routine must be called from the same thread in which
+** the application-defined function is running.
 */
 void *sqlite3_user_data(sqlite3_context*);
 
@@ -2506,17 +2561,24 @@ void *sqlite3_user_data(sqlite3_context*);
 ** invocations of the same function so that the original pattern string
 ** does not need to be recompiled on each invocation.
 **
+** {F16271}
 ** The sqlite3_get_auxdata() interface returns a pointer to the meta-data
-** associated with the Nth argument value to the current SQL function
-** call, where N is the second parameter. If no meta-data has been set for
-** that value, then a NULL pointer is returned.
-**
-** The sqlite3_set_auxdata() is used to associate meta-data with an SQL
-** function argument. The third parameter is a pointer to the meta-data
-** to be associated with the Nth user function argument value. The fourth
-** parameter specifies a destructor that will be called on the meta-
-** data pointer to release it when it is no longer required. If the 
-** destructor is NULL, it is not invoked.
+** associated by the sqlite3_set_auxdata() function with the Nth argument
+** value to the application-defined function.
+** {F16272} If no meta-data has been ever been set for the Nth
+** argument of the function, or if the cooresponding function parameter
+** has changed since the meta-data was set, then sqlite3_get_auxdata()
+** returns a NULL pointer.
+**
+** {F16275} The sqlite3_set_auxdata() interface saves the meta-data
+** pointed to by its 3rd parameter as the meta-data for the N-th
+** argument of the application-defined function. {END} Subsequent
+** calls to sqlite3_get_auxdata() might return this data, if it has
+** not been destroyed. 
+** {F16277} If it is not NULL, SQLite will invoke the destructor 
+** function given by the 4th parameter to sqlite3_set_auxdata() on
+** the meta-data when the corresponding function parameter changes
+** or when the SQL statement completes, whichever comes first. {END}
 **
 ** In practice, meta-data is preserved between function calls for
 ** expressions that are constant at compile time. This includes literal
@@ -2525,8 +2587,8 @@ void *sqlite3_user_data(sqlite3_context*);
 ** These routines must be called from the same thread in which
 ** the SQL function is running.
 */
-void *sqlite3_get_auxdata(sqlite3_context*, int);
-void sqlite3_set_auxdata(sqlite3_context*, int, void*, void (*)(void*));
+void *sqlite3_get_auxdata(sqlite3_context*, int N);
+void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
 
 
 /*
@@ -2562,17 +2624,90 @@ typedef void (*sqlite3_destructor_type)(void*);
 ** [sqlite3_bind_blob | sqlite3_bind_* documentation] for
 ** additional information.
 **
-** The sqlite3_result_error() and sqlite3_result_error16() functions
-** cause the implemented SQL function to throw an exception.  The
-** parameter to sqlite3_result_error() or sqlite3_result_error16()
-** is the text of an error message.
-**
-** The sqlite3_result_toobig() cause the function implementation
-** to throw and error indicating that a string or BLOB is to long
-** to represent.
-**
-** These routines must be called from within the same thread as
-** the SQL function associated with the [sqlite3_context] pointer.
+** {F16402} The sqlite3_result_blob() interface sets the result from
+** an application defined function to be the BLOB whose content is pointed
+** to by the second parameter and which is N bytes long where N is the
+** third parameter. 
+** {F16403} The sqlite3_result_zeroblob() inerfaces set the result of
+** the application defined function to be a BLOB containing all zero
+** bytes and N bytes in size, where N is the value of the 2nd parameter.
+**
+** {F16407} The sqlite3_result_double() interface sets the result from
+** an application defined function to be a floating point value specified
+** by its 2nd argument.
+**
+** {F16409} The sqlite3_result_error() and sqlite3_result_error16() functions
+** cause the implemented SQL function to throw an exception.
+** {F16411} SQLite uses the string pointed to by the
+** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16()
+** as the text of an error message. {F16412} SQLite interprets the error
+** message string from sqlite3_result_error() as UTF8.  {F16413} SQLite
+** interprets the string from sqlite3_result_error16() as UTF16 in native
+** byte order.  {F16414} If the third parameter to sqlite3_result_error()
+** or sqlite3_result_error16() is negative then SQLite takes as the error
+** message all text up through the first zero character.
+** {F16415} If the third parameter to sqlite3_result_error() or
+** sqlite3_result_error16() is non-negative then SQLite takes that many
+** bytes (not characters) from the 2nd parameter as the error message.
+** {F16417} The sqlite3_result_error() and sqlite3_result_error16()
+** routines make a copy private copy of the error message text before
+** they return.  {END} Hence, the calling function can deallocate or
+** modify the text after they return without harm.
+**
+** {F16421} The sqlite3_result_toobig() interface causes SQLite
+** to throw an error indicating that a string or BLOB is to long
+** to represent.  {F16422} The sqlite3_result_nomem() interface
+** causes SQLite to throw an exception indicating that the a
+** memory allocation failed.
+**
+** {F16431} The sqlite3_result_int() interface sets the return value
+** of the application-defined function to be the 32-bit signed integer
+** value given in the 2nd argument.
+** {F16432} The sqlite3_result_int64() interface sets the return value
+** of the application-defined function to be the 64-bit signed integer
+** value given in the 2nd argument.
+**
+** {F16437} The sqlite3_result_null() interface sets the return value
+** of the application-defined function to be NULL.
+**
+** {F16441} The sqlite3_result_text(), sqlite3_result_text16(), 
+** sqlite3_result_text16le(), and sqlite3_result_text16be() interfaces
+** set the return value of the application-defined function to be
+** a text string which is represented as UTF-8, UTF-16 native byte order,
+** UTF-16 little endian, or UTF-16 big endian, respectively.
+** {F16442} SQLite takes the text result from the application from
+** the 2nd parameter of the sqlite3_result_text* interfaces.
+** {F16444} If the 3rd parameter to the sqlite3_result_text* interfaces
+** is negative, then SQLite takes result text from the 2nd parameter 
+** through the first zero character.
+** {F16447} If the 3rd parameter to the sqlite3_result_text* interfaces
+** is non-negative, then as many bytes (not characters) of the text
+** pointed to by the 2nd parameter are taken as the application-defined
+** function result.
+** {F16451} If the 4th parameter to the sqlite3_result_text* interfaces
+** or sqlite3_result_blob is a non-NULL pointer, then SQLite calls that
+** function as the destructor on the text or blob result when it has
+** finished using that result.
+** {F16453} If the 4th parameter to the sqlite3_result_text* interfaces
+** or sqlite3_result_blob is the special constant SQLITE_STATIC, then
+** SQLite assumes that the text or blob result is constant space and
+** does not copy the space or call a destructor when it has
+** finished using that result.
+** {F16454} If the 4th parameter to the sqlite3_result_text* interfaces
+** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
+** then SQLite makes a copy of the result into space obtained from
+** from [sqlite3_malloc()] before it returns.
+**
+** {F16461} The sqlite3_result_value() interface sets the result of
+** the application-defined function to be a copy the [sqlite3_value]
+** object specified by the 2nd parameter.  {F16463} The
+** sqlite3_result_value() interface makes a copy of the [sqlite3_value]
+** so that [sqlite3_value] specified in the parameter may change or
+** be deallocated after sqlite3_result_value() returns without harm.
+**
+** {U16491} These routines are called from within the different thread 
+** than the one containing the application-defined function that recieved
+** the [sqlite3_context] pointer, the results are undefined.
 */
 void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
 void sqlite3_result_double(sqlite3_context*, double);
@@ -2593,47 +2728,52 @@ void sqlite3_result_zeroblob(sqlite3_context*, int n);
 /*
 ** CAPI3REF: Define New Collating Sequences {F16600}
 **
+** {F16601}
 ** These functions are used to add new collation sequences to the
 ** [sqlite3*] handle specified as the first argument. 
 **
+** {F16602}
 ** The name of the new collation sequence is specified as a UTF-8 string
 ** for sqlite3_create_collation() and sqlite3_create_collation_v2()
-** and a UTF-16 string for sqlite3_create_collation16().  In all cases
+** and a UTF-16 string for sqlite3_create_collation16(). {F16603} In all cases
 ** the name is passed as the second function argument.
 **
+** {F16604}
 ** The third argument may be one of the constants [SQLITE_UTF8],
 ** [SQLITE_UTF16LE] or [SQLITE_UTF16BE], indicating that the user-supplied
 ** routine expects to be passed pointers to strings encoded using UTF-8,
-** UTF-16 little-endian or UTF-16 big-endian respectively.  The
+** UTF-16 little-endian or UTF-16 big-endian respectively. {F16605} The
 ** third argument might also be [SQLITE_UTF16_ALIGNED] to indicate that
 ** the routine expects pointers to 16-bit word aligned strings
 ** of UTF16 in the native byte order of the host computer.
 **
+** {F16607}
 ** A pointer to the user supplied routine must be passed as the fifth
-** argument. If it is NULL, this is the same as deleting the collation
-** sequence (so that SQLite cannot call it anymore). Each time the user
+** argument. {F16609} If it is NULL, this is the same as deleting the collation
+** sequence (so that SQLite cannot call it anymore).
+** {F16611} Each time the application
 ** supplied function is invoked, it is passed a copy of the void* passed as
 ** the fourth argument to sqlite3_create_collation() or
 ** sqlite3_create_collation16() as its first parameter.
 **
-** The remaining arguments to the user-supplied routine are two strings,
+** {F16612}
+** The remaining arguments to the application-supplied routine are two strings,
 ** each represented by a [length, data] pair and encoded in the encoding
 ** that was passed as the third argument when the collation sequence was
-** registered. The user routine should return negative, zero or positive if
+** registered. {END} The application defined collation routine should
+** return negative, zero or positive if
 ** the first string is less than, equal to, or greater than the second
 ** string. i.e. (STRING1 - STRING2).
 **
+** {F16615}
 ** The sqlite3_create_collation_v2() works like sqlite3_create_collation()
 ** excapt that it takes an extra argument which is a destructor for
-** the collation.  The destructor is called when the collation is
+** the collation.  {F16617} The destructor is called when the collation is
 ** destroyed and is passed a copy of the fourth parameter void* pointer
-** of the sqlite3_create_collation_v2().  Collations are destroyed when
+** of the sqlite3_create_collation_v2().
+** {F16618}  Collations are destroyed when
 ** they are overridden by later calls to the collation creation functions
 ** or when the [sqlite3*] database handle is closed using [sqlite3_close()].
-**
-** The sqlite3_create_collation_v2() interface is experimental and
-** subject to change in future releases.  The other collation creation
-** functions are stable.
 */
 int sqlite3_create_collation(
   sqlite3*, 
@@ -2661,24 +2801,27 @@ int sqlite3_create_collation16(
 /*
 ** CAPI3REF: Collation Needed Callbacks {F16700}
 **
+** {F16701}
 ** To avoid having to register all collation sequences before a database
 ** can be used, a single callback function may be registered with the
 ** database handle to be called whenever an undefined collation sequence is
 ** required.
 **
+** {F16702}
 ** If the function is registered using the sqlite3_collation_needed() API,
 ** then it is passed the names of undefined collation sequences as strings
-** encoded in UTF-8. If sqlite3_collation_needed16() is used, the names
-** are passed as UTF-16 in machine native byte order. A call to either
+** encoded in UTF-8. {F16703} If sqlite3_collation_needed16() is used, the names
+** are passed as UTF-16 in machine native byte order. {F16704} A call to either
 ** function replaces any existing callback.
 **
-** When the callback is invoked, the first argument passed is a copy
+** {F16705} When the callback is invoked, the first argument passed is a copy
 ** of the second argument to sqlite3_collation_needed() or
-** sqlite3_collation_needed16(). The second argument is the database
-** handle. The third argument is one of [SQLITE_UTF8], [SQLITE_UTF16BE], or
-** [SQLITE_UTF16LE], indicating the most desirable form of the collation
-** sequence function required. The fourth parameter is the name of the
-** required collation sequence.
+** sqlite3_collation_needed16(). {F16706} The second argument is the database
+** handle.  {F16707} The third argument is one of [SQLITE_UTF8],
+** [SQLITE_UTF16BE], or [SQLITE_UTF16LE], indicating the most
+** desirable form of the collation sequence function required.
+** {F16708} The fourth parameter is the name of the
+** required collation sequence. {END}
 **
 ** The callback function should register the desired collation using
 ** [sqlite3_create_collation()], [sqlite3_create_collation16()], or
@@ -2723,16 +2866,17 @@ int sqlite3_rekey(
 /*
 ** CAPI3REF:  Suspend Execution For A Short Time {F10530}
 **
-** This function causes the current thread to suspend execution
+** {F10531} The sqlite3_sleep() function
+** causes the current thread to suspend execution
 ** for at least a number of milliseconds specified in its parameter.
 **
-** If the operating system does not support sleep requests with 
+** {F10532} If the operating system does not support sleep requests with 
 ** millisecond time resolution, then the time will be rounded up to 
-** the nearest second. The number of milliseconds of sleep actually 
+** the nearest second. {F10533} The number of milliseconds of sleep actually 
 ** requested from the operating system is returned.
 **
-** SQLite implements this interface by calling the xSleep()
-** method of the default [sqlite3_vfs] object.
+** {F10534} SQLite implements this interface by calling the xSleep()
+** method of the default [sqlite3_vfs] object. {END}
 */
 int sqlite3_sleep(int);
 
@@ -2755,30 +2899,33 @@ SQLITE_EXTERN char *sqlite3_temp_directory;
 /*
 ** CAPI3REF:  Test To See If The Database Is In Auto-Commit Mode {F12930}
 **
-** Test to see whether or not the database connection is in autocommit
-** mode.  Return TRUE if it is and FALSE if not.  Autocommit mode is on
-** by default.  Autocommit is disabled by a BEGIN statement and reenabled
-** by the next COMMIT or ROLLBACK.
+** {F12931} The sqlite3_get_autocommit() interfaces returns non-zero or
+** zero if the given database connection is or is not in autocommit mode,
+** respectively. {F12932}  Autocommit mode is on
+** by default.  {F12933} Autocommit mode is disabled by a BEGIN statement.
+** {F12934} Autocommit mode is reenabled by a COMMIT or ROLLBACK. {END}
 **
 ** If certain kinds of errors occur on a statement within a multi-statement
 ** transactions (errors including [SQLITE_FULL], [SQLITE_IOERR], 
 ** [SQLITE_NOMEM], [SQLITE_BUSY], and [SQLITE_INTERRUPT]) then the
-** transaction might be rolled back automatically.  The only way to
+** transaction might be rolled back automatically.  {F12935} The only way to
 ** find out if SQLite automatically rolled back the transaction after
-** an error is to use this function.
+** an error is to use this function. {END}
 **
-** If another thread changes the autocommit status of the database
+** {U12936} If another thread changes the autocommit status of the database
 ** connection while this routine is running, then the return value
-** is undefined.
+** is undefined. {END}
 */
 int sqlite3_get_autocommit(sqlite3*);
 
 /*
 ** CAPI3REF:  Find The Database Handle Of A Prepared Statement {F13120}
 **
-** Return the [sqlite3*] database handle to which a
+** {F13121} The sqlite3_db_handle interface
+** returns the [sqlite3*] database handle to which a
 ** [sqlite3_stmt | prepared statement] belongs.
-** This is the same database handle that was
+** {F13122} the database handle returned by sqlite3_db_handle
+** is the same database handle that was
 ** the first argument to the [sqlite3_prepare_v2()] or its variants
 ** that was used to create the statement in the first place.
 */
@@ -2788,22 +2935,31 @@ sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
 /*
 ** CAPI3REF: Commit And Rollback Notification Callbacks {F12950}
 **
-** These routines
-** register callback functions to be invoked whenever a transaction
-** is committed or rolled back.  The pArg argument is passed through
-** to the callback.  If the callback on a commit hook function 
+** {F12951} The sqlite3_commit_hook() interface registers a callback
+** function to be invoked whenever a transaction is committed.
+** {F12952} Any callback set by a previous call to sqlite3_commit_hook()
+** for the same database connection is overridden.
+** {F12953} The sqlite3_rollback_hook() interface registers a callback
+** function to be invoked whenever a transaction is committed.
+** {F12954} Any callback set by a previous call to sqlite3_commit_hook()
+** for the same database connection is overridden.
+** {F12956} The pArg argument is passed through
+** to the callback.  {F12957} If the callback on a commit hook function 
 ** returns non-zero, then the commit is converted into a rollback.
 **
-** If another function was previously registered, its pArg value is returned.
-** Otherwise NULL is returned.
+** {F12958} If another function was previously registered, its
+** pArg value is returned.  Otherwise NULL is returned.
 **
-** Registering a NULL function disables the callback.
+** {F12959} Registering a NULL function disables the callback.
 **
-** For the purposes of this API, a transaction is said to have been 
+** {F12961} For the purposes of this API, a transaction is said to have been 
 ** rolled back if an explicit "ROLLBACK" statement is executed, or
-** an error or constraint causes an implicit rollback to occur. The 
-** callback is not invoked if a transaction is automatically rolled
-** back because the database connection is closed.
+** an error or constraint causes an implicit rollback to occur.
+** {F12962} The rollback callback is not invoked if a transaction is
+** automatically rolled back because the database connection is closed.
+** {F12964} The rollback callback is not invoked if a transaction is
+** rolled back because a commit callback returned non-zero.
+** <todo> Check on this </todo> {END}
 **
 ** These are experimental interfaces and are subject to change.
 */
@@ -2813,26 +2969,32 @@ void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
 /*
 ** CAPI3REF: Data Change Notification Callbacks {F12970}
 **
-** Register a callback function with the database connection identified by the 
+** {F12971} The sqlite3_update_hook() interface
+** registers a callback function with the database connection identified by the 
 ** first argument to be invoked whenever a row is updated, inserted or deleted.
-** Any callback set by a previous call to this function for the same 
+** {F12972} Any callback set by a previous call to this function for the same 
 ** database connection is overridden.
 **
-** The second argument is a pointer to the function to invoke when a 
-** row is updated, inserted or deleted. The first argument to the callback is
-** a copy of the third argument to sqlite3_update_hook(). The second callback 
-** argument is one of SQLITE_INSERT, SQLITE_DELETE or SQLITE_UPDATE, depending
-** on the operation that caused the callback to be invoked. The third and 
+** {F12974} The second argument is a pointer to the function to invoke when a 
+** row is updated, inserted or deleted. 
+** {F12976} The first argument to the callback is
+** a copy of the third argument to sqlite3_update_hook().
+** {F12977} The second callback 
+** argument is one of [SQLITE_INSERT], [SQLITE_DELETE] or [SQLITE_UPDATE],
+** depending on the operation that caused the callback to be invoked.
+** {F12978} The third and 
 ** fourth arguments to the callback contain pointers to the database and 
-** table name containing the affected row. The final callback parameter is 
-** the rowid of the row. In the case of an update, this is the rowid after 
+** table name containing the affected row.
+** {F12979} The final callback parameter is 
+** the rowid of the row.
+** {F12981} In the case of an update, this is the rowid after 
 ** the update takes place.
 **
-** The update hook is not invoked when internal system tables are
+** {F12983} The update hook is not invoked when internal system tables are
 ** modified (i.e. sqlite_master and sqlite_sequence).
 **
-** If another function was previously registered, its pArg value is returned.
-** Otherwise NULL is returned.
+** {F12984} If another function was previously registered, its pArg value
+** is returned.  {F12985} Otherwise NULL is returned.
 */
 void *sqlite3_update_hook(
   sqlite3*, 
@@ -2843,29 +3005,33 @@ void *sqlite3_update_hook(
 /*
 ** CAPI3REF:  Enable Or Disable Shared Pager Cache {F10330}
 **
+** {F10331}
 ** This routine enables or disables the sharing of the database cache
 ** and schema data structures between connections to the same database.
+** {F10332}
 ** Sharing is enabled if the argument is true and disabled if the argument
 ** is false.
 **
-** Beginning in SQLite version 3.5.0, cache sharing is enabled and disabled
-** for an entire process.  In prior versions of SQLite, sharing was
+** {F10333} Cache sharing is enabled and disabled
+** for an entire process. {END} This is a change as of SQLite version 3.5.0.
+** In prior versions of SQLite, sharing was
 ** enabled or disabled for each thread separately.
 **
+** {F10334}
 ** The cache sharing mode set by this interface effects all subsequent
 ** calls to [sqlite3_open()], [sqlite3_open_v2()], and [sqlite3_open16()].
-** Existing database connections continue use the sharing mode that was
-** in effect at the time they were opened.
+** {F10335} Existing database connections continue use the sharing mode
+** that was in effect at the time they were opened. {END}
 **
-** Virtual tables cannot be used with a shared cache.  When shared
+** Virtual tables cannot be used with a shared cache.  {F10336} When shared
 ** cache is enabled, the [sqlite3_create_module()] API used to register
-** virtual tables will always return an error.
+** virtual tables will always return an error. {END}
 **
-** This routine returns [SQLITE_OK] if shared cache was
-** enabled or disabled successfully.  An [SQLITE_ERROR | error code]
-** is returned otherwise.
+** {F10337} This routine returns [SQLITE_OK] if shared cache was
+** enabled or disabled successfully.  {F10338} An [SQLITE_ERROR | error code]
+** is returned otherwise. {END}
 **
-** Shared cache is disabled by default.  But this might change in
+** {F10339} Shared cache is disabled by default. {END} But this might change in
 ** future releases of SQLite.  Applications that care about shared
 ** cache setting should set it explicitly.
 */
@@ -2874,39 +3040,46 @@ int sqlite3_enable_shared_cache(int);
 /*
 ** CAPI3REF:  Attempt To Free Heap Memory {F17340}
 **
-** Attempt to free N bytes of heap memory by deallocating non-essential
-** memory allocations held by the database library (example: memory 
-** used to cache database pages to improve performance).
+** {F17341} The sqlite3_release_memory() interface attempts to
+** free N bytes of heap memory by deallocating non-essential memory
+** allocations held by the database labrary. {END}  Memory used
+** to cache database pages to improve performance is an example of
+** non-essential memory.  {F16342} sqlite3_release_memory() returns
+** the number of bytes actually freed, which might be more or less
+** than the amount requested.
 */
 int sqlite3_release_memory(int);
 
 /*
 ** CAPI3REF:  Impose A Limit On Heap Size {F17350}
 **
-** Place a "soft" limit on the amount of heap memory that may be allocated
-** by SQLite.  If an internal allocation is requested 
-** that would exceed the specified limit, [sqlite3_release_memory()] is
+** {F16351} The sqlite3_soft_heap_limit() interface
+** places a "soft" limit on the amount of heap memory that may be allocated
+** by SQLite. {F16352} If an internal allocation is requested 
+** that would exceed the soft heap limit, [sqlite3_release_memory()] is
 ** invoked one or more times to free up some space before the allocation
-** is made.
+** is made. {END}
 **
-** The limit is called "soft", because if [sqlite3_release_memory()] cannot
+** {F16353} The limit is called "soft", because if
+** [sqlite3_release_memory()] cannot
 ** free sufficient memory to prevent the limit from being exceeded,
 ** the memory is allocated anyway and the current operation proceeds.
 **
+** {F16354}
 ** A negative or zero value for N means that there is no soft heap limit and
 ** [sqlite3_release_memory()] will only be called when memory is exhausted.
-** The default value for the soft heap limit is zero.
+** {F16355} The default value for the soft heap limit is zero.
 **
-** SQLite makes a best effort to honor the soft heap limit.  But if it
-** is unable to reduce memory usage below the soft limit, execution will
-** continue without error or notification.  This is why the limit is 
+** SQLite makes a best effort to honor the soft heap limit.  
+** {F16356} But if the soft heap limit cannot honored, execution will
+** continue without error or notification. {END}  This is why the limit is 
 ** called a "soft" limit.  It is advisory only.
 **
 ** Prior to SQLite version 3.5.0, this routine only constrained the memory
 ** allocated by a single thread - the same thread in which this routine
 ** runs.  Beginning with SQLite version 3.5.0, the soft heap limit is
-** applied to all threads.  The value specified for the soft heap limit
-** is an upper bound on the total memory allocation for all threads.  In
+** applied to all threads. {F16357} The value specified for the soft heap limit
+** is an upper bound on the total memory allocation for all threads. {END}  In
 ** version 3.5.0 there is no mechanism for limiting the heap usage for
 ** individual threads.
 */
@@ -2991,16 +3164,23 @@ int sqlite3_table_column_metadata(
 /*
 ** CAPI3REF: Load An Extension {F12600}
 **
-** Attempt to load an SQLite extension library contained in the file
-** zFile.  The entry point is zProc.  zProc may be 0 in which case the
-** name of the entry point defaults to "sqlite3_extension_init".
+** {F12601} The sqlite3_load_extension() interface
+** attempts to load an SQLite extension library contained in the file
+** zFile. {F12602} The entry point is zProc. {F12603} zProc may be 0
+** in which case the name of the entry point defaults
+** to "sqlite3_extension_init".
 **
-** Return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
+** {F12604} The sqlite3_load_extension() interface shall
+** return [SQLITE_OK] on success and [SQLITE_ERROR] if something goes wrong.
 **
-** If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with 
-** error message text.  The calling function should free this memory
+** {F12605}
+** If an error occurs and pzErrMsg is not 0, then the
+** sqlite3_load_extension() interface shall attempt to fill *pzErrMsg with 
+** error message text stored in memory obtained from [sqlite3_malloc()].
+** {END}  The calling function should free this memory
 ** by calling [sqlite3_free()].
 **
+** {F12606}
 ** Extension loading must be enabled using [sqlite3_enable_load_extension()]
 ** prior to calling this API or an error will be returned.
 */
@@ -3018,34 +3198,36 @@ int sqlite3_load_extension(
 ** unprepared to deal with extension loading, and as a means of disabling
 ** extension loading while evaluating user-entered SQL, the following
 ** API is provided to turn the [sqlite3_load_extension()] mechanism on and
-** off.  It is off by default.  See ticket #1863.
+** off.  {F12622} It is off by default. {END} See ticket #1863.
 **
-** Call this routine with onoff==1 to turn extension loading on
-** and call it with onoff==0 to turn it back off again.
+** {F12621} Call the sqlite3_enable_load_extension() routine
+** with onoff==1 to turn extension loading on
+** and call it with onoff==0 to turn it back off again. {END}
 */
 int sqlite3_enable_load_extension(sqlite3 *db, int onoff);
 
 /*
 ** CAPI3REF: Make Arrangements To Automatically Load An Extension {F12640}
 **
-** Register an extension entry point that is automatically invoked
+** {F12641} This function
+** registers an extension entry point that is automatically invoked
 ** whenever a new database connection is opened using
-** [sqlite3_open()], [sqlite3_open16()], or [sqlite3_open_v2()].
+** [sqlite3_open()], [sqlite3_open16()], or [sqlite3_open_v2()]. {END}
 **
 ** This API can be invoked at program startup in order to register
 ** one or more statically linked extensions that will be available
 ** to all new database connections.
 **
-** Duplicate extensions are detected so calling this routine multiple
+** {F12642} Duplicate extensions are detected so calling this routine multiple
 ** times with the same extension is harmless.
 **
-** This routine stores a pointer to the extension in an array
-** that is obtained from malloc().  If you run a memory leak
+** {F12643} This routine stores a pointer to the extension in an array
+** that is obtained from sqlite_malloc(). {END} If you run a memory leak
 ** checker on your program and it reports a leak because of this
 ** array, then invoke [sqlite3_reset_auto_extension()] prior
 ** to shutdown to free the memory.
 **
-** Automatic extensions apply across all threads.
+** {F12644} Automatic extensions apply across all threads. {END}
 **
 ** This interface is experimental and is subject to change or
 ** removal in future releases of SQLite.
@@ -3056,11 +3238,12 @@ int sqlite3_auto_extension(void *xEntryPoint);
 /*
 ** CAPI3REF: Reset Automatic Extension Loading {F12660}
 **
-** Disable all previously registered automatic extensions.  This
+** {F12661} This function disables all previously registered
+** automatic extensions. {END}  This
 ** routine undoes the effect of all prior [sqlite3_automatic_extension()]
 ** calls.
 **
-** This call disabled automatic extensions in all threads.
+** {F12662} This call disabled automatic extensions in all threads. {END}
 **
 ** This interface is experimental and is subject to change or
 ** removal in future releases of SQLite.
@@ -3320,24 +3503,26 @@ typedef struct sqlite3_blob sqlite3_blob;
 /*
 ** CAPI3REF: Open A BLOB For Incremental I/O {F17810}
 **
-** Open a handle to the blob located in row iRow,, column zColumn, 
-** table zTable in database zDb. i.e. the same blob that would
-** be selected by:
+** {F17811} This interfaces opens a handle to the blob located
+** in row iRow,, column zColumn, table zTable in database zDb;
+** in other words,  the same blob that would be selected by:
 **
 ** <pre>
 **     SELECT zColumn FROM zDb.zTable WHERE rowid = iRow;
-** </pre>
+** </pre> {END}
 **
-** If the flags parameter is non-zero, the blob is opened for 
+** {F17812} If the flags parameter is non-zero, the blob is opened for 
 ** read and write access. If it is zero, the blob is opened for read 
-** access.
+** access. {END}
 **
-** On success, [SQLITE_OK] is returned and the new 
-** [sqlite3_blob | blob handle] is written to *ppBlob.
-** Otherwise an error code is returned and 
+** {F17813} On success, [SQLITE_OK] is returned and the new 
+** [sqlite3_blob | blob handle] is written to *ppBlob. 
+** {F17814} Otherwise an error code is returned and 
 ** any value written to *ppBlob should not be used by the caller.
-** This function sets the database-handle error code and message
+** {F17815} This function sets the database-handle error code and message
 ** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()].
+** <todo>We should go through and mark all interfaces that behave this
+** way with a similar statement</todo>
 */
 int sqlite3_blob_open(
   sqlite3*,
@@ -3354,14 +3539,17 @@ int sqlite3_blob_open(
 **
 ** Close an open [sqlite3_blob | blob handle].
 **
-** Closing a BLOB might cause the current transaction to commit.
-** If any writes were made to the BLOB, they might be held in cache
-** until the close operation.  Closing the BLOB forces the changes
+** {F17831} Closing a BLOB shall cause the current transaction to commit
+** if there are no other BLOBs, no pending prepared statements, and the
+** database connection is in autocommit mode.
+** {F17832} If any writes were made to the BLOB, they might be held in cache
+** until the close operation if they will fit. {END}
+** Closing the BLOB often forces the changes
 ** out to disk and so if any I/O errors occur, they will likely occur
-** at the time when the BLOB is closed.  Any errors that occur during
+** at the time when the BLOB is closed.  {F17833} Any errors that occur during
 ** closing are reported as a non-zero return value.
 **
-** The BLOB is closed unconditionally.  Even if this routine returns
+** {F17839} The BLOB is closed unconditionally.  Even if this routine returns
 ** an error code, the BLOB is still closed.
 */
 int sqlite3_blob_close(sqlite3_blob *);
@@ -3379,10 +3567,14 @@ int sqlite3_blob_bytes(sqlite3_blob *);
 **
 ** This function is used to read data from an open 
 ** [sqlite3_blob | blob-handle] into a caller supplied buffer.
-** n bytes of data are copied into buffer
+** {F17851} n bytes of data are copied into buffer
 ** z from the open blob, starting at offset iOffset.
 **
-** On success, SQLITE_OK is returned. Otherwise, an 
+** {F17852} If offset iOffset is less than n bytes from the end of the blob, 
+** [SQLITE_ERROR] is returned and no data is read.  {F17853} If n is
+** less than zero [SQLITE_ERROR] is returned and no data is read.
+**
+** {F17854} On success, SQLITE_OK is returned. Otherwise, an 
 ** [SQLITE_ERROR | SQLite error code] or an
 ** [SQLITE_IOERR_READ | extended error code] is returned.
 */
@@ -3393,19 +3585,20 @@ int sqlite3_blob_read(sqlite3_blob *, void *z, int n, int iOffset);
 **
 ** This function is used to write data into an open 
 ** [sqlite3_blob | blob-handle] from a user supplied buffer.
-** n bytes of data are copied from the buffer
+** {F17871} n bytes of data are copied from the buffer
 ** pointed to by z into the open blob, starting at offset iOffset.
 **
-** If the [sqlite3_blob | blob-handle] passed as the first argument
+** {F17872} If the [sqlite3_blob | blob-handle] passed as the first argument
 ** was not opened for writing (the flags parameter to [sqlite3_blob_open()]
 *** was zero), this function returns [SQLITE_READONLY].
 **
-** This function may only modify the contents of the blob, it is
-** not possible to increase the size of a blob using this API. If
-** offset iOffset is less than n bytes from the end of the blob, 
-** [SQLITE_ERROR] is returned and no data is written.
+** {F17873} This function may only modify the contents of the blob; it is
+** not possible to increase the size of a blob using this API.
+** {F17874} If offset iOffset is less than n bytes from the end of the blob, 
+** [SQLITE_ERROR] is returned and no data is written.  {F17875} If n is
+** less than zero [SQLITE_ERROR] is returned and no data is written.
 **
-** On success, SQLITE_OK is returned. Otherwise, an 
+** {F17876} On success, SQLITE_OK is returned. Otherwise, an 
 ** [SQLITE_ERROR | SQLite error code] or an
 ** [SQLITE_IOERR_READ | extended error code] is returned.
 */
@@ -3421,22 +3614,24 @@ int sqlite3_blob_write(sqlite3_blob *, const void *z, int n, int iOffset);
 ** New VFSes can be registered and existing VFSes can be unregistered.
 ** The following interfaces are provided.
 **
-** The sqlite3_vfs_find() interface returns a pointer to a VFS given its
-** name.  Names are case sensitive.  If there is no match, a NULL
-** pointer is returned.  If zVfsName is NULL then the default 
-** VFS is returned.
-**
-** New VFSes are registered with sqlite3_vfs_register().  Each
-** new VFS becomes the default VFS if the makeDflt flag is set.
-** The same VFS can be registered multiple times without injury.
-** To make an existing VFS into the default VFS, register it again
-** with the makeDflt flag set.  If two different VFSes with the
-** same name are registered, the behavior is undefined.  If a
+** {F11201} The sqlite3_vfs_find() interface returns a pointer to 
+** a VFS given its name.  {F11202} Names are case sensitive.
+** {F11203} Names are zero-terminated UTF-8 strings.
+** {F11204} If there is no match, a NULL
+** pointer is returned. {F11205} If zVfsName is NULL then the default 
+** VFS is returned. {END}
+**
+** {F11210} New VFSes are registered with sqlite3_vfs_register().
+** {F11211} Each new VFS becomes the default VFS if the makeDflt flag is set.
+** {F11212} The same VFS can be registered multiple times without injury.
+** {F11213} To make an existing VFS into the default VFS, register it again
+** with the makeDflt flag set. {U11214} If two different VFSes with the
+** same name are registered, the behavior is undefined.  {U11215} If a
 ** VFS is registered with a name that is NULL or an empty string,
 ** then the behavior is undefined.
 ** 
-** Unregister a VFS with the sqlite3_vfs_unregister() interface.
-** If the default VFS is unregistered, another VFS is chosen as
+** {F11220} Unregister a VFS with the sqlite3_vfs_unregister() interface.
+** {F11221} If the default VFS is unregistered, another VFS is chosen as
 ** the default.  The choice for the new VFS is arbitrary.
 */
 sqlite3_vfs *sqlite3_vfs_find(const char *zVfsName);
@@ -3478,10 +3673,10 @@ int sqlite3_vfs_unregister(sqlite3_vfs*);
 ** application that links against SQLite to provide its own mutex
 ** implementation without having to modify the SQLite core.
 **
-** The sqlite3_mutex_alloc() routine allocates a new
-** mutex and returns a pointer to it.  If it returns NULL
-** that means that a mutex could not be allocated.  SQLite
-** will unwind its stack and return an error.  The argument
+** {F17011} The sqlite3_mutex_alloc() routine allocates a new
+** mutex and returns a pointer to it. {F17012} If it returns NULL
+** that means that a mutex could not be allocated. {F17013} SQLite
+** will unwind its stack and return an error. {F17014} The argument
 ** to sqlite3_mutex_alloc() is one of these integer constants:
 **
 ** <ul>
@@ -3492,60 +3687,62 @@ int sqlite3_vfs_unregister(sqlite3_vfs*);
 ** <li>  SQLITE_MUTEX_STATIC_MEM2
 ** <li>  SQLITE_MUTEX_STATIC_PRNG
 ** <li>  SQLITE_MUTEX_STATIC_LRU
-** </ul>
+** </ul> {END}
 **
-** The first two constants cause sqlite3_mutex_alloc() to create
+** {F17015} The first two constants cause sqlite3_mutex_alloc() to create
 ** a new mutex.  The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
-** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
+** is used but not necessarily so when SQLITE_MUTEX_FAST is used. {END}
 ** The mutex implementation does not need to make a distinction
 ** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
-** not want to.  But SQLite will only request a recursive mutex in
-** cases where it really needs one.  If a faster non-recursive mutex
+** not want to.  {F17016} But SQLite will only request a recursive mutex in
+** cases where it really needs one.  {END} If a faster non-recursive mutex
 ** implementation is available on the host platform, the mutex subsystem
 ** might return such a mutex in response to SQLITE_MUTEX_FAST.
 **
-** The other allowed parameters to sqlite3_mutex_alloc() each return
-** a pointer to a static preexisting mutex.  Four static mutexes are
+** {F17017} The other allowed parameters to sqlite3_mutex_alloc() each return
+** a pointer to a static preexisting mutex. {END}  Four static mutexes are
 ** used by the current version of SQLite.  Future versions of SQLite
 ** may add additional static mutexes.  Static mutexes are for internal
 ** use by SQLite only.  Applications that use SQLite mutexes should
 ** use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
 ** SQLITE_MUTEX_RECURSIVE.
 **
-** Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
+** {F17018} Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
 ** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call.  But for the static 
+** returns a different mutex on every call.  {F17034} But for the static 
 ** mutex types, the same mutex is returned on every call that has
-** the same type number.
+** the same type number. {END}
 **
-** The sqlite3_mutex_free() routine deallocates a previously
-** allocated dynamic mutex.  SQLite is careful to deallocate every
-** dynamic mutex that it allocates.  The dynamic mutexes must not be in 
-** use when they are deallocated.  Attempting to deallocate a static
-** mutex results in undefined behavior.  SQLite never deallocates
-** a static mutex.
+** {F17019} The sqlite3_mutex_free() routine deallocates a previously
+** allocated dynamic mutex. {F17020} SQLite is careful to deallocate every
+** dynamic mutex that it allocates. {U17021} The dynamic mutexes must not be in 
+** use when they are deallocated. {U17022} Attempting to deallocate a static
+** mutex results in undefined behavior. {F17023} SQLite never deallocates
+** a static mutex. {END}
 **
 ** The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
-** to enter a mutex.  If another thread is already within the mutex,
+** to enter a mutex. {F17024} If another thread is already within the mutex,
 ** sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
-** SQLITE_BUSY.  The sqlite3_mutex_try() interface returns SQLITE_OK
-** upon successful entry.  Mutexes created using SQLITE_MUTEX_RECURSIVE can
-** be entered multiple times by the same thread.  In such cases the,
+** SQLITE_BUSY. {F17025}  The sqlite3_mutex_try() interface returns SQLITE_OK
+** upon successful entry.  {F17026} Mutexes created using
+** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
+** {F17027} In such cases the,
 ** mutex must be exited an equal number of times before another thread
-** can enter.  If the same thread tries to enter any other kind of mutex
-** more than once, the behavior is undefined.   SQLite will never exhibit
-** such behavior in its own use of mutexes.
+** can enter.  {U17028} If the same thread tries to enter any other
+** kind of mutex more than once, the behavior is undefined.
+** {F17029} SQLite will never exhibit
+** such behavior in its own use of mutexes. {END}
 **
 ** Some systems (ex: windows95) do not the operation implemented by
 ** sqlite3_mutex_try().  On those systems, sqlite3_mutex_try() will
-** always return SQLITE_BUSY.  The SQLite core only ever uses
-** sqlite3_mutex_try() as an optimization so this is acceptable behavior.
+** always return SQLITE_BUSY.  {F17030} The SQLite core only ever uses
+** sqlite3_mutex_try() as an optimization so this is acceptable behavior. {END}
 **
-** The sqlite3_mutex_leave() routine exits a mutex that was
-** previously entered by the same thread.  The behavior
+** {F17031} The sqlite3_mutex_leave() routine exits a mutex that was
+** previously entered by the same thread.  {U17032} The behavior
 ** is undefined if the mutex is not currently entered by the
-** calling thread or is not currently allocated.  SQLite will
-** never do either.
+** calling thread or is not currently allocated.  {F17033} SQLite will
+** never do either. {END}
 **
 ** See also: [sqlite3_mutex_held()] and [sqlite3_mutex_notheld()].
 */
@@ -3563,7 +3760,7 @@ void sqlite3_mutex_leave(sqlite3_mutex*);
 ** never uses these routines except inside an assert() and applications
 ** are advised to follow the lead of the core.  {F17082} The core only
 ** provides implementations for these routines when it is compiled
-** with the SQLITE_DEBUG flag.  {U17083} External mutex implementations
+** with the SQLITE_DEBUG flag.  {U17087} External mutex implementations
 ** are only required to provide these routines if SQLITE_DEBUG is
 ** defined and if NDEBUG is not defined.
 **
@@ -3620,8 +3817,8 @@ int sqlite3_mutex_notheld(sqlite3_mutex*);
 ** {F11306} If the second parameter (zDbName) does not match the name of any
 ** open database file, then SQLITE_ERROR is returned. {F11307} This error
 ** code is not remembered and will not be recalled by [sqlite3_errcode()]
-** or [sqlite3_errmsg()]. {U11307} The underlying xFileControl method might
-** also return SQLITE_ERROR.  {U11308} There is no way to distinguish between
+** or [sqlite3_errmsg()]. {U11308} The underlying xFileControl method might
+** also return SQLITE_ERROR.  {U11309} There is no way to distinguish between
 ** an incorrect zDbName and an SQLITE_ERROR return from the underlying
 ** xFileControl method. {END}
 **