The body of TEMP triggers may now modify and/or query tables in
the main schema.
Enhance VACUUM INTO so that if a URI filename is used as the
target and that filename has a reserve=N query parameter with N
between 0 and 255, then the reserve amount for
the generated database copy is set to N.
Improved result formatting, due to the addition of the
QRF extension.
For example, numeric values are now right-justified by default
in tabular output modes.
The default output mode for interactive CLI sessions now uses
QRF to display query results in boxes formed using Unicode
box-drawing characters, for improved legibility. Batch CLI
sessions use the legacy output format for compatibility.
Bare (unquoted) semicolons at the end of dot-commands are
silently ignored. ← Potential incompatibility!
Fix the .testcase and .check commands so that they actually
work, and use those commands in scripts that are part of
the standard SQLite test suite included with the source tree.
Command-line arguments that match *.sql or *.txt and are
the names of non-empty files are read and interpreted as scripts
of SQL statements and/or dot-commands.
The argument to the ".timer" command can now be "once", to run
the timer on only the next SQL statement.
The new "--timeout S" option to the ".progress" dot-command
causes SQL statements to interrupt after S seconds.
The ".indexes" command was changed so that the PATTERN argument
matches the name of the index, not the name of the table
being indexed (thus making the PATTERN argument actually useful).
And, several new options were added to ".indexes".
Always use a sort-and-merge algorithm for EXCEPT, INTERSECT, and
UNION, since this is almost always faster than using a hash table.
Improvements to join order selection in large multi-way joins on
a star schema.
Enhance the EXISTS-to-JOIN optimization so that the inserted JOIN
terms are not required to be on the inner-most loops, as long as
all dependencies for the EXISTS-to-JOIN loops are in outer loops.
Enhance the omit-noop-join optimization so that it is able to omit
a chain of joins that do not affect the output.
Allow queries that use "GROUP BY e1 ORDER BY e2" where e1 and e2
are identical apart from ASC/DESC sort-orders to be optimized using
a single index.
Allow virtual tables to optimize DISTINCT in cases where the
result-set of a query does not exactly match the ORDER BY clause.
Add new interfaces to the session extension
that enable an application to add changes one at
a time to the sqlite3_changegroup object:
Add the "opfs-wl" VFS, functionally identical to the "opfs" VFS but
using Web Locks for locking, which can promise fairer lock sharing
than the "opfs" bespoke protocol can. "opfs-wl" requires
Atomics.waitAsync(), so requires newer browsers than "opfs"
does.
Prior changes from version 3.53.1 (2026-05-05):
Fixes for problems in 3.53.1 reported by users. See the
check-in timeline
for details.
Prior changes from version 3.53.2 (2026-06-03):
Fixes for problems in 3.53.0 reported by users. See the
check-in timeline
for details.
Changes in this specific patch release, version 3.53.3 (2026-06-26):
Fixes for problems in 3.53.0 (and 3.53.1 and 3.53.2) mostly coming from AIs. See the
check-in timeline
for details.