On Tue, Dec 14, 2004 at 07:08:08AM -0800, Jonathan Leffler wrote:
> I had certainly managed to miss this change - which could easily
> account for some of the weirdnesses I'd been seeing in DBD::Informix. 
> (I haven't had a chance to do a thing for a week and more.)  This sort
> of backwards incompatible change (in the use of set_err()) stuff needs
> to be firmly highlighted.  I hope it was and I simply missed it.  I
> would have put in place a comment about legacy drivers no longer being
> good exemplars.

I don't think the change is backwards incompatible. It's a change
in 'best practice' that ensures that errors on one db handle don't
also appear on other children of the same handle.

Having said that, there is certainly a possibility that changes
in this area could be related to the 'weirdnesses' you're seeing.
But that wouldn't be by design.

Tim.

> On Tue, 14 Dec 2004 10:12:54 +0100, Steffen Goeldner <[EMAIL PROTECTED]> 
> wrote:
> > DBI 1.31 suggests that lexically scoped variables should
> > be passed to _new_dbh():
> > 
> >    
> > <http://search.cpan.org/~timb/DBI/Changes#Changes_in_DBI_1.31,_29th_November_2002>
> > 
> > DBI 1.33 suggests that drivers should no longer pass these
> > variables to _new_drh() or _new_dbh():
> > 
> >    
> > <http://search.cpan.org/~timb/DBI/Changes#Changes_in_DBI_1.33,_27th_February_2003>
> > 
> > This leaves set_err() as the sole interface to set error
> > codes.
> > 
> > But "The Perl DBI Database Driver Writer's Guide" still
> > suggests that global $err/$errstr/$state variables are
> > needed for DBI:
> > 
> >    <http://search.cpan.org/~timb/DBI-1.46/lib/DBI/DBD.pm#The_header>
> > 
> > IMO, we can discard the paragraph without substitution.
> > 
> > 
> > Steffen
> > 
> > 
> > Index: lib/DBI/DBD.pm
> > ===================================================================
> > --- lib/DBI/DBD.pm      (revision 623)
> > +++ lib/DBI/DBD.pm      (working copy)
> > @@ -569,21 +569,8 @@
> >    package DBD::File;
> > 
> >    use strict;
> > -  use vars qw($err $errstr $state $drh);
> > +  use vars qw($VERSION $drh);
> > 
> > -  $err = 0;             # holds error code   for DBI::err
> > -  $errstr = "";         # holds error string for DBI::errstr
> > -  $sqlstate = "S1000";  # holds SQL state    for DBI::state
> > -
> > -These variables are used for storing error states and messages.
> > -Note that most pure Perl drivers do not support the SQL standard error
> > -indicator SQLSTATE, and for such drivers, the value "S1000" is
> > -appropriate.
> > -If your database does support SQLSTATE, then initialize $sqlstate to an
> > -empty string.
> > -However, it is crucial to understand that you must not modify them
> > -directly; see below.
> > -
> >    $VERSION = "1.23.00"  # Version number of DBD::File
> > 
> >  This is where the version number of your driver is specified.
> > 
> > 
> > 
> 
> 
> -- 
> Jonathan Leffler <[EMAIL PROTECTED]>  #include <disclaimer.h>
> Guardian of DBD::Informix - v2003.04 - http://dbi.perl.org
> "I don't suffer from insanity - I enjoy every minute of it."

Reply via email to