Small. Fast. Reliable.
Choose any three.

About Documentation Download License Support Purchase |

## SQLite Release 3.7.16.1 On 2013-03-29

- 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.

- Fix for a bug in the ORDER BY optimizer that was introduced in version 3.7.15 which would sometimes optimize out the sorting step when in fact the sort was required. Ticket a179fe7465
- Fix a long-standing bug in the CAST expression that would recognize UTF16 characters as digits even if their most-significant-byte was not zero. Ticket 689137afb6da41.
- Fix a bug in the NEAR operator of FTS3 when applied to subfields. Ticket 38b1ae018f.
- Fix a long-standing bug in the storage engine that would (very rarely) cause a spurious report of an SQLITE_CORRUPT error but which was otherwise harmless. Ticket 6bfb98dfc0c.
- The SQLITE_OMIT_MERGE_SORT option has been removed. The merge sorter is now a required component of SQLite.
- Fixed lots of spelling errors in the source-code comments
- SQLITE_SOURCE_ID: "2013-03-29 13:44:34 527231bc67285f01fb18d4451b28f61da3c4e39d"
- SHA1 for sqlite3.c: 7a91ceceac9bcf47ceb8219126276e5518f7ff5a

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.