SQLite 3.54.0
SQLite 3.54.0 was published on October 9, 2026, roughly two and a half months after 3.53.4. The release concentrates on the command-line shell, the query planner, and Windows platform support, and it is the first version in the 3.54 series.
What Changed
The command-line shell receives the largest share of attention. Prompt strings may now contain escape sequences that expand to show live state information, the default prompt has been rebuilt around them, and the shell reads the SQLITE_PS1 and SQLITE_PS2 environment variables to initialize prompts. The default prompt also honors NO_COLOR.
- Columnar output modes now print the column name header even when a query returns no rows. The
.mode --titles alwayssetting makes this the default, and-titles onrestores the old behavior. - The
.modecommand gained--rowcount on, plus--ifmtand--fpfmt, which control how integers and floating-point values are rendered using printf-style format strings. - The new
diskused()extension backs the.diskuseddot-command. It replaces the standalone sqlite3_analyzer utility, which is now deprecated. - On unix, the shell preserves zero bytes when writing unformatted BLOB values, and
-csvautomatically disables display limits for legacy compatibility. - Ending a statement with a line containing only
goor/is discontinued unless the shell is compiled with-DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR.
Query Planner and SQL Changes
An UPDATE against a table with expression indexes no longer rewrites the index entry when the indexed value has not changed. Optimizations for expr OR TRUE and expr OR FALSE were improved, DISTINCT on the right-hand side of an IN operator is now ignored, and UNION queries with a LIMIT of exactly 1 use less memory and run faster.
ALTER TABLE now raises an error when an attempt is made to add, drop, or rename a column named ROWID, _ROWID_, or OID. Two new limits, SQLITE_LIMIT_SCHEMA and SQLITE_LIMIT_TRIGGER_STEPS, were added to sqlite3_limit(), and the authorizer callback is now invoked for SQL functions found in DEFAULT clauses of CREATE TABLE statements.
New APIs and Functions
diskused()SQL function, available as an optional extension.%Jand%jconversions in the built-inprintf()and theformat()SQL function, for rendering JSON string literals.sqlite3_result_str()andsqlite3_incomplete()C interfaces.- Date and time functions gained the
weekday -Nform of the weekday modifier and anend ofmodifier. - Temporary files are created with
O_TMPFILEon systems that support it.
Why It Matters
Windows support was tightened considerably. Version 3.54.0 drops support for Windows XP and earlier, including Windows CE, so SQLite for Windows now requires Windows Vista or later. Non-recursive mutexes on Windows were reimplemented using Slim Reader/Writer Locks in place of CriticalSection objects, and UWP or WebUI applications should build with -DSQLITE_UWP=1. Builds for Linux, macOS, BSD, and other unix variants are unaffected.
On the performance side, the project reports about 4 percent fewer CPU cycles on the speedtest1 benchmark measured with valgrind on Linux x64, and about 7.5 percent better than version 3.51.0 from a year earlier. Actual gains depend on workload, build options, processor, and compiler.
What's Next
SQLite hashes for this build are published alongside the changelog, with SQLITE_SOURCE_ID dated 2026-10-09 15:46:58. Download the amalgamation or the precompiled shell binaries from the official download page, and check the source identifier after upgrading if reproducibility matters for your build pipeline.