Small. Fast. Reliable. Choose any three.
-
New macros in sqlite3.h:
-
SQLITE_SCM_BRANCH → the name of the branch from which the source code is taken.
-
SQLITE_SCM_TAGS → space-separated list of tags on the source code check-in.
-
SQLITE_SCM_DATETIME → ISO-8601 date and time of the source code check-in.
-
Two new JSON functions, jsonb_each() and jsonb_tree() work the same as the existing json_each() and json_tree() functions except that they return JSONB for the “value” column when the “type” is ‘array’ or ‘object’.
-
The carray and percentile extensions are now built…
Small. Fast. Reliable. Choose any three.
-
New macros in sqlite3.h:
-
SQLITE_SCM_BRANCH → the name of the branch from which the source code is taken.
-
SQLITE_SCM_TAGS → space-separated list of tags on the source code check-in.
-
SQLITE_SCM_DATETIME → ISO-8601 date and time of the source code check-in.
-
Two new JSON functions, jsonb_each() and jsonb_tree() work the same as the existing json_each() and json_tree() functions except that they return JSONB for the “value” column when the “type” is ‘array’ or ‘object’.
-
The carray and percentile extensions are now built into the amalgamation, though they are disabled by default and must be activated at compile-time using the -DSQLITE_ENABLE_CARRAY and/or -DSQLITE_ENABLE_PERCENTILE options, respectively.
-
Enhancements to TCL Interface:
-
Add the
-asdictflag to theevalcommand to have it set the row data as a dict instead of an array. -
User-defined functions may now
breakto return an SQL NULL. -
CLI enhancements:
-
Increase the precision of “.timer” to microseconds.
-
Enhance the “box” and “column” formatting modes to deal with double-wide characters.
-
The “.imposter” command provides read-only imposter tables that work with VACUUM and do not require the –unsafe-testing option.
-
Add the –ifexists option to the CLI command-line option and to the .open command.
-
Limit columns widths set by the “.width” command to 30,000 or less, as there is not good reason to have wider columns, but supporting wider columns provides opportunity to malefactors.
-
Performance enhancements:
-
Use fewer CPU cycles to commit a read transaction.
-
Early detection of joins that return no rows due to one or more of the tables containing no rows.
-
Avoid evaluation of scalar subqueries if the result of the subquery does not change the result of the overall expression.
-
Faster window function queries when using “BETWEEN :x FOLLOWING AND :y FOLLOWING” with a large :y.
-
Add the PRAGMA wal_checkpoint=NOOP; command and the SQLITE_CHECKPOINT_NOOP argument for sqlite3_wal_checkpoint_v2().
-
Add the sqlite3_set_errmsg() API for use by extensions.
-
Add the sqlite3_db_status64() API, which works just like the existing sqlite3_db_status() API except that it returns 64-bit results.
-
Add the SQLITE_DBSTATUS_TEMPBUF_SPILL option to the sqlite3_db_status() and sqlite3_db_status64() interfaces.
-
In the session extension add the sqlite3changeset_apply_v3() interface.
-
For the built-in printf() and the format() SQL function, omit the leading ‘-’ from negative floating point numbers if the ‘+’ flag is omitted and the “#” flag is present and all displayed digits are ‘0’. Use ‘%#f’ or similar to avoid outputs like ‘-0.00’ and instead show just ‘0.00’.
-
Improved error messages generated by FTS5.
-
Enforce STRICT typing on computed columns.
-
Improved support for VxWorks
-
JavaScript/WASM now supports 64-bit WASM. The canonical builds continue to be 32-bit but creating one’s own 64-bit build is now as simple as running “make”.
-
Improved resistance to database corruption caused by an application breaking Posix advisory locks using close().
Hashes:
- SQLITE_SOURCE_ID: 2025-11-04 19:38:17 fb2c931ae597f8d00a37574ff67aeed3eced4e5547f9120744ae4bfa8e74527b
- SHA3-256 for sqlite3.c: e2add951748f73587cadd1b2684defb4f39fa58dca14b16162d4237e50af9afa
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.