nakagami/efirebirdsql
68.9
Adequate · 2 October 2026
5.4k
lines of production code
Erlang
primary language
2
measurements over time
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.