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