Skip to content

Add Firebolt database driver#1379

Open
gm42 wants to merge 1 commit intogolang-migrate:masterfrom
gm42:master
Open

Add Firebolt database driver#1379
gm42 wants to merge 1 commit intogolang-migrate:masterfrom
gm42:master

Conversation

@gm42
Copy link
Copy Markdown

@gm42 gm42 commented Mar 30, 2026

Introduce a new database driver for Firebolt, using the official firebolt-go-sdk v1.20.0.

The driver implements the full database.Driver contract: version tracking via an append-only migrations table (BIGINT version, BOOLEAN dirty, BIGINT sequence), in-process locking, multi-statement migration support, and DROP via information_schema.tables.

Integration tests use dktest with the Firebolt Core Docker image (ghcr.io/firebolt-db/firebolt-core:preview-rc), following the same pattern as Postgres and other Docker-based drivers.

Notable implementation detail: the Open() method reconstructs the DSN manually instead of using url.URL.String(), because Go drops the "//" authority separator from "firebolt://" when both Host and Path are empty, which the Firebolt SDK's regex-based parser rejects.

NOTE: this change also bumps Go version from 1.24.0 to 1.24.9, since firebolt-go-sdk uses 1.24.9

Introduce a new database driver for Firebolt (https://www.firebolt.io/),
using the official firebolt-go-sdk v1.20.0.

The driver implements the full database.Driver contract: version tracking
via an append-only migrations table (BIGINT version, BOOLEAN dirty,
BIGINT sequence), in-process locking, multi-statement migration support,
and DROP via information_schema.tables.

Integration tests use dktest with the Firebolt Core Docker image
(ghcr.io/firebolt-db/firebolt-core:preview-rc), following the same
pattern as Postgres and other Docker-based drivers.

Notable implementation detail: the Open() method reconstructs the DSN
manually instead of using url.URL.String(), because Go drops the "//"
authority separator from "firebolt://" when both Host and Path are empty,
which the Firebolt SDK's regex-based parser rejects.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant