Revision: 14466
Author:   
rain...@gmail.com
Date:     Fri May 16 13:59:50 2014 UTC
Log:      Update sqlite.
http://code.google.com/p/miranda/source/detail?r=14466
Modified:
  /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.c
  /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.h
=======================================
--- /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.c	Mon Apr 18 01:10:35 2011  
UTC
+++ /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.c	Fri May 16 13:59:50 2014  
UTC
File is too large to display a diff.
=======================================
--- /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.h	Mon Apr 18 01:10:35 2011  
UTC
+++ /trunk/miranda/plugins/dbrw/sqlite3/sqlite3.h	Fri May 16 13:59:50 2014  
UTC
@@ -107,9 +107,9 @@
  ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
  ** [sqlite_version()] and [sqlite_source_id()].
  */
-#define SQLITE_VERSION        "3.7.6.2"
-#define SQLITE_VERSION_NUMBER 3007006
-#define SQLITE_SOURCE_ID      "2011-04-17 17:25:17  
154ddbc17120be2915eb03edc52af1225eb7cb5e"
+#define SQLITE_VERSION        "3.8.4.3"
+#define SQLITE_VERSION_NUMBER 3008004
+#define SQLITE_SOURCE_ID      "2014-04-03 16:53:12  
a611fa96c4a848614efe899130359c9f6fb889c3"
  /*
  ** CAPI3REF: Run-Time Library Version Numbers
@@ -177,7 +177,7 @@
  ** CAPI3REF: Test To See If The Library Is Threadsafe
  **
  ** ^The sqlite3_threadsafe() function returns zero if and only if
-** SQLite was compiled mutexing code omitted due to the
+** SQLite was compiled with mutexing code omitted due to the
  ** [SQLITE_THREADSAFE] compile-time option being set to 0.
  **
  ** SQLite can be compiled with or without mutexes.  When
@@ -219,7 +219,8 @@
  ** the opaque structure named "sqlite3".  It is useful to think of an  
sqlite3
  ** pointer as an object.  The [sqlite3_open()], [sqlite3_open16()], and
  ** [sqlite3_open_v2()] interfaces are its constructors, and  
[sqlite3_close()]
-** is its destructor.  There are many other interfaces (such as
+** and [sqlite3_close_v2()] are its destructors.  There are many other
+** interfaces (such as
  ** [sqlite3_prepare_v2()], [sqlite3_create_function()], and
  ** [sqlite3_busy_timeout()] to name but three) that are methods on an
  ** sqlite3 object.
@@ -266,28 +267,46 @@
  /*
  ** CAPI3REF: Closing A Database Connection
  **
-** ^The sqlite3_close() routine is the destructor for the [sqlite3] object.
-** ^Calls to sqlite3_close() return SQLITE_OK if the [sqlite3] object is
-** successfully destroyed and all associated resources are deallocated.
+** ^The sqlite3_close() and sqlite3_close_v2() routines are destructors
+** for the [sqlite3] object.
+** ^Calls to sqlite3_close() and sqlite3_close_v2() return SQLITE_OK if
+** the [sqlite3] object is successfully destroyed and all associated
+** resources are deallocated.
  **
-** Applications must [sqlite3_finalize | finalize] all [prepared  
statements]
-** and [sqlite3_blob_close | close] all [BLOB handles] associated with
-** the [sqlite3] object prior to attempting to close the object.  ^If
-** sqlite3_close() is called on a [database connection] that still has
-** outstanding [prepared statements] or [BLOB handles], then it returns
-** SQLITE_BUSY.
+** ^If the database connection is associated with unfinalized prepared
+** statements or unfinished sqlite3_backup objects then sqlite3_close()
+** will leave the database connection open and return [SQLITE_BUSY].
+** ^If sqlite3_close_v2() is called with unfinalized prepared statements
+** and unfinished sqlite3_backups, then the database connection becomes
+** an unusable "zombie" which will automatically be deallocated when the
+** last prepared statement is finalized or the last sqlite3_backup is
+** finished.  The sqlite3_close_v2() interface is intended for use with
+** host languages that are garbage collected, and where the order in which
+** destructors are called is arbitrary.
  **
-** ^If [sqlite3_close()] is invoked while a transaction is open,
+** Applications should [sqlite3_finalize | finalize] all [prepared  
statements],
+** [sqlite3_blob_close | close] all [BLOB handles], and
+** [sqlite3_backup_finish | finish] all [sqlite3_backup] objects associated
+** with the [sqlite3] object prior to attempting to close the object.  ^If
+** sqlite3_close_v2() is called on a [database connection] that still has
+** outstanding [prepared statements], [BLOB handles], and/or
+** [sqlite3_backup] objects then it returns SQLITE_OK but the deallocation
+** of resources is deferred until all [prepared statements], [BLOB  
handles],
+** and [sqlite3_backup] objects are also destroyed.
+**
+** ^If an [sqlite3] object is destroyed while a transaction is open,
  ** the transaction is automatically rolled back.
  **
-** The C parameter to [sqlite3_close(C)] must be either a NULL
+** The C parameter to [sqlite3_close(C)] and [sqlite3_close_v2(C)]
+** must be either a NULL
  ** pointer or an [sqlite3] object pointer obtained
  ** from [sqlite3_open()], [sqlite3_open16()], or
  ** [sqlite3_open_v2()], and not previously closed.
-** ^Calling sqlite3_close() with a NULL pointer argument is a
-** harmless no-op.
+** ^Calling sqlite3_close() or sqlite3_close_v2() with a NULL pointer
+** argument is a harmless no-op.
  */
-SQLITE_API int sqlite3_close(sqlite3 *);
+SQLITE_API int sqlite3_close(sqlite3*);
+SQLITE_API int sqlite3_close_v2(sqlite3*);
  /*
  ** The type for a callback function.
@@ -310,7 +329,7 @@
  ** argument.  ^If the callback function of the 3rd argument to
  ** sqlite3_exec() is not NULL, then it is invoked for each result row
  ** coming out of the evaluated SQL statements.  ^The 4th argument to
-** to sqlite3_exec() is relayed through to the 1st argument of each
+** sqlite3_exec() is relayed through to the 1st argument of each
  ** callback invocation.  ^If the callback pointer to sqlite3_exec()
  ** is NULL, then no callback is ever invoked and result rows are
  ** ignored.
@@ -351,7 +370,7 @@
  ** <ul>
  ** <li> The application must insure that the 1st parameter to  
sqlite3_exec()
  **      is a valid and open [database connection].
-** <li> The application must not close [database connection] specified by
+** <li> The application must not close the [database connection] specified  
by
  **      the 1st parameter to sqlite3_exec() while sqlite3_exec() is  
running.
  ** <li> The application must not modify the SQL statement text passed into
  **      the 2nd parameter of sqlite3_exec() while sqlite3_exec() is  
running.
@@ -371,11 +390,12 @@
  ** KEYWORDS: {result code} {result codes}
  **
  ** Many SQLite functions return an integer result code from the set shown
-** here in order to indicates success or failure.
+** here in order to indicate success or failure.
  **
  ** New error codes may be added in future versions of SQLite.
  **
-** See also: [SQLITE_IOERR_READ | extended result codes]
+** See also: [SQLITE_IOERR_READ | extended result codes],
+** [sqlite3_vtab_on_conflict()] [SQLITE_ROLLBACK | result codes].
  */
  #define SQLITE_OK           0   /* Successful result */
  /* beginning-of-error-codes */
@@ -405,6 +425,8 @@
  #define SQLITE_FORMAT      24   /* Auxiliary database format error */
  #define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of  
range */
  #define SQLITE_NOTADB      26   /* File opened that is not a database file  
*/
+#define SQLITE_NOTICE      27   /* Notifications from sqlite3_log() */
+#define SQLITE_WARNING     28   /* Warnings from sqlite3_log() */
  #define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
  #define SQLITE_DONE        101  /* sqlite3_step() has finished executing */
  /* end-of-error-codes */
@@ -425,7 +447,7 @@
  ** [sqlite3_extended_result_codes()] API.
  **
  ** Some of the available extended result codes are listed here.
-** One may expect the number of extended result codes will be expand
+** One may expect the number of extended result codes will increase
  ** over time.  Software that uses extended result codes should expect
  ** to see new result codes in future releases of SQLite.
  **
@@ -452,17 +474,45 @@
  #define SQLITE_IOERR_SHMOPEN           (SQLITE_IOERR | (18<<8))
  #define SQLITE_IOERR_SHMSIZE           (SQLITE_IOERR | (19<<8))
  #define SQLITE_IOERR_SHMLOCK           (SQLITE_IOERR | (20<<8))
+#define SQLITE_IOERR_SHMMAP            (SQLITE_IOERR | (21<<8))
+#define SQLITE_IOERR_SEEK              (SQLITE_IOERR | (22<<8))
+#define SQLITE_IOERR_DELETE_NOENT      (SQLITE_IOERR | (23<<8))
+#define SQLITE_IOERR_MMAP              (SQLITE_IOERR | (24<<8))
+#define SQLITE_IOERR_GETTEMPPATH       (SQLITE_IOERR | (25<<8))
+#define SQLITE_IOERR_CONVPATH          (SQLITE_IOERR | (26<<8))
  #define SQLITE_LOCKED_SHAREDCACHE      (SQLITE_LOCKED |  (1<<8))
  #define SQLITE_BUSY_RECOVERY           (SQLITE_BUSY   |  (1<<8))
+#define SQLITE_BUSY_SNAPSHOT           (SQLITE_BUSY   |  (2<<8))
  #define SQLITE_CANTOPEN_NOTEMPDIR      (SQLITE_CANTOPEN | (1<<8))
+#define SQLITE_CANTOPEN_ISDIR          (SQLITE_CANTOPEN | (2<<8))
+#define SQLITE_CANTOPEN_FULLPATH       (SQLITE_CANTOPEN | (3<<8))
+#define SQLITE_CANTOPEN_CONVPATH       (SQLITE_CANTOPEN | (4<<8))
+#define SQLITE_CORRUPT_VTAB            (SQLITE_CORRUPT | (1<<8))
+#define SQLITE_READONLY_RECOVERY       (SQLITE_READONLY | (1<<8))
+#define SQLITE_READONLY_CANTLOCK       (SQLITE_READONLY | (2<<8))
+#define SQLITE_READONLY_ROLLBACK       (SQLITE_READONLY | (3<<8))
+#define SQLITE_READONLY_DBMOVED        (SQLITE_READONLY | (4<<8))
+#define SQLITE_ABORT_ROLLBACK          (SQLITE_ABORT | (2<<8))
+#define SQLITE_CONSTRAINT_CHECK        (SQLITE_CONSTRAINT | (1<<8))
+#define SQLITE_CONSTRAINT_COMMITHOOK   (SQLITE_CONSTRAINT | (2<<8))
+#define SQLITE_CONSTRAINT_FOREIGNKEY   (SQLITE_CONSTRAINT | (3<<8))
+#define SQLITE_CONSTRAINT_FUNCTION     (SQLITE_CONSTRAINT | (4<<8))
+#define SQLITE_CONSTRAINT_NOTNULL      (SQLITE_CONSTRAINT | (5<<8))
+#define SQLITE_CONSTRAINT_PRIMARYKEY   (SQLITE_CONSTRAINT | (6<<8))
+#define SQLITE_CONSTRAINT_TRIGGER      (SQLITE_CONSTRAINT | (7<<8))
+#define SQLITE_CONSTRAINT_UNIQUE       (SQLITE_CONSTRAINT | (8<<8))
+#define SQLITE_CONSTRAINT_VTAB         (SQLITE_CONSTRAINT | (9<<8))
+#define SQLITE_CONSTRAINT_ROWID        (SQLITE_CONSTRAINT |(10<<8))
+#define SQLITE_NOTICE_RECOVER_WAL      (SQLITE_NOTICE | (1<<8))
+#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
+#define SQLITE_WARNING_AUTOINDEX       (SQLITE_WARNING | (1<<8))
  /*
  ** CAPI3REF: Flags For File Open Operations
  **
  ** These bit values are intended for use in the
  ** 3rd parameter to the [sqlite3_open_v2()] interface and
-** in the 4th parameter to the xOpen method of the
-** [sqlite3_vfs] object.
+** in the 4th parameter to the [sqlite3_vfs.xOpen] method.
  */
  #define SQLITE_OPEN_READONLY         0x00000001  /* Ok for  
sqlite3_open_v2() */
  #define SQLITE_OPEN_READWRITE        0x00000002  /* Ok for  
sqlite3_open_v2() */
@@ -470,6 +520,8 @@
  #define SQLITE_OPEN_DELETEONCLOSE    0x00000008  /* VFS only */
  #define SQLITE_OPEN_EXCLUSIVE        0x00000010  /* VFS only */
  #define SQLITE_OPEN_AUTOPROXY        0x00000020  /* VFS only */
+#define SQLITE_OPEN_URI              0x00000040  /* Ok for  
sqlite3_open_v2() */
+#define SQLITE_OPEN_MEMORY           0x00000080  /* Ok for  
sqlite3_open_v2() */
  #define SQLITE_OPEN_MAIN_DB          0x00000100  /* VFS only */
  #define SQLITE_OPEN_TEMP_DB          0x00000200  /* VFS only */
  #define SQLITE_OPEN_TRANSIENT_DB     0x00000400  /* VFS only */
@@ -489,7 +541,7 @@
  ** CAPI3REF: Device Characteristics
  **
  ** The xDeviceCharacteristics method of the [sqlite3_io_methods]
-** object returns an integer which is a vector of the these
+** object returns an integer which is a vector of these
  ** bit values expressing I/O characteristics of the mass storage
  ** device that holds the file that the [sqlite3_io_methods]
  ** refers to.
@@ -503,7 +555,12 @@
  ** first then the size of the file is extended, never the other
  ** way around.  The SQLITE_IOCAP_SEQUENTIAL property means that
  ** information is written to disk in the same order as calls
-** to xWrite().
+** to xWrite().  The SQLITE_IOCAP_POWERSAFE_OVERWRITE property means that
+** after reboot following a crash or power loss, the only bytes in a
+** file that were written at the application level might have changed
+** and that adjacent bytes, even bytes within the same sector are
+** guaranteed to be unchanged.  The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN
+** flag indicate that a file cannot be deleted when open.
  */
  #define SQLITE_IOCAP_ATOMIC                 0x00000001
  #define SQLITE_IOCAP_ATOMIC512              0x00000002
@@ -517,6 +574,7 @@
  #define SQLITE_IOCAP_SAFE_APPEND            0x00000200
  #define SQLITE_IOCAP_SEQUENTIAL             0x00000400
  #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN  0x00000800
+#define SQLITE_IOCAP_POWERSAFE_OVERWRITE    0x00001000
  /*
  ** CAPI3REF: File Locking Levels
@@ -580,17 +638,18 @@
  /*
  ** CAPI3REF: OS Interface File Virtual Methods Object
  **
-** Every file opened by the [sqlite3_vfs] xOpen method populates an
+** Every file opened by the [sqlite3_vfs.xOpen] method populates an
  ** [sqlite3_file] object (or, more commonly, a subclass of the
  ** [sqlite3_file] object) with a pointer to an instance of this object.
  ** This object defines the methods used to perform various operations
  ** against the open file represented by the [sqlite3_file] object.
  **
-** If the xOpen method sets the sqlite3_file.pMethods element
+** If the [sqlite3_vfs.xOpen] method sets the sqlite3_file.pMethods element
  ** to a non-NULL pointer, then the sqlite3_io_methods.xClose method
-** may be invoked even if the xOpen reported that it failed.  The
-** only way to prevent a call to xClose following a failed xOpen
-** is for the xOpen to set the sqlite3_file.pMethods element to NULL.
+** may be invoked even if the [sqlite3_vfs.xOpen] reported that it  
failed.  The
+** only way to prevent a call to xClose following a failed  
[sqlite3_vfs.xOpen]
+** is for the [sqlite3_vfs.xOpen] to set the sqlite3_file.pMethods element
+** to NULL.
  **
  ** The flags argument to xSync may be one of [SQLITE_SYNC_NORMAL] or
  ** [SQLITE_SYNC_FULL].  The first choice is the normal fsync().
@@ -687,6 +746,9 @@
    void (*xShmBarrier)(sqlite3_file*);
    int (*xShmUnmap)(sqlite3_file*, int deleteFlag);
    /* Methods above are valid for version 2 */
+  int (*xFetch)(sqlite3_file*, sqlite3_int64 iOfst, int iAmt, void **pp);
+  int (*xUnfetch)(sqlite3_file*, sqlite3_int64 iOfst, void *p);
+  /* Methods above are valid for version 3 */
    /* Additional methods may be added in future releases */
  };
@@ -704,7 +766,8 @@
  ** into an integer that the pArg argument points to. This capability
  ** is used during testing and only needs to be supported when SQLITE_TEST
  ** is defined.
-**
+** <ul>
+** <li>[[SQLITE_FCNTL_SIZE_HINT]]
  ** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
  ** layer a hint of how large the database file will grow to be during the
  ** current transaction.  This hint is not guaranteed to be accurate but it
@@ -712,6 +775,7 @@
  ** file space based on this hint in order to help writes to the database
  ** file run faster.
  **
+** <li>[[SQLITE_FCNTL_CHUNK_SIZE]]
  ** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
  ** extends and truncates the database file in chunks of a size specified
  ** by the user. The fourth argument to [sqlite3_file_control()] should
@@ -720,30 +784,188 @@
  ** chunks (say 1MB at a time), may reduce file-system fragmentation and
  ** improve performance on some systems.
  **
+** <li>[[SQLITE_FCNTL_FILE_POINTER]]
  ** The [SQLITE_FCNTL_FILE_POINTER] opcode is used to obtain a pointer
  ** to the [sqlite3_file] object associated with a particular database
  ** connection.  See the [sqlite3_file_control()] documentation for
  ** additional information.
  **
-** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by
-** SQLite and sent to all VFSes in place of a call to the xSync method
-** when the database connection has [PRAGMA synchronous] set to OFF.)^
-** Some specialized VFSes need this signal in order to operate correctly
-** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most
-** VFSes do not need this signal and should silently ignore this opcode.
-** Applications should not call [sqlite3_file_control()] with this
-** opcode as doing so may disrupt the operation of the specialized VFSes
-** that do require it.
+** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]
+** No longer in use.
+**
+** <li>[[SQLITE_FCNTL_SYNC]]
+** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and
+** sent to the VFS immediately before the xSync method is invoked on a
+** database file descriptor. Or, if the xSync method is not invoked
+** because the user has configured SQLite with
+** [PRAGMA synchronous | PRAGMA synchronous=OFF] it is invoked in place
+** of the xSync method. In most cases, the pointer argument passed with
+** this file-control is NULL. However, if the database file is being synced
+** as part of a multi-database commit, the argument points to a  
nul-terminated
+** string containing the transactions master-journal file name. VFSes that
+** do not need this signal should silently ignore this opcode. Applications
+** should not call [sqlite3_file_control()] with this opcode as doing so  
may
+** disrupt the operation of the specialized VFSes that do require it.
+**
+** <li>[[SQLITE_FCNTL_COMMIT_PHASETWO]]
+** The [SQLITE_FCNTL_COMMIT_PHASETWO] opcode is generated internally by  
SQLite
+** and sent to the VFS after a transaction has been committed immediately
+** but before the database is unlocked. VFSes that do not need this signal
+** should silently ignore this opcode. Applications should not call
+** [sqlite3_file_control()] with this opcode as doing so may disrupt the
+** operation of the specialized VFSes that do require it.
+**
+** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]]
+** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic
+** retry counts and intervals for certain disk I/O operations for the
+** windows [VFS] in order to provide robustness in the presence of
+** anti-virus programs.  By default, the windows VFS will retry file read,
+** file write, and file delete operations up to 10 times, with a delay
+** of 25 milliseconds before the first retry and with the delay increasing
+** by an additional 25 milliseconds with each subsequent retry.  This
+** opcode allows these two values (10 retries and 25 milliseconds of delay)
+** to be adjusted.  The values are changed for all database connections
+** within the same process.  The argument is a pointer to an array of two
+** integers where the first integer i the new retry count and the second
+** integer is the delay.  If either integer is negative, then the setting
+** is not changed but instead the prior value of that setting is written
+** into the array entry, allowing the current retry settings to be
+** interrogated.  The zDbName parameter is ignored.
+**
+** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
+** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
+** persistent [WAL | Write Ahead Log] setting.  By default, the auxiliary
+** write ahead log and shared memory files used for transaction control
+** are automatically deleted when the latest connection to the database
+** closes.  Setting persistent WAL mode causes those files to persist after
+** close.  Persisting the files is useful when other processes that do not
+** have write permission on the directory containing the database file want
+** to read the database file, as the WAL and shared memory files must exist
+** in order for the database to be readable.  The fourth parameter to
+** [sqlite3_file_control()] for this opcode should be a pointer to an  
integer.
+** That integer is 0 to disable persistent WAL mode or 1 to enable  
persistent
+** WAL mode.  If the integer is -1, then it is overwritten with the current
+** WAL persistence setting.
+**
+** <li>[[SQLITE_FCNTL_POWERSAFE_OVERWRITE]]
+** ^The [SQLITE_FCNTL_POWERSAFE_OVERWRITE] opcode is used to set or query  
the
+** persistent "powersafe-overwrite" or "PSOW" setting.  The PSOW setting
+** determines the [SQLITE_IOCAP_POWERSAFE_OVERWRITE] bit of the
+** xDeviceCharacteristics methods. The fourth parameter to
+** [sqlite3_file_control()] for this opcode should be a pointer to an  
integer.
+** That integer is 0 to disable zero-damage mode or 1 to enable zero-damage
+** mode.  If the integer is -1, then it is overwritten with the current
+** zero-damage mode setting.
+**
+** <li>[[SQLITE_FCNTL_OVERWRITE]]
+** ^The [SQLITE_FCNTL_OVERWRITE] opcode is invoked by SQLite after opening
+** a write transaction to indicate that, unless it is rolled back for some
+** reason, the entire database file will be overwritten by the current
+** transaction. This is used by VACUUM operations.
+**
+** <li>[[SQLITE_FCNTL_VFSNAME]]
+** ^The [SQLITE_FCNTL_VFSNAME] opcode can be used to obtain the names of
+** all [VFSes] in the VFS stack.  The names are of all VFS shims and the
+** final bottom-level VFS are written into memory obtained from
+** [sqlite3_malloc()] and the result is stored in the char* variable
+** that the fourth parameter of [sqlite3_file_control()] points to.
+** The caller is responsible for freeing the memory when done.  As with
+** all file-control actions, there is no guarantee that this will actually
+** do anything.  Callers should initialize the char* variable to a NULL
+** pointer in case this file-control is not implemented.  This file-control
+** is intended for diagnostic use only.
+**
+** <li>[[SQLITE_FCNTL_PRAGMA]]
+** ^Whenever a [PRAGMA] statement is parsed, an [SQLITE_FCNTL_PRAGMA]
+** file control is sent to the open [sqlite3_file] object corresponding
+** to the database file to which the pragma statement refers. ^The argument
+** to the [SQLITE_FCNTL_PRAGMA] file control is an array of
+** pointers to strings (char**) in which the second element of the array
+** is the name of the pragma and the third element is the argument to the
+** pragma or NULL if the pragma has no argument.  ^The handler for an
+** [SQLITE_FCNTL_PRAGMA] file control can optionally make the first element
+** of the char** argument point to a string obtained from  
[sqlite3_mprintf()]
+** or the equivalent and that string will become the result of the pragma  
or
+** the error message if the pragma fails. ^If the
+** [SQLITE_FCNTL_PRAGMA] file control returns [SQLITE_NOTFOUND], then  
normal
+** [PRAGMA] processing continues.  ^If the [SQLITE_FCNTL_PRAGMA]
+** file control returns [SQLITE_OK], then the parser assumes that the
+** VFS has handled the PRAGMA itself and the parser generates a no-op
+** prepared statement.  ^If the [SQLITE_FCNTL_PRAGMA] file control returns
+** any result code other than [SQLITE_OK] or [SQLITE_NOTFOUND], that means
+** that the VFS encountered an error while handling the [PRAGMA] and the
+** compilation of the PRAGMA fails with an error.  ^The  
[SQLITE_FCNTL_PRAGMA]
+** file control occurs at the beginning of pragma statement analysis and so
+** it is able to override built-in [PRAGMA] statements.
+**
+** <li>[[SQLITE_FCNTL_BUSYHANDLER]]
+** ^The [SQLITE_FCNTL_BUSYHANDLER]
+** file-control may be invoked by SQLite on the database file handle
+** shortly after it is opened in order to provide a custom VFS with access
+** to the connections busy-handler callback. The argument is of type (void  
**)
+** - an array of two (void *) values. The first (void *) actually points
+** to a function of type (int (*)(void *)). In order to invoke the  
connections
+** busy-handler, this function should be invoked with the second (void *)  
in
+** the array as the only argument. If it returns non-zero, then the  
operation
+** should be retried. If it returns zero, the custom VFS should abandon the
+** current operation.
+**
+** <li>[[SQLITE_FCNTL_TEMPFILENAME]]
+** ^Application can invoke the [SQLITE_FCNTL_TEMPFILENAME] file-control
+** to have SQLite generate a
+** temporary filename using the same algorithm that is followed to generate
+** temporary filenames for TEMP tables and other internal uses.  The
+** argument should be a char** which will be filled with the filename
+** written into memory obtained from [sqlite3_malloc()].  The caller should
+** invoke [sqlite3_free()] on the result to avoid a memory leak.
+**
+** <li>[[SQLITE_FCNTL_MMAP_SIZE]]
+** The [SQLITE_FCNTL_MMAP_SIZE] file control is used to query or set the
+** maximum number of bytes that will be used for memory-mapped I/O.
+** The argument is a pointer to a value of type sqlite3_int64 that
+** is an advisory maximum number of bytes in the file to memory map.  The
+** pointer is overwritten with the old value.  The limit is not changed if
+** the value originally pointed to is negative, and so the current limit
+** can be queried by passing in a pointer to a negative number.  This
+** file-control is used internally to implement [PRAGMA mmap_size].
+**
+** <li>[[SQLITE_FCNTL_TRACE]]
+** The [SQLITE_FCNTL_TRACE] file control provides advisory information
+** to the VFS about what the higher layers of the SQLite stack are doing.
+** This file control is used by some VFS activity tracing [shims].
+** The argument is a zero-terminated string.  Higher layers in the
+** SQLite stack may generate instances of this file control if
+** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.
+**
+** <li>[[SQLITE_FCNTL_HAS_MOVED]]
+** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a
+** pointer to an integer and it writes a boolean into that integer  
depending
+** on whether or not the file has been renamed, moved, or deleted since it
+** was first opened.
+**
+** </ul>
  */
-#define SQLITE_FCNTL_LOCKSTATE        1
-#define SQLITE_GET_LOCKPROXYFILE      2
-#define SQLITE_SET_LOCKPROXYFILE      3
-#define SQLITE_LAST_ERRNO             4
-#define SQLITE_FCNTL_SIZE_HINT        5
-#define SQLITE_FCNTL_CHUNK_SIZE       6
-#define SQLITE_FCNTL_FILE_POINTER     7
-#define SQLITE_FCNTL_SYNC_OMITTED     8
-
+#define SQLITE_FCNTL_LOCKSTATE               1
+#define SQLITE_GET_LOCKPROXYFILE             2
+#define SQLITE_SET_LOCKPROXYFILE             3
+#define SQLITE_LAST_ERRNO                    4
+#define SQLITE_FCNTL_SIZE_HINT               5
+#define SQLITE_FCNTL_CHUNK_SIZE              6
+#define SQLITE_FCNTL_FILE_POINTER            7
+#define SQLITE_FCNTL_SYNC_OMITTED            8
+#define SQLITE_FCNTL_WIN32_AV_RETRY          9
+#define SQLITE_FCNTL_PERSIST_WAL            10
+#define SQLITE_FCNTL_OVERWRITE              11
+#define SQLITE_FCNTL_VFSNAME                12
+#define SQLITE_FCNTL_POWERSAFE_OVERWRITE    13
+#define SQLITE_FCNTL_PRAGMA                 14
+#define SQLITE_FCNTL_BUSYHANDLER            15
+#define SQLITE_FCNTL_TEMPFILENAME           16
+#define SQLITE_FCNTL_MMAP_SIZE              18
+#define SQLITE_FCNTL_TRACE                  19
+#define SQLITE_FCNTL_HAS_MOVED              20
+#define SQLITE_FCNTL_SYNC                   21
+#define SQLITE_FCNTL_COMMIT_PHASETWO        22
  /*
  ** CAPI3REF: Mutex Handle
@@ -762,7 +984,8 @@
  **
  ** An instance of the sqlite3_vfs object defines the interface between
  ** the SQLite core and the underlying operating system.  The "vfs"
-** in the name of the object stands for "virtual file system".
+** in the name of the object stands for "virtual file system".  See
+** the [VFS | VFS documentation] for further information.
  **
  ** The value of the iVersion field is initially 1 but may be larger in
  ** future versions of SQLite.  Additional fields may be appended to this
@@ -791,12 +1014,13 @@
  ** The zName field holds the name of the VFS module.  The name must
  ** be unique across all VFS modules.
  **
+** [[sqlite3_vfs.xOpen]]
  ** ^SQLite guarantees that the zFilename parameter to xOpen
  ** is either a NULL pointer or string obtained
  ** from xFullPathname() with an optional suffix added.
  ** ^If a suffix is added to the zFilename parameter, it will
  ** consist of a single "-" character followed by no more than
-** 10 alphanumeric and/or "-" characters.
+** 11 alphanumeric and/or "-" characters.
  ** ^SQLite further guarantees that
  ** the string will be valid and unchanged until xClose() is
  ** called. Because of the previous sentence,
@@ -868,6 +1092,7 @@
  ** element will be valid after xOpen returns regardless of the success
  ** or failure of the xOpen call.
  **
+** [[sqlite3_vfs.xAccess]]
  ** ^The flags argument to xAccess() may be [SQLITE_ACCESS_EXISTS]
  ** to test for the existence of a file, or [SQLITE_ACCESS_READWRITE] to
  ** test whether a file is readable and writable, or [SQLITE_ACCESS_READ]
@@ -892,7 +1117,7 @@
  ** method returns a Julian Day Number for the current date and time as
  ** a floating point value.
  ** ^The xCurrentTimeInt64() method returns, as an integer, the Julian
-** Day Number multipled by 86400000 (the number of milliseconds in
+** Day Number multiplied by 86400000 (the number of milliseconds in
  ** a 24-hour day).
  ** ^SQLite will use the xCurrentTimeInt64() method to get the current
  ** date and time if that method is available (if iVersion is 2 or
@@ -1114,9 +1339,9 @@
  ** implementation of an application-defined [sqlite3_os_init()].
  **
  ** The first argument to sqlite3_config() is an integer
-** [SQLITE_CONFIG_SINGLETHREAD | configuration option] that determines
+** [configuration option] that determines
  ** what property of SQLite is to be configured.  Subsequent arguments
-** vary depending on the [SQLITE_CONFIG_SINGLETHREAD | configuration  
option]
+** vary depending on the [configuration option]
  ** in the first argument.
  **
  ** ^When a configuration option is set, sqlite3_config() returns  
[SQLITE_OK].
@@ -1168,16 +1393,10 @@
  ** order to verify that SQLite recovers gracefully from such
  ** conditions.
  **
-** The xMalloc and xFree methods must work like the
-** malloc() and free() functions from the standard C library.
-** The xRealloc method must work like realloc() from the standard C library
-** with the exception that if the second argument to xRealloc is zero,
-** xRealloc must be a no-op - it must not perform any allocation or
-** deallocation.  ^SQLite guarantees that the second argument to
+** The xMalloc, xRealloc, and xFree methods must work like the
+** malloc(), realloc() and free() functions from the standard C library.
+** ^SQLite guarantees that the second argument to
  ** xRealloc is always a value returned by a prior call to xRoundup.
-** And so in cases where xRoundup always returns a positive number,
-** xRealloc can perform exactly as the standard library realloc() and
-** still be in compliance with this specification.
  **
  ** xSize should return the allocated size of a memory allocation
  ** previously obtained from xMalloc or xRealloc.  The allocated size
@@ -1191,7 +1410,7 @@
  ** or [sqlite3_realloc()] first calls xRoundup.  If xRoundup returns 0,
  ** that causes the corresponding memory allocation to fail.
  **
-** The xInit method initializes the memory allocator.  (For example,
+** The xInit method initializes the memory allocator.  For example,
  ** it might allocate any require mutexes or initialize internal data
  ** structures.  The xShutdown method is invoked (indirectly) by
  ** [sqlite3_shutdown()] and should deallocate any resources acquired
@@ -1226,6 +1445,7 @@
  /*
  ** CAPI3REF: Configuration Options
+** KEYWORDS: {configuration option}
  **
  ** These constants are the available integer configuration options that
  ** can be passed as the first argument to the [sqlite3_config()] interface.
@@ -1238,7 +1458,7 @@
  ** is invoked.
  **
  ** <dl>
-** <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
+** [[SQLITE_CONFIG_SINGLETHREAD]] <dt>SQLITE_CONFIG_SINGLETHREAD</dt>
  ** <dd>There are no arguments to this option.  ^This option sets the
  ** [threading mode] to Single-thread.  In other words, it disables
  ** all mutexing and puts SQLite into a mode where it can only be used
@@ -1249,7 +1469,7 @@
  ** [SQLITE_ERROR] if called with the SQLITE_CONFIG_SINGLETHREAD
  ** configuration option.</dd>
  **
-** <dt>SQLITE_CONFIG_MULTITHREAD</dt>
+** [[SQLITE_CONFIG_MULTITHREAD]] <dt>SQLITE_CONFIG_MULTITHREAD</dt>
  ** <dd>There are no arguments to this option.  ^This option sets the
  ** [threading mode] to Multi-thread.  In other words, it disables
  ** mutexing on [database connection] and [prepared statement] objects.
@@ -1263,7 +1483,7 @@
  ** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
  ** SQLITE_CONFIG_MULTITHREAD configuration option.</dd>
  **
-** <dt>SQLITE_CONFIG_SERIALIZED</dt>
+** [[SQLITE_CONFIG_SERIALIZED]] <dt>SQLITE_CONFIG_SERIALIZED</dt>
  ** <dd>There are no arguments to this option.  ^This option sets the
  ** [threading mode] to Serialized. In other words, this option enables
  ** all mutexes including the recursive
@@ -1279,7 +1499,7 @@
  ** [sqlite3_config()] will return [SQLITE_ERROR] if called with the
  ** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
  **
-** <dt>SQLITE_CONFIG_MALLOC</dt>
+** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to an
  ** instance of the [sqlite3_mem_methods] structure.  The argument specifies
  ** alternative low-level memory allocation routines to be used in place of
@@ -1287,7 +1507,7 @@
  ** its own private copy of the content of the [sqlite3_mem_methods]  
structure
  ** before the [sqlite3_config()] call returns.</dd>
  **
-** <dt>SQLITE_CONFIG_GETMALLOC</dt>
+** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to an
  ** instance of the [sqlite3_mem_methods] structure.  The  
[sqlite3_mem_methods]
  ** structure is filled with the currently defined memory allocation  
routines.)^
@@ -1295,7 +1515,7 @@
  ** routines with a wrapper that simulations memory allocation failure or
  ** tracks memory usage, for example. </dd>
  **
-** <dt>SQLITE_CONFIG_MEMSTATUS</dt>
+** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
  ** <dd> ^This option takes single argument of type int, interpreted as a
  ** boolean, which enables or disables the collection of memory allocation
  ** statistics. ^(When memory allocation statistics are disabled, the
@@ -1311,7 +1531,7 @@
  ** allocation statistics are disabled by default.
  ** </dd>
  **
-** <dt>SQLITE_CONFIG_SCRATCH</dt>
+** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
  ** <dd> ^This option specifies a static memory buffer that SQLite can use  
for
  ** scratch memory.  There are three arguments:  A pointer an 8-byte
  ** aligned memory buffer from which the scratch allocations will be
@@ -1327,11 +1547,11 @@
  ** scratch memory beyond what is provided by this configuration option,  
then
  ** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
  **
-** <dt>SQLITE_CONFIG_PAGECACHE</dt>
+** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
  ** <dd> ^This option specifies a static memory buffer that SQLite can use  
for
-** the database page cache with the default page cache implemenation.
+** the database page cache with the default page cache implementation.
  ** This configuration should not be used if an application-define page
-** cache implementation is loaded using the SQLITE_CONFIG_PCACHE option.
+** cache implementation is loaded using the SQLITE_CONFIG_PCACHE2 option.
  ** There are three arguments to this option: A pointer to 8-byte aligned
  ** memory, the size of each page buffer (sz), and the number of pages (N).
  ** The sz argument should be the size of the largest database page
@@ -1348,7 +1568,7 @@
  ** be aligned to an 8-byte boundary or subsequent behavior of SQLite
  ** will be undefined.</dd>
  **
-** <dt>SQLITE_CONFIG_HEAP</dt>
+** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
  ** <dd> ^This option specifies a static memory buffer that SQLite will use
  ** for all of its dynamic memory allocation needs beyond those provided
  ** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
@@ -1362,10 +1582,10 @@
  ** allocator is engaged to handle all of SQLites memory allocation needs.
  ** The first pointer (the memory pointer) must be aligned to an 8-byte
  ** boundary or subsequent behavior of SQLite will be undefined.
-** The minimum allocation size is capped at 2^12. Reasonable values
-** for the minimum allocation size are 2^5 through 2^8.</dd>
+** The minimum allocation size is capped at 2**12. Reasonable values
+** for the minimum allocation size are 2**5 through 2**8.</dd>
  **
-** <dt>SQLITE_CONFIG_MUTEX</dt>
+** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to an
  ** instance of the [sqlite3_mutex_methods] structure.  The argument  
specifies
  ** alternative low-level mutex routines to be used in place
@@ -1377,7 +1597,7 @@
  ** [sqlite3_config()] with the SQLITE_CONFIG_MUTEX configuration option  
will
  ** return [SQLITE_ERROR].</dd>
  **
-** <dt>SQLITE_CONFIG_GETMUTEX</dt>
+** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to an
  ** instance of the [sqlite3_mutex_methods] structure.  The
  ** [sqlite3_mutex_methods]
@@ -1390,7 +1610,7 @@
  ** [sqlite3_config()] with the SQLITE_CONFIG_GETMUTEX configuration option  
will
  ** return [SQLITE_ERROR].</dd>
  **
-** <dt>SQLITE_CONFIG_LOOKASIDE</dt>
+** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
  ** <dd> ^(This option takes two arguments that determine the default
  ** memory allocation for the lookaside memory allocator on each
  ** [database connection].  The first argument is the
@@ -1400,19 +1620,21 @@
  ** verb to [sqlite3_db_config()] can be used to change the lookaside
  ** configuration on individual connections.)^ </dd>
  **
-** <dt>SQLITE_CONFIG_PCACHE</dt>
+** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to
-** an [sqlite3_pcache_methods] object.  This object specifies the interface
+** an [sqlite3_pcache_methods2] object.  This object specifies the  
interface
  ** to a custom page cache implementation.)^  ^SQLite makes a copy of the
  ** object and uses it for page cache memory allocations.</dd>
  **
-** <dt>SQLITE_CONFIG_GETPCACHE</dt>
+** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
  ** <dd> ^(This option takes a single argument which is a pointer to an
-** [sqlite3_pcache_methods] object.  SQLite copies of the current
+** [sqlite3_pcache_methods2] object.  SQLite copies of the current
  ** page cache implementation into that object.)^ </dd>
  **
-** <dt>SQLITE_CONFIG_LOG</dt>
-** <dd> ^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a
+** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
+** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite
+** global [error log].
+** (^The SQLITE_CONFIG_LOG option takes two arguments: a pointer to a
  ** function with a call signature of void(*)(void*,int,const char*),
  ** and a pointer to void. ^If the function pointer is not NULL, it is
  ** invoked by [sqlite3_log()] to process each logging event.  ^If the
@@ -1429,6 +1651,74 @@
  ** In a multi-threaded application, the application-defined logger
  ** function must be threadsafe. </dd>
  **
+** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
+** <dd>^(This option takes a single argument of type int. If non-zero, then
+** URI handling is globally enabled. If the parameter is zero, then URI  
handling
+** is globally disabled.)^ ^If URI handling is globally enabled, all  
filenames
+** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or
+** specified as part of [ATTACH] commands are interpreted as URIs,  
regardless
+** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
+** connection is opened. ^If it is globally disabled, filenames are
+** only interpreted as URIs if the SQLITE_OPEN_URI flag is set when the
+** database connection is opened. ^(By default, URI handling is globally
+** disabled. The default value may be changed by compiling with the
+** [SQLITE_USE_URI] symbol defined.)^
+**
+** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]]  
<dt>SQLITE_CONFIG_COVERING_INDEX_SCAN
+** <dd>^This option takes a single integer argument which is interpreted as
+** a boolean in order to enable or disable the use of covering indices for
+** full table scans in the query optimizer.  ^The default setting is  
determined
+** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or  
is "on"
+** if that compile-time option is omitted.
+** The ability to disable the use of covering indices for full table scans
+** is because some incorrectly coded legacy applications might malfunction
+** when the optimization is enabled.  Providing the ability to
+** disable the optimization allows the older, buggy application code to  
work
+** without change even with newer versions of SQLite.
+**
+** [[SQLITE_CONFIG_PCACHE]] [[SQLITE_CONFIG_GETPCACHE]]
+** <dt>SQLITE_CONFIG_PCACHE and SQLITE_CONFIG_GETPCACHE
+** <dd> These options are obsolete and should not be used by new code.
+** They are retained for backwards compatibility but are now no-ops.
+** </dd>
+**
+** [[SQLITE_CONFIG_SQLLOG]]
+** <dt>SQLITE_CONFIG_SQLLOG
+** <dd>This option is only available if sqlite is compiled with the
+** [SQLITE_ENABLE_SQLLOG] pre-processor macro defined. The first argument  
should
+** be a pointer to a function of type void(*)(void*,sqlite3*,const char*,  
int).
+** The second should be of type (void*). The callback is invoked by the  
library
+** in three separate circumstances, identified by the value passed as the
+** fourth parameter. If the fourth parameter is 0, then the database  
connection
+** passed as the second argument has just been opened. The third argument
+** points to a buffer containing the name of the main database file. If the
+** fourth parameter is 1, then the SQL statement that the third parameter
+** points to has just been executed. Or, if the fourth parameter is 2, then
+** the connection being passed as the second parameter is being closed. The
+** third parameter is passed NULL In this case.  An example of using this
+** configuration option can be seen in the "test_sqllog.c" source file in
+** the canonical SQLite source tree.</dd>
+**
+** [[SQLITE_CONFIG_MMAP_SIZE]]
+** <dt>SQLITE_CONFIG_MMAP_SIZE
+** <dd>^SQLITE_CONFIG_MMAP_SIZE takes two 64-bit integer (sqlite3_int64)  
values
+** that are the default mmap size limit (the default setting for
+** [PRAGMA mmap_size]) and the maximum allowed mmap size limit.
+** ^The default setting can be overridden by each database connection using
+** either the [PRAGMA mmap_size] command, or by using the
+** [SQLITE_FCNTL_MMAP_SIZE] file control.  ^(The maximum allowed mmap size
+** cannot be changed at run-time.  Nor may the maximum allowed mmap size
+** exceed the compile-time maximum mmap size set by the
+** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^
+** ^If either argument to this option is negative, then that argument is
+** changed to its compile-time default.
+**
+** [[SQLITE_CONFIG_WIN32_HEAPSIZE]]
+** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE
+** <dd>^This option is only available if SQLite is compiled for Windows
+** with the [SQLITE_WIN32_MALLOC] pre-processor macro defined.
+** SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
+** that specifies the maximum size of the created heap.
  ** </dl>
  */
  #define SQLITE_CONFIG_SINGLETHREAD  1  /* nil */
@@ -1444,9 +1734,16 @@
  #define SQLITE_CONFIG_GETMUTEX     11  /* sqlite3_mutex_methods* */
  /* previously SQLITE_CONFIG_CHUNKALLOC 12 which is now unused. */
  #define SQLITE_CONFIG_LOOKASIDE    13  /* int int */
-#define SQLITE_CONFIG_PCACHE       14  /* sqlite3_pcache_methods* */
-#define SQLITE_CONFIG_GETPCACHE    15  /* sqlite3_pcache_methods* */
+#define SQLITE_CONFIG_PCACHE       14  /* no-op */
+#define SQLITE_CONFIG_GETPCACHE    15  /* no-op */
  #define SQLITE_CONFIG_LOG          16  /* xFunc, void* */
+#define SQLITE_CONFIG_URI          17  /* int */
+#define SQLITE_CONFIG_PCACHE2      18  /* sqlite3_pcache_methods2* */
+#define SQLITE_CONFIG_GETPCACHE2   19  /* sqlite3_pcache_methods2* */
+#define SQLITE_CONFIG_COVERING_INDEX_SCAN 20  /* int */
+#define SQLITE_CONFIG_SQLLOG       21  /* xSqllog, void* */
+#define SQLITE_CONFIG_MMAP_SIZE    22  /* sqlite3_int64, sqlite3_int64 */
+#define SQLITE_CONFIG_WIN32_HEAPSIZE      23  /* int nByte */
  /*
  ** CAPI3REF: Database Connection Configuration Options
@@ -1523,22 +1820,28 @@
  /*
  ** CAPI3REF: Last Insert Rowid
  **
-** ^Each entry in an SQLite table has a unique 64-bit signed
+** ^Each entry in most SQLite tables (except for [WITHOUT ROWID] tables)
+** has a unique 64-bit signed
  ** integer key called the [ROWID | "rowid"]. ^The rowid is always available
  ** as an undeclared column named ROWID, OID, or _ROWID_ as long as those
  ** names are not also used by explicitly declared columns. ^If
  ** the table has a column of type [INTEGER PRIMARY KEY] then that column
  ** is another alias for the rowid.
  **
-** ^This routine returns the [rowid] of the most recent
-** successful [INSERT] into the database from the [database connection]
-** in the first argument.  ^If no successful [INSERT]s
-** have ever occurred on that database connection, zero is returned.
+** ^The sqlite3_last_insert_rowid(D) interface returns the [rowid] of the
+** most recent successful [INSERT] into a rowid table or [virtual table]
+** on database connection D.
+** ^Inserts into [WITHOUT ROWID] tables are not recorded.
+** ^If no successful [INSERT]s into rowid tables
+** have ever occurred on the database connection D,
+** then sqlite3_last_insert_rowid(D) returns zero.
  **
-** ^(If an [INSERT] occurs within a trigger, then the [rowid] of the  
inserted
-** row is returned by this routine as long as the trigger is running.
-** But once the trigger terminates, the value returned by this routine
-** reverts to the last value inserted before the trigger fired.)^
+** ^(If an [INSERT] occurs within a trigger or within a [virtual table]
+** method, then this routine will return the [rowid] of the inserted
+** row as long as the trigger or virtual table method is running.
+** But once the trigger or virtual table method ends, the value returned
+** by this routine reverts to what it was before the trigger or virtual
+** table method began.)^
  **
  ** ^An [INSERT] that fails due to a constraint violation is not a
  ** successful [INSERT] and does not change the value returned by this
@@ -1927,7 +2230,7 @@
  ** All of the usual printf() formatting options apply.  In addition, there
  ** is are "%q", "%Q", and "%z" options.
  **
-** ^(The %q option works like %s in that it substitutes a null-terminated
+** ^(The %q option works like %s in that it substitutes a nul-terminated
  ** string from the argument list.  But %q also doubles every '\''  
character.
  ** %q is designed for use inside a string literal.)^  By doubling each '\''
  ** character it escapes that character and allows it to be inserted into
@@ -2040,12 +2343,12 @@
  ** implementation of these routines to be omitted.  That capability
  ** is no longer provided.  Only built-in memory allocators can be used.
  **
-** The Windows OS interface layer calls
+** Prior to SQLite version 3.7.10, the Windows OS interface layer called
  ** 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
-** installation.  Memory allocation errors are detected, but
-** they are reported back as [SQLITE_CANTOPEN] or
+** installation.  Memory allocation errors were detected, but
+** they were reported back as [SQLITE_CANTOPEN] or
  ** [SQLITE_IOERR] rather than [SQLITE_NOMEM].
  **
  ** The pointer arguments to [sqlite3_free()] and [sqlite3_realloc()]
@@ -2097,11 +2400,13 @@
  ** applications to access the same PRNG for other purposes.
  **
  ** ^A call to this routine stores N bytes of randomness into buffer P.
+** ^If N is less than one, then P can be a NULL pointer.
  **
-** ^The first time this routine is invoked (either internally or by
-** the application) the PRNG is seeded using randomness obtained
-** from the xRandomness method of the default [sqlite3_vfs] object.
-** ^On all subsequent invocations, the pseudo-randomness is generated
+** ^If this routine has not been previously called or if the previous
+** call had N less than one, then the PRNG is seeded using randomness
+** obtained from the xRandomness method of the default [sqlite3_vfs]  
object.
+** ^If the previous call to this routine had an N of 1 or more then
+** the pseudo-randomness is generated
  ** internally and without recourse to the [sqlite3_vfs] xRandomness
  ** method.
  */
@@ -2201,6 +2506,9 @@
  ** to signal SQLite whether or not the action is permitted.  See the
  ** [sqlite3_set_authorizer | authorizer documentation] for additional
  ** information.
+**
+** Note that SQLITE_IGNORE is also used as a [SQLITE_ROLLBACK | return  
code]
+** from the [sqlite3_vtab_on_conflict()] interface.
  */
  #define SQLITE_DENY   1   /* Abort the SQL statement with an error */
  #define SQLITE_IGNORE 2   /* Don't allow access, but don't generate an  
error */
@@ -2258,6 +2566,7 @@
  #define SQLITE_FUNCTION             31   /* NULL            Function  
Name   */
  #define SQLITE_SAVEPOINT            32   /* Operation       Savepoint  
Name  */
  #define SQLITE_COPY                  0   /* No longer used */
+#define SQLITE_RECURSIVE            33   /* NULL             
NULL            */
  /*
  ** CAPI3REF: Tracing And Profiling Functions
@@ -2273,6 +2582,9 @@
  ** as each triggered subprogram is entered.  The callbacks for triggers
  ** contain a UTF-8 SQL comment that identifies the trigger.)^
  **
+** The [SQLITE_TRACE_SIZE_LIMIT] compile-time option can be used to limit
+** the length of [bound parameter] expansion in the output of  
sqlite3_trace().
+**
  ** ^The callback function registered by sqlite3_profile() is invoked
  ** as each SQL statement finishes.  ^The profile callback contains
  ** the original statement text and an estimate of wall-clock time
@@ -2298,9 +2610,10 @@
  ** interface is to keep a GUI updated during a large query.
  **
  ** ^The parameter P is passed through as the only parameter to the
-** callback function X.  ^The parameter N is the number of
+** callback function X.  ^The parameter N is the approximate number of
  ** [virtual machine instructions] that are evaluated between successive
-** invocations of the callback X.
+** invocations of the callback X.  ^If N is less than one then the progress
+** handler is disabled.
  **
  ** ^Only a single progress handler may be defined at one time per
  ** [database connection]; setting a new progress handler cancels the
@@ -2323,7 +2636,7 @@
  /*
  ** CAPI3REF: Opening A New Database Connection
  **
-** ^These routines open an SQLite database file whose name is given by the
+** ^These routines open an SQLite database file as specified by the
  ** filename argument. ^The filename argument is interpreted as UTF-8 for
  ** sqlite3_open() and sqlite3_open_v2() and as UTF-16 in the native byte
  ** order for sqlite3_open16(). ^(A [database connection] handle is usually
@@ -2350,7 +2663,7 @@
  ** sqlite3_open_v2() can take one of
  ** the following three values, optionally combined with the
  ** [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX],  
[SQLITE_OPEN_SHAREDCACHE],
-** and/or [SQLITE_OPEN_PRIVATECACHE] flags:)^
+** [SQLITE_OPEN_PRIVATECACHE], and/or [SQLITE_OPEN_URI] flags:)^
  **
  ** <dl>
  ** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
@@ -2369,9 +2682,8 @@
  ** </dl>
  **
  ** If the 3rd parameter to sqlite3_open_v2() is not one of the
-** combinations shown above or one of the combinations shown above combined
-** with the [SQLITE_OPEN_NOMUTEX], [SQLITE_OPEN_FULLMUTEX],
-** [SQLITE_OPEN_SHAREDCACHE] and/or [SQLITE_OPEN_PRIVATECACHE] flags,
+** combinations shown above optionally combined with other
+** [SQLITE_OPEN_READONLY | SQLITE_OPEN_* bits]
  ** then the behavior is undefined.
  **
  ** ^If the [SQLITE_OPEN_NOMUTEX] flag is set, then the database connection
@@ -2386,6 +2698,11 @@
  ** [SQLITE_OPEN_PRIVATECACHE] flag causes the database connection to not
  ** participate in [shared cache mode] even if it is enabled.
  **
+** ^The fourth parameter to sqlite3_open_v2() is the name of the
+** [sqlite3_vfs] object that defines the operating system interface that
+** the new database connection should use.  ^If the fourth parameter is
+** a NULL pointer then the default [sqlite3_vfs] object is used.
+**
  ** ^If the filename is ":memory:", then a private, temporary in-memory  
database
  ** is created for the connection.  ^This in-memory database will vanish  
when
  ** the database connection is closed.  Future versions of SQLite might
@@ -2398,16 +2715,125 @@
  ** on-disk database will be created.  ^This private database will be
  ** automatically deleted as soon as the database connection is closed.
  **
-** ^The fourth parameter to sqlite3_open_v2() is the name of the
-** [sqlite3_vfs] object that defines the operating system interface that
-** the new database connection should use.  ^If the fourth parameter is
-** a NULL pointer then the default [sqlite3_vfs] object is used.
+** [[URI filenames in sqlite3_open()]] <h3>URI Filenames</h3>
+**
+** ^If [URI filename] interpretation is enabled, and the filename argument
+** begins with "file:", then the filename is interpreted as a URI. ^URI
***The diff for this file has been truncated for email.***