Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.15.2 On 2016-11-28

Changes in version 3.15.0 (2016-10-14):

1. Added support for row values.
2. Allow deterministic SQL functions in the WHERE clause of a partial index.
3. Added the "modeof=filename" URI parameter on the unix VFS
4. Added support for SQLITE_DBCONFIG_MAINDBNAME.
5. Added the ability to VACUUM an ATTACH-ed database.
6. Enhancements to the command-line shell:
   1. Add the ".testcase" and ".check" dot-commands.
   2. Added the --new option to the ".open" dot-command, causing any prior content in the database to be purged prior to opening.
7. Enhance the fts5vocab virtual table to handle "ORDER BY term" efficiently.
8. Miscellaneous micro-optimizations reduce CPU usage by more than 7% on common workloads. Most optimization in this release has been on the front-end (sqlite3_prepare_v2()).

   Bug Fixes:

9. The multiply operator now correctly detects 64-bit integer overflow and promotes to floating point in all corner-cases. Fix for ticket 1ec41379c9c1e400.
10. Correct handling of columns with redundant unique indexes when those columns are used on the LHS of an IN operator. Fix for ticket 0eab1ac759.
11. Skip NULL entries on range queries in indexes on expressions. Fix for ticket 4baa46491212947.
12. Ensure that the AUTOINCREMENT counters in the sqlite_sequence table are initialized doing "Xfer Optimization" on "INSERT ... SELECT" statements. Fix for ticket 7b3328086a5c116c.
13. Make sure the ORDER BY LIMIT optimization (from check-in 559733b09e) works with IN operators on INTEGER PRIMARY KEYs. Fix for ticket 96c1454c

Additional changes in version 3.15.1 (2016-11-04):

1. Added SQLITE_FCNTL_WIN32_GET_HANDLE file control opcode.
2. Fix the VACUUM command so that it spills excess content to disk rather than holding everything in memory, and possible causing an out-of-memory error for larger database files. This fixes an issue introduced by version 3.15.0.
3. Fix a case (present since 3.8.0 - 2013-08-26) where OR-connected terms in the ON clause of a LEFT JOIN might cause incorrect results. Ticket 34a579141b2c5ac.
4. Fix a case where the use of row values in the ON clause of a LEFT JOIN might cause incorrect results. Ticket fef4bb4bd9185ec8f.

Additional changes in version 3.15.2:

1. Multiple bug fixes to the row value logic that was introduced in version 3.15.0.
2. Fix a NULL pointer dereference in ATTACH/DETACH following a maliciously constructed syntax error. Ticket 2f1b168ab4d4844.
3. Fix a crash that can occur following an out-of-memory condition in the built-in instr() function.
4. In the JSON extension, fix the JSON validator so that it correctly rejects invalid backslash escapes within strings.

   Hashes:

5. SQLITE_SOURCE_ID: "2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8"
6. SHA1 for sqlite3.c: 06d77b42a3e70609f8d4bbb97caf53652f1082cb

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.