|
|
|
|
@ -123,9 +123,9 @@ extern "C" { |
|
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
|
|
|
|
** [sqlite_version()] and [sqlite_source_id()]. |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_VERSION "3.31.1" |
|
|
|
|
#define SQLITE_VERSION_NUMBER 3031001 |
|
|
|
|
#define SQLITE_SOURCE_ID "2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6" |
|
|
|
|
#define SQLITE_VERSION "3.34.1" |
|
|
|
|
#define SQLITE_VERSION_NUMBER 3034001 |
|
|
|
|
#define SQLITE_SOURCE_ID "2021-01-20 14:10:07 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f" |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Run-Time Library Version Numbers |
|
|
|
|
@ -299,26 +299,22 @@ typedef sqlite_uint64 sqlite3_uint64; |
|
|
|
|
** the [sqlite3] object is successfully destroyed and all associated |
|
|
|
|
** resources are deallocated. |
|
|
|
|
** |
|
|
|
|
** ^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/or 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. |
|
|
|
|
** |
|
|
|
|
** Applications should [sqlite3_finalize | finalize] all [prepared statements], |
|
|
|
|
** [sqlite3_blob_close | close] all [BLOB handles], and
|
|
|
|
|
** Ideally, 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] and the deallocation |
|
|
|
|
** of resources is deferred until all [prepared statements], [BLOB handles], |
|
|
|
|
** and [sqlite3_backup] objects are also destroyed. |
|
|
|
|
** with the [sqlite3] object prior to attempting to close the object. |
|
|
|
|
** ^If the database connection is associated with unfinalized prepared |
|
|
|
|
** statements, BLOB handlers, and/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, unclosed BLOB handlers, and/or unfinished sqlite3_backups, |
|
|
|
|
** it returns [SQLITE_OK] regardless, but instead of deallocating the database |
|
|
|
|
** connection immediately, it marks the database connection as an unusable |
|
|
|
|
** "zombie" and makes arrangements to automatically deallocate the database |
|
|
|
|
** connection after all prepared statements are finalized, all BLOB handles |
|
|
|
|
** are closed, and all backups have 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 an [sqlite3] object is destroyed while a transaction is open, |
|
|
|
|
** the transaction is automatically rolled back. |
|
|
|
|
@ -507,10 +503,13 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
#define SQLITE_IOERR_BEGIN_ATOMIC (SQLITE_IOERR | (29<<8)) |
|
|
|
|
#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8)) |
|
|
|
|
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8)) |
|
|
|
|
#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8)) |
|
|
|
|
#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8)) |
|
|
|
|
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8)) |
|
|
|
|
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8)) |
|
|
|
|
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8)) |
|
|
|
|
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8)) |
|
|
|
|
#define SQLITE_BUSY_TIMEOUT (SQLITE_BUSY | (3<<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)) |
|
|
|
|
@ -519,6 +518,7 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
#define SQLITE_CANTOPEN_SYMLINK (SQLITE_CANTOPEN | (6<<8)) |
|
|
|
|
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8)) |
|
|
|
|
#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8)) |
|
|
|
|
#define SQLITE_CORRUPT_INDEX (SQLITE_CORRUPT | (3<<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)) |
|
|
|
|
@ -565,7 +565,7 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
#define SQLITE_OPEN_MAIN_JOURNAL 0x00000800 /* VFS only */ |
|
|
|
|
#define SQLITE_OPEN_TEMP_JOURNAL 0x00001000 /* VFS only */ |
|
|
|
|
#define SQLITE_OPEN_SUBJOURNAL 0x00002000 /* VFS only */ |
|
|
|
|
#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ |
|
|
|
|
#define SQLITE_OPEN_SUPER_JOURNAL 0x00004000 /* VFS only */ |
|
|
|
|
#define SQLITE_OPEN_NOMUTEX 0x00008000 /* Ok for sqlite3_open_v2() */ |
|
|
|
|
#define SQLITE_OPEN_FULLMUTEX 0x00010000 /* Ok for sqlite3_open_v2() */ |
|
|
|
|
#define SQLITE_OPEN_SHAREDCACHE 0x00020000 /* Ok for sqlite3_open_v2() */ |
|
|
|
|
@ -574,6 +574,9 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
#define SQLITE_OPEN_NOFOLLOW 0x01000000 /* Ok for sqlite3_open_v2() */ |
|
|
|
|
|
|
|
|
|
/* Reserved: 0x00F00000 */ |
|
|
|
|
/* Legacy compatibility: */ |
|
|
|
|
#define SQLITE_OPEN_MASTER_JOURNAL 0x00004000 /* VFS only */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Device Characteristics |
|
|
|
|
@ -871,7 +874,7 @@ struct sqlite3_io_methods { |
|
|
|
|
** 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
|
|
|
|
|
** string containing the transactions super-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. |
|
|
|
|
@ -1087,10 +1090,12 @@ struct sqlite3_io_methods { |
|
|
|
|
** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE]. |
|
|
|
|
** |
|
|
|
|
** <li>[[SQLITE_FCNTL_LOCK_TIMEOUT]] |
|
|
|
|
** The [SQLITE_FCNTL_LOCK_TIMEOUT] opcode causes attempts to obtain |
|
|
|
|
** 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. |
|
|
|
|
** The [SQLITE_FCNTL_LOCK_TIMEOUT] opcode is used to configure a VFS |
|
|
|
|
** to block for up to M milliseconds before failing when attempting to |
|
|
|
|
** obtain a file lock using the xLock or xShmLock methods of the VFS. |
|
|
|
|
** The parameter is a pointer to a 32-bit signed integer that contains |
|
|
|
|
** the value that M is to be set to. Before returning, the 32-bit signed |
|
|
|
|
** integer is overwritten with the previous value of M. |
|
|
|
|
** |
|
|
|
|
** <li>[[SQLITE_FCNTL_DATA_VERSION]] |
|
|
|
|
** The [SQLITE_FCNTL_DATA_VERSION] opcode is used to detect changes to |
|
|
|
|
@ -1112,6 +1117,11 @@ struct sqlite3_io_methods { |
|
|
|
|
** happen either internally or externally and that are associated with |
|
|
|
|
** a particular attached database. |
|
|
|
|
** |
|
|
|
|
** <li>[[SQLITE_FCNTL_CKPT_START]] |
|
|
|
|
** The [SQLITE_FCNTL_CKPT_START] opcode is invoked from within a checkpoint |
|
|
|
|
** in wal mode before the client starts to copy pages from the wal |
|
|
|
|
** file to the database file. |
|
|
|
|
** |
|
|
|
|
** <li>[[SQLITE_FCNTL_CKPT_DONE]] |
|
|
|
|
** The [SQLITE_FCNTL_CKPT_DONE] opcode is invoked from within a checkpoint |
|
|
|
|
** in wal mode after the client has finished copying pages from the wal |
|
|
|
|
@ -1155,6 +1165,8 @@ struct sqlite3_io_methods { |
|
|
|
|
#define SQLITE_FCNTL_DATA_VERSION 35 |
|
|
|
|
#define SQLITE_FCNTL_SIZE_LIMIT 36 |
|
|
|
|
#define SQLITE_FCNTL_CKPT_DONE 37 |
|
|
|
|
#define SQLITE_FCNTL_RESERVE_BYTES 38 |
|
|
|
|
#define SQLITE_FCNTL_CKPT_START 39 |
|
|
|
|
|
|
|
|
|
/* deprecated names */ |
|
|
|
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE |
|
|
|
|
@ -1259,7 +1271,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routines; |
|
|
|
|
** <li> [SQLITE_OPEN_TEMP_JOURNAL] |
|
|
|
|
** <li> [SQLITE_OPEN_TRANSIENT_DB] |
|
|
|
|
** <li> [SQLITE_OPEN_SUBJOURNAL] |
|
|
|
|
** <li> [SQLITE_OPEN_MASTER_JOURNAL] |
|
|
|
|
** <li> [SQLITE_OPEN_SUPER_JOURNAL] |
|
|
|
|
** <li> [SQLITE_OPEN_WAL] |
|
|
|
|
** </ul>)^ |
|
|
|
|
** |
|
|
|
|
@ -1637,7 +1649,7 @@ SQLITE_API int sqlite3_db_config(sqlite3*, int op, ...); |
|
|
|
|
** by xInit. The pAppData pointer is used as the only parameter to |
|
|
|
|
** xInit and xShutdown. |
|
|
|
|
** |
|
|
|
|
** SQLite holds the [SQLITE_MUTEX_STATIC_MASTER] mutex when it invokes |
|
|
|
|
** SQLite holds the [SQLITE_MUTEX_STATIC_MAIN] mutex when it invokes |
|
|
|
|
** the xInit method, so the xInit method need not be threadsafe. The |
|
|
|
|
** xShutdown method is only called from [sqlite3_shutdown()] so it does |
|
|
|
|
** not need to be threadsafe either. For all other methods, SQLite |
|
|
|
|
@ -2275,8 +2287,7 @@ struct sqlite3_mem_methods { |
|
|
|
|
** [[SQLITE_DBCONFIG_TRUSTED_SCHEMA]] |
|
|
|
|
** <dt>SQLITE_DBCONFIG_TRUSTED_SCHEMA</td> |
|
|
|
|
** <dd>The SQLITE_DBCONFIG_TRUSTED_SCHEMA option tells SQLite to |
|
|
|
|
** assume that database schemas (the contents of the [sqlite_master] tables) |
|
|
|
|
** are untainted by malicious content. |
|
|
|
|
** assume that database schemas are untainted by malicious content. |
|
|
|
|
** When the SQLITE_DBCONFIG_TRUSTED_SCHEMA option is disabled, SQLite |
|
|
|
|
** takes additional defensive steps to protect the application from harm |
|
|
|
|
** including: |
|
|
|
|
@ -3533,8 +3544,19 @@ SQLITE_API int sqlite3_open_v2( |
|
|
|
|
** that check if a database file was a URI that contained a specific query |
|
|
|
|
** parameter, and if so obtains the value of that query parameter. |
|
|
|
|
** |
|
|
|
|
** If F is the database filename pointer passed into the xOpen() method of
|
|
|
|
|
** a VFS implementation or it is the return value of [sqlite3_db_filename()] |
|
|
|
|
** The first parameter to these interfaces (hereafter referred to |
|
|
|
|
** as F) must be one of: |
|
|
|
|
** <ul> |
|
|
|
|
** <li> A database filename pointer created by the SQLite core and |
|
|
|
|
** passed into the xOpen() method of a VFS implemention, or |
|
|
|
|
** <li> A filename obtained from [sqlite3_db_filename()], or |
|
|
|
|
** <li> A new filename constructed using [sqlite3_create_filename()]. |
|
|
|
|
** </ul> |
|
|
|
|
** If the F parameter is not one of the above, then the behavior is |
|
|
|
|
** undefined and probably undesirable. Older versions of SQLite were |
|
|
|
|
** more tolerant of invalid F parameters than newer versions. |
|
|
|
|
** |
|
|
|
|
** If F is a suitable filename (as described in the previous paragraph) |
|
|
|
|
** and if P is the name of the query parameter, then |
|
|
|
|
** sqlite3_uri_parameter(F,P) returns the value of the P |
|
|
|
|
** parameter if it exists or a NULL pointer if P does not appear as a |
|
|
|
|
@ -3617,6 +3639,78 @@ SQLITE_API const char *sqlite3_filename_database(const char*); |
|
|
|
|
SQLITE_API const char *sqlite3_filename_journal(const char*); |
|
|
|
|
SQLITE_API const char *sqlite3_filename_wal(const char*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Database File Corresponding To A Journal |
|
|
|
|
** |
|
|
|
|
** ^If X is the name of a rollback or WAL-mode journal file that is |
|
|
|
|
** passed into the xOpen method of [sqlite3_vfs], then |
|
|
|
|
** sqlite3_database_file_object(X) returns a pointer to the [sqlite3_file] |
|
|
|
|
** object that represents the main database file. |
|
|
|
|
** |
|
|
|
|
** This routine is intended for use in custom [VFS] implementations |
|
|
|
|
** only. It is not a general-purpose interface. |
|
|
|
|
** The argument sqlite3_file_object(X) must be a filename pointer that |
|
|
|
|
** has been passed into [sqlite3_vfs].xOpen method where the |
|
|
|
|
** flags parameter to xOpen contains one of the bits |
|
|
|
|
** [SQLITE_OPEN_MAIN_JOURNAL] or [SQLITE_OPEN_WAL]. Any other use |
|
|
|
|
** of this routine results in undefined and probably undesirable |
|
|
|
|
** behavior. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Create and Destroy VFS Filenames |
|
|
|
|
** |
|
|
|
|
** These interfces are provided for use by [VFS shim] implementations and |
|
|
|
|
** are not useful outside of that context. |
|
|
|
|
** |
|
|
|
|
** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of |
|
|
|
|
** database filename D with corresponding journal file J and WAL file W and |
|
|
|
|
** with N URI parameters key/values pairs in the array P. The result from |
|
|
|
|
** sqlite3_create_filename(D,J,W,N,P) is a pointer to a database filename that |
|
|
|
|
** is safe to pass to routines like: |
|
|
|
|
** <ul> |
|
|
|
|
** <li> [sqlite3_uri_parameter()], |
|
|
|
|
** <li> [sqlite3_uri_boolean()], |
|
|
|
|
** <li> [sqlite3_uri_int64()], |
|
|
|
|
** <li> [sqlite3_uri_key()], |
|
|
|
|
** <li> [sqlite3_filename_database()], |
|
|
|
|
** <li> [sqlite3_filename_journal()], or |
|
|
|
|
** <li> [sqlite3_filename_wal()]. |
|
|
|
|
** </ul> |
|
|
|
|
** If a memory allocation error occurs, sqlite3_create_filename() might |
|
|
|
|
** return a NULL pointer. The memory obtained from sqlite3_create_filename(X) |
|
|
|
|
** must be released by a corresponding call to sqlite3_free_filename(Y). |
|
|
|
|
** |
|
|
|
|
** The P parameter in sqlite3_create_filename(D,J,W,N,P) should be an array |
|
|
|
|
** of 2*N pointers to strings. Each pair of pointers in this array corresponds |
|
|
|
|
** to a key and value for a query parameter. The P parameter may be a NULL |
|
|
|
|
** pointer if N is zero. None of the 2*N pointers in the P array may be |
|
|
|
|
** NULL pointers and key pointers should not be empty strings. |
|
|
|
|
** None of the D, J, or W parameters to sqlite3_create_filename(D,J,W,N,P) may |
|
|
|
|
** be NULL pointers, though they can be empty strings. |
|
|
|
|
** |
|
|
|
|
** The sqlite3_free_filename(Y) routine releases a memory allocation |
|
|
|
|
** previously obtained from sqlite3_create_filename(). Invoking |
|
|
|
|
** sqlite3_free_filename(Y) where Y is a NULL pointer is a harmless no-op. |
|
|
|
|
** |
|
|
|
|
** If the Y parameter to sqlite3_free_filename(Y) is anything other |
|
|
|
|
** than a NULL pointer or a pointer previously acquired from |
|
|
|
|
** sqlite3_create_filename(), then bad things such as heap |
|
|
|
|
** corruption or segfaults may occur. The value Y should not be |
|
|
|
|
** used again after sqlite3_free_filename(Y) has been called. This means |
|
|
|
|
** that if the [sqlite3_vfs.xOpen()] method of a VFS has been called using Y, |
|
|
|
|
** then the corresponding [sqlite3_module.xClose() method should also be |
|
|
|
|
** invoked prior to calling sqlite3_free_filename(Y). |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API char *sqlite3_create_filename( |
|
|
|
|
const char *zDatabase, |
|
|
|
|
const char *zJournal, |
|
|
|
|
const char *zWal, |
|
|
|
|
int nParam, |
|
|
|
|
const char **azParam |
|
|
|
|
); |
|
|
|
|
SQLITE_API void sqlite3_free_filename(char*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Error Codes And Messages |
|
|
|
|
@ -4199,12 +4293,30 @@ typedef struct sqlite3_context sqlite3_context; |
|
|
|
|
** [sqlite3_bind_parameter_index()] API if desired. ^The index |
|
|
|
|
** for "?NNN" parameters is the value of NNN. |
|
|
|
|
** ^The NNN value must be between 1 and the [sqlite3_limit()] |
|
|
|
|
** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 999). |
|
|
|
|
** parameter [SQLITE_LIMIT_VARIABLE_NUMBER] (default value: 32766). |
|
|
|
|
** |
|
|
|
|
** ^The third argument is the value to bind to the parameter. |
|
|
|
|
** ^If the third parameter to sqlite3_bind_text() or sqlite3_bind_text16() |
|
|
|
|
** or sqlite3_bind_blob() is a NULL pointer then the fourth parameter |
|
|
|
|
** is ignored and the end result is the same as sqlite3_bind_null(). |
|
|
|
|
** ^If the third parameter to sqlite3_bind_text() is not NULL, then |
|
|
|
|
** it should be a pointer to well-formed UTF8 text. |
|
|
|
|
** ^If the third parameter to sqlite3_bind_text16() is not NULL, then |
|
|
|
|
** it should be a pointer to well-formed UTF16 text. |
|
|
|
|
** ^If the third parameter to sqlite3_bind_text64() is not NULL, then |
|
|
|
|
** it should be a pointer to a well-formed unicode string that is |
|
|
|
|
** either UTF8 if the sixth parameter is SQLITE_UTF8, or UTF16 |
|
|
|
|
** otherwise. |
|
|
|
|
** |
|
|
|
|
** [[byte-order determination rules]] ^The byte-order of |
|
|
|
|
** UTF16 input text is determined by the byte-order mark (BOM, U+FEFF) |
|
|
|
|
** found in first character, which is removed, or in the absence of a BOM |
|
|
|
|
** the byte order is the native byte order of the host |
|
|
|
|
** machine for sqlite3_bind_text16() or the byte order specified in |
|
|
|
|
** the 6th parameter for sqlite3_bind_text64().)^ |
|
|
|
|
** ^If UTF16 input text contains invalid unicode |
|
|
|
|
** characters, then SQLite might change those invalid characters |
|
|
|
|
** into the unicode replacement character: U+FFFD. |
|
|
|
|
** |
|
|
|
|
** ^(In those routines that have a fourth argument, its value is the |
|
|
|
|
** number of bytes in the parameter. To be clear: the value is the |
|
|
|
|
@ -4218,7 +4330,7 @@ typedef struct sqlite3_context sqlite3_context; |
|
|
|
|
** or sqlite3_bind_text16() or sqlite3_bind_text64() then |
|
|
|
|
** that parameter must be the byte offset |
|
|
|
|
** where the NUL terminator would occur assuming the string were NUL |
|
|
|
|
** terminated. If any NUL characters occur at byte offsets less than
|
|
|
|
|
** terminated. If any NUL characters occurs at byte offsets less than |
|
|
|
|
** the value of the fourth parameter then the resulting string value will |
|
|
|
|
** contain embedded NULs. The result of expressions involving strings |
|
|
|
|
** with embedded NULs is undefined. |
|
|
|
|
@ -5386,7 +5498,7 @@ SQLITE_API void sqlite3_value_free(sqlite3_value*); |
|
|
|
|
** |
|
|
|
|
** ^(The amount of space allocated by sqlite3_aggregate_context(C,N) is |
|
|
|
|
** determined by the N parameter on first successful call. Changing the |
|
|
|
|
** value of N in any subsequents call to sqlite3_aggregate_context() within |
|
|
|
|
** value of N in any subsequent call to sqlite3_aggregate_context() within |
|
|
|
|
** the same aggregate function instance will not resize the memory |
|
|
|
|
** allocation.)^ Within the xFinal callback, it is customary to set |
|
|
|
|
** N=0 in calls to sqlite3_aggregate_context(C,N) so that no |
|
|
|
|
@ -5543,8 +5655,9 @@ typedef void (*sqlite3_destructor_type)(void*); |
|
|
|
|
** 2nd parameter of sqlite3_result_error() or sqlite3_result_error16() |
|
|
|
|
** as the text of an error message. ^SQLite interprets the error |
|
|
|
|
** message string from sqlite3_result_error() as UTF-8. ^SQLite |
|
|
|
|
** interprets the string from sqlite3_result_error16() as UTF-16 in native |
|
|
|
|
** byte order. ^If the third parameter to sqlite3_result_error() |
|
|
|
|
** interprets the string from sqlite3_result_error16() as UTF-16 using |
|
|
|
|
** the same [byte-order determination rules] as [sqlite3_bind_text16()]. |
|
|
|
|
** ^If the third parameter to sqlite3_result_error() |
|
|
|
|
** or sqlite3_result_error16() is negative then SQLite takes as the error |
|
|
|
|
** message all text up through the first zero character. |
|
|
|
|
** ^If the third parameter to sqlite3_result_error() or |
|
|
|
|
@ -5612,6 +5725,25 @@ typedef void (*sqlite3_destructor_type)(void*); |
|
|
|
|
** then SQLite makes a copy of the result into space obtained |
|
|
|
|
** from [sqlite3_malloc()] before it returns. |
|
|
|
|
** |
|
|
|
|
** ^For the sqlite3_result_text16(), sqlite3_result_text16le(), and |
|
|
|
|
** sqlite3_result_text16be() routines, and for sqlite3_result_text64() |
|
|
|
|
** when the encoding is not UTF8, if the input UTF16 begins with a |
|
|
|
|
** byte-order mark (BOM, U+FEFF) then the BOM is removed from the |
|
|
|
|
** string and the rest of the string is interpreted according to the |
|
|
|
|
** byte-order specified by the BOM. ^The byte-order specified by |
|
|
|
|
** the BOM at the beginning of the text overrides the byte-order |
|
|
|
|
** specified by the interface procedure. ^So, for example, if |
|
|
|
|
** sqlite3_result_text16le() is invoked with text that begins |
|
|
|
|
** with bytes 0xfe, 0xff (a big-endian byte-order mark) then the |
|
|
|
|
** first two bytes of input are skipped and the remaining input |
|
|
|
|
** is interpreted as UTF16BE text. |
|
|
|
|
** |
|
|
|
|
** ^For UTF16 input text to the sqlite3_result_text16(), |
|
|
|
|
** sqlite3_result_text16be(), sqlite3_result_text16le(), and |
|
|
|
|
** sqlite3_result_text64() routines, if the text contains invalid |
|
|
|
|
** UTF16 characters, the invalid characters might be converted |
|
|
|
|
** into the unicode replacement character, U+FFFD. |
|
|
|
|
** |
|
|
|
|
** ^The sqlite3_result_value() interface sets the result of |
|
|
|
|
** the application-defined function to be a copy of the |
|
|
|
|
** [unprotected sqlite3_value] object specified by the 2nd parameter. ^The |
|
|
|
|
@ -5817,51 +5949,6 @@ SQLITE_API int sqlite3_collation_needed16( |
|
|
|
|
void(*)(void*,sqlite3*,int eTextRep,const void*) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
#ifdef SQLITE_HAS_CODEC |
|
|
|
|
/*
|
|
|
|
|
** Specify the key for an encrypted database. This routine should be |
|
|
|
|
** called right after sqlite3_open(). |
|
|
|
|
** |
|
|
|
|
** The code to implement this API is not available in the public release |
|
|
|
|
** of SQLite. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_key( |
|
|
|
|
sqlite3 *db, /* Database to be rekeyed */ |
|
|
|
|
const void *pKey, int nKey /* The key */ |
|
|
|
|
); |
|
|
|
|
SQLITE_API int sqlite3_key_v2( |
|
|
|
|
sqlite3 *db, /* Database to be rekeyed */ |
|
|
|
|
const char *zDbName, /* Name of the database */ |
|
|
|
|
const void *pKey, int nKey /* The key */ |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** Change the key on an open database. If the current database is not |
|
|
|
|
** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the |
|
|
|
|
** database is decrypted. |
|
|
|
|
** |
|
|
|
|
** The code to implement this API is not available in the public release |
|
|
|
|
** of SQLite. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_rekey( |
|
|
|
|
sqlite3 *db, /* Database to be rekeyed */ |
|
|
|
|
const void *pKey, int nKey /* The new key */ |
|
|
|
|
); |
|
|
|
|
SQLITE_API int sqlite3_rekey_v2( |
|
|
|
|
sqlite3 *db, /* Database to be rekeyed */ |
|
|
|
|
const char *zDbName, /* Name of the database */ |
|
|
|
|
const void *pKey, int nKey /* The new key */ |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** Specify the activation key for a SEE database. Unless
|
|
|
|
|
** activated, none of the SEE routines will work. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API void sqlite3_activate_see( |
|
|
|
|
const char *zPassPhrase /* Activation phrase */ |
|
|
|
|
); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef SQLITE_ENABLE_CEROD |
|
|
|
|
/*
|
|
|
|
|
** Specify the activation key for a CEROD database. Unless |
|
|
|
|
@ -6100,6 +6187,57 @@ SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName); |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Determine the transaction state of a database |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
** |
|
|
|
|
** ^The sqlite3_txn_state(D,S) interface returns the current |
|
|
|
|
** [transaction state] of schema S in database connection D. ^If S is NULL, |
|
|
|
|
** then the highest transaction state of any schema on database connection D |
|
|
|
|
** is returned. Transaction states are (in order of lowest to highest): |
|
|
|
|
** <ol> |
|
|
|
|
** <li value="0"> SQLITE_TXN_NONE |
|
|
|
|
** <li value="1"> SQLITE_TXN_READ |
|
|
|
|
** <li value="2"> SQLITE_TXN_WRITE |
|
|
|
|
** </ol> |
|
|
|
|
** ^If the S argument to sqlite3_txn_state(D,S) is not the name of |
|
|
|
|
** a valid schema, then -1 is returned. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Allowed return values from [sqlite3_txn_state()] |
|
|
|
|
** KEYWORDS: {transaction state} |
|
|
|
|
** |
|
|
|
|
** These constants define the current transaction state of a database file. |
|
|
|
|
** ^The [sqlite3_txn_state(D,S)] interface returns one of these |
|
|
|
|
** constants in order to describe the transaction state of schema S |
|
|
|
|
** in [database connection] D. |
|
|
|
|
** |
|
|
|
|
** <dl> |
|
|
|
|
** [[SQLITE_TXN_NONE]] <dt>SQLITE_TXN_NONE</dt> |
|
|
|
|
** <dd>The SQLITE_TXN_NONE state means that no transaction is currently |
|
|
|
|
** pending.</dd> |
|
|
|
|
** |
|
|
|
|
** [[SQLITE_TXN_READ]] <dt>SQLITE_TXN_READ</dt> |
|
|
|
|
** <dd>The SQLITE_TXN_READ state means that the database is currently |
|
|
|
|
** in a read transaction. Content has been read from the database file |
|
|
|
|
** but nothing in the database file has changed. The transaction state |
|
|
|
|
** will advanced to SQLITE_TXN_WRITE if any changes occur and there are |
|
|
|
|
** no other conflicting concurrent write transactions. The transaction |
|
|
|
|
** state will revert to SQLITE_TXN_NONE following a [ROLLBACK] or |
|
|
|
|
** [COMMIT].</dd> |
|
|
|
|
** |
|
|
|
|
** [[SQLITE_TXN_WRITE]] <dt>SQLITE_TXN_WRITE</dt> |
|
|
|
|
** <dd>The SQLITE_TXN_WRITE state means that the database is currently |
|
|
|
|
** in a write transaction. Content has been written to the database file |
|
|
|
|
** but has not yet committed. The transaction state will change to |
|
|
|
|
** to SQLITE_TXN_NONE at the next [ROLLBACK] or [COMMIT].</dd> |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_TXN_NONE 0 |
|
|
|
|
#define SQLITE_TXN_READ 1 |
|
|
|
|
#define SQLITE_TXN_WRITE 2 |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Find the next prepared statement |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
@ -6190,7 +6328,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*); |
|
|
|
|
** ^In the case of an update, this is the [rowid] after the update takes place. |
|
|
|
|
** |
|
|
|
|
** ^(The update hook is not invoked when internal system tables are |
|
|
|
|
** modified (i.e. sqlite_master and sqlite_sequence).)^ |
|
|
|
|
** modified (i.e. sqlite_sequence).)^ |
|
|
|
|
** ^The update hook is not invoked when [WITHOUT ROWID] tables are modified. |
|
|
|
|
** |
|
|
|
|
** ^In the current implementation, the update hook |
|
|
|
|
@ -7292,7 +7430,7 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*); |
|
|
|
|
** <ul> |
|
|
|
|
** <li> SQLITE_MUTEX_FAST |
|
|
|
|
** <li> SQLITE_MUTEX_RECURSIVE |
|
|
|
|
** <li> SQLITE_MUTEX_STATIC_MASTER |
|
|
|
|
** <li> SQLITE_MUTEX_STATIC_MAIN |
|
|
|
|
** <li> SQLITE_MUTEX_STATIC_MEM |
|
|
|
|
** <li> SQLITE_MUTEX_STATIC_OPEN |
|
|
|
|
** <li> SQLITE_MUTEX_STATIC_PRNG |
|
|
|
|
@ -7494,7 +7632,7 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_MUTEX_FAST 0 |
|
|
|
|
#define SQLITE_MUTEX_RECURSIVE 1 |
|
|
|
|
#define SQLITE_MUTEX_STATIC_MASTER 2 |
|
|
|
|
#define SQLITE_MUTEX_STATIC_MAIN 2 |
|
|
|
|
#define SQLITE_MUTEX_STATIC_MEM 3 /* sqlite3_malloc() */ |
|
|
|
|
#define SQLITE_MUTEX_STATIC_MEM2 4 /* NOT USED */ |
|
|
|
|
#define SQLITE_MUTEX_STATIC_OPEN 4 /* sqlite3BtreeOpen() */ |
|
|
|
|
@ -7509,6 +7647,10 @@ SQLITE_API int sqlite3_mutex_notheld(sqlite3_mutex*); |
|
|
|
|
#define SQLITE_MUTEX_STATIC_VFS2 12 /* For use by extension VFS */ |
|
|
|
|
#define SQLITE_MUTEX_STATIC_VFS3 13 /* For use by application VFS */ |
|
|
|
|
|
|
|
|
|
/* Legacy compatibility: */ |
|
|
|
|
#define SQLITE_MUTEX_STATIC_MASTER 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Retrieve the mutex for a database connection |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
@ -7604,7 +7746,7 @@ SQLITE_API int sqlite3_test_control(int op, ...); |
|
|
|
|
#define SQLITE_TESTCTRL_PENDING_BYTE 11 |
|
|
|
|
#define SQLITE_TESTCTRL_ASSERT 12 |
|
|
|
|
#define SQLITE_TESTCTRL_ALWAYS 13 |
|
|
|
|
#define SQLITE_TESTCTRL_RESERVE 14 |
|
|
|
|
#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */ |
|
|
|
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15 |
|
|
|
|
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */ |
|
|
|
|
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */ |
|
|
|
|
@ -7622,7 +7764,8 @@ SQLITE_API int sqlite3_test_control(int op, ...); |
|
|
|
|
#define SQLITE_TESTCTRL_RESULT_INTREAL 27 |
|
|
|
|
#define SQLITE_TESTCTRL_PRNG_SEED 28 |
|
|
|
|
#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29 |
|
|
|
|
#define SQLITE_TESTCTRL_LAST 29 /* Largest TESTCTRL */ |
|
|
|
|
#define SQLITE_TESTCTRL_SEEK_COUNT 30 |
|
|
|
|
#define SQLITE_TESTCTRL_LAST 30 /* Largest TESTCTRL */ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: SQL Keyword Checking |
|
|
|
|
@ -9102,10 +9245,11 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *); |
|
|
|
|
** CAPI3REF: Determine If Virtual Table Column Access Is For UPDATE |
|
|
|
|
** |
|
|
|
|
** If the sqlite3_vtab_nochange(X) routine is called within the [xColumn] |
|
|
|
|
** method of a [virtual table], then it returns true if and only if the |
|
|
|
|
** method of a [virtual table], then it might return true if the |
|
|
|
|
** column is being fetched as part of an UPDATE operation during which the |
|
|
|
|
** column value will not change. Applications might use this to substitute |
|
|
|
|
** a return value that is less expensive to compute and that the corresponding |
|
|
|
|
** column value will not change. The virtual table implementation can use |
|
|
|
|
** this hint as permission to substitute a return value that is less |
|
|
|
|
** expensive to compute and that the corresponding |
|
|
|
|
** [xUpdate] method understands as a "no-change" value. |
|
|
|
|
** |
|
|
|
|
** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that |
|
|
|
|
@ -9114,6 +9258,12 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *); |
|
|
|
|
** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces]. |
|
|
|
|
** In that case, [sqlite3_value_nochange(X)] will return true for the |
|
|
|
|
** same column in the [xUpdate] method. |
|
|
|
|
** |
|
|
|
|
** The sqlite3_vtab_nochange() routine is an optimization. Virtual table |
|
|
|
|
** implementations should continue to give a correct answer even if the |
|
|
|
|
** sqlite3_vtab_nochange() interface were to always return false. In the |
|
|
|
|
** current implementation, the sqlite3_vtab_nochange() interface does always |
|
|
|
|
** returns false for the enhanced [UPDATE FROM] statement. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*); |
|
|
|
|
|
|
|
|
|
@ -9255,6 +9405,7 @@ SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Flush caches to disk mid-transaction |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
** |
|
|
|
|
** ^If a write-transaction is open on [database connection] D when the |
|
|
|
|
** [sqlite3_db_cacheflush(D)] interface invoked, any dirty |
|
|
|
|
@ -9287,6 +9438,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: The pre-update hook. |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
** |
|
|
|
|
** ^These interfaces are only available if SQLite is compiled using the |
|
|
|
|
** [SQLITE_ENABLE_PREUPDATE_HOOK] compile-time option. |
|
|
|
|
@ -9304,7 +9456,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*); |
|
|
|
|
** |
|
|
|
|
** ^The preupdate hook only fires for changes to real database tables; the |
|
|
|
|
** preupdate hook is not invoked for changes to [virtual tables] or to |
|
|
|
|
** system tables like sqlite_master or sqlite_stat1. |
|
|
|
|
** system tables like sqlite_sequence or sqlite_stat1. |
|
|
|
|
** |
|
|
|
|
** ^The second parameter to the preupdate callback is a pointer to |
|
|
|
|
** the [database connection] that registered the preupdate hook. |
|
|
|
|
@ -9327,7 +9479,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*); |
|
|
|
|
** seventh parameter is the final rowid value of the row being inserted |
|
|
|
|
** or updated. The value of the seventh parameter passed to the callback |
|
|
|
|
** function is not defined for operations on WITHOUT ROWID tables, or for |
|
|
|
|
** INSERT operations on rowid tables. |
|
|
|
|
** DELETE operations on rowid tables. |
|
|
|
|
** |
|
|
|
|
** The [sqlite3_preupdate_old()], [sqlite3_preupdate_new()], |
|
|
|
|
** [sqlite3_preupdate_count()], and [sqlite3_preupdate_depth()] interfaces |
|
|
|
|
@ -9389,6 +9541,7 @@ SQLITE_API int sqlite3_preupdate_new(sqlite3 *, int, sqlite3_value **); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Low-level system error code |
|
|
|
|
** METHOD: sqlite3 |
|
|
|
|
** |
|
|
|
|
** ^Attempt to return the underlying operating system error code or error |
|
|
|
|
** number that caused the most recent I/O error or failure to open a file. |
|
|
|
|
|