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/