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 (<greg@turnstep.com>).

	-- Rainer Weikusat <rweikusat@talktalk.net>


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.
