Changes for version 0.008.0 - 2026-09-28
- Enhancements
- each_row(\&callback, ...): new streaming-style select method that calls the callback once per merged row, then returns the count of rows visited. Accepts the same criteria, sort_by, limit, and offset parameters as selectall_arrayref. Note: the full merged result is materialised before the callback is invoked, because multi-source joins must cross-reference all sources before any individual row is fully assembled. For memory-efficient processing of large result sets, use the SQLite backend. Mirrors the Database::Abstraction 0.46 each_row() API.
- Bump minimum Database::Abstraction requirement to 0.46.
- selectall_hashref(): deprecated alias for selectall_arrayref(), added for drop-in compatibility with callers written against Database::Abstraction's deprecated API. Emits a carp deprecation warning on each call.
- selectall_hash(): deprecated alias for selectall_array(), same rationale. Emits a carp deprecation warning on each call.
- query() croak message now explicitly names Database::Abstraction::Query and explains why the chained builder cannot be applied to a merged view.
- Bug fixes
- Fix: dbi_source() probe in _build_sqlite_cache and _sqlite_join now uses an isolated scope (local $SIG{__WARN__} = sub {}; local $@) around the eval call. Database::Abstraction 0.46 adds dbi_source() to the base class; when called on a DA that has no backing SQLite file it emits an "uninitialized value" warning from _open() and may die via autodie. The unguarded eval previously left $@ set after a successful query (breaking the "$@ unchanged on success" guarantee) and allowed the warning to escape the eval block into Test::Warn, causing warning_like assertions to see two warnings instead of one and fail.
Documentation
Modules
Read-only combined view across two or more Database::Abstraction objects