Hi DBI Devs,

Please review Pull Request #185 <https://github.com/perl5-dbi/dbi/pull/185>,
which adds non-blocking asynchronous operations to the DBI core.

This pull request addresses two open issues:

   - *Issue #52 <https://github.com/perl5-dbi/dbi/issues/52>*: Non-blocking
   statement execution and event loop readiness hooks.
   - *Issue #183 <https://github.com/perl5-dbi/dbi/issues/183>*:
   Asynchronous execution and event-driven driver dispatch.

Summary of Commits

The PR is organized into 4 directed commits:

   1.

   *Core C/XS Flags & Macros* (DBIXS.h, DBI.xs):
   - Allocates upper-byte bit flags (DBIcf_Async, DBIcf_AsyncWantRead,
      DBIcf_AsyncWantWrite, etc.) and DBI_E_WOULDBLOCK (-1).
      - Implements get/set attribute handlers for Async, AsyncWatcher,
      AsyncErrorDetails, and concurrency locks.
   2.

   *Perl Dispatcher & PurePerl Emulation* (DBI.pm, Perl.xs,
   lib/DBI/PurePerl.pm):
   - Registers async_read_ready and async_write_ready in %DBI::DBI_methods.
      - Adds :async export tag, SQLSTATE IM001 fallback stubs, clone()
      handle rules, and PurePerl emulation mapping.
   3.

   *Reference Mock Driver* (lib/DBD/MockAsync.pm):
   - Implements DBD::MockAsync to simulate non-blocking statement
      execution, network latency, handle polling, and error conditions.
   4.

   *Unit Tests & Build Manifests* (t/18async.t, t/19mock_async.t,
   Makefile.PL, MANIFEST):
   - Adds unit test coverage for statement handle lifecycles, readiness
      checks, error handling, and event loop integration.

Pull Request: https://github.com/perl5-dbi/dbi/pull/185

Thanks,

CJCOLLIER

Reply via email to