Small. Fast. Reliable.
Choose any three.
SQLite Release 3.39.4 On 2022-09-29
Changes in version 3.39.0 (2022-06-25):
- Add (long overdue) support for RIGHT and FULL OUTER JOIN.
- Add new binary comparison operators IS NOT DISTINCT FROM and IS DISTINCT FROM
that are equivalent to IS and IS NOT, respective, for compatibility with
PostgreSQL and SQL standards.
- Add a new return code (value "3") from the sqlite3_vtab_distinct()
interface that indicates a query that has both DISTINCT and ORDER BY
- Added the sqlite3_db_name() interface.
- The unix os interface resolves all symbolic links in database
filenames to create a canonical name for the database before the
file is opened.
If the SQLITE_OPEN_NOFOLLOW flag is used with sqlite3_open_v2()
or similar, the open will fail if any element of the path is a
- Defer materializing views until the materialization
is actually needed, thus avoiding unnecessary work if the materialization turns
out to never be used.
- The HAVING clause of a SELECT statement is now allowed on any aggregate query,
even queries that do not have a GROUP BY clause.
- Many microoptimizations collectively reduce CPU cycles by about 2.3%.
Additional changes in version 3.39.1 (2022-07-13):
- Fix an incorrect result from a query that uses a view that contains a compound
SELECT in which only one arm contains a RIGHT JOIN and where the view is not
the first FROM clause term of the query that contains the view.
forum post 174afeae5734d42d.
- Fix some harmless compiler warnings.
- Fix a long-standing problem with ALTER TABLE RENAME that can only arise
if the sqlite3_limit(SQLITE_LIMIT_SQL_LENGTH) is set to a very small value.
- Fix a long-standing problem in FTS3 that can only arise when compiled with
the SQLITE_ENABLE_FTS3_PARENTHESIS compile-time option.
- Fix the build so that is works when the SQLITE_DEBUG and
SQLITE_OMIT_WINDOWFUNC compile-time options are both provided at the
- Fix the initial-prefix optimization for the REGEXP extension so that it works
correctly even if the prefix contains characters that require a 3-byte UTF8
- Enhance the sqlite_stmt virtual table so that it buffers all of its output.
Additional changes in version 3.39.2 (2022-07-21):
- Fix a performance regression in the query planner associated with rearranging
the order of FROM clause terms in the presences of a LEFT JOIN.
- Apply fixes for CVE-2022-35737, Chromium bugs 1343348 and 1345947,
forum post 3607259d3c, and
other minor problems discovered by internal testing.
Additional changes in version 3.39.3 (2022-09-05):
- Use a statement journal on DML statement affecting two or more database
rows if the statement makes use of a SQL functions that might abort. See
forum thread 9b9e4716c0d7bbd1.
- Use a mutex to protect the PRAGMA temp_store_directory and
PRAGMA data_store_directory statements, even though they are deprecated and
documented as not being threadsafe. See
forum post 719a11e1314d1c70.
- Other bug and warning fixes. See the
Additional changes in version 3.39.4 (2022-09-29):
- Fix the build on Windows so that it works with -DSQLITE_OMIT_AUTOINIT
- Fix a long-standing problem in the btree balancer that might, in rare cases,
cause database corruption if the application uses an
application-defined page cache.
- Enhance SQLITE_DBCONFIG_DEFENSIVE so that it disallows CREATE TRIGGER
statements if one or more of the statements in the body of the trigger write
into shadow tables.
- Fix a possible integer overflow in the size computation for a memory allocation
- Fix a misuse of the sqlite3_set_auxdata() interface in the
- SQLITE_SOURCE_ID: 2022-09-29 15:55:41 a29f9949895322123f7c38fbe94c649a9d6e6c9cd0c3b41c96d694552f26b309
- SHA3-256 for sqlite3.c: f65082298127e2ddae6539beb94f5204b591df64ba2c7da83c7d0faffd6959d8
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.