Small. Fast. Reliable.
Choose any three.
SQLite Release 3.38.3 On 2022-04-27
Changes in version 3.38.0 (2022-02-22):
- Added the -> and ->> operators for easier processing of JSON.
The new operators are compatible with MySQL and PostgreSQL.
- The JSON functions are now built-ins. It is no longer necessary
to use the -DSQLITE_ENABLE_JSON1 compile-time option to enable JSON
support. JSON is on by default. Disable the JSON interface using
the new -DSQLITE_OMIT_JSON compile-time option.
- Enhancements to date and time functions:
- Added the unixepoch() function.
- Added the auto modifier and the julianday modifier.
- Rename the printf() SQL function to format() for better
compatibility. The original printf() name is retained as an alias
for backwards compatibility.
- Added the sqlite3_error_offset() interface, which can sometimes
help to localize an SQL error to a specific character in the input
SQL text, so that applications can provide better error messages.
- Enhanced the interface to virtual tables as follows:
- Added the sqlite3_vtab_distinct() interface.
- Added the sqlite3_vtab_rhs_value() interface.
- Added new operator types SQLITE_INDEX_CONSTRAINT_LIMIT
- Added the sqlite3_vtab_in() interface (and related) to enable
a virtual table to process IN operator constraints all at once,
rather than processing each value of the right-hand side of the
IN operator separately.
- CLI enhancements:
- Columnar output modes are enhanced to correctly handle tabs
and newlines embedded in text.
- Added options like "--wrap N", "--wordwrap on", and "--quote"
to the columnar output modes.
- Added the .mode qbox alias.
- The .import command automatically disambiguates column names.
- Use the new sqlite3_error_offset() interface to provide better
- Query planner enhancements:
- Use a Bloom filter to speed up large analytic queries.
- Use a balanced merge tree to evaluate UNION or UNION ALL
compound SELECT statements that have an ORDER BY clause.
- The ALTER TABLE statement is changed to silently ignores entries in the
sqlite_schema table that do not parse when PRAGMA writable_schema=ON.
Additional changes in version 3.38.1 (2022-03-12):
- Fix problems with the new Bloom filter optimization that might cause
some obscure queries to get an incorrect answer.
- Fix the localtime modifier of the date and time functions so that
it preserves fractional seconds.
- Fix the sqlite_offset SQL function so that it works correctly even
in corner cases such as when the argument is a virtual column or the
column of a view.
- Fix row value IN operator constraints on virtual tables so that they
work correctly even if the virtual table implementation relies on bytecode
to filter rows that do not satisfy the constraint.
- Other minor fixes to assert() statements, test cases, and documentation.
See the source code timeline
Additional changes in version 3.38.2 (2022-03-26):
- Fix a user-discovered problem with the new Bloom filter optimization
that might cause an incorrect answer when doing a LEFT JOIN with a WHERE
clause constraint that says that one of the columns on the right table of
the LEFT JOIN is NULL. See
forum thread 031e262a89b6a9d2.
- Other minor patches. See the
Additional changes in version 3.38.3 (2022-04-27):
- Fix a case of the query planner be overly aggressive with optimizing automatic-index
and Bloom-filter construction, using inappropriate ON clause terms to restrict the
size of the automatic-index or Bloom filter, and resulting in missing rows in the
Forum thread 0d3200f4f3bcd3a3.
- Other minor patches. See the
- SQLITE_SOURCE_ID: 2022-04-27 12:03:15 9547e2c38a1c6f751a77d4d796894dec4dc5d8f5d79b1cd39e1ffc50df7b3be4
- SHA3-256 for sqlite3.c: d4d66feffad66ea82073fbb97ae9c84e3615887ebc5168226ccee28d82424517
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.