Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.18.1 On 2017-06-16

Changes in version 3.18.0 (2017-03-30):

1. Added the PRAGMA optimize command
2. The SQLite version identifier returned by the sqlite_source_id() SQL function and the sqlite3_sourceid() C API and found in the SQLITE_SOURCE_ID macro is now a 64-digit SHA3-256 hash instead of a 40-digit SHA1 hash.
3. Added the json_patch() SQL function to the JSON1 extension.
4. Enhance the LIKE optimization so that it works for arbitrary expressions on the left-hand side as long as the LIKE pattern on the right-hand side does not begin with a digit or minus sign.
5. Added the sqlite3_set_last_insert_rowid() interface and use the new interface in the FTS3, FTS4, and FTS5 extensions to ensure that the sqlite3_last_insert_rowid() interface always returns reasonable values.
6. Enhance PRAGMA integrity_check and PRAGMA quick_check so that they verify CHECK constraints.
7. Enhance the query plans for joins to detect empty tables early and halt without doing unnecessary work.
8. Enhance the sqlite3_mprintf() family of interfaces and the printf SQL function to put comma separators at the thousands marks for integers, if the "," format modifier is used in between the "%" and the "d" (example: "%,d").
9. Added the -DSQLITE_MAX_MEMORY=N compile-time option.
10. Added the .sha3sum dot-command and the .selftest dot-command to the command-line shell
11. Begin enforcing SQLITE_LIMIT_VDBE_OP. This can be used, for example, to prevent excessively large prepared statements in systems that accept SQL queries from untrusted users.
12. Various performance improvements.

    Bug Fixes:

13. Ensure that indexed expressions with collating sequences are handled correctly. Fix for ticket eb703ba7b50c1a5.
14. Fix a bug in the 'start of ...' modifiers for the date and time functions. Ticket 6097cb92745327a1
15. Fix a potential segfault in complex recursive triggers, resulting from a bug in the OP_Once opcode introduced as part of a performance optimization in version 3.15.0. Ticket 06796225f59c057c
16. In the RBU extension, add extra sync operations to avoid the possibility of corruption following a power failure.
17. The sqlite3_trace_v2() output for nested SQL statements should always begin with a "--" comment marker.

Additional changes in version 3.18.1:

1. Fix a bug associated with auto_vacuum that can lead to database corruption. The bug was introduced in version 3.16.0 (2017-01-02). Ticket fda22108.

   Hashes:

2. SQLITE_SOURCE_ID: "2017-06-16 13:41:15 77bb46233db03a3338bacf7e56f439be3dfd1926ea0c44d252eeafa7a7b31c06"
3. SHA3-256 for sqlite3.c: 334eaf776db9d09a4e69d6012c266bc837107edc2c981739ef82081cb11c5723

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.