elixir-sqlite/ecto_sqlite3
70.0
Strong · 18 September 2026
3k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
This system is the Ecto SQLite3 Adapter, a dedicated library that enables Ecto to interact with SQLite databases. It provides configurable type encoding and decoding, supports complex query generation including CTEs and JSON operations, and handles schema migrations. The project focuses on maintaining compatibility with Ecto SQL while offering performance benchmarking and comprehensive integration testing.
Features
Add Ecto benchmark suite with results for MyXQL, Postgrex, and ElixirSQLite
The \bench\ directory now includes a complete benchmarking setup using the Benchee library, featuring scripts to measure performance of loading raw data, generating SQL, and inserting records across MyXQL, Postgrex, and ElixirSQLite adapters. This change commits the initial benchmark results (as Markdown files) and provides the infrastructure (helper scripts, schema definitions, and repository configurations) to reproduce these performance comparisons locally.
bench · high confidence
Introduces configurable data encoding and decoding via new Codec and TypeExtension modules
The SQLite3 adapter now includes a dedicated \Ecto.Adapters.SQLite3.Codec\ module that handles the serialization and deserialization of Ecto types (such as booleans, JSON, decimals, and datetimes) with support for configurable JSON libraries and datetime formats. This is complemented by a new \Ecto.Adapters.SQLite3.TypeExtension\ behavior, allowing external libraries to register custom loaders and dumpers for primitive types, thereby extending the adapter's type handling capabilities beyond the built-in defaults.
lib/ecto/adapters/sqlite3 · high confidence
Removals
Removal of core Exqlite modules
The \Exqlite\, \Exqlite.Error\, \Exqlite.Sqlite3\, and \Exqlite.Sqlite3NIF\ modules have been removed from the library. This eliminates the public API for opening databases, executing SQL, and managing NIF bindings, effectively stripping the core functionality from this location.
lib/exqlite · high confidence
Removal of embedded SQLite NIF and UTF-8 library
The embedded C source files for the SQLite NIF driver (sqlite3\_nif.c) and the bundled UTF-8 utility library (utf8.h) have been removed from the project. This change eliminates the local C implementation and associated headers, indicating a shift in how the SQLite functionality is provided or integrated, likely moving towards an external dependency or a different implementation strategy.
_c\src · high confidence
Behavioural changes
Project rebranded from Exqlite to Ecto SQLite3 Adapter
The project has been renamed from Exqlite to Ecto SQLite3 Adapter, shifting its identity from a raw SQLite3 library to a dedicated Ecto adapter. This change is reflected in the updated README, which now documents Ecto integration, configuration, and type extensions, and in the package dependency specification, which now references \ecto\_sqlite3\ instead of \exqlite\.
(repo-wide) · high confidence
Rename adapter from Exqlite to SQLite3
The adapter module has been renamed from \Ecto.Adapters.Exqlite\ to \Ecto.Adapters.SQLite3\. Users must update their application configuration to use the new module name for the \:adapter\ option.
lib/ecto/adapters · high confidence
SQLite library updated to version 3.35.0
The bundled SQLite C source files (sqlite3.c, sqlite3.h, and sqlite3ext.h) have been replaced with the 3.35.0 amalgamation, upgrading from the previous 3.34.1 release. This update brings the latest bug fixes, performance improvements, and new features from the SQLite project to the application.
sqlite3 · high confidence
Test coverage
Added integration tests for Ecto SQLite3 data handling; Added integration tests for SQLite3 adapter compatibility; Added test coverage for SQLite3 adapter configuration and behavior; Added test support infrastructure for Ecto SQLite3 integration; Added test support schemas for EctoSQLite3; Added tests for SQLite3 codec and data type mappings; Configure Ecto SQLite3 test environment with sandboxing and migration support; Expanded test coverage for SQLite3 connection query generation; Removal of legacy Exqlite SQL test suite.
Dependencies
Ecto SQLite3 v0.24.1: Major dependency upgrades and Elixir 1.17 support
The Ecto SQLite3 adapter has been updated to version 0.24.1, requiring Elixir 1.17 or later. This release performs significant dependency upgrades, including Ecto and Ecto SQL to 3.14, Exqlite to 0.22, and Decimal to 3.0. It also removes the legacy esqlite dependency in favor of exqlite, adds development tools like Credo and Benchee for linting and benchmarking, and updates the package metadata and documentation configuration.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 70.
Lenses
- Code Health 97
- Architecture 66
- Maturity 66
- Readiness 70
- Security 95
Changes since last survey
- 300 commits — 272 feature/other, 28 fixes
By area
- (root) — 146 commits
- lib/ecto — 64 commits
- test/ecto — 24 commits
- integration_test/exqlite — 19 commits
- .github/workflows — 15 commits
- lib/exqlite — 8 commits
- integration_test/test_helper.exs — 5 commits
- test/support — 4 commits
- (repo) — 3 commits
- c_src/sqlite3_nif.c — 2 commits
- integration_test/json_test.exs — 2 commits
- .github/FUNDING.yml — 1 commit
- bench/results — 1 commit
- bench/scripts — 1 commit
- integration_test/all_test.exs — 1 commit
- integration_test/ecto — 1 commit
- integration_test/hints_test.exs — 1 commit
- integration_test/migrations_test.exs — 1 commit
- sqlite3/sqlite3.c — 1 commit
Notable commits
- fix: Add tag for :like_match_blobs, fix max(datetime) decoding (#90)
- fix: Fix bad init file loading in dump_cmd/3 (#111)
- fix: Fix binary uuid casting (#121)
- fix: Fix blob return from NIF (#98)
- fix: Fix compile "typing" warning
- fix: Fix datetime serialization format via :datetime_type config
- fix: Fix deep nesting issue
- fix: Fix defaults, add documentation (#13)
- fix: Fix double encoding of json string (#65)
- fix: Fix failing test
- fix: Fix math tests (#48)
- fix: Fix various issues with ecto 3.12 (#147)
- fix: Fix/create table options list guard (#69)
- fix: Fixes exists expressions (#92)
- fix: Fixes link to limitations in Readme.md (#40)
- fix: Revert exqlite dep to 0.5.6
- fix: Revert makefile changes
- fix: add fix for thundering herd on initial connection pool setup #8
- fix: another decimal precision test fix
- fix: fix ci badge link
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
elixir-sqlite/ecto_sqlite3 was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a2dc51200344eb8c656d5926894b939b1c50c9b0 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.