•Added the PRAGMA foreign_key_check command.
•Added new extended error codes for all SQLITE_CONSTRAINT errors
•Added the SQLITE_READONLY_ROLLBACK extended error code for when a database cannot be opened because it needs rollback recovery but is read-only.
•Added SQL functions unicode(A) and char(X1,...,XN).
•Performance improvements for PRAGMA incremental_vacuum, especially in cases where the number of free pages is greater than what will fit on a single trunk page of the freelist.
•Improved optimization of queries containing aggregate min() or max().
•Enhance virtual tables so that they can potentially use an index when the WHERE clause contains the IN operator.
•Allow indices to be used for sorting even if prior terms of the index are constrained by IN operators in the WHERE clause.
•Enhance the PRAGMA table_info command so that the "pk" column is an increasing integer to show the order of columns in the primary key.
•Enhance the query optimizer to exploit transitive join constraints.
•Performance improvements in the query optimizer.
•Allow the error message from PRAGMA integrity_check to be longer than 20000 bytes.
•Improved name resolution for deeply nested queries.
•Added the test_regexp.c module as a demonstration of how to implement the REGEXP operator.
•Improved error messages in the RTREE extension.
•Enhance the command-line shell so that a non-zero argument to the ".exit" command causes the shell to exit immediately without cleanly shutting down the database connection.
•Improved error messages for invalid boolean arguments to dot-commands in the command-line shell.
•Improved error messages for "foreign key mismatch" showing the names of the two tables involved.
•Remove all uses of umask() in the unix VFS.
•Added the PRAGMA vdbe_addoptrace and PRAGMA vdbe_debug commands.
•Change to use strncmp() or the equivalent instead of memcmp() when comparing non-zero-terminated strings.
•Update cygwin interfaces to omit deprecated API calls.
•Enhance the spellfix1 extension so that the edit distance cost table can be changed at runtime by inserting a string like 'edit_cost_table=TABLE' into the "command" field.
•Bug fix: repair a long-standing problem that could cause incorrect query results in a 3-way or larger join that compared INTEGER fields against TEXT fields in two or more places. Ticket fc7bd6358f
•Bug fix: Issue an error message if the 16-bit reference counter on a view overflows due to an overly complex query.
•Bug fix: Avoid leaking memory on LIMIT and OFFSET clauses in deeply nested UNION ALL queries.
•Bug fix: Make sure the schema is up-to-date prior to running pragmas table_info, index_list, index_info, and foreign_key_list.
•SQLITE_SOURCE_ID: "2013-03-18 11:39:23 66d5f2b76750f3520eb7a495f6247206758f5b90"
•SHA1 for sqlite3.c: 7308ab891ca1b2ebc596025cfe4dc36f1ee89cf6

2013-01-09 (3.7.15.2)

•Fix a bug, introduced in version 3.7.15, that causes an ORDER BY clause to be optimized out of a three-way join when the ORDER BY is actually required. Ticket 598f5f7596b055
•SQLITE_SOURCE_ID: "2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f"
•SHA1 for sqlite3.c: 5741f47d1bc38aa0a8c38f09e60a5fe0031f272d

2012-12-19 (3.7.15.1)

•Fix a bug, introduced in version 3.7.15, that causes a segfault if the AS name of a result column of a SELECT statement is used as a logical term in the WHERE clause. Ticket a7b7803e8d1e869.
•SQLITE_SOURCE_ID: "2012-12-19 20:39:10 6b85b767d0ff7975146156a99ad673f2c1a23318"
•SHA1 for sqlite3.c: bbbaa68061e925bd4d7d18d7e1270935c5f7e39a

2012-12-12 (3.7.15)

•Added the sqlite3_errstr() interface.
•Avoid invoking the sqlite3_trace() callback multiple times when a statement is automatically reprepared due to SQLITE_SCHEMA errors.
•Added support for Windows Phone 8 platforms
•Enhance IN operator processing to make use of indices with numeric affinities.
•Do full-table scans using covering indices when possible, under the theory that an index will be smaller and hence can be scanned with less I/O.
•Enhance the query optimizer so that ORDER BY clauses are more aggressively optimized, especially in joins where various terms of the ORDER BY clause come from separate tables of the join.
•Add the ability to implement FROM clause subqueries as coroutines rather that manifesting the subquery into a temporary table.
•Enhancements the command-line shell: ◦Added the ".print" command
◦Negative numbers in the ".width" command cause right-alignment
◦Add the ".wheretrace" command when compiled with SQLITE_DEBUG

•Added the busy_timeout pragma.
•Added the instr() SQL function.
•Added the SQLITE_FCNTL_BUSYHANDLER file control, used to allow VFS implementations to get access to the busy handler callback.
•The xDelete method in the built-in VFSes now return SQLITE_IOERR_DELETE_NOENT if the file to be deleted does not exist.
•Enhanced support for QNX.
•Work around an optimizer bug in the MSVC compiler when targeting ARM.
•Bug fix: Avoid various concurrency problems in shared cache mode.
•Bug fix: Avoid a deadlock or crash if the backup API, shared cache, and the SQLite Encryption Extension are all used at once.
•Bug fix: SQL functions created using the TCL interface honor the "nullvalue" setting.
•Bug fix: Fix a 32-bit overflow problem on CREATE INDEX for databases larger than 16GB.
•Bug fix: Avoid segfault when using the COLLATE operator inside of a CHECK constraint or view in shared cache mode.
•SQLITE_SOURCE_ID: "2012-12-12 13:36:53 cd0b37c52658bfdf992b1e3dc467bae1835a94ae"
•SHA1 for sqlite3.c: 2b413611f5e3e3b6ef5f618f2a9209cdf25cbcff"

2012-10-04 (3.7.14.1)

•Fix a bug (ticket [d02e1406a58ea02d]]) that causes a segfault on a LEFT JOIN that includes an OR in the ON clause.
•Work around a bug in the optimizer in the VisualStudio-2012 compiler that causes invalid code to be generated when compiling SQLite on ARM.
•Fix the TCL interface so that the "nullvalue" setting is honored for TCL implementations of SQL functions.
•SQLITE_SOURCE_ID: "2012-10-04 19:37:12 091570e46d04e84b67228e0bdbcd6e1fb60c6bdb"
•SHA1 for sqlite3.c: 62aaecaacab3a4bf4a8fe4aec1cfdc1571fe9a44

2012-09-03 (3.7.14)

•Drop built-in support for OS/2. If you need to upgrade an OS/2 application to use this or a later version of SQLite, then add an application-defined VFS using the sqlite3_vfs_register() interface. The code removed in this release can serve as a baseline for the application-defined VFS.
•Ensure that floating point values are preserved exactly when reconstructing a database from the output of the ".dump" command of the command-line shell.
•Added the sqlite3_close_v2() interface.
•Updated the command-line shell so that it can be built using SQLITE_OMIT_FLOATING_POINT and SQLITE_OMIT_AUTOINIT.
•Improvements to the windows makefiles and build processes.
•Enhancements to PRAGMA integrity_check and PRAGMA quick_check so that they can optionally check just a single attached database instead of all attached databases.
•Enhancements to WAL mode processing that ensure that at least one valid read-mark is available at all times, so that read-only processes can always read the database.
•Performance enhancements in the sorter used by ORDER BY and CREATE INDEX.
•Added the SQLITE_DISABLE_FTS4_DEFERRED compile-time option.
•Better handling of aggregate queries where the aggregate functions are contained within subqueries.
•Enhance the query planner so that it will try to use a covering index on queries that make use of or optimization.
•SQLITE_SOURCE_ID: "2012-09-03 15:42:36 c0d89d4a9752922f9e367362366efde4f1b06f2a"
•SHA1 for sqlite3.c: 5fdf596b29bb426001f28b488ff356ae14d5a5a6

2012-06-11 (3.7.13)

•In-memory databases that are specified using URI filenames are allowed to use shared cache, so that the same in-memory database can be accessed from multiple database connections.
•Recognize and use the mode=memory query parameter in URI filenames.
•Avoid resetting the schema of shared cache connections when any one connection closes. Instead, wait for the last connection to close before resetting the schema.
•In the RTREE extension, when rounding 64-bit floating point numbers to 32-bit for storage, always round in a direction that causes the bounding box to get larger.
•Adjust the unix driver to avoid unnecessary calls to fchown().
•Add interfaces sqlite3_quota_ferror() and sqlite3_quota_file_available() to the test_quota.c module.
•The sqlite3_create_module() and sqlite3_create_module_v2() interfaces return SQLITE_MISUSE on any attempt to overload or replace a virtual table module. The destructor is always called in this case, in accordance with historical and current documentation.
•SQLITE_SOURCE_ID: "2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc"
•SHA1 for sqlite3.c: ff0a771d6252545740ba9685e312b0e3bb6a641b

Notes for the last version:

2013-Mar-18 - Release 3.7.16

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.