Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.9.0 On 2015-10-14

Policy Changes:

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

   New Features And Enhancements:

2. Added the json1 extension module in the source tree, and in the amalgamation. Enable support using the SQLITE_ENABLE_JSON1 compile-time option.
3. 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.
4. The CREATE VIEW statement now accepts an optional list of column names following the view name.
5. Added support for indexes on expressions.
6. Added support for table-valued functions in the FROM clause of a SELECT statement.
7. Added support for eponymous virtual tables.
8. 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.
9. Added the sqlite3_value_subtype() and sqlite3_result_subtype() interfaced (used by the json1 extension).
10. The query planner is now able to use partial indexes that contain AND-connected terms in the WHERE clause.
11. 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.
12. 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:

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

    Important fixes:

14. 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.
15. Added a memory barrier in the implementation of sqlite3_initialize() to help ensure that it is thread-safe.
16. Fix the OR optimization so that it always ignores subplans that do not use an index.
17. Do not apply the WHERE-clause push-down optimization on terms that originate in the ON or USING clause of a LEFT JOIN. Fix for ticket c2a19d81652f40568c.
18. SQLITE_SOURCE_ID: "2015-10-14 12:29:53 a721fc0d89495518fe5612e2e3bbc60befd2e90d"
19. SHA1 for sqlite3.c: c03e47e152ddb9c342b84ffb39448bf4a2bd4288

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.