Author: byterock
Date: Thu Jul 9 07:02:25 2009
New Revision: 13021
Modified:
dbd-oracle/branches/rs_array/dbdimp.h
dbd-oracle/branches/rs_array/oci8.c
Log:
sort of working
Modified: dbd-oracle/branches/rs_array/dbdimp.h
==============================================================================
--- dbd-oracle/branches/rs_array/dbdimp.h (original)
+++ dbd-oracle/branches/rs_array/dbdimp.h Thu Jul 9 07:02:25 2009
@@ -113,6 +113,7 @@
int fetch_position;
int prefetch_memory; /* OCI_PREFETCH_MEMORY*/
/* array fetch: state variables */
+ int row_cache_off;
bool rs_array_on; /* if array to be used */
int rs_array_size; /* array size */
int rs_array_num_rows; /* num rows in last fetch */
Modified: dbd-oracle/branches/rs_array/oci8.c
==============================================================================
--- dbd-oracle/branches/rs_array/oci8.c (original)
+++ dbd-oracle/branches/rs_array/oci8.c Thu Jul 9 07:02:25 2009
@@ -581,6 +581,7 @@
DBD_ATTRIB_GET_IV( attribs, "ora_check_sql", 13, svp, ora_check_sql);
DBD_ATTRIB_GET_IV( attribs, "ora_exe_mode", 12, svp, imp_sth->exe_mode);
DBD_ATTRIB_GET_IV( attribs, "ora_prefetch_memory", 19, svp, imp_sth->prefetch_memory);
+ DBD_ATTRIB_GET_IV( attribs, "ora_row_cache_off", 17, svp, imp_sth->row_cache_off);
DBD_ATTRIB_GET_IV( attribs, "ora_verbose", 11, svp, dbd_verbose);
DBD_ATTRIB_GET_IV( attribs, "ora_oci_success_warn", 20, svp, oci_warn);
DBD_ATTRIB_GET_IV( attribs, "ora_objects", 11, svp, ora_objects);
@@ -2265,14 +2266,14 @@
void rs_array_init(imp_sth_t *imp_sth)
{
dTHX;
- if (imp_sth->rs_array_on!=1 ||
+/* 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;
- }
+ }*/
imp_sth->rs_array_num_rows=0;
imp_sth->rs_array_idx=0;
imp_sth->rs_array_status=OCI_SUCCESS;
@@ -2361,13 +2362,13 @@
++num_errors;
}
- 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 */
+/* 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 */
if (DBIS->debug >= 3 || dbd_verbose >= 3 )
PerlIO_printf(DBILOGFP,
- " row cache OCI_ATTR_PREFETCH_ROWS %lu, OCI_ATTR_PREFETCH_MEMORY %lu\n",
- (unsigned long) (cache_rows), (unsigned long) (cache_mem));
+ " row cache OCI_ATTR_PREFETCH_ROWS %lu, OCI_ATTR_PREFETCH_MEMORY %lu cache_rows=%d\n",
+ (unsigned long) (cache_rows), (unsigned long) (cache_mem),cache_rows);
return num_errors;
}
@@ -3173,26 +3174,35 @@
PerlIO_printf(DBILOGFP," Scrolling Fetch, postion after fetch=%d\n",imp_sth->fetch_position);
} else {
- if (imp_sth->rs_array_on) { /* if array fetch on, fetch only if not in cache */
- imp_sth->rs_array_idx++;
- if (imp_sth->rs_array_num_rows<=imp_sth->rs_array_idx && (imp_sth->rs_array_status==OCI_SUCCESS || imp_sth->rs_array_status==OCI_SUCCESS_WITH_INFO)) {
- OCIStmtFetch_log_stat(imp_sth->stmhp,imp_sth->errhp,imp_sth->rs_array_size,(ub2)OCI_FETCH_NEXT,OCI_DEFAULT,status);
- imp_sth->rs_array_status=status;
- if (oci_warn && (imp_sth->rs_array_status == OCI_SUCCESS_WITH_INFO)) {
- oci_error(sth, imp_sth->errhp, status, "OCIStmtFetch");
- }
- OCIAttrGet_stmhp_stat(imp_sth, &imp_sth->rs_array_num_rows,0,OCI_ATTR_ROWS_FETCHED, status);
- imp_sth->rs_array_idx=0;
- }
- if (imp_sth->rs_array_num_rows>imp_sth->rs_array_idx) /* set status to success if rows in cache */
- status=OCI_SUCCESS;
- else
- status=imp_sth->rs_array_status;
- }
- else {
+ if (imp_sth->row_cache_off){ /*Do not use array fetch or local cache */
OCIStmtFetch_log_stat(imp_sth->stmhp, imp_sth->errhp,1,(ub2)OCI_FETCH_NEXT, OCI_DEFAULT, status);
imp_sth->rs_array_idx=0;
}
+ else { /*Array Fetch the New Noraml Super speedy and very nice*/
+ if (DBIS->debug >= 4 || dbd_verbose <= 4 )
+ PerlIO_printf(DBILOGFP,"rs_array_num_rows=%d rs_array_idx=%d, rs_array_status=%d rs_array_size=%d\n",imp_sth->rs_array_num_rows,imp_sth->rs_array_idx,imp_sth->rs_array_status,imp_sth->rs_array_size);
+ imp_sth->rs_array_idx++;
+ if (imp_sth->rs_array_num_rows<=imp_sth->rs_array_idx && (imp_sth->rs_array_status==OCI_SUCCESS || imp_sth->rs_array_status==OCI_SUCCESS_WITH_INFO)) {
+ PerlIO_printf(DBILOGFP,"3\n");
+
+ PerlIO_printf(DBILOGFP,"rs_array_size=%d\n",imp_sth->rs_array_size);
+
+ OCIStmtFetch_log_stat(imp_sth->stmhp,imp_sth->errhp,imp_sth->rs_array_size,(ub2)OCI_FETCH_NEXT,OCI_DEFAULT,status);
+ PerlIO_printf(DBILOGFP,"4\n");
+ imp_sth->rs_array_status=status;
+ if (oci_warn && (imp_sth->rs_array_status == OCI_SUCCESS_WITH_INFO)) {
+ oci_error(sth, imp_sth->errhp, status, "OCIStmtFetch");
+ }
+ OCIAttrGet_stmhp_stat(imp_sth, &imp_sth->rs_array_num_rows,0,OCI_ATTR_ROWS_FETCHED, status);
+ imp_sth->rs_array_idx=0;
+
+ }
+
+ if (imp_sth->rs_array_num_rows>imp_sth->rs_array_idx) /* set status to success if rows in cache */
+ status=OCI_SUCCESS;
+ else
+ status=imp_sth->rs_array_status;
+ }
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.