DBD::PgAsync ------------ This is a fork of DBD::Pg (3.18.0) intended to fully support asynchronous database operations. In addition to the existing DBD::Pg async support, this needs 1. Support for async connect via PQconnectStart/ PQconnectPoll. 2. Support for async prepare PQsendPrepare. 3. Removal of synchronous database operations embedded in dbdimp.c functions, eg, in pg_db_cancel. 1) is implemented using a special attribute to connect and a method named pg_continue_connect which functions as interface to PQconnectPoll. See manpage for more details. 2) is implemented as well. The code should transparently use PQsendPrepare instead of PQprepare for async statements. 3) completed so far: - pg_cancel no longer waits for the result of the cancelled query. - transactions started automatically when autocommit is off use asychronous command execution - commit and rollback can be executed asynchronusly Bug reports etc specifically about this code should probably rather be sent to me than to any other DBD::Pg address, especially including the principal author of most of the code (). -- Rainer Weikusat New Method to Enable Async Operations ------------------------------------- Starting with version 0.6, the recommended method to enable asychronous operation is to pass pg_use_async to the DBI connect method, example: $dbh = DBI->connect($cs, '', '', { AutoCommit => 1, RaiseError => 1, pg_server_prepare => 1, pg_use_async => 1}); This will use asynchronous operations by default whereever support for them has been implemented. It's possible to disable this for individual statement handles by passing a pg_async attribute with value 0 to prepare. Async-by-default can also be disabled at any time by setting pg_use_async to 0, eg, $$dbh{pg_use_async} = 0; The original DBD::Pg method for demanding asynchronous operations, including the extension for async connect, is still supported within its technical limits. In particular, this means that commit and rollback are always sychronous. Debian Package -------------- Because development happens on Debian (Devuan, actually, but that's an unimportant detail), there's support for creating a Debian package of the driver. This has only been tested Devuan daedalus (Debian 12 based) and the only tested way to build the package is executing fakeroot debian/rules binary in the top-level distribution directory.