DBD::Pg async requets & pg_cancel
Jacques Caron <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.dbdpg |
|---|---|
| Message-ID | <[email protected]> |
Hi, I would like to submit the following patch for inclusion in the next release of DBD::Pg: http://staff.oxado.com/~jc/patch.dbd-pg.async+cancel This pretty much trivial patch adds 5 new methods: $sth->pg_sendquery is equivalent to $sth->execute, but only sends the request, and does not wait for the results $sth->pg_getresult handles the results $dbh->pg_busy tells if $sth->getresult will block $dbh->pg_consume handles incoming data from the server $dbh->pg_cancel cancels the existing query pg_sendquery and pg_getresult are really just a split of the existing execute method, using PQsendQuery* calls then PQgetResult rather than the original PQexec* calls. The original execute function now just successively calls both methods (it avoids a lot of code duplication). Apparently the PQsenqQuery* functions have been there for quite a while so I believe it should work in all cases, but if they don't leaving the execute function untouched is always an option. I have tested a few simple scenarios, but haven't tried it in production yet, so I can't vouch for the validity of the code, but the changes are quite minimal and straightforward so I don't expect much complication. Any comments welcome. Jacques.