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.