Skip to content

Add official Firebird dialect support #18269

Description

@MahmoudTL

Issue Creation Checklist
Confirmed: I understand that my issue will be automatically closed if I don't fill in the requested information
Confirmed: I have read the contribution guidelines (https://github.com/sequelize/sequelize/blob/main/CONTRIBUTING.md)

Feature Description
Describe the feature you'd like to see implemented
Official support for Firebird (https://firebirdsql.org/) as a Sequelize v7 dialect, following the same AbstractDialect structure as the existing dialects (postgres, mysql, sqlite3, mssql, db2, ibmi, ...).

I've already built this as a standalone package, verified against real Firebird servers (not just unit tests):

  • Repo: https://github.com/MahmoudTL/sequelize-firebird
  • CI: green across Firebird 2.5, 3.0, and 5.0 (Docker-based, see ci.yml at https://github.com/MahmoudTL/sequelize-firebird/blob/master/.github/workflows/ci.yml); Firebird 2.1 verified locally. Firebird 4.0 is the only version I haven't been able to verify, for lack of a working Docker image (tracked in ROADMAP.md at https://github.com/MahmoudTL/sequelize-firebird/blob/master/ROADMAP.md)
  • Verified end-to-end: connection/auth, raw queries, Model.sync(), full CRUD via RETURNING, bulk operations, associations (hasMany/belongsTo, nested include, FK constraints), migrations (addColumn/changeColumn/renameColumn/removeColumn, describeTable, showConstraints), transactions, and savepoints (nested transactions)
  • Along the way, found and fixed about 15 real bugs specific to Firebird's quirks (no multi-row INSERT ... VALUES, no native AUTO_INCREMENT before v3, no SQL-text START TRANSACTION/COMMIT/ROLLBACK, 31-byte identifier limit before v4, RETURNING only works on single-row statements, etc.) - all documented in the roadmap
    Usage example:

import { Sequelize } from '@sequelize/core'; import { FirebirdDialect } from 'sequelize-firebird'; // -> '@sequelize/firebird' if adopted

const sequelize = new Sequelize({ dialect: FirebirdDialect, host: 'localhost', port: 3050, database: 'employee', user: 'sysdba', password: 'masterkey', });

Describe why you would like this feature to be added to Sequelize
Firebird still has an active user base (embedded/small-footprint deployments, legacy systems in some industries and regions), but has no first-class Sequelize support today. I originally asked about this in discussion #18249 (#18249) and got positive, detailed feedback - though on reflection I should flag that the two replies I got there were from a community member with no maintainer affiliation (author_association: NONE), not from the Sequelize team, so I don't actually have a maintainer's read on this yet. That's what I'm hoping to get here.

I understand a new dialect is a real long-term maintenance commitment, and I'm not assuming this should land in the core monorepo immediately - happy to keep it as a well-maintained standalone package (following AbstractDialect exactly, so it could be absorbed later) if that's preferred. Mainly looking for a maintainer's take on whether there's a path to official support, and what the bar for that would look like concretely (unit test coverage matching the other dialects' ~106-file suites is the obvious big remaining gap).

@ephys, given your work on the v7 dialect architecture, I'd especially value your read on whether this is worth pursuing further, if you have the bandwidth.

Is this feature dialect-specific?
Yes. This feature only applies to the following dialect(s): Firebird (new dialect)

Would you be willing to resolve this issue by submitting a Pull Request?
Yes, I have the time but I will need guidance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dialect: newFor issues and PRs that relate to new dialect supporthardFor issues and PRs.type: featureDEPRECATED: replace with the "feature" issue type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions