On Fri, Sep 07, 2001 at 04:27:10PM -0400, Michael G Schwern wrote: > DBI 1.20 & bleadperl seems to have some trouble with 64bit integers, > at least on Linux. DBI 1.19 is having similar problems, but passing all tests. I've attached the differences between the generated DBI.c file in 1.19 and 1.20 for bleadperl w/64 bit ints. These are the warnings I get from 5.6.1 w/64 bit ints. cc -c -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O6 -DVERSION=\"1.19\" -DXS_VERSION=\"1.19\" -fpic -I/usr/local/perl5.6.1/lib/5.6.1/ppc-linux-64all/CORE -DDBI_NO_THREADS Perl.c Perl.xsi: In function `boot_DBD__Perl': Perl.xsi:15: warning: cast to pointer from integer of different size SET_BITS=64 -O6 -DVERSION=\"1.19\" -DXS_VERSION=\"1.19\" -fpic -I/usr/local/perl5.6.1/lib/5.6.1/ppc-linux-64all/CORE -DDBI_NO_THREADS DBI.c DBI.xs: In function `dbi_bootinit': DBI.xs:221: warning: cast from pointer to integer of different size DBI.xs:223: warning: cast to pointer from integer of different size DBI.xs: In function `dbih_dumpcom': DBI.xs:820: warning: cast from pointer to integer of different size DBI.xs:820: warning: cast from pointer to integer of different size DBI.xs: In function `dbih_clearcom': DBI.xs:964: warning: cast from pointer to integer of different size DBI.xs:964: warning: cast from pointer to integer of different size These are from bleadperl w/64 bit ints. cc -c -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O6 -DVERSION=\"1.19\" -DXS_VERSION=\"1.19\" -fpic -I/usr/local/bleadperl/lib/5.7.2/ppc-linux-64int/CORE -DDBI_NO_THREADS Perl.c Perl.xsi: In function `boot_DBD__Perl': Perl.xsi:15: warning: cast to pointer from integer of different size cc -c -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O6 -DVERSION=\"1.19\" -DXS_VERSION=\"1.19\" -fpic -I/usr/local/bleadperl/lib/5.7.2/ppc-linux-64int/CORE -DDBI_NO_THREADS DBI.c DBI.xs: In function `dbi_bootinit': DBI.xs:221: warning: cast from pointer to integer of different size DBI.xs:223: warning: cast to pointer from integer of different size DBI.xs: In function `set_trace_file': DBI.xs:460: warning: passing arg 1 of `setlinebuf' from incompatible pointer type DBI.xs: In function `dbih_dumpcom': DBI.xs:820: warning: cast from pointer to integer of different size DBI.xs:820: warning: cast from pointer to integer of different size DBI.xs: In function `dbih_clearcom': DBI.xs:964: warning: cast from pointer to integer of different size DBI.xs:964: warning: cast from pointer to integer of different size DBI.xs: In function `XS_DBI__var_FETCH': DBI.xs:2641: warning: passing arg 1 of `fprintf' from incompatible pointer type bleadperl w/32 bit ints only says... cc -c -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O6 -DVERSION=\"1.19\" -DXS_VERSION=\"1.19\" -fpic -I/usr/local/bleadperl-32int/lib/5.7.2/ppc-linux/CORE -DDBI_NO_THREADS DBI.c DBI.xs: In function `set_trace_file': DBI.xs:460: warning: passing arg 1 of `setlinebuf' from incompatible pointer type DBI.xs: In function `XS_DBI__var_FETCH': DBI.xs:2641: warning: passing arg 1 of `fprintf' from incompatible pointer type -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl6 Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One The Immortality Devices are knowned to stop aging. I m not sure about curing seizure. --Alex Chiu, Immortality Guy
--- DBI-1.19/DBI.c Fri Sep 7 16:37:43 2001 +++ DBI-1.20/DBI.c Fri Sep 7 16:23:14 2001 @@ -7,7 +7,7 @@ */ #line 1 "DBI.xs" -/* $Id: DBI.xs,v 10.34 2001/07/20 22:28:28 timbo Exp $ +/* $Id: DBI.xs,v 11.2 2001/08/24 22:10:44 timbo Exp $ * * Copyright (c) 1994, 1995, 1996, 1997 Tim Bunce England. * @@ -104,6 +104,7 @@ #define IMA_NO_TAINT_IN 0x0010 /* don't check for tainted args */ #define IMA_NO_TAINT_OUT 0x0020 /* don't taint results */ #define IMA_COPY_STMT 0x0040 /* copy sth Statement to dbh */ +#define IMA_END_WORK 0x0080 /* set on commit & rollback */ #define DBIc_STATE_adjust(imp_xxh, state) \ (SvOK(state) /* SQLSTATE is implemented by driver */ \ @@ -825,8 +826,8 @@ char *pad = " "; if (!msg) msg = "dbih_dumpcom"; - PerlIO_printf(DBILOGFP," %s (h 0x%lx, com 0x%lx):\n", msg, - (IV)DBIc_MY_H(imp_xxh), (IV)imp_xxh); + PerlIO_printf(DBILOGFP," %s (h 0x%lx, com 0x%lx):\n", + msg, (IV)DBIc_MY_H(imp_xxh), (IV)imp_xxh); if (DBIc_COMSET(imp_xxh)) sv_catpv(flags,"COMSET "); if (DBIc_IMPSET(imp_xxh)) sv_catpv(flags,"IMPSET "); if (DBIc_ACTIVE(imp_xxh)) sv_catpv(flags,"Active "); @@ -837,6 +838,7 @@ if (DBIc_is(imp_xxh, DBIcf_PrintError)) sv_catpv(flags,"PrintError "); if (DBIc_is(imp_xxh, DBIcf_ShowErrorStatement)) sv_catpv(flags,"ShowErrorStatement "); if (DBIc_is(imp_xxh, DBIcf_AutoCommit)) sv_catpv(flags,"AutoCommit "); + if (DBIc_is(imp_xxh, DBIcf_BegunWork)) sv_catpv(flags,"BegunWork "); if (DBIc_is(imp_xxh, DBIcf_LongTruncOk)) sv_catpv(flags,"LongTruncOk "); if (DBIc_is(imp_xxh, DBIcf_MultiThread)) sv_catpv(flags,"MultiThread "); if (DBIc_is(imp_xxh, DBIcf_Taint)) sv_catpv(flags,"Taint "); @@ -955,6 +957,7 @@ sv_free(_imp2com(imp_xxh, attr.State)); sv_free(_imp2com(imp_xxh, attr.Err)); sv_free(_imp2com(imp_xxh, attr.Errstr)); + sv_free(_imp2com(imp_xxh, attr.FetchHashKeyName)); } #ifdef DBI_USE_THREADS @@ -1199,10 +1202,15 @@ DBIc_CACHED_KIDS(imp_dbh) = (HV*)SvREFCNT_inc(SvRV(valuesv)); } } - else if (htype<=DBIt_DB && strEQ(key, "AutoCommit")) { - /* The driver should have intercepted this and handled it. */ - croak("DBD driver has not implemented the AutoCommit attribute"); - /* DBIc_set(imp_xxh,DBIcf_AutoCommit, on); */ + else if (htype<=DBIt_DB && keylen==10 && strEQ(key, "AutoCommit")) { + /* driver should have intercepted this and either handled it */ + /* or set valuesv to either the 'magic' on or off value. */ + if (SvIV(valuesv) != -900 && SvIV(valuesv) != -901) + croak("DBD driver has not implemented the AutoCommit attribute"); + DBIc_set(imp_xxh,DBIcf_AutoCommit, (SvIV(valuesv)==-901)); + } + else if (htype==DBIt_DB && keylen==9 && strEQ(key, "BegunWork")) { + DBIc_set(imp_xxh,DBIcf_BegunWork, on); } else if (htype==DBIt_ST && strEQ(key, "NUM_OF_FIELDS")) { D_imp_sth(h); @@ -1268,36 +1276,51 @@ /* XXX needs to be split into separate dr/db/st funcs */ /* XXX probably needs some form of hashing->switch lookup */ - if (htype==DBIt_ST && keylen==7 && strnEQ(key, "NAME_", 5) - && (key[5]=='u' || key[5]=='l') && key[6] == 'c' + if (htype==DBIt_ST && *key=='N' && (keylen==7 || keylen==9 || keylen==12) + && strnEQ(key, "NAME_", 5) + && ( (keylen==9 && strEQ(key, "NAME_hash")) + || ((key[5]=='u' || key[5]=='l') && key[6] == 'c' + && (!key[7] || strnEQ(&key[7], "_hash", 5))) + ) ) { D_imp_sth(h); - AV *name = NULL; + AV *name_av = NULL; /* fetch from tied outer handle to trigger FETCH magic */ svp = hv_fetch((HV*)DBIc_MY_H(imp_sth), "NAME",4, FALSE); sv = (svp) ? *svp : &sv_undef; if (SvGMAGICAL(sv)) /* resolve the magic */ mg_get(sv); /* can core dump in 5.004 */ - name = (AV*)SvRV(sv); + name_av = (AV*)SvRV(sv); - if (sv && name) { - int up = (key[5] == 'u'); - AV *av = newAV(); + if (sv && name_av) { + char *name; + int upcase = (key[5] == 'u'); + AV *av = Nullav; + HV *hv = Nullhv; + if (strEQ(&key[strlen(key)-5], "_hash")) + hv = newHV(); + else av = newAV(); i = DBIc_NUM_FIELDS(imp_sth); - assert(i == AvFILL(name)+1); + assert(i == AvFILL(name_av)+1); while(--i >= 0) { - sv = newSVsv(AvARRAY(name)[i]); - for (p = SvPV(sv,lna); p && *p; ++p) { + sv = newSVsv(AvARRAY(name_av)[i]); + name = SvPV(sv,lna); + if (key[5] != 'h') { /* "NAME_hash" */ + for (p = name; p && *p; ++p) { #ifdef toUPPER_LC - *p = (up) ? toUPPER_LC(*p) : toLOWER_LC(*p); + *p = (upcase) ? toUPPER_LC(*p) : toLOWER_LC(*p); #else - *p = (up) ? toUPPER(*p) : toLOWER(*p); + *p = (upcase) ? toUPPER(*p) : toLOWER(*p); #endif + } } - av_store(av, i, sv); + if (av) + av_store(av, i, sv); + else + hv_store(hv, name, SvCUR(sv), newSViv(i), 0); } - valuesv = newRV(sv_2mortal((SV*)av)); + valuesv = newRV(sv_2mortal( (av ? (SV*)av : (SV*)hv) )); cacheit = TRUE; /* can't change */ } } @@ -1388,9 +1411,10 @@ valuesv = boolSV(DBIc_has(imp_xxh,DBIcf_Taint)); } else if (htype<=DBIt_DB && keylen==10 && strEQ(key, "AutoCommit")) { - /* The driver should have intercepted this and handled it. */ - croak("DBD driver has not implemented the AutoCommit attribute"); - /* valuesv = boolSV(DBIc_has(imp_xxh,DBIcf_AutoCommit)); */ + valuesv = boolSV(DBIc_has(imp_xxh,DBIcf_AutoCommit)); + } + else if (keylen==9 && strEQ(key, "BegunWork")) { + valuesv = boolSV(DBIc_has(imp_xxh,DBIcf_BegunWork)); } else { /* finally check the actual hash just in case */ svp = hv_fetch((HV*)SvRV(h), key, keylen, FALSE); @@ -1404,9 +1428,6 @@ if (cacheit) { svp = hv_fetch((HV*)SvRV(h), key, keylen, TRUE); sv = *svp; -if (DBIS->debug >= 9) { -warn("cacheit %d %s: old: sv%p='%s', new: '%s'", getpid(), key, sv, neatsvpv(sv,0),neatsvpv(valuesv,0)); -} *svp = SvREFCNT_inc(valuesv); sv_free(sv); } @@ -1970,6 +1991,25 @@ PerlIO_flush(logfp); } + if (ima && ima->flags & IMA_END_WORK) { /* commit() or rollback() */ + if (DBIc_has(imp_xxh, DBIcf_BegunWork)) { + DBIc_off(imp_xxh, DBIcf_BegunWork); + if (!DBIc_has(imp_xxh, DBIcf_AutoCommit)) { + /* We only get here if the driver hasn't implemented their own code + */ + /* for begin_work, or has but hasn't correctly turned AutoCommit + */ + /* back on in their commit or rollback code. So we have to do it. + */ + /* This is bad because it'll probably trigger a spurious commit() + */ + SPAGAIN; + PUSHMARK(SP); + XPUSHs(h); + XPUSHs(sv_2mortal(newSVpv("AutoCommit",0))); + XPUSHs(&sv_yes); + PUTBACK; + perl_call_method("STORE", G_DISCARD); + } + } + } + if ( !keep_error /* so would be a new error */ && SvTRUE(DBIc_ERR(imp_xxh)) /* and an error exists */ && call_depth <= 1 /* skip nested (internal) calls */ @@ -2295,8 +2335,7 @@ /* The DBI Perl interface (via XS) starts here. Currently these are */ /* all internal support functions. Note install_method and see DBI.pm */ -#line 2299 "DBI.c" -XS(XS_DBI_constant); /* prototype to pass -Wmissing-prototypes */ +#line 2339 "DBI.c" XS(XS_DBI_constant) { dXSARGS; @@ -2306,15 +2345,14 @@ { I32 RETVAL; dXSTARG; -#line 2336 "DBI.xs" +#line 2376 "DBI.xs" RETVAL = ix; -#line 2312 "DBI.c" +#line 2351 "DBI.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } -XS(XS_DBI_preparse); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_preparse) { dXSARGS; @@ -2322,7 +2360,7 @@ Perl_croak(aTHX_ "Usage: DBI::preparse(h, statement, ps_accept, ps_return, foo=Nullch)"); { SV * h = ST(0); - char * statement = (char *)SvPV_nolen(ST(1)); + char * statement = (char *)SvPV(ST(1),PL_na); IV ps_accept = (IV)SvIV(ST(2)); IV ps_return = (IV)SvIV(ST(3)); void * foo; @@ -2341,7 +2379,6 @@ XSRETURN(1); } -XS(XS_DBI__setup_handle); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__setup_handle) { dXSARGS; @@ -2349,18 +2386,17 @@ Perl_croak(aTHX_ "Usage: DBI::_setup_handle(sv, imp_class, parent, imp_datasv)"); { SV * sv = ST(0); - char * imp_class = (char *)SvPV_nolen(ST(1)); + char * imp_class = (char *)SvPV(ST(1),PL_na); SV * parent = ST(2); SV * imp_datasv = ST(3); -#line 2358 "DBI.xs" +#line 2398 "DBI.xs" dbih_setup_handle(sv, imp_class, parent, SvOK(imp_datasv) ? imp_datasv : Nullsv); ST(0) = &sv_undef; -#line 2359 "DBI.c" +#line 2396 "DBI.c" } XSRETURN(1); } -XS(XS_DBI__get_imp_data); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__get_imp_data) { dXSARGS; @@ -2368,15 +2404,14 @@ Perl_croak(aTHX_ "Usage: DBI::_get_imp_data(sv)"); { SV * sv = ST(0); -#line 2366 "DBI.xs" +#line 2406 "DBI.xs" D_imp_xxh(sv); ST(0) = sv_mortalcopy(DBIc_IMP_DATA(imp_xxh)); /* okay if NULL */ -#line 2375 "DBI.c" +#line 2411 "DBI.c" } XSRETURN(1); } -XS(XS_DBI__handles); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__handles) { dXSARGS; @@ -2385,7 +2420,7 @@ SP -= items; { SV * sv = ST(0); -#line 2374 "DBI.xs" +#line 2414 "DBI.xs" /* return the outer and inner handle for any given handle */ D_imp_xxh(sv); SV *ih = sv_mortalcopy( dbih_inner(sv, "_handles") ); @@ -2393,13 +2428,12 @@ EXTEND(SP, 2); PUSHs(oh); /* returns outer handle then inner */ PUSHs(ih); -#line 2397 "DBI.c" +#line 2432 "DBI.c" PUTBACK; return; } } -XS(XS_DBI_set_err); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_set_err) { dXSARGS; @@ -2422,7 +2456,7 @@ else { state = ST(3); } -#line 2390 "DBI.xs" +#line 2430 "DBI.xs" { dPERINTERP; D_imp_xxh(sv); @@ -2445,12 +2479,11 @@ /* done by returning theough dispatch and letting the DBI handle it */ ST(0) = &sv_undef; } -#line 2449 "DBI.c" +#line 2483 "DBI.c" } XSRETURN(1); } -XS(XS_DBI_neat); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_neat) { dXSARGS; @@ -2465,21 +2498,20 @@ else { maxlen = (unsigned long)SvUV(ST(1)); } -#line 2419 "DBI.xs" +#line 2459 "DBI.xs" ST(0) = sv_2mortal(newSVpv(neatsvpv(sv, maxlen), 0)); -#line 2471 "DBI.c" +#line 2504 "DBI.c" } XSRETURN(1); } -XS(XS_DBI_hash); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_hash) { dXSARGS; if (items < 1 || items > 2) Perl_croak(aTHX_ "Usage: DBI::hash(key, i=0)"); { - char * key = (char *)SvPV_nolen(ST(0)); + char * key = (char *)SvPV(ST(0),PL_na); int i; int RETVAL; dXSTARG; @@ -2489,22 +2521,20 @@ else { i = (int)SvIV(ST(1)); } -#line 2427 "DBI.xs" +#line 2467 "DBI.xs" RETVAL = dbi_hash(key, i); -#line 2495 "DBI.c" +#line 2527 "DBI.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } -XS(XS_DBI_looks_like_number); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_looks_like_number) { dXSARGS; - PERL_UNUSED_VAR(ax); /* -Wall */ SP -= items; { -#line 2434 "DBI.xs" +#line 2474 "DBI.xs" int i; EXTEND(SP, items); for(i=0; i < items ; ++i) { @@ -2516,22 +2546,21 @@ else PUSHs(&sv_no); } -#line 2520 "DBI.c" +#line 2550 "DBI.c" PUTBACK; return; } } -XS(XS_DBI__install_method); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__install_method) { dXSARGS; if (items < 3 || items > 4) Perl_croak(aTHX_ "Usage: DBI::_install_method(class, meth_name, file, attribs=Nullsv)"); { - char * class = (char *)SvPV_nolen(ST(0)); - char * meth_name = (char *)SvPV_nolen(ST(1)); - char * file = (char *)SvPV_nolen(ST(2)); + char * class = (char *)SvPV(ST(0),PL_na); + char * meth_name = (char *)SvPV(ST(1),PL_na); + char * file = (char *)SvPV(ST(2),PL_na); SV * attribs; if (items < 4) @@ -2539,7 +2568,7 @@ else { attribs = ST(3); } -#line 2454 "DBI.xs" +#line 2494 "DBI.xs" { dPERINTERP; /* install another method name/interface for the DBI dispatcher */ @@ -2592,12 +2621,11 @@ PerlIO_printf(DBILOGFP,"\n"); ST(0) = &sv_yes; } -#line 2596 "DBI.c" +#line 2625 "DBI.c" } XSRETURN(1); } -XS(XS_DBI_trace); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_trace) { dXSARGS; @@ -2622,7 +2650,7 @@ else { file = ST(2); } -#line 2516 "DBI.xs" +#line 2556 "DBI.xs" { dPERINTERP; if (!DBIS) { @@ -2645,13 +2673,12 @@ sv_setiv(get_sv("DBI::dbi_debug",0x5), level); } } -#line 2649 "DBI.c" +#line 2677 "DBI.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } -XS(XS_DBI_dump_handle); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI_dump_handle) { dXSARGS; @@ -2665,7 +2692,7 @@ if (items < 2) msg = "DBI::dump_handle"; else { - msg = (char *)SvPV_nolen(ST(1)); + msg = (char *)SvPV(ST(1),PL_na); } if (items < 3) @@ -2673,17 +2700,16 @@ else { level = (int)SvIV(ST(2)); } -#line 2549 "DBI.xs" +#line 2589 "DBI.xs" { D_imp_xxh(sv); dbih_dumpcom(imp_xxh, msg, level); } -#line 2682 "DBI.c" +#line 2709 "DBI.c" } XSRETURN_EMPTY; } -XS(XS_DBI__svdump); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__svdump) { dXSARGS; @@ -2691,7 +2717,7 @@ Perl_croak(aTHX_ "Usage: DBI::_svdump(sv)"); { SV * sv = ST(0); -#line 2559 "DBI.xs" +#line 2599 "DBI.xs" { dPERINTERP; PerlIO_printf(DBILOGFP, "DBI::_svdump(%s)", neatsvpv(sv,0)); @@ -2699,12 +2725,11 @@ sv_dump(sv); #endif } -#line 2703 "DBI.c" +#line 2729 "DBI.c" } XSRETURN_EMPTY; } -XS(XS_DBI__var_FETCH); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBI__var_FETCH) { dXSARGS; @@ -2712,7 +2737,7 @@ Perl_croak(aTHX_ "Usage: DBI::var::FETCH(sv)"); { SV * sv = ST(0); -#line 2574 "DBI.xs" +#line 2614 "DBI.xs" dPERINTERP; /* Note that we do not come through the dispatcher to get here. */ STRLEN lna; @@ -2788,12 +2813,11 @@ } PUSHMARK(mark); /* reset mark (implies one arg as we were called with one arg?) */ perl_call_sv((SV*)GvCV(imp_gv), GIMME); -#line 2792 "DBI.c" +#line 2817 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st__get_fbav); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st__get_fbav) { dXSARGS; @@ -2801,16 +2825,15 @@ Perl_croak(aTHX_ "Usage: DBD::_::st::_get_fbav(sth)"); { SV * sth = ST(0); -#line 2658 "DBI.xs" +#line 2698 "DBI.xs" D_imp_sth(sth); AV *av = dbih_get_fbav(imp_sth); ST(0) = sv_2mortal(newRV((SV*)av)); -#line 2809 "DBI.c" +#line 2833 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st__set_fbav); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st__set_fbav) { dXSARGS; @@ -2819,7 +2842,7 @@ { SV * sth = ST(0); SV * src_rv = ST(1); -#line 2667 "DBI.xs" +#line 2707 "DBI.xs" D_imp_sth(sth); int i; AV *src_av; @@ -2835,12 +2858,11 @@ sv_setsv(AvARRAY(dst_av)[i], AvARRAY(src_av)[i]); } ST(0) = sv_2mortal(newRV((SV*)dst_av)); -#line 2839 "DBI.c" +#line 2862 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st_bind_col); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_bind_col) { dXSARGS; @@ -2857,15 +2879,14 @@ else { attribs = ST(3); } -#line 2691 "DBI.xs" +#line 2731 "DBI.xs" DBD_ATTRIBS_CHECK("bind_col", sth, attribs); ST(0) = boolSV(dbih_sth_bind_col(sth, col, ref, attribs)); -#line 2864 "DBI.c" +#line 2886 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st_bind_columns); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_bind_columns) { dXSARGS; @@ -2873,7 +2894,7 @@ Perl_croak(aTHX_ "Usage: DBD::_::st::bind_columns(sth, ...)"); { SV * sth = ST(0); -#line 2698 "DBI.xs" +#line 2738 "DBI.xs" D_imp_sth(sth); SV *colsv; SV *attribs = &sv_undef; @@ -2901,12 +2922,11 @@ break; } } -#line 2905 "DBI.c" +#line 2926 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st_fetchrow_array); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_fetchrow_array) { dXSARGS; @@ -2916,7 +2936,7 @@ SP -= items; { SV * sth = ST(0); -#line 2733 "DBI.xs" +#line 2773 "DBI.xs" dPERINTERP; SV *retsv; if (CvDEPTH(cv) == 99) { @@ -2959,13 +2979,12 @@ PUSHs(AvARRAY(av)[i]); } } -#line 2963 "DBI.c" +#line 2983 "DBI.c" PUTBACK; return; } } -XS(XS_DBD_____st_fetchrow_hashref); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_fetchrow_hashref) { dXSARGS; @@ -2974,19 +2993,19 @@ { SV * sth = ST(0); char * keyattrib; -#line 2782 "DBI.xs" +#line 2822 "DBI.xs" dPERINTERP; SV *rowavr; D_imp_sth(sth); -#line 2982 "DBI.c" +#line 3001 "DBI.c" SV * RETVAL; if (items < 2) keyattrib = Nullch; else { - keyattrib = (char *)SvPV_nolen(ST(1)); + keyattrib = (char *)SvPV(ST(1),PL_na); } -#line 2786 "DBI.xs" +#line 2826 "DBI.xs" PUSHMARK(sp); XPUSHs(sth); PUTBACK; @@ -3027,14 +3046,13 @@ RETVAL = newSV(0); /* mutable undef for 5.004_04 */ #endif } -#line 3031 "DBI.c" +#line 3050 "DBI.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } -XS(XS_DBD_____st_fetch); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_fetch) { dXSARGS; @@ -3043,7 +3061,7 @@ Perl_croak(aTHX_ "Usage: %s(sth)", GvNAME(CvGV(cv))); { SV * sth = ST(0); -#line 2836 "DBI.xs" +#line 2876 "DBI.xs" int num_fields; if (CvDEPTH(cv) == 99) { ix = ix; /* avoid 'unused variable' warning' */ @@ -3067,12 +3085,11 @@ PUTBACK; ST(0) = sv_2mortal(newRV((SV*)av)); } -#line 3071 "DBI.c" +#line 3089 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st_rows); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_rows) { dXSARGS; @@ -3080,16 +3097,15 @@ Perl_croak(aTHX_ "Usage: DBD::_::st::rows(sth)"); { SV * sth = ST(0); -#line 2865 "DBI.xs" +#line 2905 "DBI.xs" D_imp_sth(sth); IV rows = DBIc_ROW_COUNT(imp_sth); ST(0) = sv_2mortal(newSViv(rows)); -#line 3088 "DBI.c" +#line 3105 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____st_finish); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____st_finish) { dXSARGS; @@ -3097,30 +3113,28 @@ Perl_croak(aTHX_ "Usage: DBD::_::st::finish(sth)"); { SV * sth = ST(0); -#line 2874 "DBI.xs" +#line 2914 "DBI.xs" D_imp_sth(sth); DBIc_ACTIVE_off(imp_sth); ST(0) = &sv_yes; -#line 3105 "DBI.c" +#line 3121 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_DESTROY) { dXSARGS; { -#line 2885 "DBI.xs" +#line 2925 "DBI.xs" /* the interesting stuff happens in DBD::_mem::common::DESTROY */ items = items; /* avoid 'unused variable' warning */ ST(0) = &sv_undef; -#line 3119 "DBI.c" +#line 3134 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_STORE); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_STORE) { dXSARGS; @@ -3130,16 +3144,15 @@ SV * h = ST(0); SV * keysv = ST(1); SV * valuesv = ST(2); -#line 2896 "DBI.xs" +#line 2936 "DBI.xs" ST(0) = &sv_yes; if (!dbih_set_attr_k(h, keysv, 0, valuesv)) ST(0) = &sv_no; -#line 3138 "DBI.c" +#line 3152 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_FETCH); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_FETCH) { dXSARGS; @@ -3148,14 +3161,13 @@ { SV * h = ST(0); SV * keysv = ST(1); -#line 2906 "DBI.xs" +#line 2946 "DBI.xs" ST(0) = dbih_get_attr_k(h, keysv, 0); -#line 3154 "DBI.c" +#line 3167 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_event); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_event) { dXSARGS; @@ -3163,7 +3175,7 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::event(h, type, a1=&sv_undef, a2=&sv_undef)"); { SV * h = ST(0); - char * type = (char *)SvPV_nolen(ST(1)); + char * type = (char *)SvPV(ST(1),PL_na); SV * a1; SV * a2; @@ -3178,17 +3190,16 @@ else { a2 = ST(3); } -#line 2916 "DBI.xs" +#line 2956 "DBI.xs" { dPERINTERP; ST(0) = sv_mortalcopy(DBIh_EVENT2(h, type, a1, a2)); } -#line 3187 "DBI.c" +#line 3199 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_private_data); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_private_data) { dXSARGS; @@ -3196,15 +3207,14 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::private_data(h)"); { SV * h = ST(0); -#line 2926 "DBI.xs" +#line 2966 "DBI.xs" D_imp_xxh(h); ST(0) = sv_mortalcopy(DBIc_IMP_DATA(imp_xxh)); -#line 3203 "DBI.c" +#line 3214 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_err); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_err) { dXSARGS; @@ -3212,16 +3222,15 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::err(h)"); { SV * h = ST(0); -#line 2934 "DBI.xs" +#line 2974 "DBI.xs" D_imp_xxh(h); SV *errsv = DBIc_ERR(imp_xxh); ST(0) = sv_mortalcopy(errsv); -#line 3220 "DBI.c" +#line 3230 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_state); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_state) { dXSARGS; @@ -3229,17 +3238,16 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::state(h)"); { SV * h = ST(0); -#line 2942 "DBI.xs" +#line 2982 "DBI.xs" D_imp_xxh(h); STRLEN lna; SV *state = DBIc_STATE(imp_xxh); ST(0) = DBIc_STATE_adjust(imp_xxh, state); -#line 3238 "DBI.c" +#line 3247 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_errstr); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_errstr) { dXSARGS; @@ -3247,7 +3255,7 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::errstr(h)"); { SV * h = ST(0); -#line 2951 "DBI.xs" +#line 2991 "DBI.xs" D_imp_xxh(h); SV *errstr = DBIc_ERRSTR(imp_xxh); SV *err; @@ -3255,12 +3263,11 @@ if (!SvTRUE(errstr) && (err=DBIc_ERR(imp_xxh)) && SvTRUE(err)) errstr = err; ST(0) = sv_mortalcopy(errstr); -#line 3259 "DBI.c" +#line 3267 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_trace); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_trace) { dXSARGS; @@ -3285,7 +3292,7 @@ else { file = ST(2); } -#line 2968 "DBI.xs" +#line 3008 "DBI.xs" { dPERINTERP; D_imp_xxh(sv); @@ -3305,13 +3312,12 @@ sv_setiv(dsv, level); } } -#line 3309 "DBI.c" +#line 3316 "DBI.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } -XS(XS_DBD_____common_trace_msg); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_trace_msg) { dXSARGS; @@ -3319,18 +3325,18 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::trace_msg(sv, msg, min_level=1)"); { SV * sv = ST(0); - char * msg = (char *)SvPV_nolen(ST(1)); + char * msg = (char *)SvPV(ST(1),PL_na); int min_level; -#line 2997 "DBI.xs" +#line 3037 "DBI.xs" int debug = 0; -#line 3327 "DBI.c" +#line 3333 "DBI.c" if (items < 3) min_level = 1; else { min_level = (int)SvIV(ST(2)); } -#line 2999 "DBI.xs" +#line 3039 "DBI.xs" { dPERINTERP; if (SvROK(sv)) { @@ -3345,12 +3351,11 @@ ST(0) = &sv_no; } } -#line 3349 "DBI.c" +#line 3355 "DBI.c" } XSRETURN(1); } -XS(XS_DBD_____common_rows); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD_____common_rows) { dXSARGS; @@ -3358,16 +3363,15 @@ Perl_croak(aTHX_ "Usage: DBD::_::common::rows(h)"); { SV * h = ST(0); -#line 3019 "DBI.xs" +#line 3059 "DBI.xs" /* fallback esp for $DBI::rows after $drh was last used */ if (0) h = h; /* avoid unused variable warning */ ST(0) = sv_2mortal(newSViv(-1)); -#line 3366 "DBI.c" +#line 3371 "DBI.c" } XSRETURN(1); } -XS(XS_DBD___mem__common_DESTROY); /* prototype to pass -Wmissing-prototypes */ XS(XS_DBD___mem__common_DESTROY) { dXSARGS; @@ -3375,12 +3379,12 @@ Perl_croak(aTHX_ "Usage: DBD::_mem::common::DESTROY(imp_xxh_rv)"); { SV * imp_xxh_rv = ST(0); -#line 3030 "DBI.xs" +#line 3070 "DBI.xs" dPERINTERP; /* ignore 'cast increases required alignment' warning */ imp_xxh_t *imp_xxh = (imp_xxh_t*)SvPVX(SvRV(imp_xxh_rv)); DBIS->clearcom(imp_xxh); -#line 3384 "DBI.c" +#line 3388 "DBI.c" } XSRETURN_EMPTY; } @@ -3388,7 +3392,6 @@ #ifdef __cplusplus extern "C" #endif -XS(boot_DBI); /* prototype to pass -Wmissing-prototypes */ XS(boot_DBI) { dXSARGS; @@ -3399,101 +3402,101 @@ { CV * cv ; - cv = newXS("DBI::SQL_TIME", XS_DBI_constant, file); - XSANY.any_i32 = SQL_TIME ; + cv = newXS("DBI::DBIpp_cm_cs", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_cm_cs ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_WVARCHAR", XS_DBI_constant, file); - XSANY.any_i32 = SQL_WVARCHAR ; + cv = newXS("DBI::SQL_BINARY", XS_DBI_constant, file); + XSANY.any_i32 = SQL_BINARY ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_SMALLINT", XS_DBI_constant, file); - XSANY.any_i32 = SQL_SMALLINT ; + cv = newXS("DBI::SQL_INTEGER", XS_DBI_constant, file); + XSANY.any_i32 = SQL_INTEGER ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_LONGVARCHAR", XS_DBI_constant, file); - XSANY.any_i32 = SQL_LONGVARCHAR ; + cv = newXS("DBI::DBIpp_ph_qm", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_ph_qm ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_VARBINARY", XS_DBI_constant, file); - XSANY.any_i32 = SQL_VARBINARY ; + cv = newXS("DBI::SQL_WVARCHAR", XS_DBI_constant, file); + XSANY.any_i32 = SQL_WVARCHAR ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_cm_hs", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_cm_hs ; + cv = newXS("DBI::SQL_WCHAR", XS_DBI_constant, file); + XSANY.any_i32 = SQL_WCHAR ; sv_setpv((SV*)cv, "") ; cv = newXS("DBI::DBIpp_ph_sp", XS_DBI_constant, file); XSANY.any_i32 = DBIpp_ph_sp ; sv_setpv((SV*)cv, "") ; + cv = newXS("DBI::SQL_DOUBLE", XS_DBI_constant, file); + XSANY.any_i32 = SQL_DOUBLE ; + sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_LONGVARBINARY", XS_DBI_constant, file); XSANY.any_i32 = SQL_LONGVARBINARY ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_CHAR", XS_DBI_constant, file); - XSANY.any_i32 = SQL_CHAR ; - sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_DATE", XS_DBI_constant, file); - XSANY.any_i32 = SQL_DATE ; - sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_INTEGER", XS_DBI_constant, file); - XSANY.any_i32 = SQL_INTEGER ; - sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_TINYINT", XS_DBI_constant, file); - XSANY.any_i32 = SQL_TINYINT ; - sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_FLOAT", XS_DBI_constant, file); XSANY.any_i32 = SQL_FLOAT ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::constant", XS_DBI_constant, file); - XSANY.any_i32 = 0 ; - sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_ph_cn", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_ph_cn ; + cv = newXS("DBI::DBIpp_cm_dd", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_cm_dd ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_ph_cs", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_ph_cs ; + cv = newXS("DBI::SQL_TIME", XS_DBI_constant, file); + XSANY.any_i32 = SQL_TIME ; sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_VARCHAR", XS_DBI_constant, file); XSANY.any_i32 = SQL_VARCHAR ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_cm_br", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_cm_br ; + cv = newXS("DBI::SQL_LONGVARCHAR", XS_DBI_constant, file); + XSANY.any_i32 = SQL_LONGVARCHAR ; sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_ALL_TYPES", XS_DBI_constant, file); XSANY.any_i32 = SQL_ALL_TYPES ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_BIGINT", XS_DBI_constant, file); - XSANY.any_i32 = SQL_BIGINT ; + cv = newXS("DBI::DBIpp_cm_br", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_cm_br ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_WLONGVARCHAR", XS_DBI_constant, file); - XSANY.any_i32 = SQL_WLONGVARCHAR ; + cv = newXS("DBI::SQL_TINYINT", XS_DBI_constant, file); + XSANY.any_i32 = SQL_TINYINT ; + sv_setpv((SV*)cv, "") ; + cv = newXS("DBI::SQL_CHAR", XS_DBI_constant, file); + XSANY.any_i32 = SQL_CHAR ; sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_TIMESTAMP", XS_DBI_constant, file); XSANY.any_i32 = SQL_TIMESTAMP ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_NUMERIC", XS_DBI_constant, file); - XSANY.any_i32 = SQL_NUMERIC ; + cv = newXS("DBI::SQL_BIT", XS_DBI_constant, file); + XSANY.any_i32 = SQL_BIT ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_REAL", XS_DBI_constant, file); - XSANY.any_i32 = SQL_REAL ; + cv = newXS("DBI::SQL_WLONGVARCHAR", XS_DBI_constant, file); + XSANY.any_i32 = SQL_WLONGVARCHAR ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_cm_cs", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_cm_cs ; + cv = newXS("DBI::SQL_NUMERIC", XS_DBI_constant, file); + XSANY.any_i32 = SQL_NUMERIC ; sv_setpv((SV*)cv, "") ; cv = newXS("DBI::SQL_DECIMAL", XS_DBI_constant, file); XSANY.any_i32 = SQL_DECIMAL ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_BINARY", XS_DBI_constant, file); - XSANY.any_i32 = SQL_BINARY ; + cv = newXS("DBI::SQL_DATE", XS_DBI_constant, file); + XSANY.any_i32 = SQL_DATE ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_WCHAR", XS_DBI_constant, file); - XSANY.any_i32 = SQL_WCHAR ; + cv = newXS("DBI::DBIpp_ph_cn", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_ph_cn ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_ph_qm", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_ph_qm ; + cv = newXS("DBI::SQL_SMALLINT", XS_DBI_constant, file); + XSANY.any_i32 = SQL_SMALLINT ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_DOUBLE", XS_DBI_constant, file); - XSANY.any_i32 = SQL_DOUBLE ; + cv = newXS("DBI::DBIpp_cm_hs", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_cm_hs ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::DBIpp_cm_dd", XS_DBI_constant, file); - XSANY.any_i32 = DBIpp_cm_dd ; + cv = newXS("DBI::SQL_VARBINARY", XS_DBI_constant, file); + XSANY.any_i32 = SQL_VARBINARY ; sv_setpv((SV*)cv, "") ; - cv = newXS("DBI::SQL_BIT", XS_DBI_constant, file); - XSANY.any_i32 = SQL_BIT ; + cv = newXS("DBI::SQL_REAL", XS_DBI_constant, file); + XSANY.any_i32 = SQL_REAL ; + sv_setpv((SV*)cv, "") ; + cv = newXS("DBI::DBIpp_ph_cs", XS_DBI_constant, file); + XSANY.any_i32 = DBIpp_ph_cs ; + sv_setpv((SV*)cv, "") ; + cv = newXS("DBI::SQL_BIGINT", XS_DBI_constant, file); + XSANY.any_i32 = SQL_BIGINT ; + sv_setpv((SV*)cv, "") ; + cv = newXS("DBI::constant", XS_DBI_constant, file); + XSANY.any_i32 = 0 ; sv_setpv((SV*)cv, "") ; newXS("DBI::preparse", XS_DBI_preparse, file); newXS("DBI::_setup_handle", XS_DBI__setup_handle, file); @@ -3515,15 +3518,15 @@ newXS("DBD::_::st::_set_fbav", XS_DBD_____st__set_fbav, file); newXS("DBD::_::st::bind_col", XS_DBD_____st_bind_col, file); newXS("DBD::_::st::bind_columns", XS_DBD_____st_bind_columns, file); - cv = newXS("DBD::_::st::fetchrow_array", XS_DBD_____st_fetchrow_array, file); - XSANY.any_i32 = 0 ; cv = newXS("DBD::_::st::fetchrow", XS_DBD_____st_fetchrow_array, file); XSANY.any_i32 = 1 ; - newXS("DBD::_::st::fetchrow_hashref", XS_DBD_____st_fetchrow_hashref, file); - cv = newXS("DBD::_::st::fetch", XS_DBD_____st_fetch, file); + cv = newXS("DBD::_::st::fetchrow_array", XS_DBD_____st_fetchrow_array, file); XSANY.any_i32 = 0 ; + newXS("DBD::_::st::fetchrow_hashref", XS_DBD_____st_fetchrow_hashref, file); cv = newXS("DBD::_::st::fetchrow_arrayref", XS_DBD_____st_fetch, file); XSANY.any_i32 = 1 ; + cv = newXS("DBD::_::st::fetch", XS_DBD_____st_fetch, file); + XSANY.any_i32 = 0 ; newXS("DBD::_::st::rows", XS_DBD_____st_rows, file); newXS("DBD::_::st::finish", XS_DBD_____st_finish, file); newXS("DBD::_::common::DESTROY", XS_DBD_____common_DESTROY, file); @@ -3534,10 +3537,10 @@ newXS("DBD::_::common::err", XS_DBD_____common_err, file); newXS("DBD::_::common::state", XS_DBD_____common_state, file); newXS("DBD::_::common::errstr", XS_DBD_____common_errstr, file); - cv = newXS("DBD::_::common::trace", XS_DBD_____common_trace, file); - XSANY.any_i32 = 0 ; cv = newXS("DBD::_::common::debug", XS_DBD_____common_trace, file); XSANY.any_i32 = 1 ; + cv = newXS("DBD::_::common::trace", XS_DBD_____common_trace, file); + XSANY.any_i32 = 0 ; newXS("DBD::_::common::trace_msg", XS_DBD_____common_trace_msg, file); newXS("DBD::_::common::rows", XS_DBD_____common_rows, file); newXS("DBD::_mem::common::DESTROY", XS_DBD___mem__common_DESTROY, file); @@ -3545,11 +3548,11 @@ /* Initialisation Section */ -#line 2296 "DBI.xs" +#line 2336 "DBI.xs" items = items; /* avoid 'unused variable' warning */ dbi_bootinit(); -#line 3553 "DBI.c" +#line 3556 "DBI.c" /* End of Initialisation Section */