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 */
> }
I trust you've submitted that via the perlbug utility. If not, please do.
Tim.