Bump to Sqlite 3.27.2
This commit is contained in:
9152
c_src/sqlite3.c
9152
c_src/sqlite3.c
File diff suppressed because it is too large
Load Diff
@@ -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.26.0"
|
#define SQLITE_VERSION "3.27.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3026000
|
#define SQLITE_VERSION_NUMBER 3027002
|
||||||
#define SQLITE_SOURCE_ID "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
|
#define SQLITE_SOURCE_ID "2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
@@ -823,6 +823,15 @@ struct sqlite3_io_methods {
|
|||||||
** file space based on this hint in order to help writes to the database
|
** file space based on this hint in order to help writes to the database
|
||||||
** file run faster.
|
** file run faster.
|
||||||
**
|
**
|
||||||
|
** <li>[[SQLITE_FCNTL_SIZE_LIMIT]]
|
||||||
|
** The [SQLITE_FCNTL_SIZE_LIMIT] opcode is used by in-memory VFS that
|
||||||
|
** implements [sqlite3_deserialize()] to set an upper bound on the size
|
||||||
|
** of the in-memory database. The argument is a pointer to a [sqlite3_int64].
|
||||||
|
** If the integer pointed to is negative, then it is filled in with the
|
||||||
|
** current limit. Otherwise the limit is set to the larger of the value
|
||||||
|
** of the integer pointed to and the current database size. The integer
|
||||||
|
** pointed to is set to the new limit.
|
||||||
|
**
|
||||||
** <li>[[SQLITE_FCNTL_CHUNK_SIZE]]
|
** <li>[[SQLITE_FCNTL_CHUNK_SIZE]]
|
||||||
** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
|
** The [SQLITE_FCNTL_CHUNK_SIZE] opcode is used to request that the VFS
|
||||||
** extends and truncates the database file in chunks of a size specified
|
** extends and truncates the database file in chunks of a size specified
|
||||||
@@ -1131,6 +1140,7 @@ struct sqlite3_io_methods {
|
|||||||
#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
|
#define SQLITE_FCNTL_DATA_VERSION 35
|
||||||
|
#define SQLITE_FCNTL_SIZE_LIMIT 36
|
||||||
|
|
||||||
/* deprecated names */
|
/* deprecated names */
|
||||||
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
#define SQLITE_GET_LOCKPROXYFILE SQLITE_FCNTL_GET_LOCKPROXYFILE
|
||||||
@@ -1972,6 +1982,17 @@ struct sqlite3_mem_methods {
|
|||||||
** negative value for this option restores the default behaviour.
|
** negative value for this option restores the default behaviour.
|
||||||
** This option is only available if SQLite is compiled with the
|
** This option is only available if SQLite is compiled with the
|
||||||
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
|
||||||
|
**
|
||||||
|
** [[SQLITE_CONFIG_MEMDB_MAXSIZE]]
|
||||||
|
** <dt>SQLITE_CONFIG_MEMDB_MAXSIZE
|
||||||
|
** <dd>The SQLITE_CONFIG_MEMDB_MAXSIZE option accepts a single parameter
|
||||||
|
** [sqlite3_int64] parameter which is the default maximum size for an in-memory
|
||||||
|
** database created using [sqlite3_deserialize()]. This default maximum
|
||||||
|
** size can be adjusted up or down for individual databases using the
|
||||||
|
** [SQLITE_FCNTL_SIZE_LIMIT] [sqlite3_file_control|file-control]. If this
|
||||||
|
** configuration setting is never used, then the default maximum is determined
|
||||||
|
** by the [SQLITE_MEMDB_DEFAULT_MAXSIZE] compile-time option. If that
|
||||||
|
** compile-time option is not set, then the default maximum is 1073741824.
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
||||||
@@ -2002,6 +2023,7 @@ struct sqlite3_mem_methods {
|
|||||||
#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 */
|
#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
|
||||||
|
#define SQLITE_CONFIG_MEMDB_MAXSIZE 29 /* sqlite3_int64 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Database Connection Configuration Options
|
** CAPI3REF: Database Connection Configuration Options
|
||||||
@@ -2347,7 +2369,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
|||||||
** 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.
|
||||||
**
|
**
|
||||||
** This the [sqlite3_total_changes(D)] interface only reports the number
|
** The [sqlite3_total_changes(D)] interface only reports the number
|
||||||
** of rows that changed due to SQL statement run against database
|
** of rows that changed due to SQL statement run against database
|
||||||
** connection D. Any changes by other database connections are ignored.
|
** connection D. Any changes by other database connections are ignored.
|
||||||
** To detect changes against a database file from other database
|
** To detect changes against a database file from other database
|
||||||
@@ -2991,9 +3013,9 @@ SQLITE_API int sqlite3_set_authorizer(
|
|||||||
** time is in units of nanoseconds, however the current implementation
|
** time is in units of nanoseconds, however the current implementation
|
||||||
** is only capable of millisecond resolution so the six least significant
|
** is only capable of millisecond resolution so the six least significant
|
||||||
** digits in the time are meaningless. Future versions of SQLite
|
** digits in the time are meaningless. Future versions of SQLite
|
||||||
** might provide greater resolution on the profiler callback. The
|
** might provide greater resolution on the profiler callback. Invoking
|
||||||
** sqlite3_profile() function is considered experimental and is
|
** either [sqlite3_trace()] or [sqlite3_trace_v2()] will cancel the
|
||||||
** subject to change in future versions of SQLite.
|
** profile callback.
|
||||||
*/
|
*/
|
||||||
SQLITE_API SQLITE_DEPRECATED void *sqlite3_trace(sqlite3*,
|
SQLITE_API SQLITE_DEPRECATED void *sqlite3_trace(sqlite3*,
|
||||||
void(*xTrace)(void*,const char*), void*);
|
void(*xTrace)(void*,const char*), void*);
|
||||||
@@ -3407,6 +3429,8 @@ SQLITE_API int sqlite3_open_v2(
|
|||||||
** is not a database file pathname pointer that SQLite passed into the xOpen
|
** is not a database file pathname pointer that SQLite passed into the xOpen
|
||||||
** VFS method, then the behavior of this routine is undefined and probably
|
** VFS method, then the behavior of this routine is undefined and probably
|
||||||
** undesirable.
|
** undesirable.
|
||||||
|
**
|
||||||
|
** See the [URI filename] documentation for additional information.
|
||||||
*/
|
*/
|
||||||
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
|
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam);
|
||||||
SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
|
SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
|
||||||
@@ -3629,18 +3653,23 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
|
|||||||
** deplete the limited store of lookaside memory. Future versions of
|
** deplete the limited store of lookaside memory. Future versions of
|
||||||
** SQLite may act on this hint differently.
|
** SQLite may act on this hint differently.
|
||||||
**
|
**
|
||||||
** [[SQLITE_PREPARE_NORMALIZE]] ^(<dt>SQLITE_PREPARE_NORMALIZE</dt>
|
** [[SQLITE_PREPARE_NORMALIZE]] <dt>SQLITE_PREPARE_NORMALIZE</dt>
|
||||||
** <dd>The SQLITE_PREPARE_NORMALIZE flag indicates that a normalized
|
** <dd>The SQLITE_PREPARE_NORMALIZE flag is a no-op. This flag used
|
||||||
** representation of the SQL statement should be calculated and then
|
** to be required for any prepared statement that wanted to use the
|
||||||
** associated with the prepared statement, which can be obtained via
|
** [sqlite3_normalized_sql()] interface. However, the
|
||||||
** the [sqlite3_normalized_sql()] interface.)^ The semantics used to
|
** [sqlite3_normalized_sql()] interface is now available to all
|
||||||
** normalize a SQL statement are unspecified and subject to change.
|
** prepared statements, regardless of whether or not they use this
|
||||||
** At a minimum, literal values will be replaced with suitable
|
** flag.
|
||||||
** placeholders.
|
**
|
||||||
|
** [[SQLITE_PREPARE_NO_VTAB]] <dt>SQLITE_PREPARE_NO_VTAB</dt>
|
||||||
|
** <dd>The SQLITE_PREPARE_NO_VTAB flag causes the SQL compiler
|
||||||
|
** to return an error (error code SQLITE_ERROR) if the statement uses
|
||||||
|
** any virtual tables.
|
||||||
** </dl>
|
** </dl>
|
||||||
*/
|
*/
|
||||||
#define SQLITE_PREPARE_PERSISTENT 0x01
|
#define SQLITE_PREPARE_PERSISTENT 0x01
|
||||||
#define SQLITE_PREPARE_NORMALIZE 0x02
|
#define SQLITE_PREPARE_NORMALIZE 0x02
|
||||||
|
#define SQLITE_PREPARE_NO_VTAB 0x04
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Compiling An SQL Statement
|
** CAPI3REF: Compiling An SQL Statement
|
||||||
@@ -9996,7 +10025,7 @@ SQLITE_API int sqlite3changeset_next(sqlite3_changeset_iter *pIter);
|
|||||||
** sqlite3changeset_next() is called on the iterator or until the
|
** sqlite3changeset_next() is called on the iterator or until the
|
||||||
** conflict-handler function returns. If pnCol is not NULL, then *pnCol is
|
** conflict-handler function returns. If pnCol is not NULL, then *pnCol is
|
||||||
** set to the number of columns in the table affected by the change. If
|
** set to the number of columns in the table affected by the change. If
|
||||||
** pbIncorrect is not NULL, then *pbIndirect is set to true (1) if the change
|
** pbIndirect is not NULL, then *pbIndirect is set to true (1) if the change
|
||||||
** is an indirect change, or false (0) otherwise. See the documentation for
|
** is an indirect change, or false (0) otherwise. See the documentation for
|
||||||
** [sqlite3session_indirect()] for a description of direct and indirect
|
** [sqlite3session_indirect()] for a description of direct and indirect
|
||||||
** changes. Finally, if pOp is not NULL, then *pOp is set to one of
|
** changes. Finally, if pOp is not NULL, then *pOp is set to one of
|
||||||
@@ -11230,12 +11259,8 @@ struct Fts5PhraseIter {
|
|||||||
**
|
**
|
||||||
** Usually, output parameter *piPhrase is set to the phrase number, *piCol
|
** Usually, output parameter *piPhrase is set to the phrase number, *piCol
|
||||||
** to the column in which it occurs and *piOff the token offset of the
|
** to the column in which it occurs and *piOff the token offset of the
|
||||||
** first token of the phrase. The exception is if the table was created
|
** first token of the phrase. Returns SQLITE_OK if successful, or an error
|
||||||
** with the offsets=0 option specified. In this case *piOff is always
|
** code (i.e. SQLITE_NOMEM) if an error occurs.
|
||||||
** set to -1.
|
|
||||||
**
|
|
||||||
** Returns SQLITE_OK if successful, or an error code (i.e. SQLITE_NOMEM)
|
|
||||||
** if an error occurs.
|
|
||||||
**
|
**
|
||||||
** This API can be quite slow if used with an FTS5 table created with the
|
** This API can be quite slow if used with an FTS5 table created with the
|
||||||
** "detail=none" or "detail=column" option.
|
** "detail=none" or "detail=column" option.
|
||||||
@@ -11524,11 +11549,11 @@ struct Fts5ExtensionApi {
|
|||||||
** the tokenizer substitutes "first" for "1st" and the query works
|
** the tokenizer substitutes "first" for "1st" and the query works
|
||||||
** as expected.
|
** as expected.
|
||||||
**
|
**
|
||||||
** <li> By adding multiple synonyms for a single term to the FTS index.
|
** <li> By querying the index for all synonyms of each query term
|
||||||
** In this case, when tokenizing query text, the tokenizer may
|
** separately. In this case, when tokenizing query text, the
|
||||||
** provide multiple synonyms for a single term within the document.
|
** tokenizer may provide multiple synonyms for a single term
|
||||||
** FTS5 then queries the index for each synonym individually. For
|
** within the document. FTS5 then queries the index for each
|
||||||
** example, faced with the query:
|
** synonym individually. For example, faced with the query:
|
||||||
**
|
**
|
||||||
** <codeblock>
|
** <codeblock>
|
||||||
** ... MATCH 'first place'</codeblock>
|
** ... MATCH 'first place'</codeblock>
|
||||||
@@ -11552,7 +11577,7 @@ struct Fts5ExtensionApi {
|
|||||||
** "place".
|
** "place".
|
||||||
**
|
**
|
||||||
** 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 so 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 entries 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.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{application, esqlite,
|
{application, esqlite,
|
||||||
[
|
[
|
||||||
{description, "sqlite nif interface"},
|
{description, "sqlite nif interface"},
|
||||||
{vsn, "0.3.0"},
|
{vsn, "0.4.0"},
|
||||||
{modules, [esqlite3, esqlite3_nif]},
|
{modules, [esqlite3, esqlite3_nif]},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
{maintainers, ["Aleph Archives", "Qing Liang <qing.liang.cn@gmail.com>"]},
|
{maintainers, ["Aleph Archives", "Qing Liang <qing.liang.cn@gmail.com>"]},
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ get_autocommit_test() ->
|
|||||||
ok = esqlite3:exec("INSERT INTO test (val) VALUES ('this is a test');", Db),
|
ok = esqlite3:exec("INSERT INTO test (val) VALUES ('this is a test');", Db),
|
||||||
ok = esqlite3:exec("COMMIT;", Db),
|
ok = esqlite3:exec("COMMIT;", Db),
|
||||||
true = esqlite3:get_autocommit(Db),
|
true = esqlite3:get_autocommit(Db),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
update_hook_test() ->
|
update_hook_test() ->
|
||||||
{ok, Db} = esqlite3:open(":memory:"),
|
{ok, Db} = esqlite3:open(":memory:"),
|
||||||
@@ -360,14 +360,14 @@ sqlite_version_test() ->
|
|||||||
{ok, Db} = esqlite3:open(":memory:"),
|
{ok, Db} = esqlite3:open(":memory:"),
|
||||||
{ok, Stmt} = esqlite3:prepare("select sqlite_version() as sqlite_version;", Db),
|
{ok, Stmt} = esqlite3:prepare("select sqlite_version() as sqlite_version;", Db),
|
||||||
{sqlite_version} = esqlite3:column_names(Stmt),
|
{sqlite_version} = esqlite3:column_names(Stmt),
|
||||||
?assertEqual({row, {<<"3.26.0">>}}, esqlite3:step(Stmt)),
|
?assertEqual({row, {<<"3.27.2">>}}, esqlite3:step(Stmt)),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
sqlite_source_id_test() ->
|
sqlite_source_id_test() ->
|
||||||
{ok, Db} = esqlite3:open(":memory:"),
|
{ok, Db} = esqlite3:open(":memory:"),
|
||||||
{ok, Stmt} = esqlite3:prepare("select sqlite_source_id() as sqlite_source_id;", Db),
|
{ok, Stmt} = esqlite3:prepare("select sqlite_source_id() as sqlite_source_id;", Db),
|
||||||
{sqlite_source_id} = esqlite3:column_names(Stmt),
|
{sqlite_source_id} = esqlite3:column_names(Stmt),
|
||||||
?assertEqual({row, {<<"2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9">>}}, esqlite3:step(Stmt)),
|
?assertEqual({row, {<<"2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7">>}}, esqlite3:step(Stmt)),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
garbage_collect_test() ->
|
garbage_collect_test() ->
|
||||||
|
|||||||
Reference in New Issue
Block a user