Small. Fast. Reliable.
Choose any three.

SQLite Release 3.14.2 On 2016-09-12

  1. Improved support for using the STDCALL calling convention in winsqlite3.dll.
  2. Fix the sqlite3_trace_v2() interface so that it is disabled if either the callback or the mask arguments are zero, in accordance with the documentation.
  3. Fix commenting errors and improve the comments generated on EXPLAIN listings when the -DSQLITE_ENABLE_EXPLAIN_COMMENTS compile-time option is used.
  4. Fix the ".read" command in the command-line shell so that it understands that its input is not interactive.
  5. Correct affinity computations for a SELECT on the RHS of an IN operator. Fix for ticket 199df4168c.
  6. The ORDER BY LIMIT optimization is not valid unless the inner-most IN operator loop is actually used by the query plan. Fix for ticket 0c4df46116e90f92.
  7. Fix an internal code generator problem that was causing some DELETE operations to no-op. Ticket ef360601


  8. SQLITE_SOURCE_ID: "2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6"
  9. SHA1 for sqlite3.c: bcc4a1989db45e7f223191f2d0f66c1c28946383

Changes carried forward from 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.

Changes carried forward from 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.

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.