direct-sqlite 2.3.11 → 2.3.12
raw patch · 3 files changed
+145/−56 lines, 3 files
Files
- cbits/sqlite3.c too large to diff
- cbits/sqlite3.h +142/−55
- direct-sqlite.cabal +3/−1
cbits/sqlite3.c view
file too large to diff
cbits/sqlite3.h view
@@ -107,9 +107,9 @@ ** [sqlite3_libversion_number()], [sqlite3_sourceid()], ** [sqlite_version()] and [sqlite_source_id()]. */-#define SQLITE_VERSION "3.8.1"-#define SQLITE_VERSION_NUMBER 3008001-#define SQLITE_SOURCE_ID "2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a"+#define SQLITE_VERSION "3.8.4.1"+#define SQLITE_VERSION_NUMBER 3008004+#define SQLITE_SOURCE_ID "2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0" /* ** CAPI3REF: Run-Time Library Version Numbers@@ -370,7 +370,7 @@ ** <ul> ** <li> The application must insure that the 1st parameter to sqlite3_exec() ** is a valid and open [database connection].-** <li> The application must not close [database connection] specified by+** <li> The application must not close the [database connection] specified by ** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running. ** <li> The application must not modify the SQL statement text passed into ** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.@@ -447,7 +447,7 @@ ** [sqlite3_extended_result_codes()] API. ** ** Some of the available extended result codes are listed here.-** One may expect the number of extended result codes will be expand+** One may expect the number of extended result codes will increase ** over time. Software that uses extended result codes should expect ** to see new result codes in future releases of SQLite. **@@ -491,6 +491,7 @@ #define SQLITE_READONLY_RECOVERY (SQLITE_READONLY | (1<<8)) #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_ABORT_ROLLBACK (SQLITE_ABORT | (2<<8)) #define SQLITE_CONSTRAINT_CHECK (SQLITE_CONSTRAINT | (1<<8)) #define SQLITE_CONSTRAINT_COMMITHOOK (SQLITE_CONSTRAINT | (2<<8))@@ -501,6 +502,7 @@ #define SQLITE_CONSTRAINT_TRIGGER (SQLITE_CONSTRAINT | (7<<8)) #define SQLITE_CONSTRAINT_UNIQUE (SQLITE_CONSTRAINT | (8<<8)) #define SQLITE_CONSTRAINT_VTAB (SQLITE_CONSTRAINT | (9<<8))+#define SQLITE_CONSTRAINT_ROWID (SQLITE_CONSTRAINT |(10<<8)) #define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8)) #define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8)) #define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))@@ -557,7 +559,8 @@ ** after reboot following a crash or power loss, the only bytes in a ** file that were written at the application level might have changed ** and that adjacent bytes, even bytes within the same sector are-** guaranteed to be unchanged.+** guaranteed to be unchanged. The SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN+** flag indicate that a file cannot be deleted when open. */ #define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002@@ -788,16 +791,30 @@ ** additional information. ** ** <li>[[SQLITE_FCNTL_SYNC_OMITTED]]-** ^(The [SQLITE_FCNTL_SYNC_OMITTED] opcode is generated internally by-** SQLite and sent to all VFSes in place of a call to the xSync method-** when the database connection has [PRAGMA synchronous] set to OFF.)^-** Some specialized VFSes need this signal in order to operate correctly-** when [PRAGMA synchronous | PRAGMA synchronous=OFF] is set, but most -** VFSes do not need this signal and should silently ignore this opcode.-** Applications should not call [sqlite3_file_control()] with this-** opcode as doing so may disrupt the operation of the specialized VFSes-** that do require it. +** No longer in use. **+** <li>[[SQLITE_FCNTL_SYNC]]+** The [SQLITE_FCNTL_SYNC] opcode is generated internally by SQLite and+** sent to the VFS immediately before the xSync method is invoked on a+** database file descriptor. Or, if the xSync method is not invoked +** because the user has configured SQLite with +** [PRAGMA synchronous | PRAGMA synchronous=OFF] it is invoked in place +** of the xSync method. In most cases, the pointer argument passed with+** this file-control is NULL. However, if the database file is being synced+** as part of a multi-database commit, the argument points to a nul-terminated+** string containing the transactions master-journal file name. VFSes that +** do not need this signal should silently ignore this opcode. Applications +** should not call [sqlite3_file_control()] with this opcode as doing so may +** disrupt the operation of the specialized VFSes that do require it. +**+** <li>[[SQLITE_FCNTL_COMMIT_PHASETWO]]+** The [SQLITE_FCNTL_COMMIT_PHASETWO] opcode is generated internally by SQLite+** and sent to the VFS after a transaction has been committed immediately+** but before the database is unlocked. VFSes that do not need this signal+** should silently ignore this opcode. Applications should not call+** [sqlite3_file_control()] with this opcode as doing so may disrupt the +** operation of the specialized VFSes that do require it. +** ** <li>[[SQLITE_FCNTL_WIN32_AV_RETRY]] ** ^The [SQLITE_FCNTL_WIN32_AV_RETRY] opcode is used to configure automatic ** retry counts and intervals for certain disk I/O operations for the@@ -912,6 +929,20 @@ ** can be queried by passing in a pointer to a negative number. This ** file-control is used internally to implement [PRAGMA mmap_size]. **+** <li>[[SQLITE_FCNTL_TRACE]]+** The [SQLITE_FCNTL_TRACE] file control provides advisory information+** to the VFS about what the higher layers of the SQLite stack are doing.+** This file control is used by some VFS activity tracing [shims].+** The argument is a zero-terminated string. Higher layers in the+** SQLite stack may generate instances of this file control if+** the [SQLITE_USE_FCNTL_TRACE] compile-time option is enabled.+**+** <li>[[SQLITE_FCNTL_HAS_MOVED]]+** The [SQLITE_FCNTL_HAS_MOVED] file control interprets its argument as a+** pointer to an integer and it writes a boolean into that integer depending+** on whether or not the file has been renamed, moved, or deleted since it+** was first opened.+** ** </ul> */ #define SQLITE_FCNTL_LOCKSTATE 1@@ -931,6 +962,10 @@ #define SQLITE_FCNTL_BUSYHANDLER 15 #define SQLITE_FCNTL_TEMPFILENAME 16 #define SQLITE_FCNTL_MMAP_SIZE 18+#define SQLITE_FCNTL_TRACE 19+#define SQLITE_FCNTL_HAS_MOVED 20+#define SQLITE_FCNTL_SYNC 21+#define SQLITE_FCNTL_COMMIT_PHASETWO 22 /* ** CAPI3REF: Mutex Handle@@ -1375,7 +1410,7 @@ ** or [sqlite3_realloc()] first calls xRoundup. If xRoundup returns 0, ** that causes the corresponding memory allocation to fail. **-** The xInit method initializes the memory allocator. (For example,+** The xInit method initializes the memory allocator. For example, ** it might allocate any require mutexes or initialize internal data ** structures. The xShutdown method is invoked (indirectly) by ** [sqlite3_shutdown()] and should deallocate any resources acquired@@ -1677,6 +1712,13 @@ ** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^ ** ^If either argument to this option is negative, then that argument is ** changed to its compile-time default.+**+** [[SQLITE_CONFIG_WIN32_HEAPSIZE]]+** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE+** <dd>^This option is only available if SQLite is compiled for Windows+** with the [SQLITE_WIN32_MALLOC] pre-processor macro defined.+** SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value+** that specifies the maximum size of the created heap. ** </dl> */ #define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */@@ -1701,6 +1743,7 @@ #define SQLITE_CONFIG_COVERING_INDEX_SCAN 20 /* int */ #define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */ #define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */+#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */ /* ** CAPI3REF: Database Connection Configuration Options@@ -1777,19 +1820,21 @@ /* ** CAPI3REF: Last Insert Rowid **-** ^Each entry in an SQLite table has a unique 64-bit signed+** ^Each entry in most SQLite tables (except for [WITHOUT ROWID] tables)+** has a unique 64-bit signed ** integer key called the [ROWID | "rowid"]. ^The rowid is always available ** as an undeclared column named ROWID, OID, or _ROWID_ as long as those ** names are not also used by explicitly declared columns. ^If ** the table has a column of type [INTEGER PRIMARY KEY] then that column ** is another alias for the rowid. **-** ^This routine returns the [rowid] of the most recent-** successful [INSERT] into the database from the [database connection]-** in the first argument. ^As of SQLite version 3.7.7, this routines-** records the last insert rowid of both ordinary tables and [virtual tables].-** ^If no successful [INSERT]s-** have ever occurred on that database connection, zero is returned.+** ^The sqlite3_last_insert_rowid(D) interface returns the [rowid] of the +** most recent successful [INSERT] into a rowid table or [virtual table]+** on database connection D.+** ^Inserts into [WITHOUT ROWID] tables are not recorded.+** ^If no successful [INSERT]s into rowid tables+** have ever occurred on the database connection D, +** then sqlite3_last_insert_rowid(D) returns zero. ** ** ^(If an [INSERT] occurs within a trigger or within a [virtual table] ** method, then this routine will return the [rowid] of the inserted@@ -2355,11 +2400,13 @@ ** applications to access the same PRNG for other purposes. ** ** ^A call to this routine stores N bytes of randomness into buffer P.+** ^If N is less than one, then P can be a NULL pointer. **-** ^The first time this routine is invoked (either internally or by-** the application) the PRNG is seeded using randomness obtained-** from the xRandomness method of the default [sqlite3_vfs] object.-** ^On all subsequent invocations, the pseudo-randomness is generated+** ^If this routine has not been previously called or if the previous+** call had N less than one, then the PRNG is seeded using randomness+** obtained from the xRandomness method of the default [sqlite3_vfs] object.+** ^If the previous call to this routine had an N of 1 or more then+** the pseudo-randomness is generated ** internally and without recourse to the [sqlite3_vfs] xRandomness ** method. */@@ -2519,6 +2566,7 @@ #define SQLITE_FUNCTION 31 /* NULL Function Name */ #define SQLITE_SAVEPOINT 32 /* Operation Savepoint Name */ #define SQLITE_COPY 0 /* No longer used */+#define SQLITE_RECURSIVE 33 /* NULL NULL */ /* ** CAPI3REF: Tracing And Profiling Functions@@ -3099,7 +3147,6 @@ ** choice of query plan if the parameter is the left-hand side of a [LIKE] ** or [GLOB] operator or if the parameter is compared to an indexed column ** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.-** the ** </li> ** </ol> */@@ -3761,19 +3808,19 @@ ** ** <tr><td> NULL <td> INTEGER <td> Result is 0 ** <tr><td> NULL <td> FLOAT <td> Result is 0.0-** <tr><td> NULL <td> TEXT <td> Result is NULL pointer-** <tr><td> NULL <td> BLOB <td> Result is NULL pointer+** <tr><td> NULL <td> TEXT <td> Result is a NULL pointer+** <tr><td> NULL <td> BLOB <td> Result is a NULL pointer ** <tr><td> INTEGER <td> FLOAT <td> Convert from integer to float ** <tr><td> INTEGER <td> TEXT <td> ASCII rendering of the integer ** <tr><td> INTEGER <td> BLOB <td> Same as INTEGER->TEXT-** <tr><td> FLOAT <td> INTEGER <td> Convert from float to integer+** <tr><td> FLOAT <td> INTEGER <td> [CAST] to INTEGER ** <tr><td> FLOAT <td> TEXT <td> ASCII rendering of the float-** <tr><td> FLOAT <td> BLOB <td> Same as FLOAT->TEXT-** <tr><td> TEXT <td> INTEGER <td> Use atoi()-** <tr><td> TEXT <td> FLOAT <td> Use atof()+** <tr><td> FLOAT <td> BLOB <td> [CAST] to BLOB+** <tr><td> TEXT <td> INTEGER <td> [CAST] to INTEGER+** <tr><td> TEXT <td> FLOAT <td> [CAST] to REAL ** <tr><td> TEXT <td> BLOB <td> No change-** <tr><td> BLOB <td> INTEGER <td> Convert to TEXT then use atoi()-** <tr><td> BLOB <td> FLOAT <td> Convert to TEXT then use atof()+** <tr><td> BLOB <td> INTEGER <td> [CAST] to INTEGER+** <tr><td> BLOB <td> FLOAT <td> [CAST] to REAL ** <tr><td> BLOB <td> TEXT <td> Add a zero terminator if needed ** </table> ** </blockquote>)^@@ -3829,7 +3876,7 @@ ** 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 <b>not</b> pass the pointers returned-** [sqlite3_column_blob()], [sqlite3_column_text()], etc. into+** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into ** [sqlite3_free()]. ** ** ^(If a memory allocation error occurs during the evaluation of any@@ -3938,16 +3985,25 @@ ** ** ^The fourth parameter, eTextRep, specifies what ** [SQLITE_UTF8 | text encoding] this SQL function prefers for-** its parameters. Every SQL function implementation must be able to work-** with UTF-8, UTF-16le, or UTF-16be. But some implementations may be-** more efficient with one encoding than another. ^An application may-** invoke sqlite3_create_function() or sqlite3_create_function16() multiple-** times with the same function but with different values of eTextRep.+** its parameters. The application should set this parameter to+** [SQLITE_UTF16LE] if the function implementation invokes +** [sqlite3_value_text16le()] on an input, or [SQLITE_UTF16BE] if the+** implementation invokes [sqlite3_value_text16be()] on an input, or+** [SQLITE_UTF16] if [sqlite3_value_text16()] is used, or [SQLITE_UTF8]+** otherwise. ^The same SQL function may be registered multiple times using+** different preferred text encodings, with different implementations for+** each encoding. ** ^When multiple implementations of the same function are available, SQLite ** will pick the one that involves the least amount of data conversion.-** If there is only a single implementation which does not care what text-** encoding is used, then the fourth argument should be [SQLITE_ANY]. **+** ^The fourth parameter may optionally be ORed with [SQLITE_DETERMINISTIC]+** to signal that the function will always return the same result given+** the same inputs within a single SQL statement. Most SQL functions are+** deterministic. The built-in [random()] SQL function is an example of a+** function that is not deterministic. The SQLite query planner is able to+** perform additional optimizations on deterministic functions, so use+** of the [SQLITE_DETERMINISTIC] flag is recommended where possible.+** ** ^(The fifth parameter is an arbitrary pointer. The implementation of the ** function can gain access to this pointer using [sqlite3_user_data()].)^ **@@ -4032,10 +4088,20 @@ #define SQLITE_UTF16LE 2 #define SQLITE_UTF16BE 3 #define SQLITE_UTF16 4 /* Use native byte order */-#define SQLITE_ANY 5 /* sqlite3_create_function only */+#define SQLITE_ANY 5 /* Deprecated */ #define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */ /*+** CAPI3REF: Function Flags+**+** These constants may be ORed together with the +** [SQLITE_UTF8 | preferred text encoding] as the fourth argument+** to [sqlite3_create_function()], [sqlite3_create_function16()], or+** [sqlite3_create_function_v2()].+*/+#define SQLITE_DETERMINISTIC 0x800++/* ** CAPI3REF: Deprecated Functions ** DEPRECATED **@@ -4806,12 +4872,13 @@ ** ** ^The sqlite3_update_hook() interface registers a callback function ** with the [database connection] identified by the first argument-** to be invoked whenever a row is updated, inserted or deleted.+** to be invoked whenever a row is updated, inserted or deleted in+** a rowid table. ** ^Any callback set by a previous call to this function ** for the same database connection is overridden. ** ** ^The second argument is a pointer to the function to invoke when a-** row is updated, inserted or deleted.+** row is updated, inserted or deleted in a rowid table. ** ^The first argument to the callback is a copy of the third argument ** to sqlite3_update_hook(). ** ^The second callback argument is one of [SQLITE_INSERT], [SQLITE_DELETE],@@ -4824,6 +4891,7 @@ ** ** ^(The update hook is not invoked when internal system tables are ** modified (i.e. sqlite_master and sqlite_sequence).)^+** ^The update hook is not invoked when [WITHOUT ROWID] tables are modified. ** ** ^In the current implementation, the update hook ** is not invoked when duplication rows are deleted because of an@@ -4905,8 +4973,8 @@ ** ** ^The sqlite3_db_release_memory(D) interface attempts to free as much heap ** memory as possible from database connection D. Unlike the-** [sqlite3_release_memory()] interface, this interface is effect even-** when then [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is+** [sqlite3_release_memory()] interface, this interface is in effect even+** when the [SQLITE_ENABLE_MEMORY_MANAGEMENT] compile-time option is ** omitted. ** ** See also: [sqlite3_release_memory()]@@ -5281,10 +5349,22 @@ ** the correct order to satisfy the ORDER BY clause so that no separate ** sorting step is required. **-** ^The estimatedCost value is an estimate of the cost of doing the-** particular lookup. A full scan of a table with N entries should have-** a cost of N. A binary search of a table of N entries should have a-** cost of approximately log(N).+** ^The estimatedCost value is an estimate of the cost of a particular+** strategy. A cost of N indicates that the cost of the strategy is similar+** to a linear scan of an SQLite table with N rows. A cost of log(N) +** indicates that the expense of the operation is similar to that of a+** binary search on a unique indexed field of an SQLite table with N rows.+**+** ^The estimatedRows value is an estimate of the number of rows that+** will be returned by the strategy.+**+** IMPORTANT: The estimatedRows field was added to the sqlite3_index_info+** structure for SQLite version 3.8.2. If a virtual table extension is+** used with an SQLite version earlier than 3.8.2, the results of attempting +** to read or write the estimatedRows field are undefined (but are likely +** to included crashing the application). The estimatedRows field should+** therefore only be used if [sqlite3_libversion_number()] returns a+** value greater than or equal to 3008002. */ struct sqlite3_index_info { /* Inputs */@@ -5309,7 +5389,9 @@ char *idxStr; /* String, possibly obtained from sqlite3_malloc */ int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ int orderByConsumed; /* True if output is already ordered */- double estimatedCost; /* Estimated cost of using this index */+ double estimatedCost; /* Estimated cost of using this index */+ /* Fields below are only available in SQLite 3.8.2 and later */+ sqlite3_int64 estimatedRows; /* Estimated number of rows returned */ }; /*@@ -5513,6 +5595,9 @@ ** interface. Use the [UPDATE] SQL command to change the size of a ** blob. **+** ^The [sqlite3_blob_open()] interface will fail for a [WITHOUT ROWID]+** table. Incremental BLOB I/O is not possible on [WITHOUT ROWID] tables.+** ** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces ** and the built-in [zeroblob] SQL function can be used, if desired, ** to create an empty, zero-filled blob in which to read or write using@@ -6036,7 +6121,9 @@ #define SQLITE_TESTCTRL_SCRATCHMALLOC 17 #define SQLITE_TESTCTRL_LOCALTIME_FAULT 18 #define SQLITE_TESTCTRL_EXPLAIN_STMT 19-#define SQLITE_TESTCTRL_LAST 19+#define SQLITE_TESTCTRL_NEVER_CORRUPT 20+#define SQLITE_TESTCTRL_VDBE_COVERAGE 21+#define SQLITE_TESTCTRL_LAST 21 /* ** CAPI3REF: SQLite Runtime Status
direct-sqlite.cabal view
@@ -1,5 +1,5 @@ name: direct-sqlite-version: 2.3.11+version: 2.3.12 build-type: Simple license: BSD3 license-file: LICENSE@@ -20,6 +20,8 @@ supports strings encoded as UTF8, and BLOBs represented as ByteStrings. . Release history:+ .+ [Version 2.3.12] Upgrade bundled SQLite3 to 3.8.4.1. . [Version 2.3.11] Add support for URI filenames, and default to having them on. Among other things, this enables using in-memory databases. .