On Thu, 26 Aug 2004 09:04:07 +0100, Tim Bunce <[EMAIL PROTECTED]> wrote: > We would all like many things but have to settle for what's practical. > > The APIs of all the main databases which offer a non-blocking mode > (which includes at least ODBC and Oracle OCI) need to be studied first > to ensure that any DBI API design is workable for them. > > We might as well start that now... > > Can driver authors, and anyone else interested, please reply with a > short summary of the way non-blocking mode works for 'your' database. > Including URLs to relevant docs would be a *big* help.
The DBD::Informix interface, Informix ESQL/C, does not support a non-blocking mode. Whether the Informix ODBC drivers support a non-blocking mode is debatable - I've not checked, and have no particular plans to do so. Manuals are available if you're curious: http://www.ibm.com/software/data/informix/library One of the issues I think that the specification will have to address, probably restrictively, is whether you can have both an asynchronous (non-blocking) statement and other synchronous (or, indeed, other asynchronous) statements active on a single $dbh -- I suspect that the portable answer will be "No; only one statement, whether synchronous or asynchronous, can be active on a $dbh at any given time". Also, I think we should review whether Perl threading might be an alternative (better?) way to achieve asynchronous operations. DBD::Informix and ESQL/C could support multi-threading with some work -- basically, to ensure that any 'globals' are allocated per thread when necessary. You'd then be able to have multiple $dbh - connections - to a database, and different threads would be able to use different $dbh synchronously (within the thread) but concurrently (across threads). -- Jonathan Leffler <[EMAIL PROTECTED]> #include <disclaimer.h> Guardian of DBD::Informix - v2003.04 - http://dbi.perl.org "I don't suffer from insanity - I enjoy every minute of it."