Fetch-on-demand iterators (was Re: [CDBI] Make CDBI go fast)

Edward J. Sabol sabol at alderaan.gsfc.nasa.gov
Fri Feb 16 05:37:15 GMT 2007

Ed Sabol wrote:
>> This sounds cool, but the change makes me nervous. Some DBMSs and/or DBDs
>> (Sybase, for example) don't like unfinished statement handles hanging around.
>> Could be problematic in a mod_perl environment?

Michael Schwern replied:
> Yes, this is a concern but its no worse a regular active statement handle.
> It depends on how long your iterators live, you just now have to treat them
> like you would statement handles. Further discussion and enhancements on
> that can be found in the ticket notes on rt.cpan.org.
> One possibility is to move executing the statement handle into the iterator
> so it doesn't even execute the query until you've asked for the first
> object. This would make it safer to hand around iterator objects.
> I'm using this in a mod_perl environment with no problems yet.

Yeah, but you're not using Sybase with mod_perl, and I am, so hence my

Although you're probably just using it as an extreme example, I don't really
see much point in optimizing the specific case of CDBI->search(...)->first.
If I had a search that might return a large number of rows, then I would
specify a LIMIT in the SQL query using CDBI::Search::LIMITed:


Nice module. I have to hand it to Tony on his refactoring job in v3.0.x.

More information about the ClassDBI mailing list