|
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 preformance 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 3.7.12.1 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 3.7.12.1, 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.
SQLite version 3.7.11 is a regularly scheduled maintenance release which was rushed out early due to a bug in the query optimizer introduced in the previous release. The bug is obscure - it changes a LEFT JOIN into an INNER JOIN in some cases when there is a 3-way join and OR terms in the WHERE clause. But it was considered serious enough to rush out a fix. Apart from this one problem, SQLite version 3.7.10 has not given any trouble. Upgrading to version 3.7.11 from versions 3.7.6.3, 3.7.7, 3.7.7.1, 3.7.8, or 3.7.9 is optional. Upgrading from other releases, including the previous release 3.7.10, is recommended.Other enhancements found in this release are enumerated in the change log.
SQLite version 3.7.10 is a regularly scheduled maintenance release. Upgrading from version 3.7.6.3, 3.7.7, 3.7.7.1, 3.7.8, or 3.7.9 is optional. Upgrading from other releases is recommended.The SQLITE_CONFIG_PCACHE mechanism has been replaced with SQLITE_CONFIG_PCACHE2. If you do not know what this mechanism is (it is an extreme corner-case and is seldom used) then this change will not effect you in the least.
The default schema format number for new database files has changed from 1 to 4. SQLite has been able to generate and read database files using schema format 4 for six years. But up unto now, the default schema format has been 1 so that older versions of SQLite could read and write databases generated by newer versions of SQLite. But those older versions of SQLite have become so scarce now that it seems reasonable to make the new format the default.
SQLite is changing some of the assumptions it makes above the behavior of disk drives and flash memory devices during a sudden power loss. This change is completely transparent to applications. Read about the powersafe overwrite property for additional information.
Lots of new interfaces have been added in this release:
- sqlite3_db_release_memory()
- PRAGMA shrink_memory
- sqlite3_db_filename()
- sqlite3_stmt_busy()
- sqlite3_uri_boolean()
- sqlite3_uri_int64()
The PRAGMA cache_size statement has been enhanced. Formerly, you would use this statement to tell SQLite how many pages of the database files it should hold in its cache at once. The total memory requirement would depend on the database page size. Now, if you give PRAGMA cache_size a negative value -N, it will allocate roughly N kibibytes of memory to cache, divided up according to page size. This enhancement allows programs to more easily control their memory usage.
There have been several obscure bug fixes. One noteworthy bug, ticket ff5be73dee, could in theory result in a corrupt database file if a power loss occurred at just the wrong moment on an unusually cantankerous disk drive. But that is mostly a theoretical concern and is very unlikely to happen in practice. The bug was found during laboratory testing and has never been observed to occur in the wild.
SQLite version 3.7.9 is a regularly scheduled maintenance release. Upgrading from version 3.7.6.3, 3.7.7, 3.7.7.1, and 3.7.8 is optional. Upgrading from other versions is recommended.The SQLITE_ENABLE_STAT2 compile-time option is now a no-op. The enhanced query-planner functionality formerly available using SQLITE_ENABLE_STAT2 is now available through SQLITE_ENABLE_STAT3. The enhanced query planning is still disabled by default. However, future releases of SQLite might convert STAT3 from an enable-option to a disable-option so that it is available by default and is only omitted upon request.
The FTS4 full-text search engine has been enhanced such that tokens in the search string that begin with "^" must be the first token in their respective columns in order to match. Formerly, "^" characters in the search string were simply ignored. Hence, if a legacy application was including "^" characters in FTS4 search strings, thinking that they would always be ignored, then those legacy applications might break with this update. The fix is simply remove the "^" characters from the search string.
See the change summary for additional changes associated with this release.
SQLite version 3.7.8 is a quarterly maintenance release. Upgrading from versions 3.7.6.3, 3.7.7, or 3.7.7.1 is optional. Upgrading from other versions is recommended.This release features a new "external merge sort" algorithm used to implement ORDER BY and GROUP BY and also to presort the content of an index for CREATE INDEX. The new algorithm does approximately the same number of comparisons and I/Os as before, but the I/Os are much more sequential and so runtimes are greatly reduced when the size of the set being sorted is larger than the filesystem cache. The performance improvement can be dramatic - orders of magnitude faster for large CREATE INDEX commands. On the other hand, the code is slightly slower (1% or 2%) for a small CREATE INDEX. Since CREATE INDEX is not an operation that commonly occurs on a speed-critical path, we feel that this tradeoff is a good one. The slight slowdown for small CREATE INDEX statements might be recovered in a future release. ORDER BY and GROUP BY operations should now be faster for all cases, large and small.
The query planner has been enhanced to do a better job of handling the DISTINCT keyword on SELECT statements.
There has been a lot of work on the default VFSes. The unix VFS has been enhanced to include more overrideable system calls - a feature requested by Chromium to make it easier to build SQLite into a sandbox. The windows VFS has been enhanced to be more resistant to interference from anti-virus software.
Every version of SQLite is better tested than the previous, and 3.7.8 is no exception to this rule. Version 3.7.8 has been used internally by the SQLite team for mission critical functions and has performed flawlessly. And, of course, it passes our rigorous testing procedures with no problems detected. Version 3.7.8 is recommended for all new development.