--- sql/oracle/parser3oracle.C 2001/10/28 14:51:30 1.2 +++ sql/oracle/parser3oracle.C 2001/11/14 09:46:31 1.12 @@ -7,7 +7,7 @@ 2001.07.30 using Oracle 8.1.6 [@test tested with Oracle 7.x.x] */ -static const char *RCSId="$Id: parser3oracle.C,v 1.2 2001/10/28 14:51:30 paf Exp $"; +static const char *RCSId="$Id: parser3oracle.C,v 1.12 2001/11/14 09:46:31 paf Exp $"; #include "config_includes.h" @@ -38,6 +38,55 @@ inline int max(int a, int b) { return a> inline int min(int a, int b){ return a "''" - *to++='\''; + *to++='\''; result++; break; case '\\': // "\" -> "\\" - *to++='\''; + *to++='\''; result++; break; } *to++=*from++; @@ -512,6 +602,18 @@ private: // private funcs OCIStmt *stmthp, unsigned long offset, unsigned long limit, SQL_Driver_query_event_handlers& handlers) { + ub4 prefetch_rows=100; + check(services, cs, "AttrSet prefetch-rows", OCIAttrSet( + (dvoid *)stmthp, (ub4)OCI_HTYPE_STMT, + (dvoid *)&prefetch_rows, (ub4)0, + (ub4)OCI_ATTR_PREFETCH_ROWS, (OCIError *)cs.errhp)); + + ub4 prefetch_mem_size=100*1024; + check(services, cs, "AttrSet prefetch-memory", OCIAttrSet( + (dvoid *)stmthp, (ub4)OCI_HTYPE_STMT, + (dvoid *)&prefetch_mem_size, (ub4)0, + (ub4)OCI_ATTR_PREFETCH_MEMORY, (OCIError *)cs.errhp)); + OCIParam *mypard; ub2 dtype; text *col_name; @@ -535,8 +637,10 @@ private: // private funcs while(++column_count<=MAX_COLS) { /* get next descriptor, if there is one */ if(OCIParamGet(stmthp, OCI_HTYPE_STMT, cs.errhp, (void **)&mypard, - (ub4) column_count)!=OCI_SUCCESS) + (ub4) column_count)!=OCI_SUCCESS) { + --column_count; break; + } /* Retrieve the data type attribute */ check(services, cs, "get type", OCIAttrGet( @@ -594,20 +698,16 @@ private: // private funcs for(unsigned long row=0; !limit||row=offset) { handlers.add_row(); for(int i=0; i