Small. Fast. Reliable.
Choose any three.

About Documentation Download License Support Purchase |

## SQLite Release 3.8.6 On 2014-08-15

- Added support for hexadecimal integer literals in the SQL parser. (Ex: 0x123abc)
- Enhanced the PRAGMA integrity_check command to detect UNIQUE and NOT NULL constraint violations.
- Increase the maximum value of SQLITE_MAX_ATTACHED from 62 to 125.
- Increase the timeout in WAL mode before issuing an SQLITE_PROTOCOL error from 1 second to 10 seconds.
- Added the likely(X) SQL function.
- The unicode61 tokenizer is now included in FTS4 by default.
- Trigger automatic reprepares on all prepared statements when ANALYZE is run.
- Added a new loadable extension source code file to the source tree: fileio.c
- Add extension functions readfile(X) and writefile(X,Y) (using code copy/pasted from fileio.c in the previous bullet) to the command-line shell.
- Added the .fullschema dot-command to the command-line shell.

  Performance Enhancements:

- Deactivate the DISTINCT keyword on subqueries on the right-hand side of the IN operator.
- Add the capability of evaluating an IN operator as a sequence of comparisons as an alternative to using a table lookup. Use the sequence of comparisons implementation in circumstances where it is likely to be faster, such as when the right-hand side of the IN operator is small and/or changes frequently.
- The query planner now uses sqlite_stat4 information (created by ANALYZE) to help determine if the skip-scan optimization is appropriate.
- Ensure that the query planner never tries to use a self-made transient index in place of a schema-defined index.
- Other minor tweaks to improve the quality of VDBE code.

  Bug Fixes:

- Fix a bug in CREATE UNIQUE INDEX, introduced when WITHOUT ROWID support added in version 3.8.2, that allows a non-unique NOT NULL column to be given a UNIQUE index. Ticket 9a6daf340df99ba93c
- Fix a bug in R-Tree extension, introduced in the previous release, that can cause an incorrect results for queries that use the rowid of the R-Tree on the left-hand side of an IN operator. Ticket d2889096e7bdeac6.
- Fix the sqlite3_stmt_busy() interface so that it gives the correct answer for ROLLBACK statements that have been stepped but never reset.
- Fix a bug in that would cause a null pointer to be dereferenced if a column with a DEFAULT that is an aggregate function tried to usee its DEFAULT. Ticket 3a88d85f36704eebe1
- CSV output from the command-line shell now always uses CRNL for the row separator and avoids inserting CR in front of NLs contained in data.
- Fix a column affinity problem with the IN operator. Ticket 9a8b09f8e6.
- Fix the ANALYZE command so that it adds correct samples for WITHOUT ROWID tables in the sqlite_stat4 table. Ticket b2fa5424e6fcb15.
- SQLITE_SOURCE_ID: "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
- SHA1 for sqlite3.c: 72c64f05cd9babb9c0f9b3c82536d83be7804b1c

A complete list of SQLite releases in a single page and a chronology are both also available. A detailed history of every check-in is available at SQLite version control site.