Small. Fast. Reliable.
Choose any three.
Search for:

## SQLite Release 3.9.1 On 2015-10-16

- Fix the json1 extension so that it does not recognize ASCII form-feed as a whitespace character, in order to comply with RFC-7159. Fix for ticket 57eec374ae1d0a1d
- Add a few #ifdef and build script changes to address compilation issues that appeared after the 3.9.0 release.
- SQLITE_SOURCE_ID: ""2015-10-16 17:31:12 767c1727fec4ce11b83f25b3f1bfcfe68a2c8b02"
- SHA1 for sqlite3.c: 5e6d1873a32d82c2cf8581f143649940cac8ae49

Changes carried forward from version 3.9.0 (2015-10-14):

Policy Changes:

- The version numbering conventions for SQLite are revised to use the emerging standard of semantic versioning.

  New Features And Enhancements:

- Added the json1 extension module in the source tree, and in the amalgamation. Enable support using the SQLITE_ENABLE_JSON1 compile-time option.
- Added Full Text Search version 5 (FTS5) to the amalgamation, enabled using SQLITE_ENABLE_FTS5. FTS5 will be considered "experimental" (subject to incompatible changes) for at least one more release cycle.
- The CREATE VIEW statement now accepts an optional list of column names following the view name.
- Added support for indexes on expressions.
- Added support for table-valued functions in the FROM clause of a SELECT statement.
- Added support for eponymous virtual tables.
- A VIEW may now reference undefined tables and functions when initially created. Missing tables and functions are reported when the VIEW is used in a query.
- Added the sqlite3_value_subtype() and sqlite3_result_subtype() interfaced (used by the json1 extension).
- The query planner is now able to use partial indexes that contain AND-connected terms in the WHERE clause.
- The sqlite3_analyzer.exe utility is updated to report the depth of each btree and to show the average fanout for indexes and WITHOUT ROWID tables.
- Enhanced the dbstat virtual table so that it can be used as a table-valued function where the argument is the schema to be analyzed.

  Other changes:

- The sqlite3_memory_alarm() interface, which has been deprecated and undocumented for 8 years, is changed into a no-op.

  Important fixes:

- Fixed a critical bug in the SQLite Encryption Extension that could cause the database to become unreadable and unrecoverable if a VACUUM command changed the size of the encryption nonce.
- Added a memory barrier in the implementation of sqlite3_initialize() to help ensure that it is thread-safe.
- Fix the OR optimization so that it always ignores subplans that do not use an index.
- Do not apply the WHERE-clause pushdown optimization on terms that originate in the ON or USING clause of a LEFT JOIN. Fix for ticket c2a19d81652f40568c.

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.