FreeBSD Port: p5-DBD-Oracle-1.14_3
William Bulley
web at umich.edu
Wed Sep 5 16:47:29 UTC 2012
/usr/ports/databases/p5-DBD-Oracle was marked as "broken" five weeks
ago (as of this writing).
I commented out the "broken" directive in the Makefile and found that
it was indeed "broken" but I know I had made this port from source in
the past, and I recalled the error messages I was seeing today, and I
recalled (roughly) what it was I had done in the past to make the port
build and install.
I don't submit bug reports (and perhaps I should) but here is my poor
man's way of submitting my patch diffs for databases/p5-DBD-Oracle:
I have attached a text file of context diffs and included it here:
--- Oracle.c.orig 2012-09-05 11:59:43.000000000 -0400
+++ Oracle.c 2012-09-05 12:12:04.000000000 -0400
@@ -1493,11 +1493,11 @@
XS_EUPXS(XS_DBD__Oracle__st_ora_execute_array); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_DBD__Oracle__st_ora_execute_array)
{
dVAR; dXSARGS;
if (items < 4 || items > 5)
- croak_xs_usage(cv, "sth, tuples, exe_count, tuples_status, cols=&sv_undef");
+ croak_xs_usage(cv, "sth, tuples, exe_count, tuples_status, cols=&PL_sv_undef");
{
SV * sth = ST(0)
;
SV * tuples = ST(1)
;
@@ -1510,11 +1510,11 @@
D_imp_sth(sth);
int retval;
#line 1513 "Oracle.c"
if (items < 5)
- cols = &sv_undef;
+ cols = &PL_sv_undef;
else {
cols = ST(4)
;
}
#line 127 "Oracle.xs"
@@ -1547,11 +1547,11 @@
{
SV * sth = ST(0)
;
#line 147 "Oracle.xs"
D_imp_sth(sth);
- ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
+ ST(0) = dbd_st_cancel(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no;
#line 1554 "Oracle.c"
}
XSRETURN(1);
}
@@ -1569,11 +1569,11 @@
;
char * pwd = (char *)SvPV_nolen(ST(2))
;
#line 159 "Oracle.xs"
D_imp_dbh(dbh);
- ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
+ ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &PL_sv_yes : &PL_sv_no;
#line 1576 "Oracle.c"
}
XSRETURN(1);
}
@@ -1621,19 +1621,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -1643,14 +1643,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
(ub2)0, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#line 1654 "Oracle.c"
}
XSRETURN(1);
}
@@ -1700,19 +1700,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -1721,20 +1721,20 @@
&amtp, bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWriteAppend");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#else
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &startp, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobGetLength");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
} else {
/* start one after the end -- the first position in the LOB is 1 */
startp++;
if (DBIS->debug >= 2 )
PerlIO_printf(DBILOGFP, " Calling OCILobWrite with csid=%d csform=%d\n",csid, csform );
@@ -1743,14 +1743,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
}
#endif
#line 1756 "Oracle.c"
}
@@ -1803,20 +1803,20 @@
/* if (0 && SvUTF8(dest_sv) && !IN_BYTES) { amtp = sv_len_utf8(dest_sv); } */
/* added by lab: */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
return;
}
OCILobRead_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator,
&amtp, (ub4)offset, /* offset starts at 1 */
bufp, (ub4)bufp_len,
0, 0, (ub2)0, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobRead");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
}
else {
SvCUR(dest_sv) = amtp; /* always bytes here */
*SvEND(dest_sv) = '\0';
if (CSFORM_IMPLIES_UTF8(csform))
@@ -1858,14 +1858,14 @@
;
#line 353 "Oracle.xs"
OCILobTrim_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, length, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#line 1869 "Oracle.c"
}
XSRETURN(1);
}
@@ -1898,11 +1898,11 @@
;
#line 371 "Oracle.xs"
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &len, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
ST(0) = sv_2mortal(newSVuv(len));
}
#line 1909 "Oracle.c"
--- Oracle.xs.orig 2006-10-02 08:08:50.000000000 -0400
+++ Oracle.xs 2012-09-05 12:09:06.000000000 -0400
@@ -112,11 +112,11 @@
if (debug >= 2 && SvTRUE(DBIc_ERR(imp_sth)))
PerlIO_printf(DBILOGFP, " !! ERROR: %s %s",
neatsvpv(DBIc_ERR(imp_sth),0), neatsvpv(DBIc_ERRSTR(imp_sth),0));
void
-ora_execute_array(sth, tuples, exe_count, tuples_status, cols=&sv_undef)
+ora_execute_array(sth, tuples, exe_count, tuples_status, cols=&PL_sv_undef)
SV * sth
SV * tuples
IV exe_count
SV * tuples_status
SV * cols
@@ -143,11 +143,11 @@
void
cancel(sth)
SV * sth
CODE:
D_imp_sth(sth);
- ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
+ ST(0) = dbd_st_cancel(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no;
MODULE = DBD::Oracle PACKAGE = DBD::Oracle::db
void
@@ -155,11 +155,11 @@
SV * dbh
char * uid
char * pwd
CODE:
D_imp_dbh(dbh);
- ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
+ ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &PL_sv_yes : &PL_sv_no;
void
ora_lob_write(dbh, locator, offset, data)
SV *dbh
OCILobLocator *locator
@@ -183,19 +183,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -205,14 +205,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
(ub2)0, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
void
ora_lob_append(dbh, locator, data)
SV *dbh
@@ -239,19 +239,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -260,20 +260,20 @@
&amtp, bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWriteAppend");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#else
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &startp, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobGetLength");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
} else {
/* start one after the end -- the first position in the LOB is 1 */
startp++;
if (DBIS->debug >= 2 )
PerlIO_printf(DBILOGFP, " Calling OCILobWrite with csid=%d csform=%d\n",csid, csform );
@@ -282,14 +282,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
}
#endif
@@ -319,20 +319,20 @@
/* if (0 && SvUTF8(dest_sv) && !IN_BYTES) { amtp = sv_len_utf8(dest_sv); } */
/* added by lab: */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
return;
}
OCILobRead_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator,
&amtp, (ub4)offset, /* offset starts at 1 */
bufp, (ub4)bufp_len,
0, 0, (ub2)0, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobRead");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
}
else {
SvCUR(dest_sv) = amtp; /* always bytes here */
*SvEND(dest_sv) = '\0';
if (CSFORM_IMPLIES_UTF8(csform))
@@ -351,14 +351,14 @@
sword status;
CODE:
OCILobTrim_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, length, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
void
ora_lob_length(dbh, locator)
SV *dbh
@@ -369,11 +369,11 @@
ub4 len = 0;
CODE:
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &len, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
ST(0) = sv_2mortal(newSVuv(len));
}
--- dbdimp.c.orig 2006-11-03 09:05:46.000000000 -0500
+++ dbdimp.c 2012-09-05 12:16:19.000000000 -0400
@@ -188,11 +188,11 @@
dbd_discon_all(SV *drh, imp_drh_t *imp_drh)
{
dTHR;
/* The disconnect_all concept is flawed and needs more work */
- if (!dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
+ if (!PL_dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
DBIh_SET_ERR_CHAR(drh, (imp_xxh_t*)imp_drh, Nullch, 1, "disconnect_all not implemented", Nullch, Nullch);
return FALSE;
}
return FALSE;
}
@@ -902,11 +902,11 @@
SV **svp = hv_fetch((HV*)SvRV(dbh), key, kl, 1);
sv_free(*svp);
*svp = retsv;
(void)SvREFCNT_inc(retsv); /* so sv_2mortal won't free it */
}
- if (retsv == &sv_yes || retsv == &sv_no)
+ if (retsv == &PL_sv_yes || retsv == &PL_sv_no)
return retsv; /* no need to mortalize yes or no */
return sv_2mortal(retsv);
}
@@ -937,11 +937,11 @@
/* initialise phs ready to be cloned per placeholder */
memset(&phs_tpl, 0, sizeof(phs_tpl));
phs_tpl.imp_sth = imp_sth;
phs_tpl.ftype = imp_dbh->ph_type;
phs_tpl.csform = imp_dbh->ph_csform;
- phs_tpl.sv = &sv_undef;
+ phs_tpl.sv = &PL_sv_undef;
src = statement;
dest = imp_sth->statement;
while(*src) {
@@ -1102,11 +1102,11 @@
at_exec = (phs->desc_h == NULL);
if (!SvPOK(phs->sv)) { /* normalizations for special cases */
if (SvOK(phs->sv)) { /* ie a number, convert to string ASAP */
if (!(SvROK(phs->sv) && phs->is_inout))
- sv_2pv(phs->sv, &na);
+ sv_2pv(phs->sv, &PL_na);
}
else /* ensure we're at least an SVt_PV (so SvPVX etc work) */
SvUPGRADE(phs->sv, SVt_PV);
}
@@ -1497,11 +1497,11 @@
phs_svp = hv_fetch(imp_sth->all_params_hv, name, name_len, 0);
if (phs_svp == NULL)
croak("Can't bind unknown placeholder '%s' (%s)", name, neatsvpv(ph_namesv,0));
phs = (phs_t*)(void*)SvPVX(*phs_svp); /* placeholder struct */
- if (phs->sv == &sv_undef) { /* first bind for this placeholder */
+ if (phs->sv == &PL_sv_undef) { /* first bind for this placeholder */
phs->is_inout = is_inout;
if (is_inout) {
/* phs->sv assigned in the code below */
++imp_sth->has_inout_params;
/* build array of phs's so we can deal with out vars fast */
@@ -1560,15 +1560,15 @@
}
phs->maxlen = maxlen; /* 0 if not inout */
if (!is_inout) { /* normal bind so take a (new) copy of current value */
- if (phs->sv == &sv_undef) /* (first time bind) */
+ if (phs->sv == &PL_sv_undef) /* (first time bind) */
phs->sv = newSV(0);
sv_setsv(phs->sv, newvalue);
if (SvAMAGIC(phs->sv)) /* overloaded. XXX hack, logic ought to be pushed deeper */
- sv_pvn_force(phs->sv, &na);
+ sv_pvn_force(phs->sv, &PL_na);
}
else if (newvalue != phs->sv) {
if (phs->sv)
SvREFCNT_dec(phs->sv);
phs->sv = SvREFCNT_inc(newvalue); /* point to live var */
@@ -1833,11 +1833,11 @@
static void
init_bind_for_array_exec(phs)
phs_t *phs;
{
- if (phs->sv == &sv_undef) { /* first bind for this placeholder */
+ if (phs->sv == &PL_sv_undef) { /* first bind for this placeholder */
phs->is_inout = 0;
phs->maxlen = 1;
/* treat Oracle7 SQLT_CUR as SQLT_RSET for Oracle8 */
if (phs->ftype==102)
phs->ftype = 116;
@@ -2164,11 +2164,11 @@
for(i=0; i < num_fields; ++i) {
imp_fbh_t *fbh = &imp_sth->fbh[i];
if (fbh->fetch_cleanup) fbh->fetch_cleanup(sth, fbh);
}
- if (dirty) /* don't walk on the wild side */
+ if (PL_dirty) /* don't walk on the wild side */
return 1;
if (!DBIc_ACTIVE(imp_dbh)) /* no longer connected */
return 1;
@@ -2242,14 +2242,14 @@
when they are no longer needed.
*/
if (DBIc_DBISTATE(imp_sth)->debug >= 6)
PerlIO_printf(DBIc_LOGPIO(imp_sth), " dbd_st_destroy %s\n",
- (dirty) ? "(OCIHandleFree skipped during global destruction)" :
+ (PL_dirty) ? "(OCIHandleFree skipped during global destruction)" :
(imp_sth->nested_cursor) ?"(OCIHandleFree skipped for nested cursor)" : "");
- if (!dirty) { /* XXX not ideal, leak may be a problem in some cases */
+ if (!PL_dirty) { /* XXX not ideal, leak may be a problem in some cases */
if (!imp_sth->nested_cursor) {
OCIHandleFree_log_stat(imp_sth->stmhp, OCI_HTYPE_STMT, status);
if (status != OCI_SUCCESS)
oci_error(sth, imp_sth->errhp, status, "OCIHandleFree");
}
@@ -2280,11 +2280,11 @@
SV *sv;
char *key;
I32 retlen;
hv_iterinit(hv);
while( (sv = hv_iternextsv(hv, &key, &retlen)) != NULL ) {
- if (sv != &sv_undef) {
+ if (sv != &PL_sv_undef) {
phs_t *phs = (phs_t*)(void*)SvPVX(sv);
if (phs->desc_h && phs->desc_t == OCI_DTYPE_LOB)
ora_free_templob(sth, imp_sth, (OCILobLocator*)phs->desc_h);
@@ -2340,11 +2340,11 @@
STRLEN lna;
/* dbd_describe has already called ora_error() */
/* we can't return Nullsv here because the xs code will */
/* then just pass the attribute name to DBI for FETCH. */
croak("Describe failed during %s->FETCH(%s): %ld: %s",
- SvPV(sth,na), key, (long)SvIV(DBIc_ERR(imp_sth)),
+ SvPV(sth,PL_na), key, (long)SvIV(DBIc_ERR(imp_sth)),
SvPV(DBIc_ERRSTR(imp_sth),lna)
);
}
i = DBIc_NUM_FIELDS(imp_sth);
--- oci8.c.orig 2012-09-05 12:16:27.000000000 -0400
+++ oci8.c 2012-09-05 12:17:35.000000000 -0400
@@ -1536,11 +1536,11 @@
fbh->ftype = fbh->dbtype;
fbh->disize = fbh->dbsize;
p = "Field %d has an Oracle type (%d) which is not explicitly supported%s";
if (DBIS->debug >= 1)
PerlIO_printf(DBILOGFP, p, i, fbh->dbtype, "\n");
- if (dowarn)
+ if (PL_dowarn)
warn(p, i, fbh->dbtype, "");
break;
}
if (DBIS->debug >= 3)
PerlIO_printf(DBILOGFP,
@@ -2056,11 +2056,11 @@
hv_iterinit(imp_sth->all_params_hv);
while( (sv = hv_iternextsv(imp_sth->all_params_hv, &p, &i)) != NULL ) {
int matched = 0;
phs_t *phs = (phs_t*)(void*)SvPVX(sv);
- if (sv == &sv_undef || !phs)
+ if (sv == &PL_sv_undef || !phs)
croak("panic: unbound params");
if (phs->ftype != SQLT_CLOB && phs->ftype != SQLT_BLOB)
continue;
hv_iterinit(lob_cols_hv);
Regards,
web...
--
William Bulley Email: web at umich.edu
72 characters width template ----------------------------------------->|
-------------- next part --------------
--- Oracle.c.orig 2012-09-05 11:59:43.000000000 -0400
+++ Oracle.c 2012-09-05 12:12:04.000000000 -0400
@@ -1493,11 +1493,11 @@
XS_EUPXS(XS_DBD__Oracle__st_ora_execute_array); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_DBD__Oracle__st_ora_execute_array)
{
dVAR; dXSARGS;
if (items < 4 || items > 5)
- croak_xs_usage(cv, "sth, tuples, exe_count, tuples_status, cols=&sv_undef");
+ croak_xs_usage(cv, "sth, tuples, exe_count, tuples_status, cols=&PL_sv_undef");
{
SV * sth = ST(0)
;
SV * tuples = ST(1)
;
@@ -1510,11 +1510,11 @@
D_imp_sth(sth);
int retval;
#line 1513 "Oracle.c"
if (items < 5)
- cols = &sv_undef;
+ cols = &PL_sv_undef;
else {
cols = ST(4)
;
}
#line 127 "Oracle.xs"
@@ -1547,11 +1547,11 @@
{
SV * sth = ST(0)
;
#line 147 "Oracle.xs"
D_imp_sth(sth);
- ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
+ ST(0) = dbd_st_cancel(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no;
#line 1554 "Oracle.c"
}
XSRETURN(1);
}
@@ -1569,11 +1569,11 @@
;
char * pwd = (char *)SvPV_nolen(ST(2))
;
#line 159 "Oracle.xs"
D_imp_dbh(dbh);
- ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
+ ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &PL_sv_yes : &PL_sv_no;
#line 1576 "Oracle.c"
}
XSRETURN(1);
}
@@ -1621,19 +1621,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -1643,14 +1643,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
(ub2)0, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#line 1654 "Oracle.c"
}
XSRETURN(1);
}
@@ -1700,19 +1700,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -1721,20 +1721,20 @@
&amtp, bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWriteAppend");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#else
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &startp, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobGetLength");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
} else {
/* start one after the end -- the first position in the LOB is 1 */
startp++;
if (DBIS->debug >= 2 )
PerlIO_printf(DBILOGFP, " Calling OCILobWrite with csid=%d csform=%d\n",csid, csform );
@@ -1743,14 +1743,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
}
#endif
#line 1756 "Oracle.c"
}
@@ -1803,20 +1803,20 @@
/* if (0 && SvUTF8(dest_sv) && !IN_BYTES) { amtp = sv_len_utf8(dest_sv); } */
/* added by lab: */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
return;
}
OCILobRead_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator,
&amtp, (ub4)offset, /* offset starts at 1 */
bufp, (ub4)bufp_len,
0, 0, (ub2)0, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobRead");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
}
else {
SvCUR(dest_sv) = amtp; /* always bytes here */
*SvEND(dest_sv) = '\0';
if (CSFORM_IMPLIES_UTF8(csform))
@@ -1858,14 +1858,14 @@
;
#line 353 "Oracle.xs"
OCILobTrim_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, length, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#line 1869 "Oracle.c"
}
XSRETURN(1);
}
@@ -1898,11 +1898,11 @@
;
#line 371 "Oracle.xs"
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &len, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
ST(0) = sv_2mortal(newSVuv(len));
}
#line 1909 "Oracle.c"
--- Oracle.xs.orig 2006-10-02 08:08:50.000000000 -0400
+++ Oracle.xs 2012-09-05 12:09:06.000000000 -0400
@@ -112,11 +112,11 @@
if (debug >= 2 && SvTRUE(DBIc_ERR(imp_sth)))
PerlIO_printf(DBILOGFP, " !! ERROR: %s %s",
neatsvpv(DBIc_ERR(imp_sth),0), neatsvpv(DBIc_ERRSTR(imp_sth),0));
void
-ora_execute_array(sth, tuples, exe_count, tuples_status, cols=&sv_undef)
+ora_execute_array(sth, tuples, exe_count, tuples_status, cols=&PL_sv_undef)
SV * sth
SV * tuples
IV exe_count
SV * tuples_status
SV * cols
@@ -143,11 +143,11 @@
void
cancel(sth)
SV * sth
CODE:
D_imp_sth(sth);
- ST(0) = dbd_st_cancel(sth, imp_sth) ? &sv_yes : &sv_no;
+ ST(0) = dbd_st_cancel(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no;
MODULE = DBD::Oracle PACKAGE = DBD::Oracle::db
void
@@ -155,11 +155,11 @@
SV * dbh
char * uid
char * pwd
CODE:
D_imp_dbh(dbh);
- ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &sv_yes : &sv_no;
+ ST(0) = ora_db_reauthenticate(dbh, imp_dbh, uid, pwd) ? &PL_sv_yes : &PL_sv_no;
void
ora_lob_write(dbh, locator, offset, data)
SV *dbh
OCILobLocator *locator
@@ -183,19 +183,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -205,14 +205,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
(ub2)0, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
void
ora_lob_append(dbh, locator, data)
SV *dbh
@@ -239,19 +239,19 @@
/* added by lab: */
/* LAB do something about length here? see above comment */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#ifdef OCI_ATTR_CHARSET_ID
/* Effectively only used so AL32UTF8 works properly */
OCILobCharSetId_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csid, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetId");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
return;
}
#endif /* OCI_ATTR_CHARSET_ID */
/* if data is utf8 but charset isn't then switch to utf8 csid */
csid = (SvUTF8(data) && !CS_IS_UTF8(csid)) ? utf8_csid : CSFORM_IMPLIED_CSID(csform);
@@ -260,20 +260,20 @@
&amtp, bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWriteAppend");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
#else
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &startp, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobGetLength");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
} else {
/* start one after the end -- the first position in the LOB is 1 */
startp++;
if (DBIS->debug >= 2 )
PerlIO_printf(DBILOGFP, " Calling OCILobWrite with csid=%d csform=%d\n",csid, csform );
@@ -282,14 +282,14 @@
bufp, (ub4)data_len, OCI_ONE_PIECE,
NULL, NULL,
csid, csform , status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobWrite");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
}
#endif
@@ -319,20 +319,20 @@
/* if (0 && SvUTF8(dest_sv) && !IN_BYTES) { amtp = sv_len_utf8(dest_sv); } */
/* added by lab: */
OCILobCharSetForm_log_stat( imp_dbh->envhp, imp_dbh->errhp, locator, &csform, status );
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobCharSetForm");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
return;
}
OCILobRead_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator,
&amtp, (ub4)offset, /* offset starts at 1 */
bufp, (ub4)bufp_len,
0, 0, (ub2)0, csform, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobRead");
- dest_sv = &sv_undef;
+ dest_sv = &PL_sv_undef;
}
else {
SvCUR(dest_sv) = amtp; /* always bytes here */
*SvEND(dest_sv) = '\0';
if (CSFORM_IMPLIES_UTF8(csform))
@@ -351,14 +351,14 @@
sword status;
CODE:
OCILobTrim_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, length, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
- ST(0) = &sv_yes;
+ ST(0) = &PL_sv_yes;
}
void
ora_lob_length(dbh, locator)
SV *dbh
@@ -369,11 +369,11 @@
ub4 len = 0;
CODE:
OCILobGetLength_log_stat(imp_dbh->svchp, imp_dbh->errhp, locator, &len, status);
if (status != OCI_SUCCESS) {
oci_error(dbh, imp_dbh->errhp, status, "OCILobTrim");
- ST(0) = &sv_undef;
+ ST(0) = &PL_sv_undef;
}
else {
ST(0) = sv_2mortal(newSVuv(len));
}
--- dbdimp.c.orig 2006-11-03 09:05:46.000000000 -0500
+++ dbdimp.c 2012-09-05 12:16:19.000000000 -0400
@@ -188,11 +188,11 @@
dbd_discon_all(SV *drh, imp_drh_t *imp_drh)
{
dTHR;
/* The disconnect_all concept is flawed and needs more work */
- if (!dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
+ if (!PL_dirty && !SvTRUE(perl_get_sv("DBI::PERL_ENDING",0))) {
DBIh_SET_ERR_CHAR(drh, (imp_xxh_t*)imp_drh, Nullch, 1, "disconnect_all not implemented", Nullch, Nullch);
return FALSE;
}
return FALSE;
}
@@ -902,11 +902,11 @@
SV **svp = hv_fetch((HV*)SvRV(dbh), key, kl, 1);
sv_free(*svp);
*svp = retsv;
(void)SvREFCNT_inc(retsv); /* so sv_2mortal won't free it */
}
- if (retsv == &sv_yes || retsv == &sv_no)
+ if (retsv == &PL_sv_yes || retsv == &PL_sv_no)
return retsv; /* no need to mortalize yes or no */
return sv_2mortal(retsv);
}
@@ -937,11 +937,11 @@
/* initialise phs ready to be cloned per placeholder */
memset(&phs_tpl, 0, sizeof(phs_tpl));
phs_tpl.imp_sth = imp_sth;
phs_tpl.ftype = imp_dbh->ph_type;
phs_tpl.csform = imp_dbh->ph_csform;
- phs_tpl.sv = &sv_undef;
+ phs_tpl.sv = &PL_sv_undef;
src = statement;
dest = imp_sth->statement;
while(*src) {
@@ -1102,11 +1102,11 @@
at_exec = (phs->desc_h == NULL);
if (!SvPOK(phs->sv)) { /* normalizations for special cases */
if (SvOK(phs->sv)) { /* ie a number, convert to string ASAP */
if (!(SvROK(phs->sv) && phs->is_inout))
- sv_2pv(phs->sv, &na);
+ sv_2pv(phs->sv, &PL_na);
}
else /* ensure we're at least an SVt_PV (so SvPVX etc work) */
SvUPGRADE(phs->sv, SVt_PV);
}
@@ -1497,11 +1497,11 @@
phs_svp = hv_fetch(imp_sth->all_params_hv, name, name_len, 0);
if (phs_svp == NULL)
croak("Can't bind unknown placeholder '%s' (%s)", name, neatsvpv(ph_namesv,0));
phs = (phs_t*)(void*)SvPVX(*phs_svp); /* placeholder struct */
- if (phs->sv == &sv_undef) { /* first bind for this placeholder */
+ if (phs->sv == &PL_sv_undef) { /* first bind for this placeholder */
phs->is_inout = is_inout;
if (is_inout) {
/* phs->sv assigned in the code below */
++imp_sth->has_inout_params;
/* build array of phs's so we can deal with out vars fast */
@@ -1560,15 +1560,15 @@
}
phs->maxlen = maxlen; /* 0 if not inout */
if (!is_inout) { /* normal bind so take a (new) copy of current value */
- if (phs->sv == &sv_undef) /* (first time bind) */
+ if (phs->sv == &PL_sv_undef) /* (first time bind) */
phs->sv = newSV(0);
sv_setsv(phs->sv, newvalue);
if (SvAMAGIC(phs->sv)) /* overloaded. XXX hack, logic ought to be pushed deeper */
- sv_pvn_force(phs->sv, &na);
+ sv_pvn_force(phs->sv, &PL_na);
}
else if (newvalue != phs->sv) {
if (phs->sv)
SvREFCNT_dec(phs->sv);
phs->sv = SvREFCNT_inc(newvalue); /* point to live var */
@@ -1833,11 +1833,11 @@
static void
init_bind_for_array_exec(phs)
phs_t *phs;
{
- if (phs->sv == &sv_undef) { /* first bind for this placeholder */
+ if (phs->sv == &PL_sv_undef) { /* first bind for this placeholder */
phs->is_inout = 0;
phs->maxlen = 1;
/* treat Oracle7 SQLT_CUR as SQLT_RSET for Oracle8 */
if (phs->ftype==102)
phs->ftype = 116;
@@ -2164,11 +2164,11 @@
for(i=0; i < num_fields; ++i) {
imp_fbh_t *fbh = &imp_sth->fbh[i];
if (fbh->fetch_cleanup) fbh->fetch_cleanup(sth, fbh);
}
- if (dirty) /* don't walk on the wild side */
+ if (PL_dirty) /* don't walk on the wild side */
return 1;
if (!DBIc_ACTIVE(imp_dbh)) /* no longer connected */
return 1;
@@ -2242,14 +2242,14 @@
when they are no longer needed.
*/
if (DBIc_DBISTATE(imp_sth)->debug >= 6)
PerlIO_printf(DBIc_LOGPIO(imp_sth), " dbd_st_destroy %s\n",
- (dirty) ? "(OCIHandleFree skipped during global destruction)" :
+ (PL_dirty) ? "(OCIHandleFree skipped during global destruction)" :
(imp_sth->nested_cursor) ?"(OCIHandleFree skipped for nested cursor)" : "");
- if (!dirty) { /* XXX not ideal, leak may be a problem in some cases */
+ if (!PL_dirty) { /* XXX not ideal, leak may be a problem in some cases */
if (!imp_sth->nested_cursor) {
OCIHandleFree_log_stat(imp_sth->stmhp, OCI_HTYPE_STMT, status);
if (status != OCI_SUCCESS)
oci_error(sth, imp_sth->errhp, status, "OCIHandleFree");
}
@@ -2280,11 +2280,11 @@
SV *sv;
char *key;
I32 retlen;
hv_iterinit(hv);
while( (sv = hv_iternextsv(hv, &key, &retlen)) != NULL ) {
- if (sv != &sv_undef) {
+ if (sv != &PL_sv_undef) {
phs_t *phs = (phs_t*)(void*)SvPVX(sv);
if (phs->desc_h && phs->desc_t == OCI_DTYPE_LOB)
ora_free_templob(sth, imp_sth, (OCILobLocator*)phs->desc_h);
@@ -2340,11 +2340,11 @@
STRLEN lna;
/* dbd_describe has already called ora_error() */
/* we can't return Nullsv here because the xs code will */
/* then just pass the attribute name to DBI for FETCH. */
croak("Describe failed during %s->FETCH(%s): %ld: %s",
- SvPV(sth,na), key, (long)SvIV(DBIc_ERR(imp_sth)),
+ SvPV(sth,PL_na), key, (long)SvIV(DBIc_ERR(imp_sth)),
SvPV(DBIc_ERRSTR(imp_sth),lna)
);
}
i = DBIc_NUM_FIELDS(imp_sth);
--- oci8.c.orig 2012-09-05 12:16:27.000000000 -0400
+++ oci8.c 2012-09-05 12:17:35.000000000 -0400
@@ -1536,11 +1536,11 @@
fbh->ftype = fbh->dbtype;
fbh->disize = fbh->dbsize;
p = "Field %d has an Oracle type (%d) which is not explicitly supported%s";
if (DBIS->debug >= 1)
PerlIO_printf(DBILOGFP, p, i, fbh->dbtype, "\n");
- if (dowarn)
+ if (PL_dowarn)
warn(p, i, fbh->dbtype, "");
break;
}
if (DBIS->debug >= 3)
PerlIO_printf(DBILOGFP,
@@ -2056,11 +2056,11 @@
hv_iterinit(imp_sth->all_params_hv);
while( (sv = hv_iternextsv(imp_sth->all_params_hv, &p, &i)) != NULL ) {
int matched = 0;
phs_t *phs = (phs_t*)(void*)SvPVX(sv);
- if (sv == &sv_undef || !phs)
+ if (sv == &PL_sv_undef || !phs)
croak("panic: unbound params");
if (phs->ftype != SQLT_CLOB && phs->ftype != SQLT_BLOB)
continue;
hv_iterinit(lob_cols_hv);
More information about the freebsd-perl
mailing list