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
  1. 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/SQLite
  2. 2001: 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/SQLite
  3. 2004: 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/SQLite
  4. 2007: 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/SQLite
  5. 2009: 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/SQLite
  6. 2009: 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_key
  7. 2010: 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_logging
  8. 2013: 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_optimization
  9. 2014: 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_SQL
  10. 2015: 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/SQLite
  11. 2018: 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)
  12. 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)
  13. 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/SQLite
  14. 2021: 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/SQLite
  15. 2022: 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)
  16. 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/SQLite
  17. 2024: 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