Skip to main content

SQLite 3.54.0

Release Date: October 9, 2026

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 always setting makes this the default, and -titles on restores the old behavior.
  • The .mode command gained --rowcount on, plus --ifmt and --fpfmt, which control how integers and floating-point values are rendered using printf-style format strings.
  • The new diskused() extension backs the .diskused dot-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 -csv automatically disables display limits for legacy compatibility.
  • Ending a statement with a line containing only go or / 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.
  • %J and %j conversions in the built-in printf() and the format() SQL function, for rendering JSON string literals.
  • sqlite3_result_str() and sqlite3_incomplete() C interfaces.
  • Date and time functions gained the weekday -N form of the weekday modifier and an end of modifier.
  • Temporary files are created with O_TMPFILE on 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.

Other Versions

By continuing to use the site, you agree to the use of cookies.