Author: byterock
Date: Mon Feb 4 11:48:00 2008
New Revision: 10682
Modified:
dbd-oracle/branches/array_inout/dbdimp.c
dbd-oracle/branches/array_inout/oci8.c
Log:
daily still one or two little things to do
Modified: dbd-oracle/branches/array_inout/dbdimp.c
==============================================================================
--- dbd-oracle/branches/array_inout/dbdimp.c (original)
+++ dbd-oracle/branches/array_inout/dbdimp.c Mon Feb 4 11:48:00 2008
@@ -1332,17 +1332,17 @@
if( phs->array_numstruct == 0 ){
/* Oracle doesn't allow NULL buffers even for empty tables. Don't know
why. */
- phs->array_numstruct=1;
+ phs->array_numstruct=1;
}
if( phs->ora_maxarray_numentries== 0 ){
/* Zero means "use current array length". */
- phs->ora_maxarray_numentries=phs->array_numstruct;
+ phs->ora_maxarray_numentries=phs->array_numstruct;
}
need_allocate_rows=phs->ora_maxarray_numentries;
if( need_allocate_rows< phs->array_numstruct ){
- need_allocate_rows=phs->array_numstruct;
+ need_allocate_rows=phs->array_numstruct;
}
buflen=need_allocate_rows* phs->maxlen; /* We need buffer for at least
ora_maxarray_numentries entries */
/* Upgrade array buffer to new length */
@@ -1359,7 +1359,7 @@
* do not bind full array
*/
if( phs->array_numstruct > phs->ora_maxarray_numentries ){
- phs->array_numstruct = phs->ora_maxarray_numentries;
+ phs->array_numstruct = phs->ora_maxarray_numentries;
}
/* Fill array buffer with string data */
@@ -2291,7 +2291,7 @@
phs->name, phs->ftype);
return 1;
}
- PerlIO_printf(DBILOGFP, "\n\n\ndbd_rebind_ph done=%d\n",done);
+ PerlIO_printf(DBILOGFP, "\n\n\n phs->ftype=%d\n",phs->ftype);
if (done != 1) {
return 0; /* the rebind failed */
@@ -2631,8 +2631,10 @@
if (SvPVX(sv)) {
PerlIO_printf(DBILOGFP, "dbd_phs_sv_complete 1a
sv=%s\n",neatsvpv(sv,0));
- PerlIO_printf(DBILOGFP, "dbd_phs_sv_complete 4\n");
+ PerlIO_printf(DBILOGFP, "dbd_phs_sv_complete 4
phs->alen=%d\n",phs->alen);
+
SvCUR_set(sv, phs->alen);
+
PerlIO_printf(DBILOGFP, "dbd_phs_sv_complete 1b
sv=%s\n",neatsvpv(sv,0));
*SvEND(sv) = '\0';
@@ -2692,7 +2694,7 @@
dTHX;
AV *av = (AV*)SvRV(phs->sv);
SV *sv = *av_fetch(av, index, 1);
- PerlIO_printf(DBILOGFP, " dbd_phs_avsv_complete
neatsvpv(sv,0)=%s\n",neatsvpv(sv,0));
+ PerlIO_printf(DBILOGFP, " dbd_phs_avsv_complete neasv=%s\n",sv);
dbd_phs_sv_complete(phs, sv, 0);
/* if (debug <= 2)*/
PerlIO_printf(DBILOGFP, " dbd_phs_avsv_complete out '%s'[%ld] = %s
(arcode %d, ind %d, len %d)\n",
@@ -3128,25 +3130,26 @@
while(--i >= 0) {
- phs_t *phs = (phs_t*)(void*)SvPVX(AvARRAY(imp_sth->out_params_av)[i]);
- SV *sv = phs->sv;
+ phs_t *phs =
(phs_t*)(void*)SvPVX(AvARRAY(imp_sth->out_params_av)[i]);
+ SV *sv = phs->sv;
- PerlIO_printf(DBILOGFP, " SvTYPE(sv)=%d\n",SvTYPE(SvRV(sv)));
+ PerlIO_printf(DBILOGFP, " sv=%d\n",sv);
if (SvTYPE(sv) == SVt_RV && SvTYPE(SvRV(sv)) == SVt_PVAV) {
- int j;
- AV *av = (AV*)SvRV(sv);
- I32 avlen = AvFILL(av);
- PerlIO_printf(DBILOGFP, "\n\n\n\n avlen=%d\n",avlen);
- PerlIO_printf(DBILOGFP, "\n\n\n\n av_len(av) =%d\n",av_len(av));
-
+ AV *av = (AV*)SvRV(sv);
+ I32 avlen = AvFILL(av);
+ PerlIO_printf(DBILOGFP, " av=%d \n",av);
+
/*I32 avlen = AvFILL(av);*/
for (j=0;j<=av_len(av);j++){
SV *sv2 = *av_fetch(av, j, 1);
- PerlIO_printf(DBILOGFP, "\n\n\n\n
neatsvpv(sv2,1)=%s\n",neatsvpv(sv2,1));
+ dbd_phs_avsv_complete(phs, j, debug);
+
+ PerlIO_printf(DBILOGFP, "\n sv2 %d\n",sv2);
+ PerlIO_printf(DBILOGFP, "\n
neatsvpv(sv2,1)=%s\n",neatsvpv(sv2,1));
}
- if (avlen >= 0)
- dbd_phs_avsv_complete(phs, avlen, debug);
+ /*if (avlen >= 0)
+ dbd_phs_avsv_complete(phs, avlen, debug);*/
}
}
}
Modified: dbd-oracle/branches/array_inout/oci8.c
==============================================================================
--- dbd-oracle/branches/array_inout/oci8.c (original)
+++ dbd-oracle/branches/array_inout/oci8.c Mon Feb 4 11:48:00 2008
@@ -376,7 +376,6 @@
SV **sv_p;
if( bindp ) { /* For GCC not to warn on unused parameter*/ }
-PerlIO_printf(DBILOGFP, " in dbd_phs_in %d\n",index);
/* Check for bind values supplied by tuple array. */
tuples_av = phs->imp_sth->bind_tuples;
if(tuples_av) {
@@ -416,7 +415,7 @@
*alenp = phs->alen;
*indpp = &phs->indp;
*piecep = OCI_ONE_PIECE;
- /* if (DBIS->debug <= 3)*/
+ if (DBIS->debug >= 3)
PerlIO_printf(DBILOGFP, " in '%s' [%lu,%lu]: len %2lu, ind
%d%s\n",
phs->name, ul_t(iter), ul_t(index), ul_t(phs->alen), phs->indp,
(phs->desc_h) ? " via descriptor" : "");
@@ -496,30 +495,38 @@
SV *sv = phs->sv;
PerlIO_printf(DBILOGFP, " in dbd_phs_out 3
SvTYPE(sv)=%d\n",sv);
- PerlIO_printf(DBILOGFP, " in dbd_phs_out 3a index=%d\n",index);
+ PerlIO_printf(DBILOGFP, " in dbd_phs_out 3a iter=%d\n",iter);
if (SvTYPE(sv) == SVt_RV && SvTYPE(SvRV(sv)) == SVt_PVAV) {
+
+ if (iter > 0)
+
+ dbd_phs_avsv_complete(phs, (I32)iter-1, DBIS->debug);
+
+ sv = *av_fetch((AV*)SvRV(sv), (IV)iter, 1);
+ /* SV **sv_p;
AV *av = (AV*)SvRV(sv);
- SV *sv2 = *av_fetch((AV*)SvRV(sv), (IV)index, 1);
- PerlIO_printf(DBILOGFP, " I are a array reff (good) so lod data at
the point av_len(av)=%d\n",av_len(av));
- /* if (iter >= 0) /* finish-up handling previous element
+ av_push(av,newSVpv("",0));
+ sv_p = av_fetch(av, (IV)iter, 1);
+ PerlIO_printf(DBILOGFP, " av=%d\n",av);
+ PerlIO_printf(DBILOGFP, " I are a array reff (good)
sv_p=%d\n",sv_p);
+/* *bufpp = SvPV_nolen(*sv_p);
+
+ *bufpp = SvGROW(*sv_p, (size_t)(((phs->maxlen < 28) ?
28 : phs->maxlen)+1)/*for null);
+ phs->alen = SvLEN(*sv_p); /* max buffer size now,
actual data len later
+ if (iter >= 0) /* finish-up handling previous element
dbd_phs_avsv_complete(phs, (I32)index-1,
DBIS->debug);
-*/
-
+/*ok here is the rub I have to add a new values to this array*/
- PerlIO_printf(DBILOGFP, " pointer to sv =%s\n",neatsvpv(sv2,1));
- *bufpp = SvGROW(sv2, (size_t)(((phs->maxlen < 28) ? 28 :
phs->maxlen)+1)/*for null*/);
- phs->alen = SvLEN(sv2); /* max buffer size now,
actual data len later */
-/*ok here is the rub I have to add a new values to this array*/
if (!SvOK(sv))
sv_setpv(sv,"");
- } else {
+ }
- *bufpp = SvGROW(sv, (size_t)(((phs->maxlen < 28) ? 28 :
phs->maxlen)+1)/*for null*/);
- phs->alen = SvLEN(sv); /* max buffer size now, actual
data len later */
- }
- PerlIO_printf(DBILOGFP, " bufpp is the bffer where the data is
sv=%s\n",sv);
+ *bufpp = SvGROW(sv, (size_t)(((phs->maxlen < 28) ? 28 :
phs->maxlen)+1)/*for null*/);
+ phs->alen = SvLEN(sv); /* max buffer size now, actual data len
later */
+
+ PerlIO_printf(DBILOGFP, " bufpp is the bffer where the data is
sv=%d\n",sv);
}
*alenpp = &phs->alen;