Small. Fast. Reliable.
Choose any three.
SQLite Release 3.45.2 On 2024-03-12
Prior changes from version 3.45.0 (2024-01-15):
- Added the SQLITE_RESULT_SUBTYPE property for
application-defined SQL functions.
All application defined SQL functions that invokes
sqlite3_result_subtype() must be registered with this new property.
Failure to do so might cause the call to sqlite3_result_subtype() to
behave as a no-op. Compile with -DSQLITE_STRICT_SUBTYPE=1 to cause an
SQL error to be raised if a function that is not SQLITE_RESULT_SUBTYPE
tries invokes sqlite3_result_subtype(). The use of -DSQLITE_STRICT_SUBTYPE=1
is a recommended compile-time option for every application that makes
use of subtypes.
- Enhancements to the JSON SQL functions:
- All JSON functions are rewritten to use a new internal parse tree
format called JSONB. The new parse-tree format is serializable
and hence can be stored in the database to avoid unnecessary re-parsing
whenever the JSON value is used.
- New versions of JSON-generating functions generate binary JSONB instead
of JSON text.
- The json_valid() function adds an optional second argument that
specifies what it means for the first argument to be "well-formed".
- Add the FTS5 tokendata option to the FTS5 virtual table.
- The SQLITE_DIRECT_OVERFLOW_READ optimization is now enabled by default.
Disable it at compile-time using -DSQLITE_DIRECT_OVERFLOW_READ=0.
- Query planner improvements:
- Do not allow the transitive constraint optimization to trick the
query planner into using a range constraint when a better equality
constraint is available.
(Forum post 2568d1f6e6.)
- The query planner now does a better job of disregarding
indexes that ANALYZE identifies as low-quality.
(Forum post 6f0958b03b.)
- Increase the default value for SQLITE_MAX_PAGE_COUNT from 1073741824 to
4294967294.
- Enhancements to the CLI:
- Improvements to the display of UTF-8 content on Windows
- Automatically detect playback of ".dump" scripts and make appropriate
changes to settings such as ".dbconfig defensive off" and
".dbconfig dqs_dll on".
Prior changes from version 3.45.1 (2024-01-30):
- Restore the JSON BLOB input bug, and promise to support the anomaly in
subsequent releases, for backward compatibility.
- Fix the PRAGMA integrity_check command so that it works on read-only
databases that contain FTS3 and FTS5 tables. This resolves an issue
introduced in version 3.44.0 but was undiscovered until after the 3.45.0 release.
- Fix issues associated with processing corrupt JSONB inputs:
- Prevent exponential runtime when converting a corrupt JSONB into text.
- Fix a possible read of one byte past the end of the JSONB blob when converting
a corrupt JSONB into text.
- Enhanced testing using jfuzz to prevent any future JSONB problems such
as the above.
- Fix a long-standing bug in which a read of a few bytes past the end of a
memory-mapped segment might occur when accessing a craftily corrupted database
using memory-mapped database.
- Fix a long-standing bug in which a NULL pointer dereference might occur in
the bytecode engine due to incorrect bytecode being generated for a class
of SQL statements that are deliberately designed to stress the query planner
but which are otherwise pointless.
Changes in this specific patch release, version 3.45.2 (2024-03-12):
- Fix an error in UPSERT, introduced by enhancement 3a in version 3.35.0
(2021-03-12), that could cause an index to get out-of-sync with its table.
Forum thread 919c6579c8.
- Reduce the scope of the NOT NULL strength reduction optimization that was
added as item 8e in version 3.35.0 (2021-03-12). The optimization
was being attempted in some contexts where it did not work, resulting in
incorrect query results.
Forum thread 440f2a2f17.
- Other trifling corrections and compiler warning fixes that have come up
since the previous patch release. See the
timeline
for details.
Hashes:
- SQLITE_SOURCE_ID: "2024-03-12 11:06:23 d8cd6d49b46a395b13955387d05e9e1a2a47e54fb99f3c9b59835bbefad6af77"
- SHA3-256 for sqlite3.c: bd76ad2dc9cde151e469e86627a7e8753aa8ef1a6f657c5a80ba48324b53226b
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.