Small. Fast. Reliable.
Choose any three.
SQLite Release 3.46.1 On 2024-08-13
Prior changes from version 3.46.0 (2024-05-23):
- Enhance PRAGMA optimize in multiple ways, to make it
simpler to use:
- PRAGMA optimize automatically implements a temporary
analysis limit to prevent excess runtime
on large databases.
- Added the new 0x10000 bitmask option to check for updates on all tables.
- Automatically re-analyze tables that do not have sqlite_stat1 entries.
- Enhancements to the date and time functions:
- The strftime() SQL function now supports %G, %g, %U, and %V.
- New modifiers 'ceiling' and 'floor' control the algorithm used to
resolve ambiguous dates when shifting a date by an integer number
of months and/or years.
- The 'utc' and 'localtime' modifiers are now no-ops if SQLite knows
that the time is already in UTC or in the localtime, respectively.
- Add support for underscore ("_") characters between digits in
numeric literals.
- Add the json_pretty() SQL function.
- Query planner improvements:
- The "VALUES-as-coroutine" optimization enables INSERT statements with
thousands of rows in the VALUES clause to parse and run in about half
the time and using about half as much memory.
- Allow the use of an index for queries like "SELECT count(DISTINCT col) FROM ...",
even if the index records are not smaller than the table records.
- Improved recognition of cases where the value of an SQL function is
constant because all its arguments are constant.
- Enhance the WHERE-clause push-down optimization so that it is able to
push down WHERE clause terms containing uncorrelated subqueries.
- Allocate additional memory from the heap for the SQL parser stack if
that stack overflows, rather than reporting a "parser stack overflow" error.
- JSON changes:
- Allow ASCII control characters within JSON5 string literals.
- Fix the -> and ->> operators so that when the right-hand side operand is a string
that looks like an integer it is still treated as a string, because that is what
PostgreSQL does.
- Allow large hexadecimal literals to be used as the DEFAULT value to a table column.
Changes in this specific patch release, version 3.46.1 (2024-08-13):
- Improved robustness while parsing the tokenize= arguments in FTS5.
Forum post 171bcc2bcd.
- Enhancements to covering index prediction in the query planner.
Add early detection of over-prediction of covering indexes so that
sqlite3_prepare() will return an error rather than just generate bad bytecode.
Forum post e60e4c295d22f8ce.
- Do not let the number of terms on a VALUES clause be limited by
SQLITE_LIMIT_COMPOUND_SELECT, even if the VALUES clause contains
elements that appear to be variables due to
double-quoted string literals.
- Fix the window function version of group_concat() so that it returns
an empty string if it has one or more empty string inputs.
- In FTS5 secure-delete mode, fix false-positive
integrity-check reports about corrupt indexes.
- Syntax errors in ALTER TABLE should always return SQLITE_ERROR. In
some cases, they were formerly returning SQLITE_INTERNAL.
- JavaScript/WASM:
- Fix a corruption-causing bug in the JavaScript "opfs" VFS.
- Work around a couple of browser-specific OPFS quirks.
- Other minor fixes.
Hashes:
- SQLITE_SOURCE_ID: 2024-08-13 09:16:08 c9c2ab54ba1f5f46360f1b4f35d849cd3f080e6fc2b6c60e91b16c63f69a1e33
- SHA3-256 for sqlite3.c: 186a1baa476b6d546de155160ca6d30ff7b7e6ee375f0bb6445e1a3d180a7dad
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.