Skip to content

v0.7.0

Latest

Choose a tag to compare

@jessestimpson jessestimpson released this 17 Feb 01:45
· 11 commits to main since this release
bf81c4e

v0.7.0 (2026-02-16)

Enhancements

  • A Repo can be configured to be locked to a single tenant by specifying :tenant_id config.
  • :key_limit is a valid Repo option. When specified, the underlying FDB GetRange will be limited to the
    specified number of keys. Note that there is not always a 1-to-1 mapping of keys to objects, due to
    large objects being split across multiple keys.
  • Metadata retrieval is now skipped when querying a schema by its primary key only. e.g. Repo.all(User, ...)
  • Added FDB.stream_range/4, currently undocumented, that wraps the :erlfdb_range_iterator in a Stream for
    easier use in Elixir apps.
  • When querying with no where clause and an order_by, an index will now be selected if one exists.
  • Improved error messages for unsupported order_by + limit interactions.

Bug fixes

  • A :limit in Ecto.Query will now work as expected when encountering objects split across multiple keys.
  • When reading SchemaMigration versions, only the maximum version number is retrieved, which will result in
    a small performance benefit when opening a Tenant.

Relevant internal changes

Internally, much of the Query and Future interfaces have been refactored to support the Query limit bug fix.
In particular, we are now using :erlfdb_range_iterator, which provides more control over the paged retrieval
of key-values from the database server. We hope these paths are now simpler and easier to maintain over time.

New documentation

  • Serialization Design: Describes how your data is serialized to FDB values.
  • Improvements to implementation traces in fdb_api_counting_test.exs

Dependencies

  • erlfdb ~> 0.3.4
  • Added support for Elixir 1.19 and Erlang 28
  • Updated CI FDB to 7.3.69
  • Updated all outdated deps