Small. Fast. Reliable.
Choose any three.

## SQLite Release 3.26.0 On 2018-12-01

1. Optimization: When doing an UPDATE on a table with indexes on expressions, do not update the expression indexes if they do not refer to any of the columns of the table being updated.
2. Allow the xBestIndex() method of virtual table implementations to return SQLITE_CONSTRAINT to indicate that the proposed query plan is unusable and should not be given further consideration.
3. Added the SQLITE_DBCONFIG_DEFENSIVE option which disables the ability to create corrupt database files using ordinary SQL.
4. Added support for read-only shadow tables when the SQLITE_DBCONFIG_DEFENSIVE option is enabled.
5. Added the PRAGMA legacy_alter_table command, which if enabled causes the ALTER TABLE command to behave like older version of SQLite (prior to version 3.25.0) for compatibility.
6. Added PRAGMA table_xinfo that works just like PRAGMA table_info except that it also shows hidden columns in virtual tables.
7. Added the explain virtual table as a run-time loadable extension.
8. Add a limit counter to the query planner to prevent excessive sqlite3_prepare() times for certain pathological SQL inputs.
9. Added support for the sqlite3_normalized_sql() interface, when compiling with SQLITE_ENABLE_NORMALIZE.
10. Enhanced triggers so that they can use table-valued functions that exist in schemas other than the schema where the trigger is defined.
11. Enhancements to the CLI:
    1. Improvements to the ".help" command.
    2. The SQLITE_HISTORY environment variable, if it exists, specifies the name of the command-line editing history file
    3. The --deserialize option associated with opening a new database cause the database file to be read into memory and accessed using the sqlite3_deserialize() API. This simplifies running tests on a database without modifying the file on disk.
12. Enhancements to the geopoly extension:
    1. Always stores polygons using the binary format, which is faster and uses less space.
    2. Added the geopoly_regular() function.
    3. Added the geopoly_ccw() function.
13. Enhancements to the session extension:
    1. Added the SQLITE_CHANGESETAPPLY_INVERT flag
    2. Added the sqlite3changeset_start_v2() interface and the SQLITE_CHANGESETSTART_INVERT flag.
    3. Added the changesetfuzz.c test-case generator utility.

    Hashes:

14. SQLITE_SOURCE_ID: "2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9"
15. SHA3-256 for sqlite3.c: 72c08830da9b5d1cb397c612c0e870d7f5eb41a323b41aa3d8aa5ae9ccedb2c4

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.