Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.17.0 On 2017-02-13

1. Approximately 25% better performance from the R-Tree extension.
   1. Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong()) for byteswapping when available.
   2. Uses the sqlite3_blob key/value access object instead of SQL for pulling content out of R-Tree nodes
   3. Other miscellaneous enhancements such as loop unrolling.
2. Add the SQLITE_DEFAULT_LOOKASIDE compile-time option.
3. Increase the default lookaside size from 512,125 to 1200,100 as this provides better performance while only adding 56KB of extra memory per connection. Memory-sensitive applications can restore the old default at compile-time, start-time, or run-time.
4. Use compiler built-ins __builtin_sub_overflow(), __builtin_add_overflow(), and __builtin_mul_overflow() when available. (All compiler built-ins can be omitted with the SQLITE_DISABLE_INTRINSIC compile-time option.)
5. Added the SQLITE_ENABLE_NULL_TRIM compile-time option, which can result in significantly smaller database files for some applications, at the risk of being incompatible with older versions of SQLite.
6. Change SQLITE_DEFAULT_PCACHE_INITSZ from 100 to 20, for improved performance.
7. Added the SQLITE_UINT64_TYPE compile-time option as an analog to SQLITE_INT64_TYPE.
8. Perform some UPDATE operations in a single pass instead of in two passes.
9. Enhance the session extension to support WITHOUT ROWID tables.
10. Fixed performance problems and potential stack overflows when creating views from multi-row VALUES clauses with hundreds of thousands of rows.
11. Added the sha1.c extension.
12. In the command-line shell, enhance the ".mode" command so that it restores the default column and row separators for modes "line", "list", "column", and "tcl".
13. Enhance the SQLITE_DIRECT_OVERFLOW_READ option so that it works in WAL mode as long as the pages being read are not in the WAL file.
14. Enhance the LEMON parser generator so that it can store the parser object as a stack variable rather than allocating space from the heap and make use of that enhancement in the amalgamation.
15. Other performance improvements. Uses about 6.5% fewer CPU cycles.

    Bug Fixes:

16. Throw an error if the ON clause of a LEFT JOIN references tables to the right of the ON clause. This is the same behavior as PostgreSQL. Formerly, SQLite silently converted the LEFT JOIN into an INNER JOIN. Fix for ticket 25e335f802dd.
17. Use the correct affinity for columns of automatic indexes. Ticket 7ffd1ca1d2ad4ec.
18. Ensure that the sqlite3_blob_reopen() interface can correctly handle short rows. Fix for ticket e6e962d6b0f06f46e.

    Hashes:

19. SQLITE_SOURCE_ID: "2017-02-13 16:02:40 ada05cfa86ad7f5645450ac7a2a21c9aa6e57d2c"
20. SHA1 for sqlite3.c: cc7d708bb073c44102a59ed63ce6142da1f174d1

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.