Released on 18 Mar 2013
Project description.

SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.

SQLite is an embedded SQL database engine. Unlike most other SQL databases, SQLite does not have a separate server process. SQLite reads and writes directly to ordinary disk files. A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. The database file format is cross-platform - you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures. These features make SQLite a popular choice as an Application File Format.

SQLite 3.7.16 Changelog
  • 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