Author: byterock
Date: Thu Jul 9 09:00:49 2009
New Revision: 13025
Modified:
dbd-oracle/branches/rs_array/oci8.c
Log:
working really well copy
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 09:00:49 2009
@@ -2294,15 +2294,8 @@
ub4 prefetch_rows = 0; /*Oracle prefetch Row Buffer*/
sb4 cache_rows = 0;/* set high so memory is the limit */
sword status;
- sb4 test_cache_rows = 0;
-
- /* reworked this is little so the user can set up his own cache
- basically if rowcachesize or prefetch_mem is set it uses those values
- otherwise it does it itself
- no sure what happens in the last case but I lwft it in for now
- Also I think in later version of OCI this call does not really do anything
- */
-
+
+
/* number of rows to cache if using oraperl */
if (SvOK(imp_drh->ora_cache_o)){
imp_sth->cache_rows = SvIV(imp_drh->ora_cache_o);
@@ -2312,43 +2305,7 @@
}
-/* if (imp_sth->is_child || imp_sth->ret_lobs){ /*ref cursors and sp only one row is allowed
-
- cache_rows =1;
- prefetch_mem =0;
-
- } else if (imp_dbh->RowCacheSize || imp_sth->prefetch_memory){
-PerlIO_printf(DBILOGFP,"HERE a\n");
- /*user set values *
- cache_rows =imp_dbh->RowCacheSize;
- prefetch_mem =imp_sth->prefetch_memory;
-
- } else if (imp_sth->cache_rows >= 0) { /* set cache size by row count
-
-
-PerlIO_printf(DBILOGFP,"HERE b\n");
- /* imp_sth->est_width needs to be set
- prefetch_mem = 0; /* so memory isn't the limit
-
- cache_rows = calc_cache_rows(imp_sth->cache_rows,(int)num_fields, imp_sth->est_width, has_longs);
-
- if (max_cache_rows && cache_rows > (signed long) max_cache_rows)
- cache_rows = max_cache_rows;
-
- imp_sth->cache_rows = cache_rows; /* record updated value
- }
- else { /* set cache size by memory */
- /* not sure if we ever reach this
- prefetch_mem = -imp_sth->cache_rows; /* cache_mem always +ve here
- if (max_cache_rows && cache_rows > (signed long) max_cache_rows) {
- cache_rows = max_cache_rows;
- imp_sth->cache_rows = cache_rows; /* record updated value only if max_cache_rows
- }
-
- }
-
-*/
if (imp_dbh->RowCacheSize){
cache_rows=imp_dbh->RowCacheSize;
}
@@ -2361,10 +2318,7 @@
cache_rows=calc_cache_rows(imp_sth->cache_rows,(int)num_fields, imp_sth->est_width, has_longs);
- PerlIO_printf(DBILOGFP,"cache_rows=%d\n",cache_rows);
- PerlIO_printf(DBILOGFP,"imp_sth->cache_rows=%d\n",imp_sth->cache_rows);
-
- if(!prefetch_rows){
+ if(!prefetch_rows && !prefetch_mem){
prefetch_rows=cache_rows;
}
}
@@ -2373,11 +2327,10 @@
prefetch_mem =-imp_dbh->RowCacheSize; /* cache_mem always +ve here */
prefetch_rows =0;
cache_rows=calc_cache_rows(imp_sth->cache_rows,(int)num_fields, imp_sth->est_width, has_longs);
- /*Sill use local cache but it is calulated nothing in the doc for this so I will use it like this*/
+ /*Sill use local cache but it is calulated nothing in the doc for this so I will use it like this*/
}
- PerlIO_printf(DBILOGFP,"cache_rows=%d prefetch_rows=%d,prefetch_mem=%d\n",cache_rows,prefetch_rows,prefetch_mem);
OCIAttrSet_log_stat(imp_sth->stmhp, OCI_HTYPE_STMT,
&prefetch_mem, sizeof(prefetch_mem), OCI_ATTR_PREFETCH_MEMORY,
@@ -2406,17 +2359,11 @@
else{
}
- /*imp_sth->cache_rows=prefetch_rows;*/
-
-/* 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
- imp_sth->rs_array_size=cache_rows;
- imp_sth->cache_rows=cache_rows;*/
-
+
if (DBIS->debug >= 3 || dbd_verbose >= 3 )
PerlIO_printf(DBILOGFP,
- " row cache OCI_ATTR_PREFETCH_ROWS %lu, OCI_ATTR_PREFETCH_MEMORY %lu cache_rows=%d\n max_cache_rows=%d",
- (unsigned long) (cache_rows), (unsigned long) (prefetch_mem),cache_rows,max_cache_rows);
+ " cache settings OCI_ATTR_PREFETCH_ROWS %lu, OCI_ATTR_PREFETCH_MEMORY %lu Rows per Fetch=%d, Multiple Row Fetch on=%d"
+ (unsigned long) (prefetch_rows), (unsigned long) (prefetch_mem),cache_rows,imp_sth->row_cache_off);
@@ -3234,27 +3181,22 @@
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;
-
- }
+
+ 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;
+ 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.