|
|
|
|
@ -123,9 +123,9 @@ extern "C" { |
|
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
|
|
|
|
** [sqlite_version()] and [sqlite_source_id()]. |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_VERSION "3.21.0" |
|
|
|
|
#define SQLITE_VERSION_NUMBER 3021000 |
|
|
|
|
#define SQLITE_SOURCE_ID "2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827" |
|
|
|
|
#define SQLITE_VERSION "3.22.0" |
|
|
|
|
#define SQLITE_VERSION_NUMBER 3022000 |
|
|
|
|
#define SQLITE_SOURCE_ID "2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d" |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Run-Time Library Version Numbers |
|
|
|
|
@ -470,6 +470,8 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
** the most recent error can be obtained using |
|
|
|
|
** [sqlite3_extended_errcode()]. |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_ERROR_MISSING_COLLSEQ (SQLITE_ERROR | (1<<8)) |
|
|
|
|
#define SQLITE_ERROR_RETRY (SQLITE_ERROR | (2<<8)) |
|
|
|
|
#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8)) |
|
|
|
|
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8)) |
|
|
|
|
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8)) |
|
|
|
|
@ -513,6 +515,8 @@ SQLITE_API int sqlite3_exec( |
|
|
|
|
#define SQLITE_READONLY_CANTLOCK (SQLITE_READONLY | (2<<8)) |
|
|
|
|
#define SQLITE_READONLY_ROLLBACK (SQLITE_READONLY | (3<<8)) |
|
|
|
|
#define SQLITE_READONLY_DBMOVED (SQLITE_READONLY | (4<<8)) |
|
|
|
|
#define SQLITE_READONLY_CANTINIT (SQLITE_READONLY | (5<<8)) |
|
|
|
|
#define SQLITE_READONLY_DIRECTORY (SQLITE_READONLY | (6<<8)) |
|
|
|
|
#define SQLITE_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8)) |
|
|
|
|
#define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8)) |
|
|
|
|
#define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8)) |
|
|
|
|
@ -1131,12 +1135,18 @@ typedef struct sqlite3_api_routines sqlite3_api_routines; |
|
|
|
|
** in the name of the object stands for "virtual file system". See |
|
|
|
|
** the [VFS | VFS documentation] for further information. |
|
|
|
|
** |
|
|
|
|
** The value of the iVersion field is initially 1 but may be larger in |
|
|
|
|
** future versions of SQLite. Additional fields may be appended to this |
|
|
|
|
** object when the iVersion value is increased. Note that the structure |
|
|
|
|
** of the sqlite3_vfs object changes in the transaction between |
|
|
|
|
** SQLite version 3.5.9 and 3.6.0 and yet the iVersion field was not |
|
|
|
|
** modified. |
|
|
|
|
** The VFS interface is sometimes extended by adding new methods onto |
|
|
|
|
** the end. Each time such an extension occurs, the iVersion field |
|
|
|
|
** is incremented. The iVersion value started out as 1 in |
|
|
|
|
** SQLite [version 3.5.0] on [dateof:3.5.0], then increased to 2 |
|
|
|
|
** with SQLite [version 3.7.0] on [dateof:3.7.0], and then increased |
|
|
|
|
** to 3 with SQLite [version 3.7.6] on [dateof:3.7.6]. Additional fields |
|
|
|
|
** may be appended to the sqlite3_vfs object and the iVersion value |
|
|
|
|
** may increase again in future versions of SQLite. |
|
|
|
|
** Note that the structure |
|
|
|
|
** of the sqlite3_vfs object changes in the transition from |
|
|
|
|
** SQLite [version 3.5.9] to [version 3.6.0] on [dateof:3.6.0] |
|
|
|
|
** and yet the iVersion field was not modified. |
|
|
|
|
** |
|
|
|
|
** The szOsFile field is the size of the subclassed [sqlite3_file] |
|
|
|
|
** structure used by this VFS. mxPathname is the maximum length of |
|
|
|
|
@ -2049,7 +2059,6 @@ struct sqlite3_mem_methods { |
|
|
|
|
** into which is written 0 or 1 to indicate whether checkpoints-on-close |
|
|
|
|
** have been disabled - 0 if they are not disabled, 1 if they are. |
|
|
|
|
** </dd> |
|
|
|
|
** |
|
|
|
|
** <dt>SQLITE_DBCONFIG_ENABLE_QPSG</dt> |
|
|
|
|
** <dd>^(The SQLITE_DBCONFIG_ENABLE_QPSG option activates or deactivates |
|
|
|
|
** the [query planner stability guarantee] (QPSG). When the QPSG is active, |
|
|
|
|
@ -2060,7 +2069,16 @@ struct sqlite3_mem_methods { |
|
|
|
|
** the QPSG active, SQLite will always use the same query plan in the field as |
|
|
|
|
** was used during testing in the lab. |
|
|
|
|
** </dd> |
|
|
|
|
** |
|
|
|
|
** <dt>SQLITE_DBCONFIG_TRIGGER_EQP</dt> |
|
|
|
|
** <dd> By default, the output of EXPLAIN QUERY PLAN commands does not
|
|
|
|
|
** include output for any operations performed by trigger programs. This |
|
|
|
|
** option is used to set or clear (the default) a flag that governs this |
|
|
|
|
** behavior. The first parameter passed to this operation is an integer - |
|
|
|
|
** non-zero to enable output for trigger programs, or zero to disable it. |
|
|
|
|
** The second parameter is a pointer to an integer into which is written
|
|
|
|
|
** 0 or 1 to indicate whether output-for-triggers has been disabled - 0 if
|
|
|
|
|
** it is not disabled, 1 if it is.
|
|
|
|
|
** </dd> |
|
|
|
|
** </dl> |
|
|
|
|
*/ |
|
|
|
|
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */ |
|
|
|
|
@ -2071,7 +2089,8 @@ struct sqlite3_mem_methods { |
|
|
|
|
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */ |
|
|
|
|
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 1006 /* int int* */ |
|
|
|
|
#define SQLITE_DBCONFIG_ENABLE_QPSG 1007 /* int int* */ |
|
|
|
|
|
|
|
|
|
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */ |
|
|
|
|
#define SQLITE_DBCONFIG_MAX 1008 /* Largest DBCONFIG */ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Enable Or Disable Extended Result Codes |
|
|
|
|
@ -2932,8 +2951,8 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*, |
|
|
|
|
** KEYWORDS: SQLITE_TRACE |
|
|
|
|
** |
|
|
|
|
** These constants identify classes of events that can be monitored |
|
|
|
|
** using the [sqlite3_trace_v2()] tracing logic. The third argument |
|
|
|
|
** to [sqlite3_trace_v2()] is an OR-ed combination of one or more of |
|
|
|
|
** using the [sqlite3_trace_v2()] tracing logic. The M argument |
|
|
|
|
** to [sqlite3_trace_v2(D,M,X,P)] is an OR-ed combination of one or more of |
|
|
|
|
** the following constants. ^The first argument to the trace callback |
|
|
|
|
** is one of the following constants. |
|
|
|
|
** |
|
|
|
|
@ -4779,6 +4798,9 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6 |
|
|
|
|
** datatype of the value |
|
|
|
|
** <tr><td><b>sqlite3_value_numeric_type </b> |
|
|
|
|
** <td>→ <td>Best numeric datatype of the value |
|
|
|
|
** <tr><td><b>sqlite3_value_nochange </b> |
|
|
|
|
** <td>→ <td>True if the column is unchanged in an UPDATE |
|
|
|
|
** against a virtual table. |
|
|
|
|
** </table></blockquote> |
|
|
|
|
** |
|
|
|
|
** <b>Details:</b> |
|
|
|
|
@ -4827,6 +4849,19 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6 |
|
|
|
|
** then the conversion is performed. Otherwise no conversion occurs. |
|
|
|
|
** The [SQLITE_INTEGER | datatype] after conversion is returned.)^ |
|
|
|
|
** |
|
|
|
|
** ^Within the [xUpdate] method of a [virtual table], the |
|
|
|
|
** sqlite3_value_nochange(X) interface returns true if and only if |
|
|
|
|
** the column corresponding to X is unchanged by the UPDATE operation |
|
|
|
|
** that the xUpdate method call was invoked to implement and if |
|
|
|
|
** and the prior [xColumn] method call that was invoked to extracted |
|
|
|
|
** the value for that column returned without setting a result (probably |
|
|
|
|
** because it queried [sqlite3_vtab_nochange()] and found that the column |
|
|
|
|
** was unchanging). ^Within an [xUpdate] method, any value for which |
|
|
|
|
** sqlite3_value_nochange(X) is true will in all other respects appear |
|
|
|
|
** to be a NULL value. If sqlite3_value_nochange(X) is invoked anywhere other |
|
|
|
|
** than within an [xUpdate] method call for an UPDATE statement, then |
|
|
|
|
** the return value is arbitrary and meaningless. |
|
|
|
|
** |
|
|
|
|
** Please pay particular attention to the fact that the pointer returned |
|
|
|
|
** from [sqlite3_value_blob()], [sqlite3_value_text()], or |
|
|
|
|
** [sqlite3_value_text16()] can be invalidated by a subsequent call to |
|
|
|
|
@ -4849,6 +4884,7 @@ SQLITE_API int sqlite3_value_bytes(sqlite3_value*); |
|
|
|
|
SQLITE_API int sqlite3_value_bytes16(sqlite3_value*); |
|
|
|
|
SQLITE_API int sqlite3_value_type(sqlite3_value*); |
|
|
|
|
SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*); |
|
|
|
|
SQLITE_API int sqlite3_value_nochange(sqlite3_value*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Finding The Subtype Of SQL Values |
|
|
|
|
@ -6951,9 +6987,9 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); |
|
|
|
|
** the xFileControl method. ^The return value of the xFileControl |
|
|
|
|
** method becomes the return value of this routine. |
|
|
|
|
** |
|
|
|
|
** ^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 |
|
|
|
|
** the space pointed to by the 4th parameter. ^The SQLITE_FCNTL_FILE_POINTER |
|
|
|
|
** the space pointed to by the 4th parameter. ^The [SQLITE_FCNTL_FILE_POINTER] |
|
|
|
|
** case is a short-circuit path which does not actually invoke the |
|
|
|
|
** underlying sqlite3_io_methods.xFileControl method. |
|
|
|
|
** |
|
|
|
|
@ -6965,7 +7001,7 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3*); |
|
|
|
|
** an incorrect zDbName and an SQLITE_ERROR return from the underlying |
|
|
|
|
** xFileControl method. |
|
|
|
|
** |
|
|
|
|
** See also: [SQLITE_FCNTL_LOCKSTATE] |
|
|
|
|
** See also: [file control opcodes] |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_file_control(sqlite3*, const char *zDbName, int op, void*); |
|
|
|
|
|
|
|
|
|
@ -7022,7 +7058,8 @@ SQLITE_API int sqlite3_test_control(int op, ...); |
|
|
|
|
#define SQLITE_TESTCTRL_ISINIT 23 |
|
|
|
|
#define SQLITE_TESTCTRL_SORTER_MMAP 24 |
|
|
|
|
#define SQLITE_TESTCTRL_IMPOSTER 25 |
|
|
|
|
#define SQLITE_TESTCTRL_LAST 25 |
|
|
|
|
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26 |
|
|
|
|
#define SQLITE_TESTCTRL_LAST 26 /* Largest TESTCTRL */ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: SQLite Runtime Status |
|
|
|
|
@ -8276,6 +8313,40 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...); |
|
|
|
|
*/ |
|
|
|
|
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 |
|
|
|
|
** 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 lighter-weight value to return that the corresponding [xUpdate] method |
|
|
|
|
** understands as a "no-change" value. |
|
|
|
|
** |
|
|
|
|
** If the [xColumn] method calls sqlite3_vtab_nochange() and finds that |
|
|
|
|
** the column is not changed by the UPDATE statement, they the xColumn |
|
|
|
|
** method can optionally return without setting a result, without calling |
|
|
|
|
** 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. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3_vtab_nochange(sqlite3_context*); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Determine The Collation For a Virtual Table Constraint |
|
|
|
|
** |
|
|
|
|
** This function may only be called from within a call to the [xBestIndex] |
|
|
|
|
** method of a [virtual table].
|
|
|
|
|
** |
|
|
|
|
** The first argument must be the sqlite3_index_info object that is the |
|
|
|
|
** first parameter to the xBestIndex() method. The second argument must be |
|
|
|
|
** an index into the aConstraint[] array belonging to the sqlite3_index_info |
|
|
|
|
** structure passed to xBestIndex. This function returns a pointer to a buffer
|
|
|
|
|
** containing the name of the collation sequence for the corresponding |
|
|
|
|
** constraint. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API SQLITE_EXPERIMENTAL const char *sqlite3_vtab_collation(sqlite3_index_info*,int); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
** CAPI3REF: Conflict resolution modes |
|
|
|
|
** KEYWORDS: {conflict resolution mode} |
|
|
|
|
@ -9003,6 +9074,35 @@ SQLITE_API int sqlite3session_indirect(sqlite3_session *pSession, int bIndirect) |
|
|
|
|
** |
|
|
|
|
** SQLITE_OK is returned if the call completes without error. Or, if an error
|
|
|
|
|
** occurs, an SQLite error code (e.g. SQLITE_NOMEM) is returned. |
|
|
|
|
** |
|
|
|
|
** <h3>Special sqlite_stat1 Handling</h3> |
|
|
|
|
** |
|
|
|
|
** As of SQLite version 3.22.0, the "sqlite_stat1" table is an exception to
|
|
|
|
|
** some of the rules above. In SQLite, the schema of sqlite_stat1 is: |
|
|
|
|
** <pre> |
|
|
|
|
** CREATE TABLE sqlite_stat1(tbl,idx,stat)
|
|
|
|
|
** </pre> |
|
|
|
|
** |
|
|
|
|
** Even though sqlite_stat1 does not have a PRIMARY KEY, changes are
|
|
|
|
|
** recorded for it as if the PRIMARY KEY is (tbl,idx). Additionally, changes
|
|
|
|
|
** are recorded for rows for which (idx IS NULL) is true. However, for such |
|
|
|
|
** rows a zero-length blob (SQL value X'') is stored in the changeset or |
|
|
|
|
** patchset instead of a NULL value. This allows such changesets to be |
|
|
|
|
** manipulated by legacy implementations of sqlite3changeset_invert(), |
|
|
|
|
** concat() and similar. |
|
|
|
|
** |
|
|
|
|
** The sqlite3changeset_apply() function automatically converts the
|
|
|
|
|
** zero-length blob back to a NULL value when updating the sqlite_stat1 |
|
|
|
|
** table. However, if the application calls sqlite3changeset_new(), |
|
|
|
|
** sqlite3changeset_old() or sqlite3changeset_conflict on a changeset
|
|
|
|
|
** iterator directly (including on a changeset iterator passed to a |
|
|
|
|
** conflict-handler callback) then the X'' value is returned. The application |
|
|
|
|
** must translate X'' to NULL itself if required. |
|
|
|
|
** |
|
|
|
|
** Legacy (older than 3.22.0) versions of the sessions module cannot capture |
|
|
|
|
** changes made to the sqlite_stat1 table. Legacy versions of the |
|
|
|
|
** sqlite3changeset_apply() function silently ignore any modifications to the |
|
|
|
|
** sqlite_stat1 table that are part of a changeset or patchset. |
|
|
|
|
*/ |
|
|
|
|
SQLITE_API int sqlite3session_attach( |
|
|
|
|
sqlite3_session *pSession, /* Session object */ |
|
|
|
|
|