mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 06:08:38 -04:00
Upgrade SQLite to 3.41.0
This commit is contained in:
parent
ad5125d99d
commit
f764a74395
4 changed files with 6303 additions and 2712 deletions
|
@ -1074,7 +1074,7 @@ are limited by the typeless nature of the SQLite database.
|
||||||
=head1 SQLITE VERSION
|
=head1 SQLITE VERSION
|
||||||
|
|
||||||
DBD::SQLite is usually compiled with a bundled SQLite library
|
DBD::SQLite is usually compiled with a bundled SQLite library
|
||||||
(SQLite version S<3.39.4> as of this release) for consistency.
|
(SQLite version S<3.41.0> as of this release) for consistency.
|
||||||
However, a different version of SQLite may sometimes be used for
|
However, a different version of SQLite may sometimes be used for
|
||||||
some reasons like security, or some new experimental features.
|
some reasons like security, or some new experimental features.
|
||||||
|
|
||||||
|
|
328
sqlite3.h
328
sqlite3.h
|
@ -146,9 +146,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.39.4"
|
#define SQLITE_VERSION "3.41.0"
|
||||||
#define SQLITE_VERSION_NUMBER 3039004
|
#define SQLITE_VERSION_NUMBER 3041000
|
||||||
#define SQLITE_SOURCE_ID "2022-09-29 15:55:41 a29f9949895322123f7c38fbe94c649a9d6e6c9cd0c3b41c96d694552f26b309"
|
#define SQLITE_SOURCE_ID "2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
@ -563,6 +563,7 @@ SQLITE_API int sqlite3_exec(
|
||||||
#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
|
#define SQLITE_CONSTRAINT_DATATYPE (SQLITE_CONSTRAINT |(12<<8))
|
||||||
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
|
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
|
||||||
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
|
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
|
||||||
|
#define SQLITE_NOTICE_RBU (SQLITE_NOTICE | (3<<8))
|
||||||
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
|
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
|
||||||
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
|
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
|
||||||
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
|
#define SQLITE_OK_LOAD_PERMANENTLY (SQLITE_OK | (1<<8))
|
||||||
|
@ -670,13 +671,17 @@ SQLITE_API int sqlite3_exec(
|
||||||
**
|
**
|
||||||
** SQLite uses one of these integer values as the second
|
** SQLite uses one of these integer values as the second
|
||||||
** argument to calls it makes to the xLock() and xUnlock() methods
|
** argument to calls it makes to the xLock() and xUnlock() methods
|
||||||
** of an [sqlite3_io_methods] object.
|
** of an [sqlite3_io_methods] object. These values are ordered from
|
||||||
|
** lest restrictive to most restrictive.
|
||||||
|
**
|
||||||
|
** The argument to xLock() is always SHARED or higher. The argument to
|
||||||
|
** xUnlock is either SHARED or NONE.
|
||||||
*/
|
*/
|
||||||
#define SQLITE_LOCK_NONE 0
|
#define SQLITE_LOCK_NONE 0 /* xUnlock() only */
|
||||||
#define SQLITE_LOCK_SHARED 1
|
#define SQLITE_LOCK_SHARED 1 /* xLock() or xUnlock() */
|
||||||
#define SQLITE_LOCK_RESERVED 2
|
#define SQLITE_LOCK_RESERVED 2 /* xLock() only */
|
||||||
#define SQLITE_LOCK_PENDING 3
|
#define SQLITE_LOCK_PENDING 3 /* xLock() only */
|
||||||
#define SQLITE_LOCK_EXCLUSIVE 4
|
#define SQLITE_LOCK_EXCLUSIVE 4 /* xLock() only */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Synchronization Type Flags
|
** CAPI3REF: Synchronization Type Flags
|
||||||
|
@ -754,7 +759,14 @@ struct sqlite3_file {
|
||||||
** <li> [SQLITE_LOCK_PENDING], or
|
** <li> [SQLITE_LOCK_PENDING], or
|
||||||
** <li> [SQLITE_LOCK_EXCLUSIVE].
|
** <li> [SQLITE_LOCK_EXCLUSIVE].
|
||||||
** </ul>
|
** </ul>
|
||||||
** xLock() increases the lock. xUnlock() decreases the lock.
|
** xLock() upgrades the database file lock. In other words, xLock() moves the
|
||||||
|
** database file lock in the direction NONE toward EXCLUSIVE. The argument to
|
||||||
|
** xLock() is always on of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
|
||||||
|
** SQLITE_LOCK_NONE. If the database file lock is already at or above the
|
||||||
|
** requested lock, then the call to xLock() is a no-op.
|
||||||
|
** xUnlock() downgrades the database file lock to either SHARED or NONE.
|
||||||
|
* If the lock is already at or below the requested lock state, then the call
|
||||||
|
** to xUnlock() is a no-op.
|
||||||
** The xCheckReservedLock() method checks whether any database connection,
|
** The xCheckReservedLock() method checks whether any database connection,
|
||||||
** either in this process or in some other process, is holding a RESERVED,
|
** either in this process or in some other process, is holding a RESERVED,
|
||||||
** PENDING, or EXCLUSIVE lock on the file. It returns true
|
** PENDING, or EXCLUSIVE lock on the file. It returns true
|
||||||
|
@ -859,9 +871,8 @@ struct sqlite3_io_methods {
|
||||||
** opcode causes the xFileControl method to write the current state of
|
** opcode causes the xFileControl method to write the current state of
|
||||||
** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
|
** the lock (one of [SQLITE_LOCK_NONE], [SQLITE_LOCK_SHARED],
|
||||||
** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
|
** [SQLITE_LOCK_RESERVED], [SQLITE_LOCK_PENDING], or [SQLITE_LOCK_EXCLUSIVE])
|
||||||
** into an integer that the pArg argument points to. This capability
|
** into an integer that the pArg argument points to.
|
||||||
** is used during testing and is only available when the SQLITE_TEST
|
** This capability is only available if SQLite is compiled with [SQLITE_DEBUG].
|
||||||
** compile-time option is used.
|
|
||||||
**
|
**
|
||||||
** <li>[[SQLITE_FCNTL_SIZE_HINT]]
|
** <li>[[SQLITE_FCNTL_SIZE_HINT]]
|
||||||
** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
|
** The [SQLITE_FCNTL_SIZE_HINT] opcode is used by SQLite to give the VFS
|
||||||
|
@ -1165,7 +1176,6 @@ struct sqlite3_io_methods {
|
||||||
** in wal mode after the client has finished copying pages from the wal
|
** in wal mode after the client has finished copying pages from the wal
|
||||||
** file to the database file, but before the *-shm file is updated to
|
** file to the database file, but before the *-shm file is updated to
|
||||||
** record the fact that the pages have been checkpointed.
|
** record the fact that the pages have been checkpointed.
|
||||||
** </ul>
|
|
||||||
**
|
**
|
||||||
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
|
** <li>[[SQLITE_FCNTL_EXTERNAL_READER]]
|
||||||
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
|
** The EXPERIMENTAL [SQLITE_FCNTL_EXTERNAL_READER] opcode is used to detect
|
||||||
|
@ -1178,10 +1188,16 @@ struct sqlite3_io_methods {
|
||||||
** the database is not a wal-mode db, or if there is no such connection in any
|
** the database is not a wal-mode db, or if there is no such connection in any
|
||||||
** other process. This opcode cannot be used to detect transactions opened
|
** other process. This opcode cannot be used to detect transactions opened
|
||||||
** by clients within the current process, only within other processes.
|
** by clients within the current process, only within other processes.
|
||||||
** </ul>
|
|
||||||
**
|
**
|
||||||
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
|
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
|
||||||
** Used by the cksmvfs VFS module only.
|
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
|
||||||
|
** [checksum VFS shim] only.
|
||||||
|
**
|
||||||
|
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
|
||||||
|
** If there is currently no transaction open on the database, and the
|
||||||
|
** database is not a temp db, then the [SQLITE_FCNTL_RESET_CACHE] file-control
|
||||||
|
** purges the contents of the in-memory page cache. If there is an open
|
||||||
|
** transaction, or if the db is a temp-db, this opcode is a no-op, not an error.
|
||||||
** </ul>
|
** </ul>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_FCNTL_LOCKSTATE 1
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
||||||
|
@ -1224,6 +1240,7 @@ struct sqlite3_io_methods {
|
||||||
#define SQLITE_FCNTL_CKPT_START 39
|
#define SQLITE_FCNTL_CKPT_START 39
|
||||||
#define SQLITE_FCNTL_EXTERNAL_READER 40
|
#define SQLITE_FCNTL_EXTERNAL_READER 40
|
||||||
#define SQLITE_FCNTL_CKSM_FILE 41
|
#define SQLITE_FCNTL_CKSM_FILE 41
|
||||||
|
#define SQLITE_FCNTL_RESET_CACHE 42
|
||||||
|
|
||||||
/* deprecated names */
|
/* deprecated names */
|
||||||
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
||||||
|
@ -1253,6 +1270,26 @@ typedef struct sqlite3_mutex sqlite3_mutex;
|
||||||
*/
|
*/
|
||||||
typedef struct sqlite3_api_routines sqlite3_api_routines;
|
typedef struct sqlite3_api_routines sqlite3_api_routines;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: File Name
|
||||||
|
**
|
||||||
|
** Type [sqlite3_filename] is used by SQLite to pass filenames to the
|
||||||
|
** xOpen method of a [VFS]. It may be cast to (const char*) and treated
|
||||||
|
** as a normal, nul-terminated, UTF-8 buffer containing the filename, but
|
||||||
|
** may also be passed to special APIs such as:
|
||||||
|
**
|
||||||
|
** <ul>
|
||||||
|
** <li> sqlite3_filename_database()
|
||||||
|
** <li> sqlite3_filename_journal()
|
||||||
|
** <li> sqlite3_filename_wal()
|
||||||
|
** <li> sqlite3_uri_parameter()
|
||||||
|
** <li> sqlite3_uri_boolean()
|
||||||
|
** <li> sqlite3_uri_int64()
|
||||||
|
** <li> sqlite3_uri_key()
|
||||||
|
** </ul>
|
||||||
|
*/
|
||||||
|
typedef const char *sqlite3_filename;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: OS Interface Object
|
** CAPI3REF: OS Interface Object
|
||||||
**
|
**
|
||||||
|
@ -1431,7 +1468,7 @@ struct sqlite3_vfs {
|
||||||
sqlite3_vfs *pNext; /* Next registered VFS */
|
sqlite3_vfs *pNext; /* Next registered VFS */
|
||||||
const char *zName; /* Name of this virtual file system */
|
const char *zName; /* Name of this virtual file system */
|
||||||
void *pAppData; /* Pointer to application-specific data */
|
void *pAppData; /* Pointer to application-specific data */
|
||||||
int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
|
int (*xOpen)(sqlite3_vfs*, sqlite3_filename zName, sqlite3_file*,
|
||||||
int flags, int *pOutFlags);
|
int flags, int *pOutFlags);
|
||||||
int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
|
int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
|
||||||
int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
|
int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
|
||||||
|
@ -2147,7 +2184,7 @@ struct sqlite3_mem_methods {
|
||||||
** configuration for a database connection can only be changed when that
|
** configuration for a database connection can only be changed when that
|
||||||
** connection is not currently using lookaside memory, or in other words
|
** connection is not currently using lookaside memory, or in other words
|
||||||
** when the "current value" returned by
|
** when the "current value" returned by
|
||||||
** [sqlite3_db_status](D,[SQLITE_CONFIG_LOOKASIDE],...) is zero.
|
** [sqlite3_db_status](D,[SQLITE_DBSTATUS_LOOKASIDE_USED],...) is zero.
|
||||||
** Any attempt to change the lookaside memory configuration when lookaside
|
** Any attempt to change the lookaside memory configuration when lookaside
|
||||||
** memory is in use leaves the configuration unchanged and returns
|
** memory is in use leaves the configuration unchanged and returns
|
||||||
** [SQLITE_BUSY].)^</dd>
|
** [SQLITE_BUSY].)^</dd>
|
||||||
|
@ -2297,8 +2334,12 @@ struct sqlite3_mem_methods {
|
||||||
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
|
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
|
||||||
** </ol>
|
** </ol>
|
||||||
** Because resetting a database is destructive and irreversible, the
|
** Because resetting a database is destructive and irreversible, the
|
||||||
** process requires the use of this obscure API and multiple steps to help
|
** process requires the use of this obscure API and multiple steps to
|
||||||
** ensure that it does not happen by accident.
|
** help ensure that it does not happen by accident. Because this
|
||||||
|
** feature must be capable of resetting corrupt databases, and
|
||||||
|
** shutting down virtual tables may require access to that corrupt
|
||||||
|
** storage, the library must abandon any installed virtual tables
|
||||||
|
** without calling their xDestroy() methods.
|
||||||
**
|
**
|
||||||
** [[SQLITE_DBCONFIG_DEFENSIVE]] <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
|
** [[SQLITE_DBCONFIG_DEFENSIVE]] <dt>SQLITE_DBCONFIG_DEFENSIVE</dt>
|
||||||
** <dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
|
** <dd>The SQLITE_DBCONFIG_DEFENSIVE option activates or deactivates the
|
||||||
|
@ -2309,6 +2350,7 @@ struct sqlite3_mem_methods {
|
||||||
** <ul>
|
** <ul>
|
||||||
** <li> The [PRAGMA writable_schema=ON] statement.
|
** <li> The [PRAGMA writable_schema=ON] statement.
|
||||||
** <li> The [PRAGMA journal_mode=OFF] statement.
|
** <li> The [PRAGMA journal_mode=OFF] statement.
|
||||||
|
** <li> The [PRAGMA schema_version=N] statement.
|
||||||
** <li> Writes to the [sqlite_dbpage] virtual table.
|
** <li> Writes to the [sqlite_dbpage] virtual table.
|
||||||
** <li> Direct writes to [shadow tables].
|
** <li> Direct writes to [shadow tables].
|
||||||
** </ul>
|
** </ul>
|
||||||
|
@ -2636,8 +2678,12 @@ SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
|
||||||
** ^A call to sqlite3_interrupt(D) that occurs when there are no running
|
** ^A call to sqlite3_interrupt(D) that occurs when there are no running
|
||||||
** SQL statements is a no-op and has no effect on SQL statements
|
** SQL statements is a no-op and has no effect on SQL statements
|
||||||
** that are started after the sqlite3_interrupt() call returns.
|
** that are started after the sqlite3_interrupt() call returns.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_is_interrupted(D)] interface can be used to determine whether
|
||||||
|
** or not an interrupt is currently in effect for [database connection] D.
|
||||||
*/
|
*/
|
||||||
SQLITE_API void sqlite3_interrupt(sqlite3*);
|
SQLITE_API void sqlite3_interrupt(sqlite3*);
|
||||||
|
SQLITE_API int sqlite3_is_interrupted(sqlite3*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Determine If An SQL Statement Is Complete
|
** CAPI3REF: Determine If An SQL Statement Is Complete
|
||||||
|
@ -3255,8 +3301,8 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
|
||||||
** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
|
** <dd>^An SQLITE_TRACE_PROFILE callback provides approximately the same
|
||||||
** information as is provided by the [sqlite3_profile()] callback.
|
** information as is provided by the [sqlite3_profile()] callback.
|
||||||
** ^The P argument is a pointer to the [prepared statement] and the
|
** ^The P argument is a pointer to the [prepared statement] and the
|
||||||
** X argument points to a 64-bit integer which is the estimated of
|
** X argument points to a 64-bit integer which is approximately
|
||||||
** the number of nanosecond that the prepared statement took to run.
|
** the number of nanoseconds that the prepared statement took to run.
|
||||||
** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
|
** ^The SQLITE_TRACE_PROFILE callback is invoked when the statement finishes.
|
||||||
**
|
**
|
||||||
** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
|
** [[SQLITE_TRACE_ROW]] <dt>SQLITE_TRACE_ROW</dt>
|
||||||
|
@ -3319,7 +3365,7 @@ SQLITE_API int sqlite3_trace_v2(
|
||||||
**
|
**
|
||||||
** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback
|
** ^The sqlite3_progress_handler(D,N,X,P) interface causes the callback
|
||||||
** function X to be invoked periodically during long running calls to
|
** function X to be invoked periodically during long running calls to
|
||||||
** [sqlite3_exec()], [sqlite3_step()] and [sqlite3_get_table()] for
|
** [sqlite3_step()] and [sqlite3_prepare()] and similar for
|
||||||
** database connection D. An example use for this
|
** database connection D. An example use for this
|
||||||
** interface is to keep a GUI updated during a large query.
|
** interface is to keep a GUI updated during a large query.
|
||||||
**
|
**
|
||||||
|
@ -3344,6 +3390,13 @@ SQLITE_API int sqlite3_trace_v2(
|
||||||
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
|
** Note that [sqlite3_prepare_v2()] and [sqlite3_step()] both modify their
|
||||||
** database connections for the meaning of "modify" in this paragraph.
|
** database connections for the meaning of "modify" in this paragraph.
|
||||||
**
|
**
|
||||||
|
** The progress handler callback would originally only be invoked from the
|
||||||
|
** bytecode engine. It still might be invoked during [sqlite3_prepare()]
|
||||||
|
** and similar because those routines might force a reparse of the schema
|
||||||
|
** which involves running the bytecode engine. However, beginning with
|
||||||
|
** SQLite version 3.41.0, the progress handler callback might also be
|
||||||
|
** invoked directly from [sqlite3_prepare()] while analyzing and generating
|
||||||
|
** code for complex queries.
|
||||||
*/
|
*/
|
||||||
SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||||
|
|
||||||
|
@ -3380,13 +3433,18 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||||
**
|
**
|
||||||
** <dl>
|
** <dl>
|
||||||
** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
|
** ^(<dt>[SQLITE_OPEN_READONLY]</dt>
|
||||||
** <dd>The database is opened in read-only mode. If the database does not
|
** <dd>The database is opened in read-only mode. If the database does
|
||||||
** already exist, an error is returned.</dd>)^
|
** not already exist, an error is returned.</dd>)^
|
||||||
**
|
**
|
||||||
** ^(<dt>[SQLITE_OPEN_READWRITE]</dt>
|
** ^(<dt>[SQLITE_OPEN_READWRITE]</dt>
|
||||||
** <dd>The database is opened for reading and writing if possible, or reading
|
** <dd>The database is opened for reading and writing if possible, or
|
||||||
** only if the file is write protected by the operating system. In either
|
** reading only if the file is write protected by the operating
|
||||||
** case the database must already exist, otherwise an error is returned.</dd>)^
|
** system. In either case the database must already exist, otherwise
|
||||||
|
** an error is returned. For historical reasons, if opening in
|
||||||
|
** read-write mode fails due to OS-level permissions, an attempt is
|
||||||
|
** made to open it in read-only mode. [sqlite3_db_readonly()] can be
|
||||||
|
** used to determine whether the database is actually
|
||||||
|
** read-write.</dd>)^
|
||||||
**
|
**
|
||||||
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
** ^(<dt>[SQLITE_OPEN_READWRITE] | [SQLITE_OPEN_CREATE]</dt>
|
||||||
** <dd>The database is opened for reading and writing, and is created if
|
** <dd>The database is opened for reading and writing, and is created if
|
||||||
|
@ -3424,6 +3482,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||||
** <dd>The database is opened [shared cache] enabled, overriding
|
** <dd>The database is opened [shared cache] enabled, overriding
|
||||||
** the default shared cache setting provided by
|
** the default shared cache setting provided by
|
||||||
** [sqlite3_enable_shared_cache()].)^
|
** [sqlite3_enable_shared_cache()].)^
|
||||||
|
** The [use of shared cache mode is discouraged] and hence shared cache
|
||||||
|
** capabilities may be omitted from many builds of SQLite. In such cases,
|
||||||
|
** this option is a no-op.
|
||||||
**
|
**
|
||||||
** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
|
** ^(<dt>[SQLITE_OPEN_PRIVATECACHE]</dt>
|
||||||
** <dd>The database is opened [shared cache] disabled, overriding
|
** <dd>The database is opened [shared cache] disabled, overriding
|
||||||
|
@ -3439,7 +3500,7 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
|
||||||
** to return an extended result code.</dd>
|
** to return an extended result code.</dd>
|
||||||
**
|
**
|
||||||
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
|
** [[OPEN_NOFOLLOW]] ^(<dt>[SQLITE_OPEN_NOFOLLOW]</dt>
|
||||||
** <dd>The database filename is not allowed to be a symbolic link</dd>
|
** <dd>The database filename is not allowed to contain a symbolic link</dd>
|
||||||
** </dl>)^
|
** </dl>)^
|
||||||
**
|
**
|
||||||
** If the 3rd parameter to sqlite3_open_v2() is not one of the
|
** If the 3rd parameter to sqlite3_open_v2() is not one of the
|
||||||
|
@ -3698,10 +3759,10 @@ SQLITE_API int sqlite3_open_v2(
|
||||||
**
|
**
|
||||||
** See the [URI filename] documentation for additional information.
|
** See the [URI filename] documentation for additional information.
|
||||||
*/
|
*/
|
||||||
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
|
SQLITE_API const char *sqlite3_uri_parameter(sqlite3_filename z, const char *zParam);
|
||||||
SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
|
SQLITE_API int sqlite3_uri_boolean(sqlite3_filename z, const char *zParam, int bDefault);
|
||||||
SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
|
SQLITE_API sqlite3_int64 sqlite3_uri_int64(sqlite3_filename, const char*, sqlite3_int64);
|
||||||
SQLITE_API const char *sqlite3_uri_key(const char *zFilename, int N);
|
SQLITE_API const char *sqlite3_uri_key(sqlite3_filename z, int N);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Translate filenames
|
** CAPI3REF: Translate filenames
|
||||||
|
@ -3730,9 +3791,9 @@ SQLITE_API const char *sqlite3_uri_key(const char *zFilename, int N);
|
||||||
** return value from [sqlite3_db_filename()], then the result is
|
** return value from [sqlite3_db_filename()], then the result is
|
||||||
** undefined and is likely a memory access violation.
|
** undefined and is likely a memory access violation.
|
||||||
*/
|
*/
|
||||||
SQLITE_API const char *sqlite3_filename_database(const char*);
|
SQLITE_API const char *sqlite3_filename_database(sqlite3_filename);
|
||||||
SQLITE_API const char *sqlite3_filename_journal(const char*);
|
SQLITE_API const char *sqlite3_filename_journal(sqlite3_filename);
|
||||||
SQLITE_API const char *sqlite3_filename_wal(const char*);
|
SQLITE_API const char *sqlite3_filename_wal(sqlite3_filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Database File Corresponding To A Journal
|
** CAPI3REF: Database File Corresponding To A Journal
|
||||||
|
@ -3798,14 +3859,14 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
|
||||||
** then the corresponding [sqlite3_module.xClose() method should also be
|
** then the corresponding [sqlite3_module.xClose() method should also be
|
||||||
** invoked prior to calling sqlite3_free_filename(Y).
|
** invoked prior to calling sqlite3_free_filename(Y).
|
||||||
*/
|
*/
|
||||||
SQLITE_API char *sqlite3_create_filename(
|
SQLITE_API sqlite3_filename sqlite3_create_filename(
|
||||||
const char *zDatabase,
|
const char *zDatabase,
|
||||||
const char *zJournal,
|
const char *zJournal,
|
||||||
const char *zWal,
|
const char *zWal,
|
||||||
int nParam,
|
int nParam,
|
||||||
const char **azParam
|
const char **azParam
|
||||||
);
|
);
|
||||||
SQLITE_API void sqlite3_free_filename(char*);
|
SQLITE_API void sqlite3_free_filename(sqlite3_filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Error Codes And Messages
|
** CAPI3REF: Error Codes And Messages
|
||||||
|
@ -5364,10 +5425,21 @@ SQLITE_API int sqlite3_create_window_function(
|
||||||
** from top-level SQL, and cannot be used in VIEWs or TRIGGERs nor in
|
** from top-level SQL, and cannot be used in VIEWs or TRIGGERs nor in
|
||||||
** schema structures such as [CHECK constraints], [DEFAULT clauses],
|
** schema structures such as [CHECK constraints], [DEFAULT clauses],
|
||||||
** [expression indexes], [partial indexes], or [generated columns].
|
** [expression indexes], [partial indexes], or [generated columns].
|
||||||
** The SQLITE_DIRECTONLY flags is a security feature which is recommended
|
** <p>
|
||||||
** for all [application-defined SQL functions], and especially for functions
|
** The SQLITE_DIRECTONLY flag is recommended for any
|
||||||
** that have side-effects or that could potentially leak sensitive
|
** [application-defined SQL function]
|
||||||
** information.
|
** that has side-effects or that could potentially leak sensitive information.
|
||||||
|
** This will prevent attacks in which an application is tricked
|
||||||
|
** into using a database file that has had its schema surreptiously
|
||||||
|
** modified to invoke the application-defined function in ways that are
|
||||||
|
** harmful.
|
||||||
|
** <p>
|
||||||
|
** Some people say it is good practice to set SQLITE_DIRECTONLY on all
|
||||||
|
** [application-defined SQL functions], regardless of whether or not they
|
||||||
|
** are security sensitive, as doing so prevents those functions from being used
|
||||||
|
** inside of the database schema, and thus ensures that the database
|
||||||
|
** can be inspected and modified using generic tools (such as the [CLI])
|
||||||
|
** that do not have access to the application-defined functions.
|
||||||
** </dd>
|
** </dd>
|
||||||
**
|
**
|
||||||
** [[SQLITE_INNOCUOUS]] <dt>SQLITE_INNOCUOUS</dt><dd>
|
** [[SQLITE_INNOCUOUS]] <dt>SQLITE_INNOCUOUS</dt><dd>
|
||||||
|
@ -5573,6 +5645,28 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
|
||||||
SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
|
SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
|
||||||
SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
|
SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Report the internal text encoding state of an sqlite3_value object
|
||||||
|
** METHOD: sqlite3_value
|
||||||
|
**
|
||||||
|
** ^(The sqlite3_value_encoding(X) interface returns one of [SQLITE_UTF8],
|
||||||
|
** [SQLITE_UTF16BE], or [SQLITE_UTF16LE] according to the current text encoding
|
||||||
|
** of the value X, assuming that X has type TEXT.)^ If sqlite3_value_type(X)
|
||||||
|
** returns something other than SQLITE_TEXT, then the return value from
|
||||||
|
** sqlite3_value_encoding(X) is meaningless. ^Calls to
|
||||||
|
** [sqlite3_value_text(X)], [sqlite3_value_text16(X)], [sqlite3_value_text16be(X)],
|
||||||
|
** [sqlite3_value_text16le(X)], [sqlite3_value_bytes(X)], or
|
||||||
|
** [sqlite3_value_bytes16(X)] might change the encoding of the value X and
|
||||||
|
** thus change the return from subsequent calls to sqlite3_value_encoding(X).
|
||||||
|
**
|
||||||
|
** This routine is intended for used by applications that test and validate
|
||||||
|
** the SQLite implementation. This routine is inquiring about the opaque
|
||||||
|
** internal state of an [sqlite3_value] object. Ordinary applications should
|
||||||
|
** not need to know what the internal state of an sqlite3_value object is and
|
||||||
|
** hence should not need to use this interface.
|
||||||
|
*/
|
||||||
|
SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Finding The Subtype Of SQL Values
|
** CAPI3REF: Finding The Subtype Of SQL Values
|
||||||
** METHOD: sqlite3_value
|
** METHOD: sqlite3_value
|
||||||
|
@ -5625,7 +5719,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*);
|
||||||
**
|
**
|
||||||
** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer
|
** ^The sqlite3_aggregate_context(C,N) routine returns a NULL pointer
|
||||||
** when first called if N is less than or equal to zero or if a memory
|
** when first called if N is less than or equal to zero or if a memory
|
||||||
** allocate error occurs.
|
** allocation error occurs.
|
||||||
**
|
**
|
||||||
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
|
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is
|
||||||
** determined by the N parameter on first successful call. Changing the
|
** determined by the N parameter on first successful call. Changing the
|
||||||
|
@ -5830,9 +5924,10 @@ typedef void (*sqlite3_destructor_type)(void*);
|
||||||
** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
|
** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
|
||||||
** ^SQLite takes the text result from the application from
|
** ^SQLite takes the text result from the application from
|
||||||
** the 2nd parameter of the sqlite3_result_text* interfaces.
|
** the 2nd parameter of the sqlite3_result_text* interfaces.
|
||||||
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
|
** ^If the 3rd parameter to any of the sqlite3_result_text* interfaces
|
||||||
** is negative, then SQLite takes result text from the 2nd parameter
|
** other than sqlite3_result_text64() is negative, then SQLite computes
|
||||||
** through the first zero character.
|
** the string length itself by searching the 2nd parameter for the first
|
||||||
|
** zero character.
|
||||||
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
|
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
|
||||||
** is non-negative, then as many bytes (not characters) of the text
|
** is non-negative, then as many bytes (not characters) of the text
|
||||||
** pointed to by the 2nd parameter are taken as the application-defined
|
** pointed to by the 2nd parameter are taken as the application-defined
|
||||||
|
@ -6328,7 +6423,7 @@ SQLITE_API const char *sqlite3_db_name(sqlite3 *db, int N);
|
||||||
** <li> [sqlite3_filename_wal()]
|
** <li> [sqlite3_filename_wal()]
|
||||||
** </ul>
|
** </ul>
|
||||||
*/
|
*/
|
||||||
SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName);
|
SQLITE_API sqlite3_filename sqlite3_db_filename(sqlite3 *db, const char *zDbName);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Determine if a database is read-only
|
** CAPI3REF: Determine if a database is read-only
|
||||||
|
@ -6465,7 +6560,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
|
||||||
** function C that is invoked prior to each autovacuum of the database
|
** function C that is invoked prior to each autovacuum of the database
|
||||||
** file. ^The callback is passed a copy of the generic data pointer (P),
|
** file. ^The callback is passed a copy of the generic data pointer (P),
|
||||||
** the schema-name of the attached database that is being autovacuumed,
|
** the schema-name of the attached database that is being autovacuumed,
|
||||||
** the the size of the database file in pages, the number of free pages,
|
** the size of the database file in pages, the number of free pages,
|
||||||
** and the number of bytes per page, respectively. The callback should
|
** and the number of bytes per page, respectively. The callback should
|
||||||
** return the number of free pages that should be removed by the
|
** return the number of free pages that should be removed by the
|
||||||
** autovacuum. ^If the callback returns zero, then no autovacuum happens.
|
** autovacuum. ^If the callback returns zero, then no autovacuum happens.
|
||||||
|
@ -6586,6 +6681,11 @@ SQLITE_API void *sqlite3_update_hook(
|
||||||
** to the same database. Sharing is enabled if the argument is true
|
** to the same database. Sharing is enabled if the argument is true
|
||||||
** and disabled if the argument is false.)^
|
** and disabled if the argument is false.)^
|
||||||
**
|
**
|
||||||
|
** This interface is omitted if SQLite is compiled with
|
||||||
|
** [-DSQLITE_OMIT_SHARED_CACHE]. The [-DSQLITE_OMIT_SHARED_CACHE]
|
||||||
|
** compile-time option is recommended because the
|
||||||
|
** [use of shared cache mode is discouraged].
|
||||||
|
**
|
||||||
** ^Cache sharing is enabled and disabled for an entire process.
|
** ^Cache sharing is enabled and disabled for an entire process.
|
||||||
** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
|
** This is a change as of SQLite [version 3.5.0] ([dateof:3.5.0]).
|
||||||
** In prior versions of SQLite,
|
** In prior versions of SQLite,
|
||||||
|
@ -6684,7 +6784,7 @@ SQLITE_API int sqlite3_db_release_memory(sqlite3*);
|
||||||
** ^The soft heap limit may not be greater than the hard heap limit.
|
** ^The soft heap limit may not be greater than the hard heap limit.
|
||||||
** ^If the hard heap limit is enabled and if sqlite3_soft_heap_limit(N)
|
** ^If the hard heap limit is enabled and if sqlite3_soft_heap_limit(N)
|
||||||
** is invoked with a value of N that is greater than the hard heap limit,
|
** is invoked with a value of N that is greater than the hard heap limit,
|
||||||
** the the soft heap limit is set to the value of the hard heap limit.
|
** the soft heap limit is set to the value of the hard heap limit.
|
||||||
** ^The soft heap limit is automatically enabled whenever the hard heap
|
** ^The soft heap limit is automatically enabled whenever the hard heap
|
||||||
** limit is enabled. ^When sqlite3_hard_heap_limit64(N) is invoked and
|
** limit is enabled. ^When sqlite3_hard_heap_limit64(N) is invoked and
|
||||||
** the soft heap limit is outside the range of 1..N, then the soft heap
|
** the soft heap limit is outside the range of 1..N, then the soft heap
|
||||||
|
@ -6945,15 +7045,6 @@ SQLITE_API int sqlite3_cancel_auto_extension(void(*xEntryPoint)(void));
|
||||||
*/
|
*/
|
||||||
SQLITE_API void sqlite3_reset_auto_extension(void);
|
SQLITE_API void sqlite3_reset_auto_extension(void);
|
||||||
|
|
||||||
/*
|
|
||||||
** The interface to the virtual-table mechanism is currently considered
|
|
||||||
** to be experimental. The interface might change in incompatible ways.
|
|
||||||
** If this is a problem for you, do not use the interface at this time.
|
|
||||||
**
|
|
||||||
** When the virtual-table mechanism stabilizes, we will declare the
|
|
||||||
** interface fixed, support it indefinitely, and remove this comment.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Structures used by the virtual table interface
|
** Structures used by the virtual table interface
|
||||||
*/
|
*/
|
||||||
|
@ -7072,10 +7163,10 @@ struct sqlite3_module {
|
||||||
** when the omit flag is true there is no guarantee that the constraint will
|
** when the omit flag is true there is no guarantee that the constraint will
|
||||||
** not be checked again using byte code.)^
|
** not be checked again using byte code.)^
|
||||||
**
|
**
|
||||||
** ^The idxNum and idxPtr values are recorded and passed into the
|
** ^The idxNum and idxStr values are recorded and passed into the
|
||||||
** [xFilter] method.
|
** [xFilter] method.
|
||||||
** ^[sqlite3_free()] is used to free idxPtr if and only if
|
** ^[sqlite3_free()] is used to free idxStr if and only if
|
||||||
** needToFreeIdxPtr is true.
|
** needToFreeIdxStr is true.
|
||||||
**
|
**
|
||||||
** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
** ^The orderByConsumed means that output from [xFilter]/[xNext] will occur in
|
||||||
** the correct order to satisfy the ORDER BY clause so that no separate
|
** the correct order to satisfy the ORDER BY clause so that no separate
|
||||||
|
@ -7195,7 +7286,7 @@ struct sqlite3_index_info {
|
||||||
** the [sqlite3_vtab_collation()] interface. For most real-world virtual
|
** the [sqlite3_vtab_collation()] interface. For most real-world virtual
|
||||||
** tables, the collating sequence of constraints does not matter (for example
|
** tables, the collating sequence of constraints does not matter (for example
|
||||||
** because the constraints are numeric) and so the sqlite3_vtab_collation()
|
** because the constraints are numeric) and so the sqlite3_vtab_collation()
|
||||||
** interface is no commonly needed.
|
** interface is not commonly needed.
|
||||||
*/
|
*/
|
||||||
#define SQLITE_INDEX_CONSTRAINT_EQ 2
|
#define SQLITE_INDEX_CONSTRAINT_EQ 2
|
||||||
#define SQLITE_INDEX_CONSTRAINT_GT 4
|
#define SQLITE_INDEX_CONSTRAINT_GT 4
|
||||||
|
@ -7354,16 +7445,6 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3*, const char *zSQL);
|
||||||
*/
|
*/
|
||||||
SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
|
SQLITE_API int sqlite3_overload_function(sqlite3*, const char *zFuncName, int nArg);
|
||||||
|
|
||||||
/*
|
|
||||||
** The interface to the virtual-table mechanism defined above (back up
|
|
||||||
** to a comment remarkably similar to this one) is currently considered
|
|
||||||
** to be experimental. The interface might change in incompatible ways.
|
|
||||||
** If this is a problem for you, do not use the interface at this time.
|
|
||||||
**
|
|
||||||
** When the virtual-table mechanism stabilizes, we will declare the
|
|
||||||
** interface fixed, support it indefinitely, and remove this comment.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: A Handle To An Open BLOB
|
** CAPI3REF: A Handle To An Open BLOB
|
||||||
** KEYWORDS: {BLOB handle} {BLOB handles}
|
** KEYWORDS: {BLOB handle} {BLOB handles}
|
||||||
|
@ -8979,7 +9060,7 @@ typedef struct sqlite3_backup sqlite3_backup;
|
||||||
** if the application incorrectly accesses the destination [database connection]
|
** if the application incorrectly accesses the destination [database connection]
|
||||||
** and so no error code is reported, but the operations may malfunction
|
** and so no error code is reported, but the operations may malfunction
|
||||||
** nevertheless. Use of the destination database connection while a
|
** nevertheless. Use of the destination database connection while a
|
||||||
** backup is in progress might also also cause a mutex deadlock.
|
** backup is in progress might also cause a mutex deadlock.
|
||||||
**
|
**
|
||||||
** If running in [shared cache mode], the application must
|
** If running in [shared cache mode], the application must
|
||||||
** guarantee that the shared cache used by the destination database
|
** guarantee that the shared cache used by the destination database
|
||||||
|
@ -9407,7 +9488,7 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
|
||||||
*/
|
*/
|
||||||
#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
|
#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
|
||||||
#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
|
#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
|
||||||
#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for for readers */
|
#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for readers */
|
||||||
#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
|
#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -9567,7 +9648,7 @@ SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*);
|
||||||
** <li><p> Otherwise, "BINARY" is returned.
|
** <li><p> Otherwise, "BINARY" is returned.
|
||||||
** </ol>
|
** </ol>
|
||||||
*/
|
*/
|
||||||
SQLITE_API SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
|
SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Determine if a virtual table query is DISTINCT
|
** CAPI3REF: Determine if a virtual table query is DISTINCT
|
||||||
|
@ -9724,21 +9805,20 @@ SQLITE_API int sqlite3_vtab_in(sqlite3_index_info*, int iCons, int bHandle);
|
||||||
** is undefined and probably harmful.
|
** is undefined and probably harmful.
|
||||||
**
|
**
|
||||||
** The X parameter in a call to sqlite3_vtab_in_first(X,P) or
|
** The X parameter in a call to sqlite3_vtab_in_first(X,P) or
|
||||||
** sqlite3_vtab_in_next(X,P) must be one of the parameters to the
|
** sqlite3_vtab_in_next(X,P) should be one of the parameters to the
|
||||||
** xFilter method which invokes these routines, and specifically
|
** xFilter method which invokes these routines, and specifically
|
||||||
** a parameter that was previously selected for all-at-once IN constraint
|
** a parameter that was previously selected for all-at-once IN constraint
|
||||||
** processing use the [sqlite3_vtab_in()] interface in the
|
** processing use the [sqlite3_vtab_in()] interface in the
|
||||||
** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
|
** [xBestIndex|xBestIndex method]. ^(If the X parameter is not
|
||||||
** an xFilter argument that was selected for all-at-once IN constraint
|
** an xFilter argument that was selected for all-at-once IN constraint
|
||||||
** processing, then these routines return [SQLITE_MISUSE])^ or perhaps
|
** processing, then these routines return [SQLITE_ERROR].)^
|
||||||
** exhibit some other undefined or harmful behavior.
|
|
||||||
**
|
**
|
||||||
** ^(Use these routines to access all values on the right-hand side
|
** ^(Use these routines to access all values on the right-hand side
|
||||||
** of the IN constraint using code like the following:
|
** of the IN constraint using code like the following:
|
||||||
**
|
**
|
||||||
** <blockquote><pre>
|
** <blockquote><pre>
|
||||||
** for(rc=sqlite3_vtab_in_first(pList, &pVal);
|
** for(rc=sqlite3_vtab_in_first(pList, &pVal);
|
||||||
** rc==SQLITE_OK && pVal
|
** rc==SQLITE_OK && pVal;
|
||||||
** rc=sqlite3_vtab_in_next(pList, &pVal)
|
** rc=sqlite3_vtab_in_next(pList, &pVal)
|
||||||
** ){
|
** ){
|
||||||
** // do something with pVal
|
** // do something with pVal
|
||||||
|
@ -9836,6 +9916,10 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
||||||
** managed by the prepared statement S and will be automatically freed when
|
** managed by the prepared statement S and will be automatically freed when
|
||||||
** S is finalized.
|
** S is finalized.
|
||||||
**
|
**
|
||||||
|
** Not all values are available for all query elements. When a value is
|
||||||
|
** not available, the output variable is set to -1 if the value is numeric,
|
||||||
|
** or to NULL if it is a string (SQLITE_SCANSTAT_NAME).
|
||||||
|
**
|
||||||
** <dl>
|
** <dl>
|
||||||
** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
|
** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
|
||||||
** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be
|
** <dd>^The [sqlite3_int64] variable pointed to by the V parameter will be
|
||||||
|
@ -9863,12 +9947,24 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
||||||
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
|
** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
|
||||||
** description for the X-th loop.
|
** description for the X-th loop.
|
||||||
**
|
**
|
||||||
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECT</dt>
|
** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECTID</dt>
|
||||||
** <dd>^The "int" variable pointed to by the V parameter will be set to the
|
** <dd>^The "int" variable pointed to by the V parameter will be set to the
|
||||||
** "select-id" for the X-th loop. The select-id identifies which query or
|
** id for the X-th query plan element. The id value is unique within the
|
||||||
** subquery the loop is part of. The main query has a select-id of zero.
|
** statement. The select-id is the same value as is output in the first
|
||||||
** The select-id is the same value as is output in the first column
|
** column of an [EXPLAIN QUERY PLAN] query.
|
||||||
** of an [EXPLAIN QUERY PLAN] query.
|
**
|
||||||
|
** [[SQLITE_SCANSTAT_PARENTID]] <dt>SQLITE_SCANSTAT_PARENTID</dt>
|
||||||
|
** <dd>The "int" variable pointed to by the V parameter will be set to the
|
||||||
|
** the id of the parent of the current query element, if applicable, or
|
||||||
|
** to zero if the query element has no parent. This is the same value as
|
||||||
|
** returned in the second column of an [EXPLAIN QUERY PLAN] query.
|
||||||
|
**
|
||||||
|
** [[SQLITE_SCANSTAT_NCYCLE]] <dt>SQLITE_SCANSTAT_NCYCLE</dt>
|
||||||
|
** <dd>The sqlite3_int64 output value is set to the number of cycles,
|
||||||
|
** according to the processor time-stamp counter, that elapsed while the
|
||||||
|
** query element was being processed. This value is not available for
|
||||||
|
** all query elements - if it is unavailable the output variable is
|
||||||
|
** set to -1.
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_SCANSTAT_NLOOP 0
|
#define SQLITE_SCANSTAT_NLOOP 0
|
||||||
|
@ -9877,12 +9973,14 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
||||||
#define SQLITE_SCANSTAT_NAME 3
|
#define SQLITE_SCANSTAT_NAME 3
|
||||||
#define SQLITE_SCANSTAT_EXPLAIN 4
|
#define SQLITE_SCANSTAT_EXPLAIN 4
|
||||||
#define SQLITE_SCANSTAT_SELECTID 5
|
#define SQLITE_SCANSTAT_SELECTID 5
|
||||||
|
#define SQLITE_SCANSTAT_PARENTID 6
|
||||||
|
#define SQLITE_SCANSTAT_NCYCLE 7
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Prepared Statement Scan Status
|
** CAPI3REF: Prepared Statement Scan Status
|
||||||
** METHOD: sqlite3_stmt
|
** METHOD: sqlite3_stmt
|
||||||
**
|
**
|
||||||
** This interface returns information about the predicted and measured
|
** These interfaces return information about the predicted and measured
|
||||||
** performance for pStmt. Advanced applications can use this
|
** performance for pStmt. Advanced applications can use this
|
||||||
** interface to compare the predicted and the measured performance and
|
** interface to compare the predicted and the measured performance and
|
||||||
** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
|
** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
|
||||||
|
@ -9893,19 +9991,25 @@ SQLITE_API int sqlite3_vtab_rhs_value(sqlite3_index_info*, int, sqlite3_value **
|
||||||
**
|
**
|
||||||
** The "iScanStatusOp" parameter determines which status information to return.
|
** The "iScanStatusOp" parameter determines which status information to return.
|
||||||
** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
|
** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
|
||||||
** of this interface is undefined.
|
** of this interface is undefined. ^The requested measurement is written into
|
||||||
** ^The requested measurement is written into a variable pointed to by
|
** a variable pointed to by the "pOut" parameter.
|
||||||
** the "pOut" parameter.
|
|
||||||
** Parameter "idx" identifies the specific loop to retrieve statistics for.
|
|
||||||
** Loops are numbered starting from zero. ^If idx is out of range - less than
|
|
||||||
** zero or greater than or equal to the total number of loops used to implement
|
|
||||||
** the statement - a non-zero value is returned and the variable that pOut
|
|
||||||
** points to is unchanged.
|
|
||||||
**
|
**
|
||||||
** ^Statistics might not be available for all loops in all statements. ^In cases
|
** The "flags" parameter must be passed a mask of flags. At present only
|
||||||
** where there exist loops with no available statistics, this function behaves
|
** one flag is defined - SQLITE_SCANSTAT_COMPLEX. If SQLITE_SCANSTAT_COMPLEX
|
||||||
** as if the loop did not exist - it returns non-zero and leave the variable
|
** is specified, then status information is available for all elements
|
||||||
** that pOut points to unchanged.
|
** of a query plan that are reported by "EXPLAIN QUERY PLAN" output. If
|
||||||
|
** SQLITE_SCANSTAT_COMPLEX is not specified, then only query plan elements
|
||||||
|
** that correspond to query loops (the "SCAN..." and "SEARCH..." elements of
|
||||||
|
** the EXPLAIN QUERY PLAN output) are available. Invoking API
|
||||||
|
** sqlite3_stmt_scanstatus() is equivalent to calling
|
||||||
|
** sqlite3_stmt_scanstatus_v2() with a zeroed flags parameter.
|
||||||
|
**
|
||||||
|
** Parameter "idx" identifies the specific query element to retrieve statistics
|
||||||
|
** for. Query elements are numbered starting from zero. A value of -1 may be
|
||||||
|
** to query for statistics regarding the entire query. ^If idx is out of range
|
||||||
|
** - less than -1 or greater than or equal to the total number of query
|
||||||
|
** elements used to implement the statement - a non-zero value is returned and
|
||||||
|
** the variable that pOut points to is unchanged.
|
||||||
**
|
**
|
||||||
** See also: [sqlite3_stmt_scanstatus_reset()]
|
** See also: [sqlite3_stmt_scanstatus_reset()]
|
||||||
*/
|
*/
|
||||||
|
@ -9915,6 +10019,19 @@ SQLITE_API int sqlite3_stmt_scanstatus(
|
||||||
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
|
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
|
||||||
void *pOut /* Result written here */
|
void *pOut /* Result written here */
|
||||||
);
|
);
|
||||||
|
SQLITE_API int sqlite3_stmt_scanstatus_v2(
|
||||||
|
sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
|
||||||
|
int idx, /* Index of loop to report on */
|
||||||
|
int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
|
||||||
|
int flags, /* Mask of flags defined below */
|
||||||
|
void *pOut /* Result written here */
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Prepared Statement Scan Status
|
||||||
|
** KEYWORDS: {scan status flags}
|
||||||
|
*/
|
||||||
|
#define SQLITE_SCANSTAT_COMPLEX 0x0001
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Zero Scan-Status Counters
|
** CAPI3REF: Zero Scan-Status Counters
|
||||||
|
@ -10005,6 +10122,10 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
|
||||||
** function is not defined for operations on WITHOUT ROWID tables, or for
|
** function is not defined for operations on WITHOUT ROWID tables, or for
|
||||||
** DELETE operations on rowid tables.
|
** DELETE operations on rowid tables.
|
||||||
**
|
**
|
||||||
|
** ^The sqlite3_preupdate_hook(D,C,P) function returns the P argument from
|
||||||
|
** the previous call on the same [database connection] D, or NULL for
|
||||||
|
** the first call on D.
|
||||||
|
**
|
||||||
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
|
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()],
|
||||||
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
|
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces
|
||||||
** provide additional information about a preupdate event. These routines
|
** provide additional information about a preupdate event. These routines
|
||||||
|
@ -10410,6 +10531,19 @@ SQLITE_API int sqlite3_deserialize(
|
||||||
# undef double
|
# undef double
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__wasi__)
|
||||||
|
# undef SQLITE_WASI
|
||||||
|
# define SQLITE_WASI 1
|
||||||
|
# undef SQLITE_OMIT_WAL
|
||||||
|
# define SQLITE_OMIT_WAL 1/* because it requires shared memory APIs */
|
||||||
|
# ifndef SQLITE_OMIT_LOAD_EXTENSION
|
||||||
|
# define SQLITE_OMIT_LOAD_EXTENSION
|
||||||
|
# endif
|
||||||
|
# ifndef SQLITE_THREADSAFE
|
||||||
|
# define SQLITE_THREADSAFE 0
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* End of the 'extern "C"' block */
|
} /* End of the 'extern "C"' block */
|
||||||
#endif
|
#endif
|
||||||
|
|
12
sqlite3ext.h
12
sqlite3ext.h
|
@ -331,9 +331,9 @@ struct sqlite3_api_routines {
|
||||||
const char *(*filename_journal)(const char*);
|
const char *(*filename_journal)(const char*);
|
||||||
const char *(*filename_wal)(const char*);
|
const char *(*filename_wal)(const char*);
|
||||||
/* Version 3.32.0 and later */
|
/* Version 3.32.0 and later */
|
||||||
char *(*create_filename)(const char*,const char*,const char*,
|
const char *(*create_filename)(const char*,const char*,const char*,
|
||||||
int,const char**);
|
int,const char**);
|
||||||
void (*free_filename)(char*);
|
void (*free_filename)(const char*);
|
||||||
sqlite3_file *(*database_file_object)(const char*);
|
sqlite3_file *(*database_file_object)(const char*);
|
||||||
/* Version 3.34.0 and later */
|
/* Version 3.34.0 and later */
|
||||||
int (*txn_state)(sqlite3*,const char*);
|
int (*txn_state)(sqlite3*,const char*);
|
||||||
|
@ -357,6 +357,10 @@ struct sqlite3_api_routines {
|
||||||
unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
|
unsigned char *(*serialize)(sqlite3*,const char *,sqlite3_int64*,
|
||||||
unsigned int);
|
unsigned int);
|
||||||
const char *(*db_name)(sqlite3*,int);
|
const char *(*db_name)(sqlite3*,int);
|
||||||
|
/* Version 3.40.0 and later */
|
||||||
|
int (*value_encoding)(sqlite3_value*);
|
||||||
|
/* Version 3.41.0 and later */
|
||||||
|
int (*is_interrupted)(sqlite3*);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -681,6 +685,10 @@ typedef int (*sqlite3_loadext_entry)(
|
||||||
#define sqlite3_serialize sqlite3_api->serialize
|
#define sqlite3_serialize sqlite3_api->serialize
|
||||||
#endif
|
#endif
|
||||||
#define sqlite3_db_name sqlite3_api->db_name
|
#define sqlite3_db_name sqlite3_api->db_name
|
||||||
|
/* Version 3.40.0 and later */
|
||||||
|
#define sqlite3_value_encoding sqlite3_api->value_encoding
|
||||||
|
/* Version 3.41.0 and later */
|
||||||
|
#define sqlite3_is_interrupted sqlite3_api->is_interrupted
|
||||||
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
|
||||||
|
|
||||||
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
|
||||||
|
|
Loading…
Add table
Reference in a new issue