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

## SQLite Release 3.8.7 On 2014-10-17

Performance Enhancements:

- Many micro-optimizations result in 20.3% more work for the same number of CPU cycles relative to the previous release. The cumulative performance increase since version 3.8.0 is 61%. (Measured using cachegrind on the speedtest1.c workload on Ubuntu 13.10 x64 with gcc 4.8.1 and -Os. Your performance may vary.)
- The sorter can use auxiliary helper threads to increase real-time response. This feature is off by default and may be enabled using the PRAGMA threads command or the SQLITE_DEFAULT_WORKER_THREADS compile-time option.
- Enhance the skip-scan optimization so that it is able to skip index terms that occur in the middle of the index, not just as the left-hand side of the index.
- Improved optimization of CAST operators.
- Various improvements in how the query planner uses sqlite_stat4 information to estimate plan costs.

  New Features:

- Added new interfaces with 64-bit length parameters: sqlite3_malloc64(), sqlite3_realloc64(), sqlite3_bind_blob64(), sqlite3_result_blob64(), sqlite3_bind_text64(), and sqlite3_result_text64().
- Added the new interface sqlite3_msize() that returns the size of a memory allocation obtained from sqlite3_malloc64() and its variants.
- Added the SQLITE_LIMIT_WORKER_THREADS option to sqlite3_limit() and PRAGMA threads command for configuring the number of available worker threads.
- The spellfix1 extension allows the application to optionally specify the rowid for each INSERT.
- Added the User Authentication extension.

  Bug Fixes:

- Fix a bug in the partial index implementation that might result in an incorrect answer if a partial index is used in a subquery or in a view. Ticket 98d973b8f5.
- Fix a query planner bug that might cause a table to be scanned in the wrong direction (thus reversing the order of output) when a DESC index is used to implement the ORDER BY clause on a query that has an identical GROUP BY clause. Ticket ba7cbfaedc7e6.
- Fix a bug in sqlite3_trace() that was causing it to sometimes fail to print an SQL statement if that statement needed to be re-prepared. Ticket 11d5aa455e0d98f3c1e6a08
- Fix a faulty assert() statement. Ticket 369d57fb8e5ccdff06f1

  Test, Debug, and Analysis Changes:

- Show ASCII-art abstract syntax tree diagrams using the ".selecttrace" and ".wheretrace" commands in the command-line shell when compiled with SQLITE_DEBUG, SQLITE_ENABLE_SELECTTRACE, and SQLITE_ENABLE_WHERETRACE. Also provide the sqlite3TreeViewExpr() and sqlite3TreeViewSelect() entry points that can be invoked from with the debugger to show the parse tree when stopped at a breakpoint.
- Drop support for SQLITE_ENABLE_TREE_EXPLAIN. The SELECTTRACE mechanism provides more useful diagnostics information.
- New options to the command-line shell for configuring auxiliary memory usage: --pagecache, --lookaside, and --scratch.
- SQLITE_SOURCE_ID: "2014-10-17 11:24:17 e4ab094f8afce0817f4074e823fabe59fc29ebb4"
- SHA1 for sqlite3.c: 56dcf5e931a9e1fa12fc2d600cd91d3bf9b639cd

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.