|
|
@@ -125,7 +125,7 @@ extern "C" {
|
|
|
*/
|
|
|
#define SQLITE_VERSION "3.25.0"
|
|
|
#define SQLITE_VERSION_NUMBER 3025000
|
|
|
-#define SQLITE_SOURCE_ID "2018-07-09 06:51:36 fe8aaf0c806413965f50a03e34b5fdfaaa8b09dc0af73f41e830f7b664bdalt1"
|
|
|
+#define SQLITE_SOURCE_ID "2018-09-06 20:33:11 10c3e5a0314470ee1ffc37b68445a2cb2054530346d5f5ed3ffbd6df8003alt1"
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
|
@@ -472,6 +472,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
*/
|
|
|
#define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
|
|
|
#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8))
|
|
|
+#define SQLITE_ERROR_SNAPSHOT (SQLITE_ERROR | (3<<8))
|
|
|
#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
|
|
|
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
|
|
|
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
|
|
|
@@ -889,7 +890,8 @@ struct sqlite3_io_methods {
|
|
|
** <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
|
|
|
+** write ahead log ([WAL file]) 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
|
|
|
@@ -1075,6 +1077,25 @@ struct sqlite3_io_methods {
|
|
|
** a file lock using the xLock or xShmLock methods of the VFS to wait
|
|
|
** for up to M milliseconds before failing, where M is the single
|
|
|
** unsigned integer parameter.
|
|
|
+**
|
|
|
+** <li>[[SQLITE_FCNTL_DATA_VERSION]]
|
|
|
+** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to
|
|
|
+** a database file. The argument is a pointer to a 32-bit unsigned integer.
|
|
|
+** The "data version" for the pager is written into the pointer. The
|
|
|
+** "data version" changes whenever any change occurs to the corresponding
|
|
|
+** database file, either through SQL statements on the same database
|
|
|
+** connection, or through transactions committed by separate database
|
|
|
+** connections possibly in other processes. The [sqlite3_total_changes()]
|
|
|
+** interface can be used to find if any database on the connection has changed,
|
|
|
+** but that interface response to changes on TEMP as well as MAIN and does
|
|
|
+** not provide a mechanism to detect changes to MAIN only. Also, the
|
|
|
+** [sqlite3_total_changes()] interface response to internal changes only and
|
|
|
+** omits changes made by other database connections. The
|
|
|
+** [PRAGMA data_version] command provide a mechanism to detect changes to
|
|
|
+** a single attached database that occur due to other database connections,
|
|
|
+** but omits changes implemented by the database connection for which it is
|
|
|
+** called. This file control is the only mechanism to detect changes that
|
|
|
+** happen either internally or externally on a single database.
|
|
|
** </ul>
|
|
|
*/
|
|
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
|
|
@@ -1110,6 +1131,7 @@ struct sqlite3_io_methods {
|
|
|
#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32
|
|
|
#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33
|
|
|
#define SQLITE_FCNTL_LOCK_TIMEOUT 34
|
|
|
+#define SQLITE_FCNTL_DATA_VERSION 35
|
|
|
|
|
|
/* deprecated names */
|
|
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
|
|
@@ -2278,12 +2300,17 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
|
|
|
** program, the value returned reflects the number of rows modified by the
|
|
|
** previous INSERT, UPDATE or DELETE statement within the same trigger.
|
|
|
**
|
|
|
-** See also the [sqlite3_total_changes()] interface, the
|
|
|
-** [count_changes pragma], and the [changes() SQL function].
|
|
|
-**
|
|
|
** If a separate thread makes changes on the same database connection
|
|
|
** while [sqlite3_changes()] is running then the value returned
|
|
|
** is unpredictable and not meaningful.
|
|
|
+**
|
|
|
+** See also:
|
|
|
+** <ul>
|
|
|
+** <li> the [sqlite3_total_changes()] interface
|
|
|
+** <li> the [count_changes pragma]
|
|
|
+** <li> the [changes() SQL function]
|
|
|
+** <li> the [data_version pragma]
|
|
|
+** </ul>
|
|
|
*/
|
|
|
SQLITE_API int sqlite3_changes(sqlite3*);
|
|
|
|
|
|
@@ -2301,13 +2328,26 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
|
|
** count, but those made as part of REPLACE constraint resolution are
|
|
|
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
|
|
** are not counted.
|
|
|
-**
|
|
|
-** See also the [sqlite3_changes()] interface, the
|
|
|
-** [count_changes pragma], and the [total_changes() SQL function].
|
|
|
**
|
|
|
+** This the [sqlite3_total_changes(D)] interface only reports the number
|
|
|
+** of rows that changed due to SQL statement run against database
|
|
|
+** connection D. Any changes by other database connections are ignored.
|
|
|
+** To detect changes against a database file from other database
|
|
|
+** connections use the [PRAGMA data_version] command or the
|
|
|
+** [SQLITE_FCNTL_DATA_VERSION] [file control].
|
|
|
+**
|
|
|
** If a separate thread makes changes on the same database connection
|
|
|
** while [sqlite3_total_changes()] is running then the value
|
|
|
** returned is unpredictable and not meaningful.
|
|
|
+**
|
|
|
+** See also:
|
|
|
+** <ul>
|
|
|
+** <li> the [sqlite3_changes()] interface
|
|
|
+** <li> the [count_changes pragma]
|
|
|
+** <li> the [changes() SQL function]
|
|
|
+** <li> the [data_version pragma]
|
|
|
+** <li> the [SQLITE_FCNTL_DATA_VERSION] [file control]
|
|
|
+** </ul>
|
|
|
*/
|
|
|
SQLITE_API int sqlite3_total_changes(sqlite3*);
|
|
|
|
|
|
@@ -6421,6 +6461,7 @@ struct sqlite3_index_info {
|
|
|
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70
|
|
|
#define SQLITE_INDEX_CONSTRAINT_ISNULL 71
|
|
|
#define SQLITE_INDEX_CONSTRAINT_IS 72
|
|
|
+#define SQLITE_INDEX_CONSTRAINT_FUNCTION 150
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Register A Virtual Table Implementation
|
|
|
@@ -7097,6 +7138,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
|
|
|
/*
|
|
|
** CAPI3REF: Low-Level Control Of Database Files
|
|
|
** METHOD: sqlite3
|
|
|
+** KEYWORDS: {file control}
|
|
|
**
|
|
|
** ^The [sqlite3_file_control()] interface makes a direct call to the
|
|
|
** xFileControl method for the [sqlite3_io_methods] object associated
|
|
|
@@ -7111,11 +7153,18 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
|
|
|
** the xFileControl method. ^The return value of the xFileControl
|
|
|
** method becomes the return value of this routine.
|
|
|
**
|
|
|
+** A few opcodes for [sqlite3_file_control()] are handled directly
|
|
|
+** by the SQLite core and never invoke the
|
|
|
+** sqlite3_io_methods.xFileControl method.
|
|
|
** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes
|
|
|
** a pointer to the underlying [sqlite3_file] object to be written into
|
|
|
-** the space pointed to by the 4th parameter. ^The [SQLITE_FCNTL_FILE_POINTER]
|
|
|
-** case is a short-circuit path which does not actually invoke the
|
|
|
-** underlying sqlite3_io_methods.xFileControl method.
|
|
|
+** the space pointed to by the 4th parameter. The
|
|
|
+** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns
|
|
|
+** the [sqlite3_file] object associated with the journal file instead of
|
|
|
+** the main database. The [SQLITE_FCNTL_VFS_POINTER] opcode returns
|
|
|
+** a pointer to the underlying [sqlite3_vfs] object for the file.
|
|
|
+** The [SQLITE_FCNTL_DATA_VERSION] returns the data version counter
|
|
|
+** from the pager.
|
|
|
**
|
|
|
** ^If the second parameter (zDbName) does not match the name of any
|
|
|
** open database file, then SQLITE_ERROR is returned. ^This error
|
|
|
@@ -8934,7 +8983,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*);
|
|
|
/*
|
|
|
** CAPI3REF: Database Snapshot
|
|
|
** KEYWORDS: {snapshot} {sqlite3_snapshot}
|
|
|
-** EXPERIMENTAL
|
|
|
**
|
|
|
** An instance of the snapshot object records the state of a [WAL mode]
|
|
|
** database for some specific point in history.
|
|
|
@@ -8951,11 +8999,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*);
|
|
|
** version of the database file so that it is possible to later open a new read
|
|
|
** transaction that sees that historical version of the database rather than
|
|
|
** the most recent version.
|
|
|
-**
|
|
|
-** The constructor for this object is [sqlite3_snapshot_get()]. The
|
|
|
-** [sqlite3_snapshot_open()] method causes a fresh read transaction to refer
|
|
|
-** to an historical snapshot (if possible). The destructor for
|
|
|
-** sqlite3_snapshot objects is [sqlite3_snapshot_free()].
|
|
|
*/
|
|
|
typedef struct sqlite3_snapshot {
|
|
|
unsigned char hidden[48];
|
|
|
@@ -8963,7 +9006,7 @@ typedef struct sqlite3_snapshot {
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Record A Database Snapshot
|
|
|
-** EXPERIMENTAL
|
|
|
+** CONSTRUCTOR: sqlite3_snapshot
|
|
|
**
|
|
|
** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
|
|
|
** new [sqlite3_snapshot] object that records the current state of
|
|
|
@@ -8979,7 +9022,7 @@ typedef struct sqlite3_snapshot {
|
|
|
** in this case.
|
|
|
**
|
|
|
** <ul>
|
|
|
-** <li> The database handle must be in [autocommit mode].
|
|
|
+** <li> The database handle must not be in [autocommit mode].
|
|
|
**
|
|
|
** <li> Schema S of [database connection] D must be a [WAL mode] database.
|
|
|
**
|
|
|
@@ -9002,7 +9045,7 @@ typedef struct sqlite3_snapshot {
|
|
|
** to avoid a memory leak.
|
|
|
**
|
|
|
** The [sqlite3_snapshot_get()] interface is only available when the
|
|
|
-** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
|
|
+** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
|
*/
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
|
|
sqlite3 *db,
|
|
|
@@ -9012,24 +9055,35 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Start a read transaction on an historical snapshot
|
|
|
-** EXPERIMENTAL
|
|
|
+** METHOD: sqlite3_snapshot
|
|
|
+**
|
|
|
+** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read
|
|
|
+** transaction or upgrades an existing one for schema S of
|
|
|
+** [database connection] D such that the read transaction refers to
|
|
|
+** historical [snapshot] P, rather than the most recent change to the
|
|
|
+** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK
|
|
|
+** on success or an appropriate [error code] if it fails.
|
|
|
+**
|
|
|
+** ^In order to succeed, the database connection must not be in
|
|
|
+** [autocommit mode] when [sqlite3_snapshot_open(D,S,P)] is called. If there
|
|
|
+** is already a read transaction open on schema S, then the database handle
|
|
|
+** must have no active statements (SELECT statements that have been passed
|
|
|
+** to sqlite3_step() but not sqlite3_reset() or sqlite3_finalize()).
|
|
|
+** SQLITE_ERROR is returned if either of these conditions is violated, or
|
|
|
+** if schema S does not exist, or if the snapshot object is invalid.
|
|
|
+**
|
|
|
+** ^A call to sqlite3_snapshot_open() will fail to open if the specified
|
|
|
+** snapshot has been overwritten by a [checkpoint]. In this case
|
|
|
+** SQLITE_ERROR_SNAPSHOT is returned.
|
|
|
+**
|
|
|
+** If there is already a read transaction open when this function is
|
|
|
+** invoked, then the same read transaction remains open (on the same
|
|
|
+** database snapshot) if SQLITE_ERROR, SQLITE_BUSY or SQLITE_ERROR_SNAPSHOT
|
|
|
+** is returned. If another error code - for example SQLITE_PROTOCOL or an
|
|
|
+** SQLITE_IOERR error code - is returned, then the final state of the
|
|
|
+** read transaction is undefined. If SQLITE_OK is returned, then the
|
|
|
+** read transaction is now open on database snapshot P.
|
|
|
**
|
|
|
-** ^The [sqlite3_snapshot_open(D,S,P)] interface starts a
|
|
|
-** read transaction for schema S of
|
|
|
-** [database connection] D such that the read transaction
|
|
|
-** refers to historical [snapshot] P, rather than the most
|
|
|
-** recent change to the database.
|
|
|
-** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success
|
|
|
-** or an appropriate [error code] if it fails.
|
|
|
-**
|
|
|
-** ^In order to succeed, a call to [sqlite3_snapshot_open(D,S,P)] must be
|
|
|
-** the first operation following the [BEGIN] that takes the schema S
|
|
|
-** out of [autocommit mode].
|
|
|
-** ^In other words, schema S must not currently be in
|
|
|
-** a transaction for [sqlite3_snapshot_open(D,S,P)] to work, but the
|
|
|
-** database connection D must be out of [autocommit mode].
|
|
|
-** ^A [snapshot] will fail to open if it has been overwritten by a
|
|
|
-** [checkpoint].
|
|
|
** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the
|
|
|
** database connection D does not know that the database file for
|
|
|
** schema S is in [WAL mode]. A database connection might not know
|
|
|
@@ -9040,7 +9094,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
|
|
** database connection in order to make it ready to use snapshots.)
|
|
|
**
|
|
|
** The [sqlite3_snapshot_open()] interface is only available when the
|
|
|
-** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
|
|
+** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
|
*/
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
|
|
|
sqlite3 *db,
|
|
|
@@ -9050,20 +9104,20 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Destroy a snapshot
|
|
|
-** EXPERIMENTAL
|
|
|
+** DESTRUCTOR: sqlite3_snapshot
|
|
|
**
|
|
|
** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
|
|
|
** The application must eventually free every [sqlite3_snapshot] object
|
|
|
** using this routine to avoid a memory leak.
|
|
|
**
|
|
|
** The [sqlite3_snapshot_free()] interface is only available when the
|
|
|
-** SQLITE_ENABLE_SNAPSHOT compile-time option is used.
|
|
|
+** [SQLITE_ENABLE_SNAPSHOT] compile-time option is used.
|
|
|
*/
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Compare the ages of two snapshot handles.
|
|
|
-** EXPERIMENTAL
|
|
|
+** METHOD: sqlite3_snapshot
|
|
|
**
|
|
|
** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages
|
|
|
** of two valid snapshot handles.
|
|
|
@@ -9082,6 +9136,9 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
|
|
|
** Otherwise, this API returns a negative value if P1 refers to an older
|
|
|
** snapshot than P2, zero if the two handles refer to the same database
|
|
|
** snapshot, and a positive value if P1 is a newer snapshot than P2.
|
|
|
+**
|
|
|
+** This interface is only available if SQLite is compiled with the
|
|
|
+** [SQLITE_ENABLE_SNAPSHOT] option.
|
|
|
*/
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
|
|
|
sqlite3_snapshot *p1,
|
|
|
@@ -9090,23 +9147,26 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Recover snapshots from a wal file
|
|
|
-** EXPERIMENTAL
|
|
|
+** METHOD: sqlite3_snapshot
|
|
|
**
|
|
|
-** If all connections disconnect from a database file but do not perform
|
|
|
-** a checkpoint, the existing wal file is opened along with the database
|
|
|
-** file the next time the database is opened. At this point it is only
|
|
|
-** possible to successfully call sqlite3_snapshot_open() to open the most
|
|
|
-** recent snapshot of the database (the one at the head of the wal file),
|
|
|
-** even though the wal file may contain other valid snapshots for which
|
|
|
-** clients have sqlite3_snapshot handles.
|
|
|
+** If a [WAL file] remains on disk after all database connections close
|
|
|
+** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control]
|
|
|
+** or because the last process to have the database opened exited without
|
|
|
+** calling [sqlite3_close()]) and a new connection is subsequently opened
|
|
|
+** on that database and [WAL file], the [sqlite3_snapshot_open()] interface
|
|
|
+** will only be able to open the last transaction added to the WAL file
|
|
|
+** even though the WAL file contains other valid transactions.
|
|
|
**
|
|
|
-** This function attempts to scan the wal file associated with database zDb
|
|
|
+** This function attempts to scan the WAL file associated with database zDb
|
|
|
** of database handle db and make all valid snapshots available to
|
|
|
** sqlite3_snapshot_open(). It is an error if there is already a read
|
|
|
-** transaction open on the database, or if the database is not a wal mode
|
|
|
+** transaction open on the database, or if the database is not a WAL mode
|
|
|
** database.
|
|
|
**
|
|
|
** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
|
|
|
+**
|
|
|
+** This interface is only available if SQLite is compiled with the
|
|
|
+** [SQLITE_ENABLE_SNAPSHOT] option.
|
|
|
*/
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
|
|
|
|