Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.14.1 On 2016-08-11

Changes in version 3.14 (2016-08-08):

Celebrating the SQLite "π release" with a home-baked pie.
1. Added support for WITHOUT ROWID virtual tables.
2. Improved the query planner so that the OR optimization can be used on virtual tables even if one or more of the disjuncts use the LIKE, GLOB, REGEXP, MATCH operators.
3. Added the CSV virtual table for reading RFC 4180 formatted comma-separated value files.
4. Added the carray() table-valued function extension.
5. Enabled persistent loadable extensions using the new SQLITE_OK_LOAD_PERMANENTLY return code from the extension entry point.
6. Added the SQLITE_DBSTATUS_CACHE_USED_SHARED option to sqlite3_db_status().
7. Add the vfsstat.c loadable extension - a VFS shim that measures I/O together with an eponymous virtual table that provides access to the measurements.
8. Improved algorithm for running queries with both an ORDER BY and a LIMIT where only the inner-most loop naturally generates rows in the correct order.
9. Enhancements to Lemon parser generator, so that it generates a faster parser.
10. The PRAGMA compile_options command now attempts to show the version number of the compiler that generated the library.
11. Enhance PRAGMA table_info so that it provides information about eponymous virtual tables.
12. Added the "win32-none" VFS, analogous to the "unix-none" VFS, that works like the default "win32" VFS except that it ignores all file locks.
13. The query planner uses a full scan of a partial index instead of a full scan of the main table, in cases where that makes sense.
14. Allow table-valued functions to appear on the right-hand side of an IN operator.
15. Created the dbhash.exe command-line utility.
16. Added two new C-language interfaces: sqlite3_expanded_sql() and sqlite3_trace_v2(). These new interfaces subsume the functions of sqlite3_trace() and sqlite3_profile() which are now deprecated.
17. Added the json_quote() SQL function to the json1 extension.
18. Disable the authorizer callback while reparsing the schema.
19. Added the SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION compile-time option and turned that option on by default when building the command-line shell.

    Bug Fixes:

20. Fix the ALTER TABLE command so that it does not corrupt descending indexes when adding a column to a legacy file format database. Ticket f68bf68513a1c15f
21. Fix a NULL-pointer dereference/crash that could occurs when a transitive WHERE clause references a non-existent collating sequence. Ticket e8d439c77685eca6.
22. Improved the cost estimation for an index scan which includes a WHERE clause that can be partially or fully evaluated using columns in the index and without having to do a table lookup. This fixes a performance regression that occurred for some obscure queries following the ORDER BY LIMIT optimization introduced in version 3.12.0.

Additional changes in version 3.14.1 (2016-08-11):

1. A performance enhancement to the page-cache "truncate" operation reduces COMMIT time by dozens of milliseconds on systems with a large page cache.
2. Fix to the --rbu option of sqldiff.

   Hashes:

3. SQLITE_SOURCE_ID: "2016-08-11 18:53:32 a12d8059770df4bca59e321c266410344242bf7b"
4. SHA1 for sqlite3.c: d545b24892278272ce4e40e0567d69c8babf12ea

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.