Small. Fast. Reliable.
Choose any three.

About Documentation Download License Support Purchase |

## SQLite Release 3.3.14 On 2007-04-02

- Fix a bug (ticket #2273) that could cause a segfault when the IN operator is used one one term of a two-column index and the right-hand side of the IN operator contains a NULL.
- Added a new OS interface method for determining the sector size of underlying media: sqlite3OsSectorSize().
- A new algorithm for statements of the form INSERT INTO table1 SELECT * FROM table2 is faster and reduces fragmentation. VACUUM uses statements of this form and thus runs faster and defragments better.
- Performance enhancements through reductions in disk I/O:
  - Do not read the last page of an overflow chain when deleting the row - just add that page to the freelist.
  - Do not store pages being deleted in the rollback journal.
  - Do not read in the (meaningless) content of pages extracted from the freelist.
  - Do not flush the page cache (and thus avoiding a cache refill) unless another process changes the underlying database file.
  - Truncate rather than delete the rollback journal when committing a transaction in exclusive access mode, or when committing the TEMP database.
- Added support for exclusive access mode using "PRAGMA locking_mode=EXCLUSIVE"
- Use heap space instead of stack space for large buffers in the pager - useful on embedded platforms with stack-space limitations.
- Add a makefile target "sqlite3.c" that builds an amalgamation containing the core SQLite library C code in a single file.
- Get the library working correctly when compiled with GCC option "-fstrict-aliasing".
- Removed the vestigal SQLITE_PROTOCOL error.
- Improvements to test coverage, other minor bugs fixed, memory leaks plugged, code refactored and/or recommended in places for easier reading.

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.