|
|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
-** 2001 September 15
|
|
|
+** 2001-09-15
|
|
|
**
|
|
|
** The author disclaims copyright to this source code. In place of
|
|
|
** a legal notice, here is a blessing:
|
|
|
@@ -121,9 +121,9 @@ extern "C" {
|
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
|
*/
|
|
|
-#define SQLITE_VERSION "3.18.0"
|
|
|
-#define SQLITE_VERSION_NUMBER 3018000
|
|
|
-#define SQLITE_SOURCE_ID "2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37"
|
|
|
+#define SQLITE_VERSION "3.20.1"
|
|
|
+#define SQLITE_VERSION_NUMBER 3020001
|
|
|
+#define SQLITE_SOURCE_ID "2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34"
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
|
@@ -417,7 +417,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
*/
|
|
|
#define SQLITE_OK 0 /* Successful result */
|
|
|
/* beginning-of-error-codes */
|
|
|
-#define SQLITE_ERROR 1 /* SQL error or missing database */
|
|
|
+#define SQLITE_ERROR 1 /* Generic error */
|
|
|
#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */
|
|
|
#define SQLITE_PERM 3 /* Access permission denied */
|
|
|
#define SQLITE_ABORT 4 /* Callback routine requested an abort */
|
|
|
@@ -432,7 +432,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
#define SQLITE_FULL 13 /* Insertion failed because database is full */
|
|
|
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
|
|
|
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
|
|
|
-#define SQLITE_EMPTY 16 /* Database is empty */
|
|
|
+#define SQLITE_EMPTY 16 /* Not used */
|
|
|
#define SQLITE_SCHEMA 17 /* The database schema changed */
|
|
|
#define SQLITE_TOOBIG 18 /* String or BLOB exceeds size limit */
|
|
|
#define SQLITE_CONSTRAINT 19 /* Abort due to constraint violation */
|
|
|
@@ -440,7 +440,7 @@ SQLITE_API int sqlite3_exec(
|
|
|
#define SQLITE_MISUSE 21 /* Library used incorrectly */
|
|
|
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
|
|
|
#define SQLITE_AUTH 23 /* Authorization denied */
|
|
|
-#define SQLITE_FORMAT 24 /* Auxiliary database format error */
|
|
|
+#define SQLITE_FORMAT 24 /* Not used */
|
|
|
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite3_bind out of range */
|
|
|
#define SQLITE_NOTADB 26 /* File opened that is not a database file */
|
|
|
#define SQLITE_NOTICE 27 /* Notifications from sqlite3_log() */
|
|
|
@@ -857,7 +857,7 @@ struct sqlite3_io_methods {
|
|
|
** opcode allows these two values (10 retries and 25 milliseconds of delay)
|
|
|
** to be adjusted. The values are changed for all database connections
|
|
|
** within the same process. The argument is a pointer to an array of two
|
|
|
-** integers where the first integer i the new retry count and the second
|
|
|
+** integers where the first integer is the new retry count and the second
|
|
|
** integer is the delay. If either integer is negative, then the setting
|
|
|
** is not changed but instead the prior value of that setting is written
|
|
|
** into the array entry, allowing the current retry settings to be
|
|
|
@@ -2007,6 +2007,17 @@ struct sqlite3_mem_methods {
|
|
|
** 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,
|
|
|
+** a single SQL query statement will always use the same algorithm regardless
|
|
|
+** of values of [bound parameters].)^ The QPSG disables some query optimizations
|
|
|
+** that look at the values of bound parameters, which can make some queries
|
|
|
+** slower. But the QPSG has the advantage of more predictable behavior. With
|
|
|
+** the QPSG active, SQLite will always use the same query plan in the field as
|
|
|
+** was used during testing in the lab.
|
|
|
+** </dd>
|
|
|
+**
|
|
|
** </dl>
|
|
|
*/
|
|
|
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
|
|
@@ -2016,6 +2027,7 @@ struct sqlite3_mem_methods {
|
|
|
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */
|
|
|
#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* */
|
|
|
|
|
|
|
|
|
/*
|
|
|
@@ -2211,9 +2223,6 @@ SQLITE_API int sqlite3_total_changes(sqlite3*);
|
|
|
** ^A call to sqlite3_interrupt(D) that occurs when there are no running
|
|
|
** SQL statements is a no-op and has no effect on SQL statements
|
|
|
** that are started after the sqlite3_interrupt() call returns.
|
|
|
-**
|
|
|
-** If the database connection closes while [sqlite3_interrupt()]
|
|
|
-** is running then bad things will likely happen.
|
|
|
*/
|
|
|
SQLITE_API void sqlite3_interrupt(sqlite3*);
|
|
|
|
|
|
@@ -2676,12 +2685,14 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
|
|
|
/*
|
|
|
** CAPI3REF: Compile-Time Authorization Callbacks
|
|
|
** METHOD: sqlite3
|
|
|
+** KEYWORDS: {authorizer callback}
|
|
|
**
|
|
|
** ^This routine registers an authorizer callback with a particular
|
|
|
** [database connection], supplied in the first argument.
|
|
|
** ^The authorizer callback is invoked as SQL statements are being compiled
|
|
|
** by [sqlite3_prepare()] or its variants [sqlite3_prepare_v2()],
|
|
|
-** [sqlite3_prepare16()] and [sqlite3_prepare16_v2()]. ^At various
|
|
|
+** [sqlite3_prepare_v3()], [sqlite3_prepare16()], [sqlite3_prepare16_v2()],
|
|
|
+** and [sqlite3_prepare16_v3()]. ^At various
|
|
|
** points during the compilation process, as logic is being created
|
|
|
** to perform various actions, the authorizer callback is invoked to
|
|
|
** see if those actions are allowed. ^The authorizer callback should
|
|
|
@@ -2703,8 +2714,10 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
|
|
|
** parameter to the sqlite3_set_authorizer() interface. ^The second parameter
|
|
|
** to the callback is an integer [SQLITE_COPY | action code] that specifies
|
|
|
** the particular action to be authorized. ^The third through sixth parameters
|
|
|
-** to the callback are zero-terminated strings that contain additional
|
|
|
-** details about the action to be authorized.
|
|
|
+** to the callback are either NULL pointers or zero-terminated strings
|
|
|
+** that contain additional details about the action to be authorized.
|
|
|
+** Applications must always be prepared to encounter a NULL pointer in any
|
|
|
+** of the third through the sixth parameters of the authorization callback.
|
|
|
**
|
|
|
** ^If the action code is [SQLITE_READ]
|
|
|
** and the callback returns [SQLITE_IGNORE] then the
|
|
|
@@ -2713,6 +2726,10 @@ SQLITE_API void sqlite3_randomness(int N, void *P);
|
|
|
** been read if [SQLITE_OK] had been returned. The [SQLITE_IGNORE]
|
|
|
** return can be used to deny an untrusted user access to individual
|
|
|
** columns of a table.
|
|
|
+** ^When a table is referenced by a [SELECT] but no column values are
|
|
|
+** extracted from that table (for example in a query like
|
|
|
+** "SELECT count(*) FROM tab") then the [SQLITE_READ] authorizer callback
|
|
|
+** is invoked once for that table with a column name that is an empty string.
|
|
|
** ^If the action code is [SQLITE_DELETE] and the callback returns
|
|
|
** [SQLITE_IGNORE] then the [DELETE] operation proceeds but the
|
|
|
** [truncate optimization] is disabled and all rows are deleted individually.
|
|
|
@@ -3464,6 +3481,29 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
#define SQLITE_LIMIT_TRIGGER_DEPTH 10
|
|
|
#define SQLITE_LIMIT_WORKER_THREADS 11
|
|
|
|
|
|
+/*
|
|
|
+** CAPI3REF: Prepare Flags
|
|
|
+**
|
|
|
+** These constants define various flags that can be passed into
|
|
|
+** "prepFlags" parameter of the [sqlite3_prepare_v3()] and
|
|
|
+** [sqlite3_prepare16_v3()] interfaces.
|
|
|
+**
|
|
|
+** New flags may be added in future releases of SQLite.
|
|
|
+**
|
|
|
+** <dl>
|
|
|
+** [[SQLITE_PREPARE_PERSISTENT]] ^(<dt>SQLITE_PREPARE_PERSISTENT</dt>
|
|
|
+** <dd>The SQLITE_PREPARE_PERSISTENT flag is a hint to the query planner
|
|
|
+** that the prepared statement will be retained for a long time and
|
|
|
+** probably reused many times.)^ ^Without this flag, [sqlite3_prepare_v3()]
|
|
|
+** and [sqlite3_prepare16_v3()] assume that the prepared statement will
|
|
|
+** be used just once or at most a few times and then destroyed using
|
|
|
+** [sqlite3_finalize()] relatively soon. The current implementation acts
|
|
|
+** on this hint by avoiding the use of [lookaside memory] so as not to
|
|
|
+** deplete the limited store of lookaside memory. Future versions of
|
|
|
+** SQLite may act on this hint differently.
|
|
|
+** </dl>
|
|
|
+*/
|
|
|
+#define SQLITE_PREPARE_PERSISTENT 0x01
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Compiling An SQL Statement
|
|
|
@@ -3471,17 +3511,29 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
** METHOD: sqlite3
|
|
|
** CONSTRUCTOR: sqlite3_stmt
|
|
|
**
|
|
|
-** To execute an SQL query, it must first be compiled into a byte-code
|
|
|
-** program using one of these routines.
|
|
|
+** To execute an SQL statement, it must first be compiled into a byte-code
|
|
|
+** program using one of these routines. Or, in other words, these routines
|
|
|
+** are constructors for the [prepared statement] object.
|
|
|
+**
|
|
|
+** The preferred routine to use is [sqlite3_prepare_v2()]. The
|
|
|
+** [sqlite3_prepare()] interface is legacy and should be avoided.
|
|
|
+** [sqlite3_prepare_v3()] has an extra "prepFlags" option that is used
|
|
|
+** for special purposes.
|
|
|
+**
|
|
|
+** The use of the UTF-8 interfaces is preferred, as SQLite currently
|
|
|
+** does all parsing using UTF-8. The UTF-16 interfaces are provided
|
|
|
+** as a convenience. The UTF-16 interfaces work by converting the
|
|
|
+** input text into UTF-8, then invoking the corresponding UTF-8 interface.
|
|
|
**
|
|
|
** The first argument, "db", is a [database connection] obtained from a
|
|
|
** prior successful call to [sqlite3_open()], [sqlite3_open_v2()] or
|
|
|
** [sqlite3_open16()]. The database connection must not have been closed.
|
|
|
**
|
|
|
** The second argument, "zSql", is the statement to be compiled, encoded
|
|
|
-** as either UTF-8 or UTF-16. The sqlite3_prepare() and sqlite3_prepare_v2()
|
|
|
-** interfaces use UTF-8, and sqlite3_prepare16() and sqlite3_prepare16_v2()
|
|
|
-** use UTF-16.
|
|
|
+** as either UTF-8 or UTF-16. The sqlite3_prepare(), sqlite3_prepare_v2(),
|
|
|
+** and sqlite3_prepare_v3()
|
|
|
+** interfaces use UTF-8, and sqlite3_prepare16(), sqlite3_prepare16_v2(),
|
|
|
+** and sqlite3_prepare16_v3() use UTF-16.
|
|
|
**
|
|
|
** ^If the nByte argument is negative, then zSql is read up to the
|
|
|
** first zero terminator. ^If nByte is positive, then it is the
|
|
|
@@ -3508,10 +3560,11 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
** ^On success, the sqlite3_prepare() family of routines return [SQLITE_OK];
|
|
|
** otherwise an [error code] is returned.
|
|
|
**
|
|
|
-** The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are
|
|
|
-** recommended for all new programs. The two older interfaces are retained
|
|
|
-** for backwards compatibility, but their use is discouraged.
|
|
|
-** ^In the "v2" interfaces, the prepared statement
|
|
|
+** The sqlite3_prepare_v2(), sqlite3_prepare_v3(), sqlite3_prepare16_v2(),
|
|
|
+** and sqlite3_prepare16_v3() interfaces are recommended for all new programs.
|
|
|
+** The older interfaces (sqlite3_prepare() and sqlite3_prepare16())
|
|
|
+** are retained for backwards compatibility, but their use is discouraged.
|
|
|
+** ^In the "vX" interfaces, the prepared statement
|
|
|
** that is returned (the [sqlite3_stmt] object) contains a copy of the
|
|
|
** original SQL text. This causes the [sqlite3_step()] interface to
|
|
|
** behave differently in three ways:
|
|
|
@@ -3544,6 +3597,12 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|
|
** or [GLOB] operator or if the parameter is compared to an indexed column
|
|
|
** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.
|
|
|
** </li>
|
|
|
+**
|
|
|
+** <p>^sqlite3_prepare_v3() differs from sqlite3_prepare_v2() only in having
|
|
|
+** the extra prepFlags parameter, which is a bit array consisting of zero or
|
|
|
+** more of the [SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_*] flags. ^The
|
|
|
+** sqlite3_prepare_v2() interface works exactly the same as
|
|
|
+** sqlite3_prepare_v3() with a zero prepFlags parameter.
|
|
|
** </ol>
|
|
|
*/
|
|
|
SQLITE_API int sqlite3_prepare(
|
|
|
@@ -3560,6 +3619,14 @@ SQLITE_API int sqlite3_prepare_v2(
|
|
|
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
|
|
|
const char **pzTail /* OUT: Pointer to unused portion of zSql */
|
|
|
);
|
|
|
+SQLITE_API int sqlite3_prepare_v3(
|
|
|
+ sqlite3 *db, /* Database handle */
|
|
|
+ const char *zSql, /* SQL statement, UTF-8 encoded */
|
|
|
+ int nByte, /* Maximum length of zSql in bytes. */
|
|
|
+ unsigned int prepFlags, /* Zero or more SQLITE_PREPARE_ flags */
|
|
|
+ sqlite3_stmt **ppStmt, /* OUT: Statement handle */
|
|
|
+ const char **pzTail /* OUT: Pointer to unused portion of zSql */
|
|
|
+);
|
|
|
SQLITE_API int sqlite3_prepare16(
|
|
|
sqlite3 *db, /* Database handle */
|
|
|
const void *zSql, /* SQL statement, UTF-16 encoded */
|
|
|
@@ -3574,6 +3641,14 @@ SQLITE_API int sqlite3_prepare16_v2(
|
|
|
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
|
|
|
const void **pzTail /* OUT: Pointer to unused portion of zSql */
|
|
|
);
|
|
|
+SQLITE_API int sqlite3_prepare16_v3(
|
|
|
+ sqlite3 *db, /* Database handle */
|
|
|
+ const void *zSql, /* SQL statement, UTF-16 encoded */
|
|
|
+ int nByte, /* Maximum length of zSql in bytes. */
|
|
|
+ unsigned int prepFlags, /* Zero or more SQLITE_PREPARE_ flags */
|
|
|
+ sqlite3_stmt **ppStmt, /* OUT: Statement handle */
|
|
|
+ const void **pzTail /* OUT: Pointer to unused portion of zSql */
|
|
|
+);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Retrieving Statement SQL
|
|
|
@@ -3581,7 +3656,8 @@ SQLITE_API int sqlite3_prepare16_v2(
|
|
|
**
|
|
|
** ^The sqlite3_sql(P) interface returns a pointer to a copy of the UTF-8
|
|
|
** SQL text used to create [prepared statement] P if P was
|
|
|
-** created by either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()].
|
|
|
+** created by [sqlite3_prepare_v2()], [sqlite3_prepare_v3()],
|
|
|
+** [sqlite3_prepare16_v2()], or [sqlite3_prepare16_v3()].
|
|
|
** ^The sqlite3_expanded_sql(P) interface returns a pointer to a UTF-8
|
|
|
** string containing the SQL text of prepared statement P with
|
|
|
** [bound parameters] expanded.
|
|
|
@@ -3705,7 +3781,7 @@ SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt*);
|
|
|
** The [sqlite3_value_blob | sqlite3_value_type()] family of
|
|
|
** interfaces require protected sqlite3_value objects.
|
|
|
*/
|
|
|
-typedef struct Mem sqlite3_value;
|
|
|
+typedef struct sqlite3_value sqlite3_value;
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: SQL Function Context Object
|
|
|
@@ -3807,6 +3883,15 @@ typedef struct sqlite3_context sqlite3_context;
|
|
|
** [sqlite3_blob_open | incremental BLOB I/O] routines.
|
|
|
** ^A negative value for the zeroblob results in a zero-length BLOB.
|
|
|
**
|
|
|
+** ^The sqlite3_bind_pointer(S,I,P,T,D) routine causes the I-th parameter in
|
|
|
+** [prepared statement] S to have an SQL value of NULL, but to also be
|
|
|
+** associated with the pointer P of type T. ^D is either a NULL pointer or
|
|
|
+** a pointer to a destructor function for P. ^SQLite will invoke the
|
|
|
+** destructor D with a single argument of P when it is finished using
|
|
|
+** P. The T parameter should be a static string, preferably a string
|
|
|
+** literal. The sqlite3_bind_pointer() routine is part of the
|
|
|
+** [pointer passing interface] added for SQLite 3.20.0.
|
|
|
+**
|
|
|
** ^If any of the sqlite3_bind_*() routines are called with a NULL pointer
|
|
|
** for the [prepared statement] or with a prepared statement for which
|
|
|
** [sqlite3_step()] has been called more recently than [sqlite3_reset()],
|
|
|
@@ -3840,6 +3925,7 @@ SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)
|
|
|
SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
|
|
|
void(*)(void*), unsigned char encoding);
|
|
|
SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
|
|
|
+SQLITE_API int sqlite3_bind_pointer(sqlite3_stmt*, int, void*, const char*,void(*)(void*));
|
|
|
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
|
|
|
SQLITE_API int sqlite3_bind_zeroblob64(sqlite3_stmt*, int, sqlite3_uint64);
|
|
|
|
|
|
@@ -3883,8 +3969,8 @@ SQLITE_API int sqlite3_bind_parameter_count(sqlite3_stmt*);
|
|
|
** ^If the value N is out of range or if the N-th parameter is
|
|
|
** nameless, then NULL is returned. ^The returned string is
|
|
|
** always in UTF-8 encoding even if the named parameter was
|
|
|
-** originally specified as UTF-16 in [sqlite3_prepare16()] or
|
|
|
-** [sqlite3_prepare16_v2()].
|
|
|
+** originally specified as UTF-16 in [sqlite3_prepare16()],
|
|
|
+** [sqlite3_prepare16_v2()], or [sqlite3_prepare16_v3()].
|
|
|
**
|
|
|
** See also: [sqlite3_bind_blob|sqlite3_bind()],
|
|
|
** [sqlite3_bind_parameter_count()], and
|
|
|
@@ -3901,7 +3987,8 @@ SQLITE_API const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
|
|
|
** parameter to [sqlite3_bind_blob|sqlite3_bind()]. ^A zero
|
|
|
** is returned if no matching parameter is found. ^The parameter
|
|
|
** name must be given in UTF-8 even if the original statement
|
|
|
-** was prepared from UTF-16 text using [sqlite3_prepare16_v2()].
|
|
|
+** was prepared from UTF-16 text using [sqlite3_prepare16_v2()] or
|
|
|
+** [sqlite3_prepare16_v3()].
|
|
|
**
|
|
|
** See also: [sqlite3_bind_blob|sqlite3_bind()],
|
|
|
** [sqlite3_bind_parameter_count()], and
|
|
|
@@ -4055,16 +4142,18 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|
|
** CAPI3REF: Evaluate An SQL Statement
|
|
|
** METHOD: sqlite3_stmt
|
|
|
**
|
|
|
-** After a [prepared statement] has been prepared using either
|
|
|
-** [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] or one of the legacy
|
|
|
+** After a [prepared statement] has been prepared using any of
|
|
|
+** [sqlite3_prepare_v2()], [sqlite3_prepare_v3()], [sqlite3_prepare16_v2()],
|
|
|
+** or [sqlite3_prepare16_v3()] or one of the legacy
|
|
|
** interfaces [sqlite3_prepare()] or [sqlite3_prepare16()], this function
|
|
|
** must be called one or more times to evaluate the statement.
|
|
|
**
|
|
|
** The details of the behavior of the sqlite3_step() interface depend
|
|
|
-** on whether the statement was prepared using the newer "v2" interface
|
|
|
-** [sqlite3_prepare_v2()] and [sqlite3_prepare16_v2()] or the older legacy
|
|
|
-** interface [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
|
|
|
-** new "v2" interface is recommended for new applications but the legacy
|
|
|
+** on whether the statement was prepared using the newer "vX" interfaces
|
|
|
+** [sqlite3_prepare_v3()], [sqlite3_prepare_v2()], [sqlite3_prepare16_v3()],
|
|
|
+** [sqlite3_prepare16_v2()] or the older legacy
|
|
|
+** interfaces [sqlite3_prepare()] and [sqlite3_prepare16()]. The use of the
|
|
|
+** new "vX" interface is recommended for new applications but the legacy
|
|
|
** interface will continue to be supported.
|
|
|
**
|
|
|
** ^In the legacy interface, the return value will be either [SQLITE_BUSY],
|
|
|
@@ -4110,7 +4199,7 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|
|
** other than [SQLITE_ROW] before any subsequent invocation of
|
|
|
** sqlite3_step(). Failure to reset the prepared statement using
|
|
|
** [sqlite3_reset()] would result in an [SQLITE_MISUSE] return from
|
|
|
-** sqlite3_step(). But after [version 3.6.23.1] ([dateof:3.6.23.1],
|
|
|
+** sqlite3_step(). But after [version 3.6.23.1] ([dateof:3.6.23.1]),
|
|
|
** sqlite3_step() began
|
|
|
** calling [sqlite3_reset()] automatically in this circumstance rather
|
|
|
** than returning [SQLITE_MISUSE]. This is not considered a compatibility
|
|
|
@@ -4125,10 +4214,11 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
|
|
|
** specific [error codes] that better describes the error.
|
|
|
** We admit that this is a goofy design. The problem has been fixed
|
|
|
** with the "v2" interface. If you prepare all of your SQL statements
|
|
|
-** using either [sqlite3_prepare_v2()] or [sqlite3_prepare16_v2()] instead
|
|
|
+** using [sqlite3_prepare_v3()] or [sqlite3_prepare_v2()]
|
|
|
+** or [sqlite3_prepare16_v2()] or [sqlite3_prepare16_v3()] instead
|
|
|
** of the legacy [sqlite3_prepare()] and [sqlite3_prepare16()] interfaces,
|
|
|
** then the more specific [error codes] are returned directly
|
|
|
-** by sqlite3_step(). The use of the "v2" interface is recommended.
|
|
|
+** by sqlite3_step(). The use of the "vX" interfaces is recommended.
|
|
|
*/
|
|
|
SQLITE_API int sqlite3_step(sqlite3_stmt*);
|
|
|
|
|
|
@@ -4190,6 +4280,28 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
** KEYWORDS: {column access functions}
|
|
|
** METHOD: sqlite3_stmt
|
|
|
**
|
|
|
+** <b>Summary:</b>
|
|
|
+** <blockquote><table border=0 cellpadding=0 cellspacing=0>
|
|
|
+** <tr><td><b>sqlite3_column_blob</b><td>→<td>BLOB result
|
|
|
+** <tr><td><b>sqlite3_column_double</b><td>→<td>REAL result
|
|
|
+** <tr><td><b>sqlite3_column_int</b><td>→<td>32-bit INTEGER result
|
|
|
+** <tr><td><b>sqlite3_column_int64</b><td>→<td>64-bit INTEGER result
|
|
|
+** <tr><td><b>sqlite3_column_text</b><td>→<td>UTF-8 TEXT result
|
|
|
+** <tr><td><b>sqlite3_column_text16</b><td>→<td>UTF-16 TEXT result
|
|
|
+** <tr><td><b>sqlite3_column_value</b><td>→<td>The result as an
|
|
|
+** [sqlite3_value|unprotected sqlite3_value] object.
|
|
|
+** <tr><td> <td> <td>
|
|
|
+** <tr><td><b>sqlite3_column_bytes</b><td>→<td>Size of a BLOB
|
|
|
+** or a UTF-8 TEXT result in bytes
|
|
|
+** <tr><td><b>sqlite3_column_bytes16 </b>
|
|
|
+** <td>→ <td>Size of UTF-16
|
|
|
+** TEXT in bytes
|
|
|
+** <tr><td><b>sqlite3_column_type</b><td>→<td>Default
|
|
|
+** datatype of the result
|
|
|
+** </table></blockquote>
|
|
|
+**
|
|
|
+** <b>Details:</b>
|
|
|
+**
|
|
|
** ^These routines return information about a single column of the current
|
|
|
** result row of a query. ^In every case the first argument is a pointer
|
|
|
** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*]
|
|
|
@@ -4211,16 +4323,29 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
** are called from a different thread while any of these routines
|
|
|
** are pending, then the results are undefined.
|
|
|
**
|
|
|
+** The first six interfaces (_blob, _double, _int, _int64, _text, and _text16)
|
|
|
+** each return the value of a result column in a specific data format. If
|
|
|
+** the result column is not initially in the requested format (for example,
|
|
|
+** if the query returns an integer but the sqlite3_column_text() interface
|
|
|
+** is used to extract the value) then an automatic type conversion is performed.
|
|
|
+**
|
|
|
** ^The sqlite3_column_type() routine returns the
|
|
|
** [SQLITE_INTEGER | datatype code] for the initial data type
|
|
|
** of the result column. ^The returned value is one of [SQLITE_INTEGER],
|
|
|
-** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
|
|
|
-** returned by sqlite3_column_type() is only meaningful if no type
|
|
|
-** conversions have occurred as described below. After a type conversion,
|
|
|
-** the value returned by sqlite3_column_type() is undefined. Future
|
|
|
+** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].
|
|
|
+** The return value of sqlite3_column_type() can be used to decide which
|
|
|
+** of the first six interface should be used to extract the column value.
|
|
|
+** The value returned by sqlite3_column_type() is only meaningful if no
|
|
|
+** automatic type conversions have occurred for the value in question.
|
|
|
+** After a type conversion, the result of calling sqlite3_column_type()
|
|
|
+** is undefined, though harmless. Future
|
|
|
** versions of SQLite may change the behavior of sqlite3_column_type()
|
|
|
** following a type conversion.
|
|
|
**
|
|
|
+** If the result is a BLOB or a TEXT string, then the sqlite3_column_bytes()
|
|
|
+** or sqlite3_column_bytes16() interfaces can be used to determine the size
|
|
|
+** of that BLOB or string.
|
|
|
+**
|
|
|
** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
|
|
|
** routine returns the number of bytes in that BLOB or string.
|
|
|
** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts
|
|
|
@@ -4257,9 +4382,13 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
** [sqlite3_column_value()] is used in any other way, including calls
|
|
|
** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
|
|
|
** or [sqlite3_value_bytes()], the behavior is not threadsafe.
|
|
|
+** Hence, the sqlite3_column_value() interface
|
|
|
+** is normally only useful within the implementation of
|
|
|
+** [application-defined SQL functions] or [virtual tables], not within
|
|
|
+** top-level application code.
|
|
|
**
|
|
|
-** These routines attempt to convert the value where appropriate. ^For
|
|
|
-** example, if the internal representation is FLOAT and a text result
|
|
|
+** The these routines may attempt to convert the datatype of the result.
|
|
|
+** ^For example, if the internal representation is FLOAT and a text result
|
|
|
** is requested, [sqlite3_snprintf()] is used internally to perform the
|
|
|
** conversion automatically. ^(The following table details the conversions
|
|
|
** that are applied:
|
|
|
@@ -4331,7 +4460,7 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
** ^The pointers returned are valid until a type conversion occurs as
|
|
|
** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
|
|
|
** [sqlite3_finalize()] is called. ^The memory space used to hold strings
|
|
|
-** and BLOBs is freed automatically. Do <em>not</em> pass the pointers returned
|
|
|
+** and BLOBs is freed automatically. Do not pass the pointers returned
|
|
|
** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
|
|
|
** [sqlite3_free()].
|
|
|
**
|
|
|
@@ -4342,15 +4471,15 @@ SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
|
|
|
** [SQLITE_NOMEM].)^
|
|
|
*/
|
|
|
SQLITE_API const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
|
|
|
-SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
|
|
|
-SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API double sqlite3_column_double(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API int sqlite3_column_int(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
|
|
|
-SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
|
|
|
SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
|
|
|
+SQLITE_API int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
|
|
|
+SQLITE_API int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
|
|
|
+SQLITE_API int sqlite3_column_type(sqlite3_stmt*, int iCol);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Destroy A Prepared Statement Object
|
|
|
@@ -4584,21 +4713,40 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|
|
** CAPI3REF: Obtaining SQL Values
|
|
|
** METHOD: sqlite3_value
|
|
|
**
|
|
|
-** The C-language implementation of SQL functions and aggregates uses
|
|
|
-** this set of interface routines to access the parameter values on
|
|
|
-** the function or aggregate.
|
|
|
-**
|
|
|
-** The xFunc (for scalar functions) or xStep (for aggregates) parameters
|
|
|
-** to [sqlite3_create_function()] and [sqlite3_create_function16()]
|
|
|
-** define callbacks that implement the SQL functions and aggregates.
|
|
|
-** The 3rd parameter to these callbacks is an array of pointers to
|
|
|
-** [protected sqlite3_value] objects. There is one [sqlite3_value] object for
|
|
|
-** each parameter to the SQL function. These routines are used to
|
|
|
-** extract values from the [sqlite3_value] objects.
|
|
|
+** <b>Summary:</b>
|
|
|
+** <blockquote><table border=0 cellpadding=0 cellspacing=0>
|
|
|
+** <tr><td><b>sqlite3_value_blob</b><td>→<td>BLOB value
|
|
|
+** <tr><td><b>sqlite3_value_double</b><td>→<td>REAL value
|
|
|
+** <tr><td><b>sqlite3_value_int</b><td>→<td>32-bit INTEGER value
|
|
|
+** <tr><td><b>sqlite3_value_int64</b><td>→<td>64-bit INTEGER value
|
|
|
+** <tr><td><b>sqlite3_value_pointer</b><td>→<td>Pointer value
|
|
|
+** <tr><td><b>sqlite3_value_text</b><td>→<td>UTF-8 TEXT value
|
|
|
+** <tr><td><b>sqlite3_value_text16</b><td>→<td>UTF-16 TEXT value in
|
|
|
+** the native byteorder
|
|
|
+** <tr><td><b>sqlite3_value_text16be</b><td>→<td>UTF-16be TEXT value
|
|
|
+** <tr><td><b>sqlite3_value_text16le</b><td>→<td>UTF-16le TEXT value
|
|
|
+** <tr><td> <td> <td>
|
|
|
+** <tr><td><b>sqlite3_value_bytes</b><td>→<td>Size of a BLOB
|
|
|
+** or a UTF-8 TEXT in bytes
|
|
|
+** <tr><td><b>sqlite3_value_bytes16 </b>
|
|
|
+** <td>→ <td>Size of UTF-16
|
|
|
+** TEXT in bytes
|
|
|
+** <tr><td><b>sqlite3_value_type</b><td>→<td>Default
|
|
|
+** datatype of the value
|
|
|
+** <tr><td><b>sqlite3_value_numeric_type </b>
|
|
|
+** <td>→ <td>Best numeric datatype of the value
|
|
|
+** </table></blockquote>
|
|
|
+**
|
|
|
+** <b>Details:</b>
|
|
|
+**
|
|
|
+** These routines extract type, size, and content information from
|
|
|
+** [protected sqlite3_value] objects. Protected sqlite3_value objects
|
|
|
+** are used to pass parameter information into implementation of
|
|
|
+** [application-defined SQL functions] and [virtual tables].
|
|
|
**
|
|
|
** These routines work only with [protected sqlite3_value] objects.
|
|
|
** Any attempt to use these routines on an [unprotected sqlite3_value]
|
|
|
-** object results in undefined behavior.
|
|
|
+** is not threadsafe.
|
|
|
**
|
|
|
** ^These routines work just like the corresponding [column access functions]
|
|
|
** except that these routines take a single [protected sqlite3_value] object
|
|
|
@@ -4609,6 +4757,24 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|
|
** sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
|
|
|
** extract UTF-16 strings as big-endian and little-endian respectively.
|
|
|
**
|
|
|
+** ^If [sqlite3_value] object V was initialized
|
|
|
+** using [sqlite3_bind_pointer(S,I,P,X,D)] or [sqlite3_result_pointer(C,P,X,D)]
|
|
|
+** and if X and Y are strings that compare equal according to strcmp(X,Y),
|
|
|
+** then sqlite3_value_pointer(V,Y) will return the pointer P. ^Otherwise,
|
|
|
+** sqlite3_value_pointer(V,Y) returns a NULL. The sqlite3_bind_pointer()
|
|
|
+** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
|
|
|
+**
|
|
|
+** ^(The sqlite3_value_type(V) interface returns the
|
|
|
+** [SQLITE_INTEGER | datatype code] for the initial datatype of the
|
|
|
+** [sqlite3_value] object V. The returned value is one of [SQLITE_INTEGER],
|
|
|
+** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].)^
|
|
|
+** Other interfaces might change the datatype for an sqlite3_value object.
|
|
|
+** For example, if the datatype is initially SQLITE_INTEGER and
|
|
|
+** sqlite3_value_text(V) is called to extract a text value for that
|
|
|
+** integer, then subsequent calls to sqlite3_value_type(V) might return
|
|
|
+** SQLITE_TEXT. Whether or not a persistent internal datatype conversion
|
|
|
+** occurs is undefined and may change from one release of SQLite to the next.
|
|
|
+**
|
|
|
** ^(The sqlite3_value_numeric_type() interface attempts to apply
|
|
|
** numeric affinity to the value. This means that an attempt is
|
|
|
** made to convert the value to an integer or floating point. If
|
|
|
@@ -4627,15 +4793,16 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
|
|
|
** the SQL function that supplied the [sqlite3_value*] parameters.
|
|
|
*/
|
|
|
SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
|
|
|
-SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
|
|
|
-SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
|
|
|
SQLITE_API double sqlite3_value_double(sqlite3_value*);
|
|
|
SQLITE_API int sqlite3_value_int(sqlite3_value*);
|
|
|
SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
|
|
|
+SQLITE_API void *sqlite3_value_pointer(sqlite3_value*, const char*);
|
|
|
SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
|
|
|
SQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
|
|
|
SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
|
|
|
SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
|
|
|
+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*);
|
|
|
|
|
|
@@ -4648,10 +4815,6 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
|
|
|
** information can be used to pass a limited amount of context from
|
|
|
** one SQL function to another. Use the [sqlite3_result_subtype()]
|
|
|
** routine to set the subtype for the return value of an SQL function.
|
|
|
-**
|
|
|
-** SQLite makes no use of subtype itself. It merely passes the subtype
|
|
|
-** from the result of one [application-defined SQL function] into the
|
|
|
-** input of another.
|
|
|
*/
|
|
|
SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
|
|
|
|
|
|
@@ -4759,10 +4922,11 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
|
|
|
** the compiled regular expression can be reused on multiple
|
|
|
** invocations of the same function.
|
|
|
**
|
|
|
-** ^The sqlite3_get_auxdata() interface returns a pointer to the metadata
|
|
|
-** associated by the sqlite3_set_auxdata() function with the Nth argument
|
|
|
-** value to the application-defined function. ^If there is no metadata
|
|
|
-** associated with the function argument, this sqlite3_get_auxdata() interface
|
|
|
+** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the metadata
|
|
|
+** associated by the sqlite3_set_auxdata(C,N,P,X) function with the Nth argument
|
|
|
+** value to the application-defined function. ^N is zero for the left-most
|
|
|
+** function argument. ^If there is no metadata
|
|
|
+** associated with the function argument, the sqlite3_get_auxdata(C,N) interface
|
|
|
** returns a NULL pointer.
|
|
|
**
|
|
|
** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as metadata for the N-th
|
|
|
@@ -4793,6 +4957,10 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
|
|
|
** function parameters that are compile-time constants, including literal
|
|
|
** values and [parameters] and expressions composed from the same.)^
|
|
|
**
|
|
|
+** The value of the N parameter to these interfaces should be non-negative.
|
|
|
+** Future enhancements may make use of negative N values to define new
|
|
|
+** kinds of function caching behavior.
|
|
|
+**
|
|
|
** These routines must be called from the same thread in which
|
|
|
** the SQL function is running.
|
|
|
*/
|
|
|
@@ -4916,7 +5084,7 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
|
** when it has finished using that result.
|
|
|
** ^If the 4th parameter to the sqlite3_result_text* interfaces
|
|
|
** or sqlite3_result_blob is the special constant SQLITE_TRANSIENT
|
|
|
-** then SQLite makes a copy of the result into space obtained from
|
|
|
+** then SQLite makes a copy of the result into space obtained
|
|
|
** from [sqlite3_malloc()] before it returns.
|
|
|
**
|
|
|
** ^The sqlite3_result_value() interface sets the result of
|
|
|
@@ -4929,6 +5097,17 @@ typedef void (*sqlite3_destructor_type)(void*);
|
|
|
** [unprotected sqlite3_value] object is required, so either
|
|
|
** kind of [sqlite3_value] object can be used with this interface.
|
|
|
**
|
|
|
+** ^The sqlite3_result_pointer(C,P,T,D) interface sets the result to an
|
|
|
+** SQL NULL value, just like [sqlite3_result_null(C)], except that it
|
|
|
+** also associates the host-language pointer P or type T with that
|
|
|
+** NULL value such that the pointer can be retrieved within an
|
|
|
+** [application-defined SQL function] using [sqlite3_value_pointer()].
|
|
|
+** ^If the D parameter is not NULL, then it is a pointer to a destructor
|
|
|
+** for the P parameter. ^SQLite invokes D with P as its only argument
|
|
|
+** when SQLite is finished with P. The T parameter should be a static
|
|
|
+** string and preferably a string literal. The sqlite3_result_pointer()
|
|
|
+** routine is part of the [pointer passing interface] added for SQLite 3.20.0.
|
|
|
+**
|
|
|
** If these routines are called from within the different thread
|
|
|
** than the one containing the application-defined function that received
|
|
|
** the [sqlite3_context] pointer, the results are undefined.
|
|
|
@@ -4952,6 +5131,7 @@ SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*
|
|
|
SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
|
|
|
SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
|
|
|
SQLITE_API void sqlite3_result_value(sqlite3_context*, sqlite3_value*);
|
|
|
+SQLITE_API void sqlite3_result_pointer(sqlite3_context*, void*,const char*,void(*)(void*));
|
|
|
SQLITE_API void sqlite3_result_zeroblob(sqlite3_context*, int n);
|
|
|
SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
|
|
|
|
|
|
@@ -5611,7 +5791,9 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
|
|
|
** ^If the column-name parameter to sqlite3_table_column_metadata() is a
|
|
|
** NULL pointer, then this routine simply checks for the existence of the
|
|
|
** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
|
|
|
-** does not.
|
|
|
+** does not. If the table name parameter T in a call to
|
|
|
+** sqlite3_table_column_metadata(X,D,T,C,...) is NULL then the result is
|
|
|
+** undefined behavior.
|
|
|
**
|
|
|
** ^The column is identified by the second, third and fourth parameters to
|
|
|
** this function. ^(The second parameter is either the name of the database
|
|
|
@@ -7124,6 +7306,24 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
|
** used as a proxy for the total work done by the prepared statement.
|
|
|
** If the number of virtual machine operations exceeds 2147483647
|
|
|
** then the value returned by this statement status code is undefined.
|
|
|
+**
|
|
|
+** [[SQLITE_STMTSTATUS_REPREPARE]] <dt>SQLITE_STMTSTATUS_REPREPARE</dt>
|
|
|
+** <dd>^This is the number of times that the prepare statement has been
|
|
|
+** automatically regenerated due to schema changes or change to
|
|
|
+** [bound parameters] that might affect the query plan.
|
|
|
+**
|
|
|
+** [[SQLITE_STMTSTATUS_RUN]] <dt>SQLITE_STMTSTATUS_RUN</dt>
|
|
|
+** <dd>^This is the number of times that the prepared statement has
|
|
|
+** been run. A single "run" for the purposes of this counter is one
|
|
|
+** or more calls to [sqlite3_step()] followed by a call to [sqlite3_reset()].
|
|
|
+** The counter is incremented on the first [sqlite3_step()] call of each
|
|
|
+** cycle.
|
|
|
+**
|
|
|
+** [[SQLITE_STMTSTATUS_MEMUSED]] <dt>SQLITE_STMTSTATUS_MEMUSED</dt>
|
|
|
+** <dd>^This is the approximate number of bytes of heap memory
|
|
|
+** used to store the prepared statement. ^This value is not actually
|
|
|
+** a counter, and so the resetFlg parameter to sqlite3_stmt_status()
|
|
|
+** is ignored when the opcode is SQLITE_STMTSTATUS_MEMUSED.
|
|
|
** </dd>
|
|
|
** </dl>
|
|
|
*/
|
|
|
@@ -7131,6 +7331,9 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt*, int op,int resetFlg);
|
|
|
#define SQLITE_STMTSTATUS_SORT 2
|
|
|
#define SQLITE_STMTSTATUS_AUTOINDEX 3
|
|
|
#define SQLITE_STMTSTATUS_VM_STEP 4
|
|
|
+#define SQLITE_STMTSTATUS_REPREPARE 5
|
|
|
+#define SQLITE_STMTSTATUS_RUN 6
|
|
|
+#define SQLITE_STMTSTATUS_MEMUSED 99
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Custom Page Cache Object
|
|
|
@@ -9387,7 +9590,7 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
|
|
|
** sqlite3changegroup_output() functions, also available are the streaming
|
|
|
** versions sqlite3changegroup_add_strm() and sqlite3changegroup_output_strm().
|
|
|
*/
|
|
|
-int sqlite3changegroup_new(sqlite3_changegroup **pp);
|
|
|
+SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Add A Changeset To A Changegroup
|
|
|
@@ -9464,7 +9667,7 @@ int sqlite3changegroup_new(sqlite3_changegroup **pp);
|
|
|
**
|
|
|
** If no error occurs, SQLITE_OK is returned.
|
|
|
*/
|
|
|
-int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
|
|
|
+SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Obtain A Composite Changeset From A Changegroup
|
|
|
@@ -9490,7 +9693,7 @@ int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
|
|
|
** responsibility of the caller to eventually free the buffer using a
|
|
|
** call to sqlite3_free().
|
|
|
*/
|
|
|
-int sqlite3changegroup_output(
|
|
|
+SQLITE_API int sqlite3changegroup_output(
|
|
|
sqlite3_changegroup*,
|
|
|
int *pnData, /* OUT: Size of output buffer in bytes */
|
|
|
void **ppData /* OUT: Pointer to output buffer */
|
|
|
@@ -9499,7 +9702,7 @@ int sqlite3changegroup_output(
|
|
|
/*
|
|
|
** CAPI3REF: Delete A Changegroup Object
|
|
|
*/
|
|
|
-void sqlite3changegroup_delete(sqlite3_changegroup*);
|
|
|
+SQLITE_API void sqlite3changegroup_delete(sqlite3_changegroup*);
|
|
|
|
|
|
/*
|
|
|
** CAPI3REF: Apply A Changeset To A Database
|
|
|
@@ -9888,11 +10091,11 @@ SQLITE_API int sqlite3session_patchset_strm(
|
|
|
int (*xOutput)(void *pOut, const void *pData, int nData),
|
|
|
void *pOut
|
|
|
);
|
|
|
-int sqlite3changegroup_add_strm(sqlite3_changegroup*,
|
|
|
+SQLITE_API int sqlite3changegroup_add_strm(sqlite3_changegroup*,
|
|
|
int (*xInput)(void *pIn, void *pData, int *pnData),
|
|
|
void *pIn
|
|
|
);
|
|
|
-int sqlite3changegroup_output_strm(sqlite3_changegroup*,
|
|
|
+SQLITE_API int sqlite3changegroup_output_strm(sqlite3_changegroup*,
|
|
|
int (*xOutput)(void *pOut, const void *pData, int nData),
|
|
|
void *pOut
|
|
|
);
|