v0.7.0 (2026-02-16)
Enhancements
- A Repo can be configured to be locked to a single tenant by specifying
:tenant_idconfig. :key_limitis 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_iteratorin aStreamfor
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
:limitinEcto.Querywill 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