On Tue, 2006-09-05 at 12:34 -0600, Reidy, Ron wrote: > So, which is it - errors at 3.8M rows, or 350K rows? When you get > errors at 350K, are you array fetching or row-at-a-time fetching? What > does -1 mean in the error message?
I can't tell what driver Peter is using because it has not inserted its name into the error - this is a bug in itself - it should appear in [ ] after [unixODBC]. The -1 is SQL_ERROR and there should be a native error too - that is also missing. I've no idea why it shows "SQL-" - this also seems incorrect. This probably does not help much other than to clarify that this driver is not fully ODBC complaint in its error reporting. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com > -----Original Message----- > From: Loo, Peter # PHX [mailto:[EMAIL PROTECTED] > Sent: Tuesday, September 05, 2006 12:15 PM > To: Loo, Peter # PHX; Reidy, Ron; DBI-Users > Subject: RE: :ODBC::st execute failed: [unixODBC]ERROR: crossed reserve > : Out of memory > > > Now I am getting the following error after fetching approximately > 350,000 rows. > > DBD::ODBC::st fetch failed: [unixODBC] (SQL-)(DBD: st_fetch/SQLFetch > err=-1) at /usr/local/apps/ppv/devl/bin/sdl.pl line 228, <FH> line 53. > > Peter > > -----Original Message----- > From: Loo, Peter # PHX [mailto:[EMAIL PROTECTED] > Sent: Tuesday, September 05, 2006 10:45 AM > To: Reidy, Ron; DBI-Users > Subject: RE: :ODBC::st execute failed: [unixODBC]ERROR: crossed reserve > : Out of memory > > > Hi Ron, > > I am returning approximately 3.8 million rows. Here is the code: > > $sqlString = qq{ select distinct x.ptnt_gid, x.prdct_gid, > x.rx_fill_dte, > x.claim_gid, x.ovrd_days_sply_nbr, > x.clfsn_grace_prd_nbr, 'N', > x.rx_fill_dte + > x.ovrd_days_sply_nbr, > x.rx_fill_dte - > to_date('1980-01-01', 'YYYY-MM-DD'), > x.rx_fill_dte + > (x.ovrd_days_sply_nbr * 2) > from p_dlvrb_rx_claim_extract x, > p_dlvrb_ptnt_list y > where x.dlvrb_gid = y.dlvrb_gid > and x.ptnt_gid = y.ptnt_gid > order by x.ptnt_gid, x.prdct_gid, x.rx_fill_dte, > x.claim_gid }; > $sqlString =~ s/\s+/ /g; > print STDERR "sqlString is: $sqlString\n"; > $sth = sub_prepare($driver, $dbh, $sqlString); > $sth = sub_execute($driver, $dbh, $sth); > my ($ptnt, $prdct, $fill_dte, $claim, $days_sply, $grace, $class, > $cted, $since); > $sth->bind_columns( undef, \$ptnt, \$prdct, \$fill_dte, \$claim, > \$days_sply, \$grace, \$class, \$cted, \$since, \$twice ); > > > LINE 88 of GlobalRoutines.pm > > sub sub_execute($$$) { > print STDERR "\n***** sub_execute() *****\n\n"; > my ($dbDriver, $dbh, $sth) = @_; > print STDERR "DATABASE DRIVER IS: $dbDriver\n"; > print STDERR "DATABASE HANDLE IS: $dbh\n"; > print STDERR "STATEMENT HANDLE IS: $sth\n"; > eval { $sth->execute(); }; <<<<<<<<<<<<<<<<<<<<<< > if ($@) { > $MESSAGE = "sub_execute() - $@"; > $STATUS = $FAILURE; > sub_exit(); > } > print STDERR "RETURN STATEMENT HANDLE IS: $sth\n\n"; > return($sth); > } #<=== (End of sub_execute) > > > Peter > > -----Original Message----- > From: Reidy, Ron [mailto:[EMAIL PROTECTED] > Sent: Tuesday, September 05, 2006 10:41 AM > To: Loo, Peter # PHX; DBI-Users > Subject: RE: :ODBC::st execute failed: [unixODBC]ERROR: crossed reserve > : Out of memory > > Sure, > > What are you doing in GlabalRoutines.pm at line 88? Are you fetching a > large result set into memory (hash or array)? > > -- > Ron Reidy > Lead DBA > Array BioPharma, Inc. > > -----Original Message----- > From: Loo, Peter # PHX [mailto:[EMAIL PROTECTED] > Sent: Tuesday, September 05, 2006 11:38 AM > To: DBI-Users > Subject: DBD::ODBC::st execute failed: [unixODBC]ERROR: crossed reserve > : Out of memory > > Hi, > > Will you kindly tell me what this error message is talking about? > > DBD::ODBC::st execute failed: [unixODBC]ERROR: crossed reserve : Out of > memory > (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at > /usr/local/apps/common/devl/bin/GlobalRoutines.pm line 88, <FH> line 53. > > Thanks. > > Peter > > This electronic message transmission is a PRIVATE communication which > contains information which may be confidential or privileged. The > information is intended to be for the use of the individual or entity > named above. If you are not the intended recipient, please be aware that > any disclosure, copying, distribution or use of the contents of this > information is prohibited. Please notify the sender of the delivery > error by replying to this message, or notify us by telephone > (877-633-2436, ext. 0), and then delete it from your system. > > > > This E-mail message is for the sole use of the intended recipient(s) and > may contain confidential and privileged information. Any unauthorized > review, use, disclosure or distribution is prohibited. If you are not > the intended recipient, please contact the sender by reply E-mail, and > destroy all copies of the original message. > > > This E-mail message is for the sole use of the intended recipient(s) and > may contain confidential and privileged information. Any unauthorized > review, use, disclosure or distribution is prohibited. If you are not > the intended recipient, please contact the sender by reply E-mail, and > destroy all copies of the original message. > >