On Wed 17 Nov 2004 16:27, Tim Bunce <[EMAIL PROTECTED]> wrote:
> On Wed, Nov 17, 2004 at 09:09:32AM -0500, Steven N. Hirsch wrote:
> > Tim,
> > 
> > I'm working on qualifying perl-5.8.3 and DBI-1.46 for a critical 
> > application which uses DBI.  We've been running with perl-5.8.0 + DBI-1.35 
> > for quite a while (color me conservative when my job's at stake).
> > 
> > After fighting my way through some broken logic in 5.8.0 Storable, which 
> > prevents it from ever being able to accept uplevel data (bug persists in 
> > 5.8.3, btw), I'm running into clientside complaints of:
> > 
> > DBD::Proxy::db STORE failed: Server returned error: 
> >  Failed to execute method CallMethod: 
> >   Can't set DBI::ProxyServer::db=HASH(0x303d1cd8)->{Username}: 
> >    unrecognised attribute or invalid value at 
> 
> > I found a cryptic reference in the DBI sources entreating developers to 
> > "update their drivers" in order to accomodate 'Username'.  Unfortunately, 
> > it's not clear to me precisely what needs to get upgraded nor why.
> 
> Er, me neither, off-hand. Can you point me to it?
> 
> > Given your general advocacy for backwards compatibility, I'm surprised by 
> > this situation.
> 
> DBI 1.43 changed get/set of an unknown non-driver-private attribute
> from being a fatal error to a warning in order to ease migration issues.
> 
> > What needs to be updated to get rid of the message?
> 
> The proxy server could be upgraded. Or subclass the client DBI with
> some code that removes the Username attribute. Or, perhaps, modify
> DBD::Proxy by adding Username => 'local', into the %ATTR in the
> DBD::Proxy::db package. Try that first because it's probably the
> best solution. If it works I'll make that change in 1.47.
> 
> > Is there really no 
> > way to interoperate with the older DBI code on the remote end without this 
> > error message (which seems to slow things down to boot)?
> 
> In the current proxy each attribute setting takes a round-trip to
> the server. Is that what you mean?
> 
> > p.s. - To make Storable do what it claims and properly obey the 
> > $Storable::accept_future_minor variable, this needs to happen (apparently 
> > not fixed in 5.8.3 either):
> > 
> > Fix problem where forward compat checking logic never tries to read
> > its setting and always barfs when newer client comes knocking... 
> > 
> > --- perl-5.8.0/ext/Storable/Storable.xs.orig        Sat Nov 13 17:27:53 2004
> > +++ perl-5.8.0/ext/Storable/Storable.xs     Sat Nov 13 17:28:11 2004
> > @@ -1092,6 +1092,7 @@
> >  
> >      cxt->netorder = 0;             /* true if network order used */
> >      cxt->forgive_me = -1;  /* whether to be forgiving... */
> > +    cxt->accept_future_minor = -1; /* would otherwise occur too late */
> >  }

FYI this has not changed since. Excerpt from blead:

   1155 static void init_perinterp(pTHX)
   1156 {
   1157     INIT_STCXT;
   1158
   1159     cxt->netorder = 0;          /* true if network order used */
   1160     cxt->forgive_me = -1;       /* whether to be forgiving... */
   1161 }

> I trust you've submitted that via the perlbug utility. If not, please do.

-- 
H.Merijn Brand        Amsterdam Perl Mongers (http://amsterdam.pm.org/)
using perl-5.6.1, 5.8.5 on HP-UX 10.20, 11.00, & 11.11,  Cygwin-1.15.11
    AIX 4.3.3, AIX 5.2.0, & SuSE 9.1 often with Tk800.024 &/| DBD-Unify
ftp://ftp.funet.fi/pub/languages/perl/CPAN/authors/id/H/HM/HMBRAND/


Reply via email to