Skip Menu |

This queue is for tickets about the SQL-Statement CPAN distribution.

Report information
The Basics
Id: 76761
Status: rejected
Priority: 0/
Queue: SQL-Statement

People
Owner: Nobody in particular
Requestors: BBYRD [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Wishlist
Broken in: (no value)
Fixed in: (no value)



Subject: Grab rows smarter so that fetchrow_* while loops don't have to wait for the entire resultset first
Essentially, this would be returning rows one at a time if the row could be reported on immediately. This would really only make sense on SELECT queries and only ones that didn't have ordering, grouping, or distinct. Making this work would basically involve breaking apart the SQLS::SELECT sub into two parts: pre_SELECT, row_SELECT, and the execute into: execute, post_execute. Any $sth->execute() command would stop at pre_SELECT (provided that the verboten conditions weren't in play) and return the call stack back to the user. Only on a fetch would it start looping (controlled via RowCacheSize) and then reporting the rows back to the user. Finally, post_execute would be called before passing the last set of rows. This would help out greatly on slower network-based DBD drivers, like DBD::SNMP.
Please provide patches ;) Keep in mind, that DBI doesn't provide fetching data before the entire result is available. So you're patch/wish doesn't affect DBD::SNMP. Have a look at Coro meanwhile.
Feedback timeout