Skip to content
CAI
Software that uses CAICheck a score

nakagami/efirebirdsql

68.9

Adequate · 2 October 2026

5.4k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Erlang driver for the Firebird database, providing low-level connectivity and SQL execution capabilities. It manages database connections with configurable authentication, character sets, and timezones, while supporting transaction control and parameterized query execution. The library also handles data type mapping for decimals and timestamps, and includes utilities for generating error message mappings from Firebird source headers.

Features

Added Firebird configuration and error message generation utility

The attic now includes a sample firebird.conf file configuring remote binding to 0.0.0.0, defaulting to GMT, and enabling Srp256/Srp/Legacy\_Auth with ChaCha64/ChaCha/Arc4 wire encryption. Additionally, a new errmsgs.c utility has been added to generate Erlang error message mappings (efirebirdsql\_errmsgs.erl) from Firebird 5 source headers.

attic · high confidence

Behavioural changes

Build tooling upgrade and documentation expansion

The project has migrated its build system from Rebar 2 to Rebar 3, updating the Makefile to use the \rebar3\ command and adding tasks for dependency updates, full upgrades, and publishing to Hex with the \--yes\ flag. The dialyzer configuration has been adjusted to target the correct build output path and include the \crypto\ application in the PLT build. Additionally, the library documentation has been significantly expanded with a new README.rst that provides usage examples for connection, querying, and transaction management, and lists available connection parameters such as charset and authentication plugins.

(repo-wide) · high confidence

Major API overhaul and new data type support

The public API has been significantly restructured: \connect/4\ is replaced by \connect/5\ and \connect/6\ to support new connection options including \charset\, \auto\_commit\, \auth\_plugin\, and \timezone\. New functions \prepare/2\, \ping/1\, \description/1\, \fetchone/1\, \fetchall/1\, \commit/1\, \rollback/1\, \get\_last\_error/1\, \cancel/1\, and \sync/1\ are now exported. The library adds support for decimal floating-point types (DECIMAL64 and DECIMAL128) via \efirebirdsql\_decfloat\, timezone-aware date/time parsing via \efirebirdsql\_tz\_map\, and character set mapping via \efirebirdsql\_charset\. Connection stability is improved with configurable TCP keepalive and send timeouts, and the version is bumped to 0.9.17.

src · high confidence

Refactored Erlang record definitions for connection, statement, and state management

The internal data structures in the include file have been reorganized to better reflect the driver's architecture. The previous generic \statement\ and \error\ records have been replaced with specific \conn\ (connection), \stmt\ (statement), and \state\ records. The new \conn\ record introduces explicit fields for connection parameters such as \charset\, \auto\_commit\, \timezone\, \lock\_timeout\, and process identification (\process\_name\, \process\_id\), alongside network state tracking. The \stmt\ record now tracks SQL text, statement handles, and row-fetching state (\rows\, \more\_data\, \closed\), while the \column\ record has been expanded to include sequence, scale, length, and null indicator details. This change aligns the internal state representation with the updated connection and statement handling logic.

include · high confidence

Removal of ebin directory placeholder

The placeholder file (.empty) in the ebin directory has been removed, indicating that the directory is no longer required for the project structure.

ebin · medium confidence

Test coverage

Expanded test coverage for Firebird SQL driver

Added comprehensive EUnit tests for the efirebirdsql driver, including new test modules for character set handling, protocol-level operations, socket error recovery, and SRP authentication. The new tests verify correct behavior for connection errors, socket timeouts, zero-length reads, and SRP public value serialization, while also expanding existing tests to cover parameterized queries, date/timestamp parsing, and transaction management.

test · 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

Score

  • CAI 67 → 69 (+2.2)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 95 → 95 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 56 → 57 (+1.3)
  • Readiness 54 → 59 (+4.8)
  • Security 97 → 97 (+0.0)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (3)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no installation or build instructions (README.rst)
  • Hotspot: src/efirebirdsql_op.erl (src/efirebirdsql_op.erl)

Changes since last survey

  • 2 commits — 1 feature/other, 1 fixes

By area

  • (repo) — 1 commit
  • src/efirebirdsql_conv.erl — 1 commit

Notable commits

  • fix: Merge pull request #36 from LuisVelica/fix/float-param-blr-double
  • change: Send float parameters as blr_double instead of text

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

nakagami/efirebirdsql 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1a7f94fa4644ee42f32910acc18d1386e4503176 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.