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 */
 

Reply via email to