Small. Fast. Reliable.
Choose any three.

Recent News

2012-June-11 - Release 3.7.13

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 of the application. 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.


2012-May-22 - Patch Release 3.7.12.1

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.

2012-May-14 - Version 3.7.12

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.

2012-March-20 - Version 3.7.11

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.


2012-January-16 - Version 3.7.10

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:

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.


2011-November-01 - Version 3.7.9

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.


2011-September-19 - Version 3.7.8

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.


Old news...