From owner-freebsd-ports@FreeBSD.ORG Wed Sep 5 16:47:29 2012 Return-Path: Delivered-To: ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 712101065687 for ; Wed, 5 Sep 2012 16:47:29 +0000 (UTC) (envelope-from web@umich.edu) Received: from mail-iy0-f182.google.com (mail-iy0-f182.google.com [209.85.210.182]) by mx1.freebsd.org (Postfix) with ESMTP id 2D2BF8FC12 for ; Wed, 5 Sep 2012 16:47:28 +0000 (UTC) Received: by iayy25 with SMTP id y25so1309238iay.13 for ; Wed, 05 Sep 2012 09:47:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:message-id:mime-version:content-type :content-disposition:user-agent:x-gm-message-state; bh=Hxp7TkgD+k/t9nFjGAA/RaN6Jh3ViM7TBU5Hu5oH8hI=; b=Ttgx8BTmOIK1FNgq0znW7NDlQAruBXqwdHCKYNLF+TybWUSaFV4bUcwtNQTLQKuElq wabvy7uzwMZRe/xW7Yc19n587xQXZuxlkP39sVbnE/LRHpeppAHgT+tc/68RgPuNbEmT 2j9gF8eKulWYatBbYZBCzaB4hkGZqcyYCKIXlsIa6M7GGe74pw4zuI5AaEN5RwlmXD+u FUzbiG9effp9FAn/N8w2Ky5SUv5YEx1HbSyChB5QfLKaOcUA0wOe6EAZfioLQRMwU3nF 162DhwImTd5iQfz9UqwXcOH5YOvw2EhiC9rc0emKvZ84mhTvY2S4WBkfFrRwwWTrl8EY tYXw== Received: by 10.42.163.135 with SMTP id c7mr8872460icy.45.1346863648546; Wed, 05 Sep 2012 09:47:28 -0700 (PDT) Received: from localhost (itcom245.staff.itd.umich.edu. [141.213.135.249]) by mx.google.com with ESMTPS id ud8sm4125070igb.4.2012.09.05.09.47.27 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 05 Sep 2012 09:47:27 -0700 (PDT) Date: Wed, 5 Sep 2012 12:47:26 -0400 From: William Bulley To: perl@FreeBSD.org Message-ID: <20120905164726.GS1621@itcom245.staff.itd.umich.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="6c2NcOVqGQ03X4Wi" Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Gm-Message-State: ALoCoQm+q75neN0nqn1wBmmTAClPnlv6bRgaGVv3rRXxqLbfobrKZaWpu9pRVSHhAquiVw4HQMq1 Cc: ports@FreeBSD.org Subject: FreeBSD Port: p5-DBD-Oracle-1.14_3 X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Sep 2012 16:47:29 -0000 --6c2NcOVqGQ03X4Wi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline /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@umich.edu 72 characters width template ----------------------------------------->| --6c2NcOVqGQ03X4Wi Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="p5.DBD.Oracle.patches" --- 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); --6c2NcOVqGQ03X4Wi--