Skip to content
CAI
Software that uses CAICheck a score

elixir-sqlite/ecto_sqlite3

70.0

Strong · 18 September 2026

3k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

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.