Timeline of SQLite
SQLite’s development from an embedded database in 2000 to a portable application file format with durable transactions, richer queries, browser support, and JSONB in 2024.
- Category
- Engineering & Technology
- Tag
- computing
- Events
- 17 events 2000 – 2024
- Generated
- by gpt-6
2000: Hipp releases an embedded database
D. Richard Hipp released SQLite 1.0 after developing a database for software that needed to run without a separately administered server. Applications could link the library directly into their own process and store data in local files.
https://en.wikipedia.org/wiki/SQLite2001: SQLite replaces its original storage engine
SQLite 2.0 replaced its dependency on the GNU Database Manager with a custom B-tree storage implementation. The change gave SQLite greater control over its database format and transaction behavior.
https://en.wikipedia.org/wiki/SQLite2004: SQLite 3 establishes a new database format
SQLite 3.0 introduced a new file format and revised interface, with UTF-8 and UTF-16 text handling and user-defined collating sequences. The version 3 format became the basis of SQLite’s long-lived compatibility promise for application database files.
https://en.wikipedia.org/wiki/SQLite2007: The amalgamation simplifies embedding
SQLite began distributing its implementation as a single C source file known as the amalgamation. Applications could incorporate the database with less build-system work, while compilers could optimize across the combined code.
https://en.wikipedia.org/wiki/SQLite2009: Testing reaches full branch coverage
SQLite’s developers reported 100% branch test coverage of the core library on July 25. Version 3.6.17, released August 10, was the first release after that milestone. The project’s testing effort included simulated failures and crash scenarios, reflecting the demands of a database embedded in many different applications and devices.
https://en.wikipedia.org/wiki/SQLite2009: Foreign-key enforcement becomes available
SQLite 3.6.19 added enforcement of foreign-key constraints. Applications could enable checks that related rows existed and specify behavior for updates or deletions, adding a database-level safeguard for relational integrity.
https://en.wikipedia.org/wiki/Foreign_key2010: Write-ahead logging improves read-write concurrency
SQLite 3.7.0 introduced an optional write-ahead log mode. Readers and a writer could operate concurrently under this mode, although SQLite still allowed only one writer at a time for a database.
https://en.wikipedia.org/wiki/Write-ahead_logging2013: A new query planner changes join selection
SQLite 3.8.0 introduced its next-generation query planner. The redesigned search for join orders improved planning for complex queries while preserving the database’s compact embedded architecture.
https://en.wikipedia.org/wiki/Query_optimization2014: Recursive queries reach SQLite
SQLite 3.8.3 added common table expressions, including recursive ones. Queries could traverse structures such as trees and graphs inside the database instead of relying entirely on repeated application-side queries.
https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL2015: JSON functions become an optional extension
SQLite 3.9.0 added the JSON1 extension for working with JavaScript Object Notation documents. Applications could extract and update document values using database functions while storing the documents alongside ordinary relational columns.
https://en.wikipedia.org/wiki/SQLite2018: Upserts handle conflicting inserts
SQLite 3.24.0 introduced PostgreSQL-style upsert syntax. An attempted insert could perform an update or do nothing when a uniqueness constraint conflicted, simplifying a common application data-management pattern.
https://en.wikipedia.org/wiki/Merge_(SQL)2018: Window functions expand analytical queries
SQLite 3.25.0 added window functions. Applications could calculate rankings, running totals, and values relative to neighboring rows without collapsing each group into one aggregate result.
https://en.wikipedia.org/wiki/Window_function_(SQL)2020: Generated columns join table definitions
SQLite 3.31.0 added generated columns whose values were computed from expressions involving other columns. Applications could choose virtual or stored generated values and use supported generated columns in indexes.
https://en.wikipedia.org/wiki/SQLite2021: STRICT tables offer stronger type enforcement
SQLite 3.37.0 introduced STRICT tables as an opt-in feature. Applications that wanted stricter column types could request them while existing tables retained SQLite’s flexible typing behavior.
https://en.wikipedia.org/wiki/SQLite2022: SQLite adds full outer joins
SQLite 3.39.0 introduced RIGHT and FULL OUTER JOIN support. The additions expanded compatibility with query patterns used in other relational databases, especially when matching data that was missing on one or both sides.
https://en.wikipedia.org/wiki/Join_(SQL)2022: Official WebAssembly support reaches browsers
SQLite 3.40.0 introduced an official beta WebAssembly build and supporting JavaScript interfaces. Browser applications could run the database engine locally, with persistence options depending on the browser and storage configuration.
https://en.wikipedia.org/wiki/SQLite2024: JSONB avoids repeated document parsing
SQLite 3.45.0 added JSONB, a binary representation of its internal JavaScript Object Notation parse tree. The format reduced parsing work for repeated operations and was distinct from PostgreSQL’s format of the same name.
https://en.wikipedia.org/wiki/SQLite