Merge pull request #513 from gwenn/3.28

Upgrade bundled SQLite sources to 3.28.0
This commit is contained in:
gwenn 2019-04-25 19:15:47 +02:00 committed by GitHub
commit 6ba8934cba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 4868 additions and 3779 deletions

View File

@ -28,7 +28,7 @@ preupdate_hook = []
session = ["preupdate_hook"]
[build-dependencies]
bindgen = { version = "0.48", optional = true }
bindgen = { version = "0.49", optional = true }
pkg-config = { version = "0.3", optional = true }
cc = { version = "1.0", optional = true }

View File

@ -1,10 +1,10 @@
/* automatically generated by rust-bindgen */
pub const __GNUC_VA_LIST: i32 = 1;
pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.27.2\0";
pub const SQLITE_VERSION_NUMBER: i32 = 3027002;
pub const SQLITE_VERSION: &'static [u8; 7usize] = b"3.28.0\0";
pub const SQLITE_VERSION_NUMBER: i32 = 3028000;
pub const SQLITE_SOURCE_ID: &'static [u8; 85usize] =
b"2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7\0";
b"2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50\0";
pub const SQLITE_OK: i32 = 0;
pub const SQLITE_ERROR: i32 = 1;
pub const SQLITE_INTERNAL: i32 = 2;
@ -231,7 +231,8 @@ pub const SQLITE_DBCONFIG_ENABLE_QPSG: i32 = 1007;
pub const SQLITE_DBCONFIG_TRIGGER_EQP: i32 = 1008;
pub const SQLITE_DBCONFIG_RESET_DATABASE: i32 = 1009;
pub const SQLITE_DBCONFIG_DEFENSIVE: i32 = 1010;
pub const SQLITE_DBCONFIG_MAX: i32 = 1010;
pub const SQLITE_DBCONFIG_WRITABLE_SCHEMA: i32 = 1011;
pub const SQLITE_DBCONFIG_MAX: i32 = 1011;
pub const SQLITE_DENY: i32 = 1;
pub const SQLITE_IGNORE: i32 = 2;
pub const SQLITE_CREATE_INDEX: i32 = 1;
@ -473,9 +474,9 @@ extern "C" {
callback: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
sql: ::std::os::raw::c_int,
callback: *mut *mut ::std::os::raw::c_char,
arg2: *mut *mut ::std::os::raw::c_char,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut ::std::os::raw::c_char,
arg4: *mut *mut ::std::os::raw::c_char,
) -> ::std::os::raw::c_int,
>,
arg2: *mut ::std::os::raw::c_void,
@ -1453,11 +1454,11 @@ extern "C" {
xAuth: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
xAuth: ::std::os::raw::c_int,
pUserData: *const ::std::os::raw::c_char,
arg2: *const ::std::os::raw::c_char,
arg2: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_char,
arg4: *const ::std::os::raw::c_char,
arg5: *const ::std::os::raw::c_char,
arg6: *const ::std::os::raw::c_char,
) -> ::std::os::raw::c_int,
>,
pUserData: *mut ::std::os::raw::c_void,
@ -1469,7 +1470,7 @@ extern "C" {
xTrace: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
xTrace: *const ::std::os::raw::c_char,
arg2: *const ::std::os::raw::c_char,
),
>,
arg2: *mut ::std::os::raw::c_void,
@ -1481,8 +1482,8 @@ extern "C" {
xProfile: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
xProfile: *const ::std::os::raw::c_char,
arg2: sqlite3_uint64,
arg2: *const ::std::os::raw::c_char,
arg3: sqlite3_uint64,
),
>,
arg2: *mut ::std::os::raw::c_void,
@ -1495,9 +1496,9 @@ extern "C" {
xCallback: ::std::option::Option<
unsafe extern "C" fn(
arg1: ::std::os::raw::c_uint,
uMask: *mut ::std::os::raw::c_void,
xCallback: *mut ::std::os::raw::c_void,
pCtx: *mut ::std::os::raw::c_void,
arg2: *mut ::std::os::raw::c_void,
arg3: *mut ::std::os::raw::c_void,
arg4: *mut ::std::os::raw::c_void,
) -> ::std::os::raw::c_int,
>,
pCtx: *mut ::std::os::raw::c_void,
@ -1648,6 +1649,9 @@ extern "C" {
extern "C" {
pub fn sqlite3_stmt_readonly(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn sqlite3_stmt_isexplain(pStmt: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn sqlite3_stmt_busy(arg1: *mut sqlite3_stmt) -> ::std::os::raw::c_int;
}
@ -1923,19 +1927,19 @@ extern "C" {
pApp: *mut ::std::os::raw::c_void,
xFunc: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xStep: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xFinal: ::std::option::Option<unsafe extern "C" fn(db: *mut sqlite3_context)>,
xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
) -> ::std::os::raw::c_int;
}
extern "C" {
@ -1947,19 +1951,19 @@ extern "C" {
pApp: *mut ::std::os::raw::c_void,
xFunc: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xStep: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xFinal: ::std::option::Option<unsafe extern "C" fn(db: *mut sqlite3_context)>,
xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
) -> ::std::os::raw::c_int;
}
extern "C" {
@ -1971,20 +1975,20 @@ extern "C" {
pApp: *mut ::std::os::raw::c_void,
xFunc: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xStep: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xFinal: ::std::option::Option<unsafe extern "C" fn(db: *mut sqlite3_context)>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(db: *mut ::std::os::raw::c_void)>,
xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
) -> ::std::os::raw::c_int;
}
extern "C" {
@ -1996,21 +2000,21 @@ extern "C" {
pApp: *mut ::std::os::raw::c_void,
xStep: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xFinal: ::std::option::Option<unsafe extern "C" fn(db: *mut sqlite3_context)>,
xValue: ::std::option::Option<unsafe extern "C" fn(db: *mut sqlite3_context)>,
xFinal: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
xValue: ::std::option::Option<unsafe extern "C" fn(arg1: *mut sqlite3_context)>,
xInverse: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_context,
zFunctionName: ::std::os::raw::c_int,
nArg: *mut *mut sqlite3_value,
arg1: *mut sqlite3_context,
arg2: ::std::os::raw::c_int,
arg3: *mut *mut sqlite3_value,
),
>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(db: *mut ::std::os::raw::c_void)>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
) -> ::std::os::raw::c_int;
}
extern "C" {
@ -2089,6 +2093,9 @@ extern "C" {
extern "C" {
pub fn sqlite3_value_nochange(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn sqlite3_value_frombind(arg1: *mut sqlite3_value) -> ::std::os::raw::c_int;
}
extern "C" {
pub fn sqlite3_value_subtype(arg1: *mut sqlite3_value) -> ::std::os::raw::c_uint;
}
@ -2250,10 +2257,10 @@ extern "C" {
xCompare: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
zName: ::std::os::raw::c_int,
eTextRep: *const ::std::os::raw::c_void,
pArg: ::std::os::raw::c_int,
xCompare: *const ::std::os::raw::c_void,
arg2: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_void,
arg4: ::std::os::raw::c_int,
arg5: *const ::std::os::raw::c_void,
) -> ::std::os::raw::c_int,
>,
) -> ::std::os::raw::c_int;
@ -2267,10 +2274,10 @@ extern "C" {
xCompare: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
zName: ::std::os::raw::c_int,
eTextRep: *const ::std::os::raw::c_void,
pArg: ::std::os::raw::c_int,
xCompare: *const ::std::os::raw::c_void,
arg2: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_void,
arg4: ::std::os::raw::c_int,
arg5: *const ::std::os::raw::c_void,
) -> ::std::os::raw::c_int,
>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
@ -2285,10 +2292,10 @@ extern "C" {
xCompare: ::std::option::Option<
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
zName: ::std::os::raw::c_int,
eTextRep: *const ::std::os::raw::c_void,
pArg: ::std::os::raw::c_int,
xCompare: *const ::std::os::raw::c_void,
arg2: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_void,
arg4: ::std::os::raw::c_int,
arg5: *const ::std::os::raw::c_void,
) -> ::std::os::raw::c_int,
>,
) -> ::std::os::raw::c_int;
@ -2301,8 +2308,8 @@ extern "C" {
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
arg2: *mut sqlite3,
arg3: ::std::os::raw::c_int,
arg4: *const ::std::os::raw::c_char,
eTextRep: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_char,
),
>,
) -> ::std::os::raw::c_int;
@ -2315,8 +2322,8 @@ extern "C" {
unsafe extern "C" fn(
arg1: *mut ::std::os::raw::c_void,
arg2: *mut sqlite3,
arg3: ::std::os::raw::c_int,
arg4: *const ::std::os::raw::c_void,
eTextRep: ::std::os::raw::c_int,
arg3: *const ::std::os::raw::c_void,
),
>,
) -> ::std::os::raw::c_int;
@ -3211,7 +3218,7 @@ extern "C" {
zName: *const ::std::os::raw::c_char,
p: *const sqlite3_module,
pClientData: *mut ::std::os::raw::c_void,
xDestroy: ::std::option::Option<unsafe extern "C" fn(db: *mut ::std::os::raw::c_void)>,
xDestroy: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
) -> ::std::os::raw::c_int;
}
#[repr(C)]
@ -4092,8 +4099,8 @@ extern "C" {
pBlocked: *mut sqlite3,
xNotify: ::std::option::Option<
unsafe extern "C" fn(
pBlocked: *mut *mut ::std::os::raw::c_void,
xNotify: ::std::os::raw::c_int,
apArg: *mut *mut ::std::os::raw::c_void,
nArg: ::std::os::raw::c_int,
),
>,
pNotifyArg: *mut ::std::os::raw::c_void,
@ -4285,10 +4292,10 @@ extern "C" {
zGeom: *const ::std::os::raw::c_char,
xGeom: ::std::option::Option<
unsafe extern "C" fn(
db: *mut sqlite3_rtree_geometry,
zGeom: ::std::os::raw::c_int,
xGeom: *mut sqlite3_rtree_dbl,
pContext: *mut ::std::os::raw::c_int,
arg1: *mut sqlite3_rtree_geometry,
arg2: ::std::os::raw::c_int,
arg3: *mut sqlite3_rtree_dbl,
arg4: *mut ::std::os::raw::c_int,
) -> ::std::os::raw::c_int,
>,
pContext: *mut ::std::os::raw::c_void,
@ -4371,10 +4378,10 @@ extern "C" {
db: *mut sqlite3,
zQueryFunc: *const ::std::os::raw::c_char,
xQueryFunc: ::std::option::Option<
unsafe extern "C" fn(db: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
unsafe extern "C" fn(arg1: *mut sqlite3_rtree_query_info) -> ::std::os::raw::c_int,
>,
pContext: *mut ::std::os::raw::c_void,
xDestructor: ::std::option::Option<unsafe extern "C" fn(db: *mut ::std::os::raw::c_void)>,
xDestructor: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
) -> ::std::os::raw::c_int;
}
#[repr(C)]

File diff suppressed because it is too large Load Diff

View File

@ -123,9 +123,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION "3.27.2"
#define SQLITE_VERSION_NUMBER 3027002
#define SQLITE_SOURCE_ID "2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7"
#define SQLITE_VERSION "3.28.0"
#define SQLITE_VERSION_NUMBER 3028000
#define SQLITE_SOURCE_ID "2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50"
/*
** CAPI3REF: Run-Time Library Version Numbers
@ -189,6 +189,9 @@ SQLITE_API int sqlite3_libversion_number(void);
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
SQLITE_API int sqlite3_compileoption_used(const char *zOptName);
SQLITE_API const char *sqlite3_compileoption_get(int N);
#else
# define sqlite3_compileoption_used(X) 0
# define sqlite3_compileoption_get(X) ((void*)0)
#endif
/*
@ -2086,8 +2089,8 @@ struct sqlite3_mem_methods {
**
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
** <dd> ^This option is used to enable or disable the two-argument
** version of the [fts3_tokenizer()] function which is part of the
** <dd> ^This option is used to enable or disable the
** [fts3_tokenizer()] function which is part of the
** [FTS3] full-text search engine extension.
** There should be two additional arguments.
** The first argument is an integer which is 0 to disable fts3_tokenizer() or
@ -2199,6 +2202,17 @@ struct sqlite3_mem_methods {
** <li> Direct writes to [shadow tables].
** </ul>
** </dd>
**
** [[SQLITE_DBCONFIG_WRITABLE_SCHEMA]] <dt>SQLITE_DBCONFIG_WRITABLE_SCHEMA</dt>
** <dd>The SQLITE_DBCONFIG_WRITABLE_SCHEMA option activates or deactivates the
** "writable_schema" flag. This has the same effect and is logically equivalent
** to setting [PRAGMA writable_schema=ON] or [PRAGMA writable_schema=OFF].
** The first argument to this setting is an integer which is 0 to disable
** the writable_schema, positive to enable writable_schema, or negative to
** leave the setting unchanged. The second parameter is a pointer to an
** integer into which is written 0 or 1 to indicate whether the writable_schema
** is enabled or disabled following this call.
** </dd>
** </dl>
*/
#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
@ -2212,7 +2226,8 @@ struct sqlite3_mem_methods {
#define SQLITE_DBCONFIG_TRIGGER_EQP 1008 /* int int* */
#define SQLITE_DBCONFIG_RESET_DATABASE 1009 /* int int* */
#define SQLITE_DBCONFIG_DEFENSIVE 1010 /* int int* */
#define SQLITE_DBCONFIG_MAX 1010 /* Largest DBCONFIG */
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA 1011 /* int int* */
#define SQLITE_DBCONFIG_MAX 1011 /* Largest DBCONFIG */
/*
** CAPI3REF: Enable Or Disable Extended Result Codes
@ -3894,6 +3909,18 @@ SQLITE_API const char *sqlite3_normalized_sql(sqlite3_stmt *pStmt);
*/
SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Query The EXPLAIN Setting For A Prepared Statement
** METHOD: sqlite3_stmt
**
** ^The sqlite3_stmt_isexplain(S) interface returns 1 if the
** prepared statement S is an EXPLAIN statement, or 2 if the
** statement S is an EXPLAIN QUERY PLAN.
** ^The sqlite3_stmt_isexplain(S) interface returns 0 if S is
** an ordinary statement or a NULL pointer.
*/
SQLITE_API int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
** METHOD: sqlite3_stmt
@ -4033,7 +4060,9 @@ typedef struct sqlite3_context sqlite3_context;
** ^The fifth argument to the BLOB and string binding interfaces
** is a destructor used to dispose of the BLOB or
** string after SQLite has finished with it. ^The destructor is called
** to dispose of the BLOB or string even if the call to bind API fails.
** to dispose of the BLOB or string even if the call to the bind API fails,
** except the destructor is not called if the third parameter is a NULL
** pointer or the fourth parameter is negative.
** ^If the fifth argument is
** the special value [SQLITE_STATIC], then SQLite assumes that the
** information is in static, unmanaged space and does not need to be freed.
@ -4950,6 +4979,8 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
** <tr><td><b>sqlite3_value_nochange&nbsp;&nbsp;</b>
** <td>&rarr;&nbsp;&nbsp;<td>True if the column is unchanged in an UPDATE
** against a virtual table.
** <tr><td><b>sqlite3_value_frombind&nbsp;&nbsp;</b>
** <td>&rarr;&nbsp;&nbsp;<td>True if value originated from a [bound parameter]
** </table></blockquote>
**
** <b>Details:</b>
@ -5011,6 +5042,11 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
** than within an [xUpdate] method call for an UPDATE statement, then
** the return value is arbitrary and meaningless.
**
** ^The sqlite3_value_frombind(X) interface returns non-zero if the
** value X originated from one of the [sqlite3_bind_int|sqlite3_bind()]
** interfaces. ^If X comes from an SQL literal value, or a table column,
** and expression, then sqlite3_value_frombind(X) returns zero.
**
** 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
@ -5056,6 +5092,7 @@ 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*);
SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
/*
** CAPI3REF: Finding The Subtype Of SQL Values
@ -5791,7 +5828,7 @@ SQLITE_API sqlite3 *sqlite3_db_handle(sqlite3_stmt*);
** associated with database N of connection D. ^The main database file
** has the name "main". If there is no attached database N on the database
** connection D, or if database N is a temporary or in-memory database, then
** a NULL pointer is returned.
** this function will return either a NULL pointer or an empty string.
**
** ^The filename returned by this function is the output of the
** xFullPathname method of the [VFS]. ^In other words, the filename
@ -10892,7 +10929,7 @@ SQLITE_API int sqlite3rebaser_configure(
** in size. This function allocates and populates a buffer with a copy
** of the changeset rebased rebased according to the configuration of the
** rebaser object passed as the first argument. If successful, (*ppOut)
** is set to point to the new buffer containing the rebased changset and
** is set to point to the new buffer containing the rebased changeset and
** (*pnOut) to its size in bytes and SQLITE_OK returned. It is the
** responsibility of the caller to eventually free the new buffer using
** sqlite3_free(). Otherwise, if an error occurs, (*ppOut) and (*pnOut)
@ -11301,7 +11338,7 @@ struct Fts5PhraseIter {
** Save the pointer passed as the second argument as the extension functions
** "auxiliary data". The pointer may then be retrieved by the current or any
** future invocation of the same fts5 extension function made as part of
** of the same MATCH query using the xGetAuxdata() API.
** the same MATCH query using the xGetAuxdata() API.
**
** Each extension function is allocated a single auxiliary data slot for
** each FTS query (MATCH expression). If the extension function is invoked
@ -11316,7 +11353,7 @@ struct Fts5PhraseIter {
** The xDelete callback, if one is specified, is also invoked on the
** auxiliary data pointer after the FTS5 query has finished.
**
** If an error (e.g. an OOM condition) occurs within this function, an
** If an error (e.g. an OOM condition) occurs within this function,
** the auxiliary data is set to NULL and an error code returned. If the
** xDelete parameter was not NULL, it is invoked on the auxiliary data
** pointer before returning.

View File

@ -319,6 +319,9 @@ struct sqlite3_api_routines {
void(*xDestroy)(void*));
/* Version 3.26.0 and later */
const char *(*normalized_sql)(sqlite3_stmt*);
/* Version 3.28.0 and later */
int (*stmt_isexplain)(sqlite3_stmt*);
int (*value_frombind)(sqlite3_value*);
};
/*
@ -608,6 +611,9 @@ typedef int (*sqlite3_loadext_entry)(
#define sqlite3_create_window_function sqlite3_api->create_window_function
/* Version 3.26.0 and later */
#define sqlite3_normalized_sql sqlite3_api->normalized_sql
/* Version 3.28.0 and later */
#define sqlite3_stmt_isexplain sqlite3_api->isexplain
#define sqlite3_value_frombind sqlite3_api->frombind
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)

View File

@ -4,7 +4,7 @@ cd $SCRIPT_DIR
export SQLITE3_LIB_DIR=$SCRIPT_DIR/sqlite3
# Download and extract amalgamation
SQLITE=sqlite-amalgamation-3270200
SQLITE=sqlite-amalgamation-3280000
curl -O http://sqlite.org/2019/$SQLITE.zip
unzip -p $SQLITE.zip $SQLITE/sqlite3.c > $SQLITE3_LIB_DIR/sqlite3.c
unzip -p $SQLITE.zip $SQLITE/sqlite3.h > $SQLITE3_LIB_DIR/sqlite3.h