Why cannot I use a RowCacheSize greater than 128 with DBD::Oracle?

It appears that DBD::Oracle restricts the RowCacheSize to 128, why? I know how much memory I can afford to use for retrieving rows better than DBD::Oracle and as far as I can see this could be set a lot higher.

The code in question seems to be:

void rs_array_init(imp_sth_t *imp_sth)
{
        dTHX;
        if (imp_sth->rs_array_on!=1             ||
                imp_sth->rs_array_size<1        ||
                imp_sth->rs_array_size>128){

                imp_sth->rs_array_on=0;
                imp_sth->rs_array_size=1;

and in sth_set_row_cache

if (imp_sth->rs_array_on && cache_rows>0)
        imp_sth->rs_array_size=cache_rows>128?128:cache_rows;   /* restrict to 128 for now */

I've reported this at Why is RowCacheSize limited to 128.

Comments

DBD::Oracle is working towards fixing this now

John Scoles has now worked around this restriction in the rs_array branch of DBD::Oracle in subversion. May be it will be in the next release (1.24) of DBD::Oracle.

Changes make it to DBD::Oracle 1.24 RC4

This change is included in DBD::Oracle 1.24 RC4 so will likely make it to the full release.

Change made it to 1.24a

This change made it to 1.24a.