SQLite 3.15 is now available with support for row values, support for deterministic SQL functions in the WHERE clause of a partial index and the ability to VACUUM an attached database.

SQLite is an embeddable SQL database library. It is arguably the world’s most widely used database, mainly due to its use as the database engine in memory constrained gadgets such as cellphones, PDAs, and MP3 players.

It’s an in-process library that implements a self-contained, serverless, transactional SQL database engine. It doesn’t have a separate server process, and it reads and writes directly to ordinary files. The entire SQL database with multiple tables, indexes, triggers, and views, is contained in a single disk file. The developers say that you should think of SQLite:

“not as a replacement for Oracle but as a replacement for fopen()”

The other main advantage of SQLite is its compact size. With all features enabled, the library size can be less than 500KB.

The latest version, SQLite 3.15.0 is now available. The main change for the new version is support for row values. A row value is an ordered list of two or more scalar values, so is another way of defining a vector.

Examples of the things you might do with row values include scrolling window queries where you want to show a limited number of items in a scrolling display; searches on multi-column keys; or updating of multiple columns in a table based on a query. There’s a good description of various different uses on the SQLite site.

Another improvement in the new version is support for deterministic SQL functions in the WHERE clause of a partial index. SQL deterministic functions always gives the same answer when given the same inputs; non-deterministic functions include those that depend on previous actions such as LastRowID, or Changes.

The new release also adds the ability to VACUUM an attached database. The VACUUM command rebuilds the database file, repacking it into a minimal amount of disk space.