SQLite version 22.214.171.124 fixes a long-standing flaw in the Windows OS interface that can result in database corruption under a rare race condition. See http://www.sqlite.org/src/info/7ff3120e4f for a full description of the problem.
As far as we know, this bug has never been seen in the wild. The problem was discovered by the SQLite developers while writing stress tests for a separate component of SQLite. Those stress tests have not yet found any problems with the component they were intended to verify, but they did find the bug which is the subject of this patch release.
Other than updates to version numbers, the only difference between this release and 126.96.36.199 is a two-character change in a single identifier, which is contained in the windows-specific OS interface logic. There are no changes in this release (other than version numbers) for platforms other than Windows.
SQLite version 188.8.131.52 is a bug fix release that fixes a few problems that were present in the previous releases.
The primary motivation for version 184.108.40.206 is to fix a bug in the query optimizer that was introduced as part of version 3.7.15. The query optimizer was being a little overzealous in optimizing out some ORDER BY clauses, which resulted in sorting being omitted on occasions where sorting is required to get the correct answer. See ticket a179fe7465 for details.
In addition to the ORDER BY fix, several other patches to fix obscure (and mostly harmless) bugs and to fix spelling errors in source code comments are also included in this release.
SQLite version 3.7.16 is a regularly scheduled release of SQLite. This release contains several langauge enhancements and improvements to the query optimizer. A list of the major enhancements and optimizations can be see on the change log.
There was one important bug fix (see Ticket fc7bd6358f) that addresses an incorrect query result that could have occurred in a three-way join where the join constraints compared INTEGER columns to TEXT columns. This issue had been in the code for time out of mind and had never before been reported, so we surmise that it is very obscure. Nevertheless, all users are advised to upgrade to avoid any future problems associated with this issue.
SQLite version 220.127.116.11 is a patch release that fixes a single bug that was introduced in version version 3.7.15. The fix is a 4-character edit to a single line of code. Other than this 4-character change and the update of the version number, nothing has changed from version 18.104.22.168.
SQLite version 22.214.171.124 is a patch release that fixes a single bug that was introduced in version version 3.7.15. The fix involved changing two lines of code and adding a single assert(). This release also includes some new test cases to prevent a regression of the bug, and the version number is increased, of course. But otherwise, nothing has changed from version 3.7.15.
SQLite version 3.7.15 is a regularly schedule release of SQLite. This release contains several improvements to the query planner and optimizer and one important bug fix. This is the first release to officially support Windows 8 Phone.
The important bug fix is a problem that can lead to segfaults when using shared cache mode on a schema that contains a COLLATE operator within a CHECK constraint or within a view. Collating functions are associated with individual database connections. But a pointer to the collating function was also being cached within expressions. If an expression was part of the schema and contained a cached collating function, it would point to the collating function in the database connection that originally parsed the schema. If that database connection closed while other database connections using the same shared cache continued to operate, they other database connections would try to use the deallocated collating function in the database connection that closed. The fix in version 3.7.15 was to not cache collating function pointers in the expression structure but instead look them up each time a new statement is prepared.
This release also contains some important enhancements to the query planner which should (we hope) make some queries run faster. The enhancements include:
When doing a full-table scan, try to use an index instead of the original table, under the theory that indices contain less information and are thus smaller and hence require less disk I/O to scan.
Do a better job of recognizing when an ORDER BY clause can be implemented using indices - especially in cases where the ORDER BY clause contains terms from two or more tables in a join.
SQLite version 126.96.36.199 is a patch release. Changes from the baseline version 3.7.14 are minimal and are restricted to fixing three bugs.
One of the fixed bugs is a long-standing issue with the TCL interface. Another is an external compiler bug that SQLite merely works around and that only comes up if you are using the VisualStudio-2012 compiler to generate WinRT applications on ARM with optimizations enabled. The third problem is an SQLite core bug, introduced in version 3.7.14, that can cause a segfault if a query contains a LEFT JOIN that contains an OR in the ON clause.
SQLite version 3.7.14 is a regularly scheduled maintenance release of SQLite. The previous release continues to work well. Upgrading is optional.
Version 3.7.14 drops native support for OS/2. We are not aware of any active projects that were using SQLite on OS/2 and since the SQLite developers had no way of testing on OS/2 it seemed like it was time to simply remove the OS/2 code from the SQLite tree. If there are OS/2 projects out there that still need SQLite support, they can continue to maintain their own private VFS which can be linked to SQLite at start-time using the sqlite3_vfs_register() interface.
The sqlite3_close_v2() interface has been added. The sqlite3_close_v2() interface differs from sqlite3_close() in that it is designed to work better for host language that use a garbage collector. With the older sqlite3_close() interface, the associated prepared statements and sqlite3_backup objects must be destroyed before the database connection. With the newer sqlite3_close_v2() interface, the objects can be destroyed in any order.
This release also includes performance improvements to the sort algorithm that is used to implement ORDER BY and CREATE INDEX. And the query planner has been enhanced to better use covering indices on queries that use OR terms in the WHERE clause.
SQLite version 3.7.13 adds support for WinRT and metro style applications for Microsoft Windows 8. The 3.7.13 release is coming sooner than is usual after the previous release in order to get this new capability into the hands of developers. To use SQLite in a metro style application, compile with the -DSQLITE_OS_WINRT flag. Because of the increased application security and safety requirements of WinRT, all database filenames should be full pathnames. Note that SQLite is not capable of accessing databases outside the installation directory and application data directory. This restriction is another security and safety feature of WinRT. Apart from these restrictions, SQLite should work exactly the same on WinRT as it does on every other system.
Also in this release: when a database is opened using URI filenames and the mode=memory query parameter then the database is an in-memory database, just as if it had been named ":memory:". But, if shared cache mode is enabled, then all other database connections that specify the same URI filename will connect to the same in-memory database. This allows two or more database connections (in the same process) to share the same in-memory database.
This release also includes some corner-case performance optimizations that are obscure yet significant to an important subset of SQLite users. Getting these performance optimizations into circulation quickly is yet another reason for making this release so soon following the previous.
The next release of SQLite is scheduled to occur after the usual 2 or 3 month interval.
SQLite version 188.8.131.52 is a patch release for version 3.7.12 that fixes a bug that was introduced in version 3.7.12 and that can cause a segfault for certain obscure nested aggregate queries. There are very few changes in 184.108.40.206, and upgrading is only needed for applications that do nested aggregate queries.
SQLite version 3.7.12 is a regularly scheduled maintenance release. This release contains several new optimizations and bug fixes and upgrading is recommended. See the change summary for details.