Repository navigation
v0.4.0
Binaries for Linux, macOS, Windows and FreeBSD are attached below. The Docker image is
ghcr.io/mariuz/firebirdrest:0.4.0. See CHANGELOG.md for details.
Changed
- Reads cost 4 round trips to Firebird instead of 7:
GET/HEADrequests reuse a long-lived
read-onlyREAD COMMITTEDtransaction per connection (same results as a fresh one, see
Transactions;
db-read-tx-reuse = falserestores the old behaviour), and the request context block no
longer triggers a row-count request. On the benchmark database: a row by key +30%, a
function call +60%, a computed field with order +25%, a 25-row embed +30%. - Multi-row inserts no longer run one statement per row. On Firebird 4+, a plain insert with
return=minimalgoes through the wire protocol's batch API (one batch per column set);
everything else (Firebird 3, upserts,return=representation, BLOB values) runs in
EXECUTE BLOCKs of up to 100 rows that return every row's keys. A 100-row insert takes a
third of the time it took, a 1000-row one less. Rows of a view are still inserted one by
one. Transactions are now bound to one pooled connection each, which the batch API needs.
Added
- Relationships across SQL schemas on Firebird 6: a foreign key between tables of two exposed
schemas (db-schemas) is an embeddable relationship in both directions, as in PostgREST,
also when the request's schema has a table of the same name. Foreign keys into schemas that
aren't exposed stay out (schemas). - Benchmarks against PostgREST on identical data, with the PostgreSQL schema and seed in
bench/postgrest/and the results and their interpretation on the Benchmarks page. - A stability promise saying
which interfaces are stable, which are experimental, and how deprecations and behaviour
changes are announced, and an upgrade guide
with the changes to check for each version. firebirdrest -check [config-file]validates the configuration and prints warnings without
connecting; the warnings are also logged at startup. Deprecated setting names, when there
are any, keep working for a minor version with a warning.