Adding Firebird support to HammerDB / call for feedback #881
Replies: 1 comment 2 replies
-
|
Hi, many thanks for the new discussion topic and the work on Firebird support for HammerDB it looks very interesting. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I've been working on a Firebird (firebirdsql.org) driver for HammerDB and the branch is now feature-complete enough that I'd like to share it with the community, get feedback, and check whether the project would be interested in upstreaming it.
Branch: github.com/fdcastel/HammerDB /
feature/firebird-supportWhat's in the branch
Following the same structural pattern as the existing
src/postgresql/,src/mssqls/,src/mysql/etc. drivers:COPY/BCP).update conflict/lock conflict/ SQLSTATE 40001 /isc_update_conflictmarkers.SELECT FROM proc(...)so the Tcl side stays on thetdbc::odbchappy path.SUBSTRINGinstead ofSUBSTR, parenthesisedIN (... LIST ...), Firebird-friendly date arithmetic, etc.).inet://localhost:3050, since Firebird Embedded is single-process and can't be shared across threads).tdbc::odbcagainst the upstream Firebird ODBC driver, mirroring the waysrc/mssqls/already usestdbc::odbc. No new TDBC backend, no new C extension. Connection-string templates are built by a singlefb_build_connstrhelper.<firebird>block added toconfig/database.xml, and aconfig/firebird.xmlmirroringconfig/postgresql.xml.scripts/tcl/firebird/{tprocc,tproch}/and the Python parallel underscripts/python/firebird/..github/workflows/firebird.yml) that runs on every push:choco install firebird-odbc): full smoke + schema build + 200-txn TPC-C run + 5 PSQL stored procs install/exec + TPC-H load + 22-query power test + multi-VU throughput. Twelve verification steps, each writing a JSON result file bundled as a workflow artifact.tpcorg/hammerdb:v5.0-base): builds the image and verifies thatlibfbclient,libOdbcFb.soandtdbc::odbcall load correctly.Docker/firebird/Dockerfile, same overlay pattern asDocker/{mysql,postgres,maria,mssqls}/.What's deferred / known limitations
setlocalfbtpccvars,setlocalfbtpchvars) are wired up so the modules read settings fromconfigfirebird, but the Tk-based connection / TPROC-C / TPROC-H tabs (mirroringsrc/postgresql/pgopt.tcl) aren't built yet.tcount_fbtransaction counter. Currently a stub. A real implementation would pollMON$STATEMENTSfrom a background thread to feed the GUI's TPM/NOPM display.hammerdbcliend-to-end inside the upstream binary release. Looks permanently blocked unless the Windows.exeis rebuilt with the new files via Bawt — the binary uses Tclzipfsto bundlesrc/,modules/, etc., so on-disk overlays are ignored. The standalonetdbc::odbcCI verifications cover the same code paths, but this is one obvious deliverable that depends on the upstream release process.libfbclientandisql-fbwork fine on Linux, but the upstream Firebird ODBC driver — verified on bothv3-0-1-releaseand the recentv3.5.0-rc1— returns a garbled diagnostic record on every failedSQLDriverConnect: empty SQLSTATE, non-deterministic native code, and a message truncated to a single[character. That makes the driver unusable behindtdbc::odbcon Linux for anything beyond the happy path. I'm looking to fix this in the firebird-odbc-driver project. The Windows job covers the full SQL path end-to-end, so TPROC-C/TPROC-H workloads do work — just not on Linux via this driver until that's fixed upstream.On upstreaming
I've read CONTRIBUTING.md and I want to be upfront about the two things it flags for new database support:
If the team is interested, I'd be glad to submit a PR. The branch should be reviewable as-is, but I'll happily rebase, split into logical commits, run additional testing, or adjust scope based on what the code maintenance team would want to see.
Thanks for reading! And thanks for HammerDB!
Beta Was this translation helpful? Give feedback.
All reactions