mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-07 14:19:10 -04:00
Update SQLite to 3.25.0
This commit is contained in:
parent
8ee8ac791c
commit
8491f808d3
4 changed files with 18158 additions and 8399 deletions
|
@ -1028,7 +1028,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.23.0> as of this release) for consistency.
|
(SQLite version S<3.25.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.
|
||||||
|
|
||||||
|
|
594
sqlite3.h
594
sqlite3.h
|
@ -123,9 +123,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.23.0"
|
#define SQLITE_VERSION "3.25.0"
|
||||||
#define SQLITE_VERSION_NUMBER 3023000
|
#define SQLITE_VERSION_NUMBER 3025000
|
||||||
#define SQLITE_SOURCE_ID "2018-04-02 11:04:16 736b53f57f70b23172c30880186dce7ad9baa3b74e3838cae5847cffb98f5cd2"
|
#define SQLITE_SOURCE_ID "2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** 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_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8))
|
||||||
#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<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_READ (SQLITE_IOERR | (1<<8))
|
||||||
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
|
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
|
||||||
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
|
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
|
||||||
|
@ -504,13 +505,16 @@ SQLITE_API int sqlite3_exec(
|
||||||
#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8))
|
#define SQLITE_IOERR_COMMIT_ATOMIC (SQLITE_IOERR | (30<<8))
|
||||||
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
|
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
|
||||||
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<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_RECOVERY (SQLITE_BUSY | (1<<8))
|
||||||
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
|
#define SQLITE_BUSY_SNAPSHOT (SQLITE_BUSY | (2<<8))
|
||||||
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
|
#define SQLITE_CANTOPEN_NOTEMPDIR (SQLITE_CANTOPEN | (1<<8))
|
||||||
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
|
#define SQLITE_CANTOPEN_ISDIR (SQLITE_CANTOPEN | (2<<8))
|
||||||
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
|
#define SQLITE_CANTOPEN_FULLPATH (SQLITE_CANTOPEN | (3<<8))
|
||||||
#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
|
#define SQLITE_CANTOPEN_CONVPATH (SQLITE_CANTOPEN | (4<<8))
|
||||||
|
#define SQLITE_CANTOPEN_DIRTYWAL (SQLITE_CANTOPEN | (5<<8)) /* Not Used */
|
||||||
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
|
#define SQLITE_CORRUPT_VTAB (SQLITE_CORRUPT | (1<<8))
|
||||||
|
#define SQLITE_CORRUPT_SEQUENCE (SQLITE_CORRUPT | (2<<8))
|
||||||
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
|
#define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8))
|
||||||
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
|
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8))
|
||||||
#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
|
#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8))
|
||||||
|
@ -884,7 +888,8 @@ struct sqlite3_io_methods {
|
||||||
** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
|
** <li>[[SQLITE_FCNTL_PERSIST_WAL]]
|
||||||
** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
|
** ^The [SQLITE_FCNTL_PERSIST_WAL] opcode is used to set or query the
|
||||||
** persistent [WAL | Write Ahead Log] setting. By default, the auxiliary
|
** 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
|
** are automatically deleted when the latest connection to the database
|
||||||
** closes. Setting persistent WAL mode causes those files to persist after
|
** closes. Setting persistent WAL mode causes those files to persist after
|
||||||
** close. Persisting the files is useful when other processes that do not
|
** close. Persisting the files is useful when other processes that do not
|
||||||
|
@ -1070,6 +1075,26 @@ struct sqlite3_io_methods {
|
||||||
** a file lock using the xLock or xShmLock methods of the VFS to wait
|
** 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
|
** for up to M milliseconds before failing, where M is the single
|
||||||
** unsigned integer parameter.
|
** 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 responds 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 responds 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 on which it is
|
||||||
|
** called. This file control is the only mechanism to detect changes that
|
||||||
|
** happen either internally or externally and that are associated with
|
||||||
|
** a particular attached database.
|
||||||
** </ul>
|
** </ul>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_FCNTL_LOCKSTATE 1
|
#define SQLITE_FCNTL_LOCKSTATE 1
|
||||||
|
@ -1105,6 +1130,7 @@ struct sqlite3_io_methods {
|
||||||
#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32
|
#define SQLITE_FCNTL_COMMIT_ATOMIC_WRITE 32
|
||||||
#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33
|
#define SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE 33
|
||||||
#define SQLITE_FCNTL_LOCK_TIMEOUT 34
|
#define SQLITE_FCNTL_LOCK_TIMEOUT 34
|
||||||
|
#define SQLITE_FCNTL_DATA_VERSION 35
|
||||||
|
|
||||||
/* deprecated names */
|
/* deprecated names */
|
||||||
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
||||||
|
@ -1930,6 +1956,22 @@ struct sqlite3_mem_methods {
|
||||||
** I/O required to support statement rollback.
|
** I/O required to support statement rollback.
|
||||||
** The default value for this setting is controlled by the
|
** The default value for this setting is controlled by the
|
||||||
** [SQLITE_STMTJRNL_SPILL] compile-time option.
|
** [SQLITE_STMTJRNL_SPILL] compile-time option.
|
||||||
|
**
|
||||||
|
** [[SQLITE_CONFIG_SORTERREF_SIZE]]
|
||||||
|
** <dt>SQLITE_CONFIG_SORTERREF_SIZE
|
||||||
|
** <dd>The SQLITE_CONFIG_SORTERREF_SIZE option accepts a single parameter
|
||||||
|
** of type (int) - the new value of the sorter-reference size threshold.
|
||||||
|
** Usually, when SQLite uses an external sort to order records according
|
||||||
|
** to an ORDER BY clause, all fields required by the caller are present in the
|
||||||
|
** sorted records. However, if SQLite determines based on the declared type
|
||||||
|
** of a table column that its values are likely to be very large - larger
|
||||||
|
** than the configured sorter-reference size threshold - then a reference
|
||||||
|
** is stored in each sorted record and the required column values loaded
|
||||||
|
** from the database as records are returned in sorted order. The default
|
||||||
|
** value for this option is to never use this optimization. Specifying a
|
||||||
|
** negative value for this option restores the default behaviour.
|
||||||
|
** This option is only available if SQLite is compiled with the
|
||||||
|
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
||||||
|
@ -1959,6 +2001,7 @@ struct sqlite3_mem_methods {
|
||||||
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
|
||||||
#define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
|
#define SQLITE_CONFIG_STMTJRNL_SPILL 26 /* int nByte */
|
||||||
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
|
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
|
||||||
|
#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Database Connection Configuration Options
|
** CAPI3REF: Database Connection Configuration Options
|
||||||
|
@ -2095,6 +2138,27 @@ struct sqlite3_mem_methods {
|
||||||
** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
|
** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
|
||||||
** it is not disabled, 1 if it is.
|
** it is not disabled, 1 if it is.
|
||||||
** </dd>
|
** </dd>
|
||||||
|
**
|
||||||
|
** <dt>SQLITE_DBCONFIG_RESET_DATABASE</dt>
|
||||||
|
** <dd> Set the SQLITE_DBCONFIG_RESET_DATABASE flag and then run
|
||||||
|
** [VACUUM] in order to reset a database back to an empty database
|
||||||
|
** with no schema and no content. The following process works even for
|
||||||
|
** a badly corrupted database file:
|
||||||
|
** <ol>
|
||||||
|
** <li> If the database connection is newly opened, make sure it has read the
|
||||||
|
** database schema by preparing then discarding some query against the
|
||||||
|
** database, or calling sqlite3_table_column_metadata(), ignoring any
|
||||||
|
** errors. This step is only necessary if the application desires to keep
|
||||||
|
** the database in WAL mode after the reset if it was in WAL mode before
|
||||||
|
** the reset.
|
||||||
|
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 1, 0);
|
||||||
|
** <li> [sqlite3_exec](db, "[VACUUM]", 0, 0, 0);
|
||||||
|
** <li> sqlite3_db_config(db, SQLITE_DBCONFIG_RESET_DATABASE, 0, 0);
|
||||||
|
** </ol>
|
||||||
|
** Because resetting a database is destructive and irreversible, the
|
||||||
|
** process requires the use of this obscure API and multiple steps to help
|
||||||
|
** ensure that it does not happen by accident.
|
||||||
|
** </dd>
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
||||||
|
@ -2106,7 +2170,8 @@ struct sqlite3_mem_methods {
|
||||||
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */
|
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */
|
||||||
#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
|
#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */
|
||||||
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
|
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
|
||||||
#define SQLITE_DBCONFIG_MAX 1008 /* Largest DBCONFIG */
|
#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
|
||||||
|
#define SQLITE_DBCONFIG_MAX 1009 /* Largest DBCONFIG */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Enable Or Disable Extended Result Codes
|
** CAPI3REF: Enable Or Disable Extended Result Codes
|
||||||
|
@ -2234,12 +2299,17 @@ SQLITE_API void sqlite3_set_last_insert_rowid(sqlite3*,sqlite3_int64);
|
||||||
** program, the value returned reflects the number of rows modified by the
|
** program, the value returned reflects the number of rows modified by the
|
||||||
** previous INSERT, UPDATE or DELETE statement within the same trigger.
|
** 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
|
** If a separate thread makes changes on the same database connection
|
||||||
** while [sqlite3_changes()] is running then the value returned
|
** while [sqlite3_changes()] is running then the value returned
|
||||||
** is unpredictable and not meaningful.
|
** 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*);
|
SQLITE_API int sqlite3_changes(sqlite3*);
|
||||||
|
|
||||||
|
@ -2257,13 +2327,26 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
||||||
** count, but those made as part of REPLACE constraint resolution are
|
** count, but those made as part of REPLACE constraint resolution are
|
||||||
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
||||||
** are not counted.
|
** 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
|
** If a separate thread makes changes on the same database connection
|
||||||
** while [sqlite3_total_changes()] is running then the value
|
** while [sqlite3_total_changes()] is running then the value
|
||||||
** returned is unpredictable and not meaningful.
|
** 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*);
|
SQLITE_API int sqlite3_total_changes(sqlite3*);
|
||||||
|
|
||||||
|
@ -3319,13 +3402,24 @@ SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int
|
||||||
** [database connection] D failed, then the sqlite3_errcode(D) interface
|
** [database connection] D failed, then the sqlite3_errcode(D) interface
|
||||||
** returns the numeric [result code] or [extended result code] for that
|
** returns the numeric [result code] or [extended result code] for that
|
||||||
** API call.
|
** API call.
|
||||||
** If the most recent API call was successful,
|
|
||||||
** then the return value from sqlite3_errcode() is undefined.
|
|
||||||
** ^The sqlite3_extended_errcode()
|
** ^The sqlite3_extended_errcode()
|
||||||
** interface is the same except that it always returns the
|
** interface is the same except that it always returns the
|
||||||
** [extended result code] even when extended result codes are
|
** [extended result code] even when extended result codes are
|
||||||
** disabled.
|
** disabled.
|
||||||
**
|
**
|
||||||
|
** The values returned by sqlite3_errcode() and/or
|
||||||
|
** sqlite3_extended_errcode() might change with each API call.
|
||||||
|
** Except, there are some interfaces that are guaranteed to never
|
||||||
|
** change the value of the error code. The error-code preserving
|
||||||
|
** interfaces are:
|
||||||
|
**
|
||||||
|
** <ul>
|
||||||
|
** <li> sqlite3_errcode()
|
||||||
|
** <li> sqlite3_extended_errcode()
|
||||||
|
** <li> sqlite3_errmsg()
|
||||||
|
** <li> sqlite3_errmsg16()
|
||||||
|
** </ul>
|
||||||
|
**
|
||||||
** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
|
** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
|
||||||
** text that describes the error, as either UTF-8 or UTF-16 respectively.
|
** text that describes the error, as either UTF-8 or UTF-16 respectively.
|
||||||
** ^(Memory to hold the error message string is managed internally.
|
** ^(Memory to hold the error message string is managed internally.
|
||||||
|
@ -4479,11 +4573,25 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||||
** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
|
** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
|
||||||
** [sqlite3_free()].
|
** [sqlite3_free()].
|
||||||
**
|
**
|
||||||
** ^(If a memory allocation error occurs during the evaluation of any
|
** As long as the input parameters are correct, these routines will only
|
||||||
** of these routines, a default value is returned. The default value
|
** fail if an out-of-memory error occurs during a format conversion.
|
||||||
** is either the integer 0, the floating point number 0.0, or a NULL
|
** Only the following subset of interfaces are subject to out-of-memory
|
||||||
** pointer. Subsequent calls to [sqlite3_errcode()] will return
|
** errors:
|
||||||
** [SQLITE_NOMEM].)^
|
**
|
||||||
|
** <ul>
|
||||||
|
** <li> sqlite3_column_blob()
|
||||||
|
** <li> sqlite3_column_text()
|
||||||
|
** <li> sqlite3_column_text16()
|
||||||
|
** <li> sqlite3_column_bytes()
|
||||||
|
** <li> sqlite3_column_bytes16()
|
||||||
|
** </ul>
|
||||||
|
**
|
||||||
|
** If an out-of-memory error occurs, then the return value from these
|
||||||
|
** routines is the same as if the column had contained an SQL NULL value.
|
||||||
|
** Valid SQL NULL returns can be distinguished from out-of-memory errors
|
||||||
|
** by invoking the [sqlite3_errcode()] immediately after the suspect
|
||||||
|
** return value is obtained and before any
|
||||||
|
** other SQLite interface is called on the same [database connection].
|
||||||
*/
|
*/
|
||||||
SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
|
SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
|
||||||
SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
|
SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
|
||||||
|
@ -4560,11 +4668,13 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
||||||
**
|
**
|
||||||
** ^These functions (collectively known as "function creation routines")
|
** ^These functions (collectively known as "function creation routines")
|
||||||
** are used to add SQL functions or aggregates or to redefine the behavior
|
** are used to add SQL functions or aggregates or to redefine the behavior
|
||||||
** of existing SQL functions or aggregates. The only differences between
|
** of existing SQL functions or aggregates. The only differences between
|
||||||
** these routines are the text encoding expected for
|
** the three "sqlite3_create_function*" routines are the text encoding
|
||||||
** the second parameter (the name of the function being created)
|
** expected for the second parameter (the name of the function being
|
||||||
** and the presence or absence of a destructor callback for
|
** created) and the presence or absence of a destructor callback for
|
||||||
** the application data pointer.
|
** the application data pointer. Function sqlite3_create_window_function()
|
||||||
|
** is similar, but allows the user to supply the extra callback functions
|
||||||
|
** needed by [aggregate window functions].
|
||||||
**
|
**
|
||||||
** ^The first parameter is the [database connection] to which the SQL
|
** ^The first parameter is the [database connection] to which the SQL
|
||||||
** function is to be added. ^If an application uses more than one database
|
** function is to be added. ^If an application uses more than one database
|
||||||
|
@ -4610,7 +4720,8 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
||||||
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
|
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
|
||||||
** function can gain access to this pointer using [sqlite3_user_data()].)^
|
** function can gain access to this pointer using [sqlite3_user_data()].)^
|
||||||
**
|
**
|
||||||
** ^The sixth, seventh and eighth parameters, xFunc, xStep and xFinal, are
|
** ^The sixth, seventh and eighth parameters passed to the three
|
||||||
|
** "sqlite3_create_function*" functions, xFunc, xStep and xFinal, are
|
||||||
** pointers to C-language functions that implement the SQL function or
|
** pointers to C-language functions that implement the SQL function or
|
||||||
** aggregate. ^A scalar SQL function requires an implementation of the xFunc
|
** aggregate. ^A scalar SQL function requires an implementation of the xFunc
|
||||||
** callback only; NULL pointers must be passed as the xStep and xFinal
|
** callback only; NULL pointers must be passed as the xStep and xFinal
|
||||||
|
@ -4619,15 +4730,24 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
|
||||||
** SQL function or aggregate, pass NULL pointers for all three function
|
** SQL function or aggregate, pass NULL pointers for all three function
|
||||||
** callbacks.
|
** callbacks.
|
||||||
**
|
**
|
||||||
** ^(If the ninth parameter to sqlite3_create_function_v2() is not NULL,
|
** ^The sixth, seventh, eighth and ninth parameters (xStep, xFinal, xValue
|
||||||
** then it is destructor for the application data pointer.
|
** and xInverse) passed to sqlite3_create_window_function are pointers to
|
||||||
** The destructor is invoked when the function is deleted, either by being
|
** C-language callbacks that implement the new function. xStep and xFinal
|
||||||
** overloaded or when the database connection closes.)^
|
** must both be non-NULL. xValue and xInverse may either both be NULL, in
|
||||||
** ^The destructor is also invoked if the call to
|
** which case a regular aggregate function is created, or must both be
|
||||||
** sqlite3_create_function_v2() fails.
|
** non-NULL, in which case the new function may be used as either an aggregate
|
||||||
** ^When the destructor callback of the tenth parameter is invoked, it
|
** or aggregate window function. More details regarding the implementation
|
||||||
** is passed a single argument which is a copy of the application data
|
** of aggregate window functions are
|
||||||
** pointer which was the fifth parameter to sqlite3_create_function_v2().
|
** [user-defined window functions|available here].
|
||||||
|
**
|
||||||
|
** ^(If the final parameter to sqlite3_create_function_v2() or
|
||||||
|
** sqlite3_create_window_function() is not NULL, then it is destructor for
|
||||||
|
** the application data pointer. The destructor is invoked when the function
|
||||||
|
** is deleted, either by being overloaded or when the database connection
|
||||||
|
** closes.)^ ^The destructor is also invoked if the call to
|
||||||
|
** sqlite3_create_function_v2() fails. ^When the destructor callback is
|
||||||
|
** invoked, it is passed a single argument which is a copy of the application
|
||||||
|
** data pointer which was the fifth parameter to sqlite3_create_function_v2().
|
||||||
**
|
**
|
||||||
** ^It is permitted to register multiple implementations of the same
|
** ^It is permitted to register multiple implementations of the same
|
||||||
** functions with the same name but with either differing numbers of
|
** functions with the same name but with either differing numbers of
|
||||||
|
@ -4680,6 +4800,18 @@ SQLITE_API int sqlite3_create_function_v2(
|
||||||
void (*xFinal)(sqlite3_context*),
|
void (*xFinal)(sqlite3_context*),
|
||||||
void(*xDestroy)(void*)
|
void(*xDestroy)(void*)
|
||||||
);
|
);
|
||||||
|
SQLITE_API int sqlite3_create_window_function(
|
||||||
|
sqlite3 *db,
|
||||||
|
const char *zFunctionName,
|
||||||
|
int nArg,
|
||||||
|
int eTextRep,
|
||||||
|
void *pApp,
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*),
|
||||||
|
void (*xValue)(sqlite3_context*),
|
||||||
|
void (*xInverse)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void(*xDestroy)(void*)
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Text Encodings
|
** CAPI3REF: Text Encodings
|
||||||
|
@ -4822,6 +4954,28 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
||||||
**
|
**
|
||||||
** These routines must be called from the same thread as
|
** These routines must be called from the same thread as
|
||||||
** the SQL function that supplied the [sqlite3_value*] parameters.
|
** the SQL function that supplied the [sqlite3_value*] parameters.
|
||||||
|
**
|
||||||
|
** As long as the input parameter is correct, these routines can only
|
||||||
|
** fail if an out-of-memory error occurs during a format conversion.
|
||||||
|
** Only the following subset of interfaces are subject to out-of-memory
|
||||||
|
** errors:
|
||||||
|
**
|
||||||
|
** <ul>
|
||||||
|
** <li> sqlite3_value_blob()
|
||||||
|
** <li> sqlite3_value_text()
|
||||||
|
** <li> sqlite3_value_text16()
|
||||||
|
** <li> sqlite3_value_text16le()
|
||||||
|
** <li> sqlite3_value_text16be()
|
||||||
|
** <li> sqlite3_value_bytes()
|
||||||
|
** <li> sqlite3_value_bytes16()
|
||||||
|
** </ul>
|
||||||
|
**
|
||||||
|
** If an out-of-memory error occurs, then the return value from these
|
||||||
|
** routines is the same as if the column had contained an SQL NULL value.
|
||||||
|
** Valid SQL NULL returns can be distinguished from out-of-memory errors
|
||||||
|
** by invoking the [sqlite3_errcode()] immediately after the suspect
|
||||||
|
** return value is obtained and before any
|
||||||
|
** other SQLite interface is called on the same [database connection].
|
||||||
*/
|
*/
|
||||||
SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
|
SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
|
||||||
SQLITE_API double sqlite3_value_double(sqlite3_value*);
|
SQLITE_API double sqlite3_value_double(sqlite3_value*);
|
||||||
|
@ -5492,6 +5646,41 @@ SQLITE_API SQLITE_EXTERN char *sqlite3_temp_directory;
|
||||||
*/
|
*/
|
||||||
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
|
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Win32 Specific Interface
|
||||||
|
**
|
||||||
|
** These interfaces are available only on Windows. The
|
||||||
|
** [sqlite3_win32_set_directory] interface is used to set the value associated
|
||||||
|
** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
|
||||||
|
** zValue, depending on the value of the type parameter. The zValue parameter
|
||||||
|
** should be NULL to cause the previous value to be freed via [sqlite3_free];
|
||||||
|
** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
|
||||||
|
** prior to being used. The [sqlite3_win32_set_directory] interface returns
|
||||||
|
** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
|
||||||
|
** or [SQLITE_NOMEM] if memory could not be allocated. The value of the
|
||||||
|
** [sqlite3_data_directory] variable is intended to act as a replacement for
|
||||||
|
** the current directory on the sub-platforms of Win32 where that concept is
|
||||||
|
** not present, e.g. WinRT and UWP. The [sqlite3_win32_set_directory8] and
|
||||||
|
** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
|
||||||
|
** sqlite3_win32_set_directory interface except the string parameter must be
|
||||||
|
** UTF-8 or UTF-16, respectively.
|
||||||
|
*/
|
||||||
|
SQLITE_API int sqlite3_win32_set_directory(
|
||||||
|
unsigned long type, /* Identifier for directory being set or reset */
|
||||||
|
void *zValue /* New value for directory being set or reset */
|
||||||
|
);
|
||||||
|
SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
|
||||||
|
SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Win32 Directory Types
|
||||||
|
**
|
||||||
|
** These macros are only available on Windows. They define the allowed values
|
||||||
|
** for the type argument to the [sqlite3_win32_set_directory] interface.
|
||||||
|
*/
|
||||||
|
#define SQLITE_WIN32_DATA_DIRECTORY_TYPE 1
|
||||||
|
#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Test For Auto-Commit Mode
|
** CAPI3REF: Test For Auto-Commit Mode
|
||||||
** KEYWORDS: {autocommit mode}
|
** KEYWORDS: {autocommit mode}
|
||||||
|
@ -6224,6 +6413,10 @@ struct sqlite3_index_info {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Virtual Table Scan Flags
|
** CAPI3REF: Virtual Table Scan Flags
|
||||||
|
**
|
||||||
|
** Virtual table implementations are allowed to set the
|
||||||
|
** [sqlite3_index_info].idxFlags field to some combination of
|
||||||
|
** these bits.
|
||||||
*/
|
*/
|
||||||
#define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */
|
#define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */
|
||||||
|
|
||||||
|
@ -6249,6 +6442,7 @@ struct sqlite3_index_info {
|
||||||
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70
|
#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70
|
||||||
#define SQLITE_INDEX_CONSTRAINT_ISNULL 71
|
#define SQLITE_INDEX_CONSTRAINT_ISNULL 71
|
||||||
#define SQLITE_INDEX_CONSTRAINT_IS 72
|
#define SQLITE_INDEX_CONSTRAINT_IS 72
|
||||||
|
#define SQLITE_INDEX_CONSTRAINT_FUNCTION 150
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Register A Virtual Table Implementation
|
** CAPI3REF: Register A Virtual Table Implementation
|
||||||
|
@ -6925,6 +7119,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Low-Level Control Of Database Files
|
** CAPI3REF: Low-Level Control Of Database Files
|
||||||
** METHOD: sqlite3
|
** METHOD: sqlite3
|
||||||
|
** KEYWORDS: {file control}
|
||||||
**
|
**
|
||||||
** ^The [sqlite3_file_control()] interface makes a direct call to the
|
** ^The [sqlite3_file_control()] interface makes a direct call to the
|
||||||
** xFileControl method for the [sqlite3_io_methods] object associated
|
** xFileControl method for the [sqlite3_io_methods] object associated
|
||||||
|
@ -6939,11 +7134,18 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*);
|
||||||
** the xFileControl method. ^The return value of the xFileControl
|
** the xFileControl method. ^The return value of the xFileControl
|
||||||
** method becomes the return value of this routine.
|
** 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
|
** ^The [SQLITE_FCNTL_FILE_POINTER] value for the op parameter causes
|
||||||
** a pointer to the underlying [sqlite3_file] object to be written into
|
** 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]
|
** the space pointed to by the 4th parameter. The
|
||||||
** case is a short-circuit path which does not actually invoke the
|
** [SQLITE_FCNTL_JOURNAL_POINTER] works similarly except that it returns
|
||||||
** underlying sqlite3_io_methods.xFileControl method.
|
** 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
|
** ^If the second parameter (zDbName) does not match the name of any
|
||||||
** open database file, then SQLITE_ERROR is returned. ^This error
|
** open database file, then SQLITE_ERROR is returned. ^This error
|
||||||
|
@ -6999,7 +7201,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
||||||
#define SQLITE_TESTCTRL_ALWAYS 13
|
#define SQLITE_TESTCTRL_ALWAYS 13
|
||||||
#define SQLITE_TESTCTRL_RESERVE 14
|
#define SQLITE_TESTCTRL_RESERVE 14
|
||||||
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
|
||||||
#define SQLITE_TESTCTRL_ISKEYWORD 16
|
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
|
||||||
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
|
||||||
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
|
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
|
||||||
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
|
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
|
||||||
|
@ -7013,6 +7215,189 @@ SQLITE_API int sqlite3_test_control(int op, ...);
|
||||||
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
|
||||||
#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */
|
#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: SQL Keyword Checking
|
||||||
|
**
|
||||||
|
** These routines provide access to the set of SQL language keywords
|
||||||
|
** recognized by SQLite. Applications can uses these routines to determine
|
||||||
|
** whether or not a specific identifier needs to be escaped (for example,
|
||||||
|
** by enclosing in double-quotes) so as not to confuse the parser.
|
||||||
|
**
|
||||||
|
** The sqlite3_keyword_count() interface returns the number of distinct
|
||||||
|
** keywords understood by SQLite.
|
||||||
|
**
|
||||||
|
** The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and
|
||||||
|
** makes *Z point to that keyword expressed as UTF8 and writes the number
|
||||||
|
** of bytes in the keyword into *L. The string that *Z points to is not
|
||||||
|
** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
|
||||||
|
** SQLITE_OK if N is within bounds and SQLITE_ERROR if not. If either Z
|
||||||
|
** or L are NULL or invalid pointers then calls to
|
||||||
|
** sqlite3_keyword_name(N,Z,L) result in undefined behavior.
|
||||||
|
**
|
||||||
|
** The sqlite3_keyword_check(Z,L) interface checks to see whether or not
|
||||||
|
** the L-byte UTF8 identifier that Z points to is a keyword, returning non-zero
|
||||||
|
** if it is and zero if not.
|
||||||
|
**
|
||||||
|
** The parser used by SQLite is forgiving. It is often possible to use
|
||||||
|
** a keyword as an identifier as long as such use does not result in a
|
||||||
|
** parsing ambiguity. For example, the statement
|
||||||
|
** "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" is accepted by SQLite, and
|
||||||
|
** creates a new table named "BEGIN" with three columns named
|
||||||
|
** "REPLACE", "PRAGMA", and "END". Nevertheless, best practice is to avoid
|
||||||
|
** using keywords as identifiers. Common techniques used to avoid keyword
|
||||||
|
** name collisions include:
|
||||||
|
** <ul>
|
||||||
|
** <li> Put all identifier names inside double-quotes. This is the official
|
||||||
|
** SQL way to escape identifier names.
|
||||||
|
** <li> Put identifier names inside [...]. This is not standard SQL,
|
||||||
|
** but it is what SQL Server does and so lots of programmers use this
|
||||||
|
** technique.
|
||||||
|
** <li> Begin every identifier with the letter "Z" as no SQL keywords start
|
||||||
|
** with "Z".
|
||||||
|
** <li> Include a digit somewhere in every identifier name.
|
||||||
|
** </ul>
|
||||||
|
**
|
||||||
|
** Note that the number of keywords understood by SQLite can depend on
|
||||||
|
** compile-time options. For example, "VACUUM" is not a keyword if
|
||||||
|
** SQLite is compiled with the [-DSQLITE_OMIT_VACUUM] option. Also,
|
||||||
|
** new keywords may be added to future releases of SQLite.
|
||||||
|
*/
|
||||||
|
SQLITE_API int sqlite3_keyword_count(void);
|
||||||
|
SQLITE_API int sqlite3_keyword_name(int,const char**,int*);
|
||||||
|
SQLITE_API int sqlite3_keyword_check(const char*,int);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Dynamic String Object
|
||||||
|
** KEYWORDS: {dynamic string}
|
||||||
|
**
|
||||||
|
** An instance of the sqlite3_str object contains a dynamically-sized
|
||||||
|
** string under construction.
|
||||||
|
**
|
||||||
|
** The lifecycle of an sqlite3_str object is as follows:
|
||||||
|
** <ol>
|
||||||
|
** <li> ^The sqlite3_str object is created using [sqlite3_str_new()].
|
||||||
|
** <li> ^Text is appended to the sqlite3_str object using various
|
||||||
|
** methods, such as [sqlite3_str_appendf()].
|
||||||
|
** <li> ^The sqlite3_str object is destroyed and the string it created
|
||||||
|
** is returned using the [sqlite3_str_finish()] interface.
|
||||||
|
** </ol>
|
||||||
|
*/
|
||||||
|
typedef struct sqlite3_str sqlite3_str;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Create A New Dynamic String Object
|
||||||
|
** CONSTRUCTOR: sqlite3_str
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_new(D)] interface allocates and initializes
|
||||||
|
** a new [sqlite3_str] object. To avoid memory leaks, the object returned by
|
||||||
|
** [sqlite3_str_new()] must be freed by a subsequent call to
|
||||||
|
** [sqlite3_str_finish(X)].
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_new(D)] interface always returns a pointer to a
|
||||||
|
** valid [sqlite3_str] object, though in the event of an out-of-memory
|
||||||
|
** error the returned object might be a special singleton that will
|
||||||
|
** silently reject new text, always return SQLITE_NOMEM from
|
||||||
|
** [sqlite3_str_errcode()], always return 0 for
|
||||||
|
** [sqlite3_str_length()], and always return NULL from
|
||||||
|
** [sqlite3_str_finish(X)]. It is always safe to use the value
|
||||||
|
** returned by [sqlite3_str_new(D)] as the sqlite3_str parameter
|
||||||
|
** to any of the other [sqlite3_str] methods.
|
||||||
|
**
|
||||||
|
** The D parameter to [sqlite3_str_new(D)] may be NULL. If the
|
||||||
|
** D parameter in [sqlite3_str_new(D)] is not NULL, then the maximum
|
||||||
|
** length of the string contained in the [sqlite3_str] object will be
|
||||||
|
** the value set for [sqlite3_limit](D,[SQLITE_LIMIT_LENGTH]) instead
|
||||||
|
** of [SQLITE_MAX_LENGTH].
|
||||||
|
*/
|
||||||
|
SQLITE_API sqlite3_str *sqlite3_str_new(sqlite3*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Finalize A Dynamic String
|
||||||
|
** DESTRUCTOR: sqlite3_str
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_finish(X)] interface destroys the sqlite3_str object X
|
||||||
|
** and returns a pointer to a memory buffer obtained from [sqlite3_malloc64()]
|
||||||
|
** that contains the constructed string. The calling application should
|
||||||
|
** pass the returned value to [sqlite3_free()] to avoid a memory leak.
|
||||||
|
** ^The [sqlite3_str_finish(X)] interface may return a NULL pointer if any
|
||||||
|
** errors were encountered during construction of the string. ^The
|
||||||
|
** [sqlite3_str_finish(X)] interface will also return a NULL pointer if the
|
||||||
|
** string in [sqlite3_str] object X is zero bytes long.
|
||||||
|
*/
|
||||||
|
SQLITE_API char *sqlite3_str_finish(sqlite3_str*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Add Content To A Dynamic String
|
||||||
|
** METHOD: sqlite3_str
|
||||||
|
**
|
||||||
|
** These interfaces add content to an sqlite3_str object previously obtained
|
||||||
|
** from [sqlite3_str_new()].
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_appendf(X,F,...)] and
|
||||||
|
** [sqlite3_str_vappendf(X,F,V)] interfaces uses the [built-in printf]
|
||||||
|
** functionality of SQLite to append formatted text onto the end of
|
||||||
|
** [sqlite3_str] object X.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_append(X,S,N)] method appends exactly N bytes from string S
|
||||||
|
** onto the end of the [sqlite3_str] object X. N must be non-negative.
|
||||||
|
** S must contain at least N non-zero bytes of content. To append a
|
||||||
|
** zero-terminated string in its entirety, use the [sqlite3_str_appendall()]
|
||||||
|
** method instead.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_appendall(X,S)] method appends the complete content of
|
||||||
|
** zero-terminated string S onto the end of [sqlite3_str] object X.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_appendchar(X,N,C)] method appends N copies of the
|
||||||
|
** single-byte character C onto the end of [sqlite3_str] object X.
|
||||||
|
** ^This method can be used, for example, to add whitespace indentation.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_reset(X)] method resets the string under construction
|
||||||
|
** inside [sqlite3_str] object X back to zero bytes in length.
|
||||||
|
**
|
||||||
|
** These methods do not return a result code. ^If an error occurs, that fact
|
||||||
|
** is recorded in the [sqlite3_str] object and can be recovered by a
|
||||||
|
** subsequent call to [sqlite3_str_errcode(X)].
|
||||||
|
*/
|
||||||
|
SQLITE_API void sqlite3_str_appendf(sqlite3_str*, const char *zFormat, ...);
|
||||||
|
SQLITE_API void sqlite3_str_vappendf(sqlite3_str*, const char *zFormat, va_list);
|
||||||
|
SQLITE_API void sqlite3_str_append(sqlite3_str*, const char *zIn, int N);
|
||||||
|
SQLITE_API void sqlite3_str_appendall(sqlite3_str*, const char *zIn);
|
||||||
|
SQLITE_API void sqlite3_str_appendchar(sqlite3_str*, int N, char C);
|
||||||
|
SQLITE_API void sqlite3_str_reset(sqlite3_str*);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Status Of A Dynamic String
|
||||||
|
** METHOD: sqlite3_str
|
||||||
|
**
|
||||||
|
** These interfaces return the current status of an [sqlite3_str] object.
|
||||||
|
**
|
||||||
|
** ^If any prior errors have occurred while constructing the dynamic string
|
||||||
|
** in sqlite3_str X, then the [sqlite3_str_errcode(X)] method will return
|
||||||
|
** an appropriate error code. ^The [sqlite3_str_errcode(X)] method returns
|
||||||
|
** [SQLITE_NOMEM] following any out-of-memory error, or
|
||||||
|
** [SQLITE_TOOBIG] if the size of the dynamic string exceeds
|
||||||
|
** [SQLITE_MAX_LENGTH], or [SQLITE_OK] if there have been no errors.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_length(X)] method returns the current length, in bytes,
|
||||||
|
** of the dynamic string under construction in [sqlite3_str] object X.
|
||||||
|
** ^The length returned by [sqlite3_str_length(X)] does not include the
|
||||||
|
** zero-termination byte.
|
||||||
|
**
|
||||||
|
** ^The [sqlite3_str_value(X)] method returns a pointer to the current
|
||||||
|
** content of the dynamic string under construction in X. The value
|
||||||
|
** returned by [sqlite3_str_value(X)] is managed by the sqlite3_str object X
|
||||||
|
** and might be freed or altered by any subsequent method on the same
|
||||||
|
** [sqlite3_str] object. Applications must not used the pointer returned
|
||||||
|
** [sqlite3_str_value(X)] after any subsequent method call on the same
|
||||||
|
** object. ^Applications may change the content of the string returned
|
||||||
|
** by [sqlite3_str_value(X)] as long as they do not write into any bytes
|
||||||
|
** outside the range of 0 to [sqlite3_str_length(X)] and do not read or
|
||||||
|
** write any byte after any subsequent sqlite3_str method call.
|
||||||
|
*/
|
||||||
|
SQLITE_API int sqlite3_str_errcode(sqlite3_str*);
|
||||||
|
SQLITE_API int sqlite3_str_length(sqlite3_str*);
|
||||||
|
SQLITE_API char *sqlite3_str_value(sqlite3_str*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: SQLite Runtime Status
|
** CAPI3REF: SQLite Runtime Status
|
||||||
**
|
**
|
||||||
|
@ -8282,11 +8667,11 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
|
||||||
** method of a [virtual table], then it returns true if and only if the
|
** method of a [virtual table], then it returns true if and only if the
|
||||||
** column is being fetched as part of an UPDATE operation during which 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
|
** column value will not change. Applications might use this to substitute
|
||||||
** a lighter-weight value to return that the corresponding [xUpdate] method
|
** a return value that is less expensive to compute and that the corresponding
|
||||||
** understands as a "no-change" value.
|
** [xUpdate] method understands as a "no-change" value.
|
||||||
**
|
**
|
||||||
** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that
|
** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that
|
||||||
** the column is not changed by the UPDATE statement, they the xColumn
|
** the column is not changed by the UPDATE statement, then the xColumn
|
||||||
** method can optionally return without setting a result, without calling
|
** method can optionally return without setting a result, without calling
|
||||||
** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces].
|
** any of the [sqlite3_result_int|sqlite3_result_xxxxx() interfaces].
|
||||||
** In that case, [sqlite3_value_nochange(X)] will return true for the
|
** In that case, [sqlite3_value_nochange(X)] will return true for the
|
||||||
|
@ -8579,7 +8964,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*);
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Database Snapshot
|
** CAPI3REF: Database Snapshot
|
||||||
** KEYWORDS: {snapshot} {sqlite3_snapshot}
|
** KEYWORDS: {snapshot} {sqlite3_snapshot}
|
||||||
** EXPERIMENTAL
|
|
||||||
**
|
**
|
||||||
** An instance of the snapshot object records the state of a [WAL mode]
|
** An instance of the snapshot object records the state of a [WAL mode]
|
||||||
** database for some specific point in history.
|
** database for some specific point in history.
|
||||||
|
@ -8596,11 +8980,6 @@ SQLITE_API int sqlite3_system_errno(sqlite3*);
|
||||||
** version of the database file so that it is possible to later open a new read
|
** 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
|
** transaction that sees that historical version of the database rather than
|
||||||
** the most recent version.
|
** 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 {
|
typedef struct sqlite3_snapshot {
|
||||||
unsigned char hidden[48];
|
unsigned char hidden[48];
|
||||||
|
@ -8608,7 +8987,7 @@ typedef struct sqlite3_snapshot {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Record A Database Snapshot
|
** CAPI3REF: Record A Database Snapshot
|
||||||
** EXPERIMENTAL
|
** CONSTRUCTOR: sqlite3_snapshot
|
||||||
**
|
**
|
||||||
** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
|
** ^The [sqlite3_snapshot_get(D,S,P)] interface attempts to make a
|
||||||
** new [sqlite3_snapshot] object that records the current state of
|
** new [sqlite3_snapshot] object that records the current state of
|
||||||
|
@ -8624,7 +9003,7 @@ typedef struct sqlite3_snapshot {
|
||||||
** in this case.
|
** in this case.
|
||||||
**
|
**
|
||||||
** <ul>
|
** <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.
|
** <li> Schema S of [database connection] D must be a [WAL mode] database.
|
||||||
**
|
**
|
||||||
|
@ -8647,7 +9026,7 @@ typedef struct sqlite3_snapshot {
|
||||||
** to avoid a memory leak.
|
** to avoid a memory leak.
|
||||||
**
|
**
|
||||||
** The [sqlite3_snapshot_get()] interface is only available when the
|
** 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(
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
||||||
sqlite3 *db,
|
sqlite3 *db,
|
||||||
|
@ -8657,24 +9036,35 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Start a read transaction on an historical snapshot
|
** CAPI3REF: Start a read transaction on an historical snapshot
|
||||||
** EXPERIMENTAL
|
** METHOD: sqlite3_snapshot
|
||||||
**
|
**
|
||||||
** ^The [sqlite3_snapshot_open(D,S,P)] interface starts a
|
** ^The [sqlite3_snapshot_open(D,S,P)] interface either starts a new read
|
||||||
** read transaction for schema S of
|
** transaction or upgrades an existing one for schema S of
|
||||||
** [database connection] D such that the read transaction
|
** [database connection] D such that the read transaction refers to
|
||||||
** refers to historical [snapshot] P, rather than the most
|
** historical [snapshot] P, rather than the most recent change to the
|
||||||
** recent change to the database.
|
** database. ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK
|
||||||
** ^The [sqlite3_snapshot_open()] interface returns SQLITE_OK on success
|
** on success or an appropriate [error code] if it fails.
|
||||||
** 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.
|
||||||
**
|
**
|
||||||
** ^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
|
** ^(A call to [sqlite3_snapshot_open(D,S,P)] will fail if the
|
||||||
** database connection D does not know that the database file for
|
** database connection D does not know that the database file for
|
||||||
** schema S is in [WAL mode]. A database connection might not know
|
** schema S is in [WAL mode]. A database connection might not know
|
||||||
|
@ -8685,7 +9075,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_get(
|
||||||
** database connection in order to make it ready to use snapshots.)
|
** database connection in order to make it ready to use snapshots.)
|
||||||
**
|
**
|
||||||
** The [sqlite3_snapshot_open()] interface is only available when the
|
** 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(
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
|
||||||
sqlite3 *db,
|
sqlite3 *db,
|
||||||
|
@ -8695,20 +9085,20 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_open(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Destroy a snapshot
|
** CAPI3REF: Destroy a snapshot
|
||||||
** EXPERIMENTAL
|
** DESTRUCTOR: sqlite3_snapshot
|
||||||
**
|
**
|
||||||
** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
|
** ^The [sqlite3_snapshot_free(P)] interface destroys [sqlite3_snapshot] P.
|
||||||
** The application must eventually free every [sqlite3_snapshot] object
|
** The application must eventually free every [sqlite3_snapshot] object
|
||||||
** using this routine to avoid a memory leak.
|
** using this routine to avoid a memory leak.
|
||||||
**
|
**
|
||||||
** The [sqlite3_snapshot_free()] interface is only available when the
|
** 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*);
|
SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Compare the ages of two snapshot handles.
|
** 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
|
** The sqlite3_snapshot_cmp(P1, P2) interface is used to compare the ages
|
||||||
** of two valid snapshot handles.
|
** of two valid snapshot handles.
|
||||||
|
@ -8727,6 +9117,9 @@ SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_snapshot_free(sqlite3_snapshot*);
|
||||||
** Otherwise, this API returns a negative value if P1 refers to an older
|
** 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 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.
|
** 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(
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
|
||||||
sqlite3_snapshot *p1,
|
sqlite3_snapshot *p1,
|
||||||
|
@ -8735,23 +9128,26 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_cmp(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Recover snapshots from a wal file
|
** CAPI3REF: Recover snapshots from a wal file
|
||||||
** EXPERIMENTAL
|
** METHOD: sqlite3_snapshot
|
||||||
**
|
**
|
||||||
** If all connections disconnect from a database file but do not perform
|
** If a [WAL file] remains on disk after all database connections close
|
||||||
** a checkpoint, the existing wal file is opened along with the database
|
** (either through the use of the [SQLITE_FCNTL_PERSIST_WAL] [file control]
|
||||||
** file the next time the database is opened. At this point it is only
|
** or because the last process to have the database opened exited without
|
||||||
** possible to successfully call sqlite3_snapshot_open() to open the most
|
** calling [sqlite3_close()]) and a new connection is subsequently opened
|
||||||
** recent snapshot of the database (the one at the head of the wal file),
|
** on that database and [WAL file], the [sqlite3_snapshot_open()] interface
|
||||||
** even though the wal file may contain other valid snapshots for which
|
** will only be able to open the last transaction added to the WAL file
|
||||||
** clients have sqlite3_snapshot handles.
|
** 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
|
** of database handle db and make all valid snapshots available to
|
||||||
** sqlite3_snapshot_open(). It is an error if there is already a read
|
** 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.
|
** database.
|
||||||
**
|
**
|
||||||
** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
|
** 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);
|
SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const char *zDb);
|
||||||
|
|
||||||
|
@ -8781,7 +9177,7 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
|
||||||
** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
|
** been a prior call to [sqlite3_deserialize(D,S,...)] with the same
|
||||||
** values of D and S.
|
** values of D and S.
|
||||||
** The size of the database is written into *P even if the
|
** The size of the database is written into *P even if the
|
||||||
** SQLITE_SERIALIZE_NOCOPY bit is set but no contigious copy
|
** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
|
||||||
** of the database exists.
|
** of the database exists.
|
||||||
**
|
**
|
||||||
** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
|
** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
|
||||||
|
@ -8862,7 +9258,7 @@ SQLITE_API int sqlite3_deserialize(
|
||||||
** in the P argument is held in memory obtained from [sqlite3_malloc64()]
|
** in the P argument is held in memory obtained from [sqlite3_malloc64()]
|
||||||
** and that SQLite should take ownership of this memory and automatically
|
** and that SQLite should take ownership of this memory and automatically
|
||||||
** free it when it has finished using it. Without this flag, the caller
|
** free it when it has finished using it. Without this flag, the caller
|
||||||
** is resposible for freeing any dynamically allocated memory.
|
** is responsible for freeing any dynamically allocated memory.
|
||||||
**
|
**
|
||||||
** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
|
** The SQLITE_DESERIALIZE_RESIZEABLE flag means that SQLite is allowed to
|
||||||
** grow the size of the database using calls to [sqlite3_realloc64()]. This
|
** grow the size of the database using calls to [sqlite3_realloc64()]. This
|
||||||
|
@ -10106,6 +10502,13 @@ SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
|
||||||
** is only allocated and populated if one or more conflicts were encountered
|
** is only allocated and populated if one or more conflicts were encountered
|
||||||
** while applying the patchset. See comments surrounding the sqlite3_rebaser
|
** while applying the patchset. See comments surrounding the sqlite3_rebaser
|
||||||
** APIs for further details.
|
** APIs for further details.
|
||||||
|
**
|
||||||
|
** The behavior of sqlite3changeset_apply_v2() and its streaming equivalent
|
||||||
|
** may be modified by passing a combination of
|
||||||
|
** [SQLITE_CHANGESETAPPLY_NOSAVEPOINT | supported flags] as the 9th parameter.
|
||||||
|
**
|
||||||
|
** Note that the sqlite3changeset_apply_v2() API is still <b>experimental</b>
|
||||||
|
** and therefore subject to change.
|
||||||
*/
|
*/
|
||||||
SQLITE_API int sqlite3changeset_apply(
|
SQLITE_API int sqlite3changeset_apply(
|
||||||
sqlite3 *db, /* Apply change to "main" db of this handle */
|
sqlite3 *db, /* Apply change to "main" db of this handle */
|
||||||
|
@ -10136,9 +10539,28 @@ SQLITE_API int sqlite3changeset_apply_v2(
|
||||||
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
||||||
),
|
),
|
||||||
void *pCtx, /* First argument passed to xConflict */
|
void *pCtx, /* First argument passed to xConflict */
|
||||||
void **ppRebase, int *pnRebase
|
void **ppRebase, int *pnRebase, /* OUT: Rebase data */
|
||||||
|
int flags /* Combination of SESSION_APPLY_* flags */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** CAPI3REF: Flags for sqlite3changeset_apply_v2
|
||||||
|
**
|
||||||
|
** The following flags may passed via the 9th parameter to
|
||||||
|
** [sqlite3changeset_apply_v2] and [sqlite3changeset_apply_v2_strm]:
|
||||||
|
**
|
||||||
|
** <dl>
|
||||||
|
** <dt>SQLITE_CHANGESETAPPLY_NOSAVEPOINT <dd>
|
||||||
|
** Usually, the sessions module encloses all operations performed by
|
||||||
|
** a single call to apply_v2() or apply_v2_strm() in a [SAVEPOINT]. The
|
||||||
|
** SAVEPOINT is committed if the changeset or patchset is successfully
|
||||||
|
** applied, or rolled back if an error occurs. Specifying this flag
|
||||||
|
** causes the sessions module to omit this savepoint. In this case, if the
|
||||||
|
** caller has an open transaction or savepoint when apply_v2() is called,
|
||||||
|
** it may revert the partially applied changeset by rolling it back.
|
||||||
|
*/
|
||||||
|
#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Constants Passed To The Conflict Handler
|
** CAPI3REF: Constants Passed To The Conflict Handler
|
||||||
**
|
**
|
||||||
|
@ -10399,6 +10821,7 @@ SQLITE_API void sqlite3rebaser_delete(sqlite3_rebaser *p);
|
||||||
** <table border=1 style="margin-left:8ex;margin-right:8ex">
|
** <table border=1 style="margin-left:8ex;margin-right:8ex">
|
||||||
** <tr><th>Streaming function<th>Non-streaming equivalent</th>
|
** <tr><th>Streaming function<th>Non-streaming equivalent</th>
|
||||||
** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply]
|
** <tr><td>sqlite3changeset_apply_strm<td>[sqlite3changeset_apply]
|
||||||
|
** <tr><td>sqlite3changeset_apply_strm_v2<td>[sqlite3changeset_apply_v2]
|
||||||
** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat]
|
** <tr><td>sqlite3changeset_concat_strm<td>[sqlite3changeset_concat]
|
||||||
** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert]
|
** <tr><td>sqlite3changeset_invert_strm<td>[sqlite3changeset_invert]
|
||||||
** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start]
|
** <tr><td>sqlite3changeset_start_strm<td>[sqlite3changeset_start]
|
||||||
|
@ -10508,7 +10931,8 @@ SQLITE_API int sqlite3changeset_apply_v2_strm(
|
||||||
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
sqlite3_changeset_iter *p /* Handle describing change and conflict */
|
||||||
),
|
),
|
||||||
void *pCtx, /* First argument passed to xConflict */
|
void *pCtx, /* First argument passed to xConflict */
|
||||||
void **ppRebase, int *pnRebase
|
void **ppRebase, int *pnRebase,
|
||||||
|
int flags
|
||||||
);
|
);
|
||||||
SQLITE_API int sqlite3changeset_concat_strm(
|
SQLITE_API int sqlite3changeset_concat_strm(
|
||||||
int (*xInputA)(void *pIn, void *pData, int *pnData),
|
int (*xInputA)(void *pIn, void *pData, int *pnData),
|
||||||
|
@ -11012,7 +11436,7 @@ struct Fts5ExtensionApi {
|
||||||
** This way, even if the tokenizer does not provide synonyms
|
** This way, even if the tokenizer does not provide synonyms
|
||||||
** when tokenizing query text (it should not - to do would be
|
** when tokenizing query text (it should not - to do would be
|
||||||
** inefficient), it doesn't matter if the user queries for
|
** inefficient), it doesn't matter if the user queries for
|
||||||
** 'first + place' or '1st + place', as there are entires in the
|
** 'first + place' or '1st + place', as there are entries in the
|
||||||
** FTS index corresponding to both forms of the first token.
|
** FTS index corresponding to both forms of the first token.
|
||||||
** </ol>
|
** </ol>
|
||||||
**
|
**
|
||||||
|
@ -11040,7 +11464,7 @@ struct Fts5ExtensionApi {
|
||||||
** extra data to the FTS index or require FTS5 to query for multiple terms,
|
** extra data to the FTS index or require FTS5 to query for multiple terms,
|
||||||
** so it is efficient in terms of disk space and query speed. However, it
|
** so it is efficient in terms of disk space and query speed. However, it
|
||||||
** does not support prefix queries very well. If, as suggested above, the
|
** does not support prefix queries very well. If, as suggested above, the
|
||||||
** token "first" is subsituted for "1st" by the tokenizer, then the query:
|
** token "first" is substituted for "1st" by the tokenizer, then the query:
|
||||||
**
|
**
|
||||||
** <codeblock>
|
** <codeblock>
|
||||||
** ... MATCH '1s*'</codeblock>
|
** ... MATCH '1s*'</codeblock>
|
||||||
|
|
38
sqlite3ext.h
38
sqlite3ext.h
|
@ -295,6 +295,27 @@ struct sqlite3_api_routines {
|
||||||
int (*vtab_nochange)(sqlite3_context*);
|
int (*vtab_nochange)(sqlite3_context*);
|
||||||
int (*value_nochange)(sqlite3_value*);
|
int (*value_nochange)(sqlite3_value*);
|
||||||
const char *(*vtab_collation)(sqlite3_index_info*,int);
|
const char *(*vtab_collation)(sqlite3_index_info*,int);
|
||||||
|
/* Version 3.24.0 and later */
|
||||||
|
int (*keyword_count)(void);
|
||||||
|
int (*keyword_name)(int,const char**,int*);
|
||||||
|
int (*keyword_check)(const char*,int);
|
||||||
|
sqlite3_str *(*str_new)(sqlite3*);
|
||||||
|
char *(*str_finish)(sqlite3_str*);
|
||||||
|
void (*str_appendf)(sqlite3_str*, const char *zFormat, ...);
|
||||||
|
void (*str_vappendf)(sqlite3_str*, const char *zFormat, va_list);
|
||||||
|
void (*str_append)(sqlite3_str*, const char *zIn, int N);
|
||||||
|
void (*str_appendall)(sqlite3_str*, const char *zIn);
|
||||||
|
void (*str_appendchar)(sqlite3_str*, int N, char C);
|
||||||
|
void (*str_reset)(sqlite3_str*);
|
||||||
|
int (*str_errcode)(sqlite3_str*);
|
||||||
|
int (*str_length)(sqlite3_str*);
|
||||||
|
char *(*str_value)(sqlite3_str*);
|
||||||
|
int (*create_window_function)(sqlite3*,const char*,int,int,void*,
|
||||||
|
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void (*xFinal)(sqlite3_context*),
|
||||||
|
void (*xValue)(sqlite3_context*),
|
||||||
|
void (*xInv)(sqlite3_context*,int,sqlite3_value**),
|
||||||
|
void(*xDestroy)(void*));
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -565,6 +586,23 @@ typedef int (*sqlite3_loadext_entry)(
|
||||||
#define sqlite3_vtab_nochange sqlite3_api->vtab_nochange
|
#define sqlite3_vtab_nochange sqlite3_api->vtab_nochange
|
||||||
#define sqlite3_value_nochange sqlite3_api->value_nochange
|
#define sqlite3_value_nochange sqlite3_api->value_nochange
|
||||||
#define sqlite3_vtab_collation sqlite3_api->vtab_collation
|
#define sqlite3_vtab_collation sqlite3_api->vtab_collation
|
||||||
|
/* Version 3.24.0 and later */
|
||||||
|
#define sqlite3_keyword_count sqlite3_api->keyword_count
|
||||||
|
#define sqlite3_keyword_name sqlite3_api->keyword_name
|
||||||
|
#define sqlite3_keyword_check sqlite3_api->keyword_check
|
||||||
|
#define sqlite3_str_new sqlite3_api->str_new
|
||||||
|
#define sqlite3_str_finish sqlite3_api->str_finish
|
||||||
|
#define sqlite3_str_appendf sqlite3_api->str_appendf
|
||||||
|
#define sqlite3_str_vappendf sqlite3_api->str_vappendf
|
||||||
|
#define sqlite3_str_append sqlite3_api->str_append
|
||||||
|
#define sqlite3_str_appendall sqlite3_api->str_appendall
|
||||||
|
#define sqlite3_str_appendchar sqlite3_api->str_appendchar
|
||||||
|
#define sqlite3_str_reset sqlite3_api->str_reset
|
||||||
|
#define sqlite3_str_errcode sqlite3_api->str_errcode
|
||||||
|
#define sqlite3_str_length sqlite3_api->str_length
|
||||||
|
#define sqlite3_str_value sqlite3_api->str_value
|
||||||
|
/* Version 3.25.0 and later */
|
||||||
|
#define sqlite3_create_window_function sqlite3_api->create_window_function
|
||||||
#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