SQLite 3.54.0 Adds CLI Prompt Escape Sequences and a .diskused Command, Deprecates sqlite3_analyzer and Requires Windows Vista or Later
SQLite 3.54.0, dated 2026-10-09, reworks the sqlite3 CLI, adds query planner changes and new date modifiers, and ends Windows XP support, per the project's release log.
Overview
SQLite 3.54.0 is dated 2026-10-09 in the project’s release log. The SQLite news page says the version “includes significant enhancements to the command-line interface (CLI) program” as well as query planner improvements, new features, performance improvements and “countless fixes for AI-discovered bugs”. It also ends support for Windows XP and earlier and is the last release to include the sqlite3_analyzer utility.
What Changed in the CLI
The release log lists these CLI changes:
- CLI prompt strings may contain escape sequences that expand to show state information. The initial prompt is initialized from the
SQLITE_PS1andSQLITE_PS2environment variables, if they exist, and the default prompt uses the new escape sequences. - For columnar output modes, the CLI now shows the column name header by default even if the query returns no rows.
- The
.modecommand gains--rowcount onand--titles always, with--titles alwaysnow the default. The release log says the legacy behavior can be restored with-titles on. .modealso gains--ifmtand--fpfmtoptions that control how integer and floating-point values are rendered using a printf-style format string.- The
-csvcommand-line option automatically disables display limits, for legacy compatibility. - The default CLI prompt honors the
NO_COLORenvironment variable. - On Unix, the CLI preserves zero bytes when outputting unformatted BLOB values.
- Ending an SQL command with a line containing only
goor/is discontinued unless the CLI is compiled with-DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR.
The CLI documentation describes .diskused as new as of SQLite 3.54.0 (2026-10-09). It outputs human-readable text showing how much filesystem space is used by the tables and indexes of the main database file, and it is intended as a replacement for the legacy sqlite3_analyzer utility, which is now deprecated. According to the same page, the output is a CREATE TABLE statement for a table named space_used, with the human-readable text in a comment, and the command is implemented with the new diskused() SQL function. The release log describes diskused() as an optional extension.
Query Planner, SQL and API Changes
The release log lists four query planner items: an UPDATE on a table with expression indexes no longer changes an expression index when the indexed value is unchanged; expr OR TRUE and expr OR FALSE are better optimized; DISTINCT is ignored in the SELECT on the right-hand side of an IN operator; and UNION queries with a LIMIT of exactly 1 are handled faster and with less memory.
Other entries in the same log include:
ALTER TABLEraises an error on any attempt to add, drop or rename columns namedROWID,_ROWID_orOID.- The
%Jand%jconversions, used to render JSON string literals, are added to the built-inprintf()and theformat()SQL function. - The
sqlite3_result_str()andsqlite3_incomplete()interfaces are added. SQLITE_LIMIT_SCHEMAandSQLITE_LIMIT_TRIGGER_STEPSare added tosqlite3_limit().- The authorizer callback is now invoked for SQL functions found in the
DEFAULTclauses ofCREATE TABLEstatements, both when the statement is issued and when the default value is used, but not when reading the schema while opening a database. O_TMPFILEis used when generating temporary files on systems that support it.
On dates, the release log lists a “weekday -N” form of the weekday modifier and an “end of” modifier. The date and time function documentation says the “end of” modifiers shift the date forward to the last millisecond of the month, year or day, and gives SELECT date('2026-01-01','end of year','weekday -5'); as its example for the last Friday in the year 2026. The same page says negative weekday values are supported beginning in 3.54.0 and that the N argument must be between -6 and +6.
Windows Support and Performance
Per the release log, SQLite drops support for Windows XP and earlier versions, including Windows CE, and now requires Windows Vista (circa 2007) or later. Non-recursive mutexes now use Slim Reader/Writer Locks instead of CriticalSection, which the log says improves performance. The log adds, “To be clear: This changes above only affects SQLite on Windows,” and says builds for Linux, Mac, BSD and other Unix variants are unaffected. It also names a -DSQLITE_UWP=1 compile-time option for UWP and WebUI applications.
On speed, the release log states that the release is “About 4% faster” as measured by counting CPU cycles in the speedtest1 benchmark using valgrind on Linux x64, and about 7.5% faster than version 3.51.0 from a year earlier. The project adds that results may vary with workload, build options, CPU, compiler and operating system. The log entry does not name the version the 4% figure is measured against. These are the SQLite project’s own measurements.
What We Don’t Know
The release log and news entry do not itemize the AI-discovered bug fixes, and neither source read for this article assigns CVE identifiers or severity ratings to them, so the fixes cannot be characterized as security fixes from these sources. The news entry for 3.53.4, dated 2026-07-24, said there was a “huge rush of AI-aided bug reporting” after the 3.53.0 release on 2026-04-09 and that the rate of reports had declined; this release’s entry again refers to AI-discovered bugs.