DBIx-Class-Async

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

       IO::Async::Loop::Mojois are found as reported in the issue #5
       by @eserte.

0.55 2026-02-06
     [NEW FEATURES]
     - Added run_parallel() method to DBIx::Class::Async::Schema. This method
       accepts a list of code references, executes them concurrently using
       the asynchronous schema connection, and returns a Future that
       resolves when all tasks are complete.
     - Added await_all() method to DBIx::Class::Async::Schema. This method
       takes one or more Future objects and synchronously blocks until all
       of them have completed, returning the list of results.
     [DOCUMENTATION]
     - Added comprehensive POD for run_parallel() and await_all() in Schema.pm,
       including usage examples for maximizing query performance.
     [TEST SUITE]
     - Added t/146-await-all.t to verify synchronous waiting and error
       propagation for await_all().
     - Added t/147-run-parallel.t to verify concurrent execution, aggregation
       of results, and error propagation for run_parallel().

0.54 2026-02-04
     [TEST SUITE]
     - Fixed t/145-mojo-integration.t to prevent compile-time failures on
       environments where Mojo::IOLoop is not installed.
     [DOCUMENTATION]
     - Formalised Event Loop Agnosticism: Explicitly documented the
       ability to inject external IO::Async::Loop instances.

0.53 2026-02-04
     [TEST SUITE]
     - Added t/144-loop-engine.t: Validates "Smart Default" auto-initialisation
       and verified "Injection Pattern" for custom IO::Async::Loop instances.
     - Added t/145-mojo-integration.t: Established formal support for
       Mojo::IOLoop environments, proving non-blocking co-existence
       between DBIC workers and Mojo timers.

     [DOCUMENTATION]
     - Updated DBI.pm/Storage.pm: Clearly defined the "Master-Worker"
       architecture and the separation of the Parent process from the
       DBI Handle (Ghost DBH pattern).
     - Enhanced CAVEATS: Documented why traditional txn_begin/commit
       blocks are replaced by the atomic instruction-set logic of txn_do.

0.52 2026-02-04
     - Proposed patch for issue #4 (-Duselongdouble), thanks @eserte.
     - Proposed patch for issue #9 (seg fault), thanks @eserte.
     - Proposed patch for issue #7 (missing prereq). thanks @szabgab.
     - Merged pull request #8 (add more versions of Perl to CI), thanks @szabgab.

0.51 2026-02-03
     - Bumped version as PAUSE was unhappy with previous tar ball.

0.50 2026-02-03
     [MAJOR ARCHITECTURAL OVERHAUL]
     - Complete rewrite of the Storage and Persistence layer to use a
       decoupled "Bridge & Worker" architecture.
     - Implementation of DBIx::Class::Async::Row lifecycle management:
        * Introduced "Dirty" column tracking to minimise SQL UPDATE payloads.
        * Added shadow-key optimisation for high-speed attribute access.
        * Robust AUTOLOAD mechanism for transparent ResultSet/Row interaction.
     - Enhanced Race Condition Recovery:
        * find_or_create() now handles unique constraint collisions
          automatically via a catch-and-retry strategy.
     - Improved Memory & Process Management:
        * Weakened schema references in Storage to prevent worker leaks.
        * Refined worker pool lifecycle (connect/disconnect) for cleaner
          shutdowns in event-loop environments.
     - Streaming Support:
        * Introduced DBIx::Class::Async::Storage::DBI::Cursor for
          non-blocking, memory-efficient iteration over large result sets.
     - Persistence Integrity:
        * Added strict Primary Key validation in find(), update(), and delete()
          to prevent ambiguous database operations.
     - Documentation:
        * Full POD refresh for Row, ResultSet, and Storage classes reflecting
          the new async design patterns.

0.49 2026-01-22
     - [IMPROVEMENT] Fixed ResultSet->slice to correctly return a ResultSet
       in scalar context.
     - [IMPROVEMENT] Fixed ResultSet->count to respect slices (LIMIT/OFFSET)
       by using subqueries in the async worker.
     - [IMPROVEMENT] Ensure result_class persists across chained search() calls.
     - [IMPROVEMENT] Fixed constructor (new) to correctly store and inherit
        result_class, rows, and pager attributes.
     - [IMPROVEMENT] Fixed argument passing in Async.pm to ensure attributes
       ($attrs) reach the background worker for count operations.
     - [TEST] Fixed t/43-result-class.t to verify result_class persistence.
     - [TEST] Fixed t/26-slice.t to test comprehensive slicing and chaining
       behaviour against a real SQLite database.
     - [TEST] Added t/57-count-performance.t to benchmark and verify the
       overhead of asynchronous subquery counting.

0.48 2026-01-22
     - [ENHANCE] Hardened _merge_result_data to support multiple database
       return patterns (HASH, ARRAY, and SCALAR).
     - [FIX] Added support for positional Primary Key mapping from ARRAY
       refs, improving compatibility with specialised DBI drivers.
     - [FIX] Improved Composite Primary Key safety during row creation,
       ensuring multi-column keys are correctly populated from database
       returns (e.g., PostgreSQL RETURNING clauses).
     - [TEST] Added comprehensive test suite for result data merging
       logic (t/56-merge-result-data.t).

0.47 2026-01-22
     - [REFACTOR] Overhauled Row state management to use authoritative
       'in_storage' flags instead of guessing based on Primary Key presence.
     - [FIX] Resolved "Cannot update row: not in storage" errors in
       complex workflows by propagating storage state through recursive
       relationship inflation.
     - [REFACTOR] Centralised row inflation logic into Async.pm bridge to
       ensure consistent object creation across all ResultSet fetch paths.
     - [FIX] Updated find_or_new to correctly distinguish between persistent
       and transient objects.
     - [IMPROVE] Hardened Row and ResultSet against Mock objects in test
       suites by adding defensive metadata checks (can('columns')).
     - [OPTIMISE] Improved search performance by only generating cache
       keys when caching is explicitly enabled.
     - [FIX] Ensure single-column primary keys are correctly merged during
       create() operations across all bridge drivers.



( run in 2.091 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )