Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 19:10
· 8 commits to main since this release

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/HEAD requests reuse a long-lived
    read-only READ COMMITTED transaction per connection (same results as a fresh one, see
    Transactions;
    db-read-tx-reuse = false restores 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=minimal goes 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.