Small. Fast. Reliable.
Choose any three.
SQLite Release 3.40.1 On 2022-12-28
Prior changes from version 3.40.0 (2022-11-16):
- Add support for compiling SQLite to WASM
and running it in web browsers. NB: The WASM build and its interfaces
are considered "beta" and are subject to minor changes if the need
arises. We anticipate finalizing the interface for the next release.
- Add the recovery extension that might be able to recover some content
from a corrupt database file.
- Query planner enhancements:
- Recognize covering indexes on tables with more than 63 columns where
columns beyond the 63rd column are used in the query and/or are
referenced by the index.
- Extract the values of expressions contained within expression indexes
where practical, rather than recomputing the expression.
- The NOT NULL and IS NULL operators (and their equivalents) avoid
loading the content of large strings and BLOB values from disk.
- Avoid materializing a view on which a full scan is performed
exactly once. Use and discard the rows of the view as they are computed.
- Allow flattening of a subquery that is the right-hand operand of
a LEFT JOIN in an aggregate query.
- A new typedef named sqlite3_filename is added and used to represent
the name of a database file. Various interfaces are
modified to use the new typedef instead of "char*". This interface
change should be fully backwards compatible, though it might cause
(harmless) compiler warnings when rebuilding some legacy applications.
- Add the sqlite3_value_encoding() interface.
- Security enhancement: SQLITE_DBCONFIG_DEFENSIVE is augmented to prohibit
changing the schema_version. The schema_version
becomes read-only in defensive mode.
- Enhancements to the PRAGMA integrity_check statement:
- Columns in non-STRICT tables with TEXT affinity should not contain numeric values.
- Columns in non-STRICT tables with NUMERIC affinity should not
contain TEXT values that could be converted into numbers.
- Verify that the rows of a WITHOUT ROWID table are in the correct order.
- Enhance the VACUUM INTO statement so that it honors the
PRAGMA synchronous setting.
- Enhance the sqlite3_strglob() and sqlite3_strlike() APIs so that they are able
to accept NULL pointers for their string parameters and still generate a sensible
- Provide the new SQLITE_MAX_ALLOCATION_SIZE compile-time option for limiting
the size of memory allocations.
- Change the algorithm used by SQLite's built-in pseudo-random number generator (PRNG)
from RC4 to Chacha20.
- Allow two or more indexes to have the same name as long as they are all in
- Miscellaneous performance optimizations result in about 1% fewer CPU cycles
used on typical workloads.
Changes in this specific patch release, version 3.40.1 (2022-12-28):
- Fix the --safe command-line option to the CLI
such that it correctly disallows the
use of SQL functions like writefile() that can cause harmful side-effects.
- Fix a potential infinite loop in the memsys5 alternative memory allocator. This
bug was introduced by a performance optimization in version 3.39.0.
- Various other obscure fixes.
- SQLITE_SOURCE_ID: 2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24
- SHA3-256 for sqlite3.c: 4d6800e9032ff349376fe612e422b49ba5eb4e378fac0b3e405235d09dd366ab
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.