RE: Incompatibility with DBI v1.56 / DBD::Sybase v1.08 / DBIx::ContextualFetch v1.03
- From: David.Wood@xxxxxxxxxx (David Wood)
- Date: Wed, 6 Jun 2007 19:45:45 -0400
It took us a while to whittle this down into a small test case; however,
the fruits of labour seem to have paid off:
% perl -MDBI -e 'my $dbh =
DBI->connect("dbi:Sybase:server=MYSERVER","janedoe","janepass"); my
$arr_ref = $dbh->selectall_arrayref("execute sp_who"); print
@{$arr_ref->[0]},"\n";
Can't locate object method "DELETE" via package "DBI::st" at -e line 1.
%
The problem only seems to occur executing stored procedures ... notice a
"select" is fine:
% perl -MDBI -e 'my $dbh =
DBI->connect("dbi:Sybase:server=MYSERVER","janedoe","janepass"); my
$arr_ref = $dbh->selectall_arrayref("select 1"); print
@{$arr_ref->[0]},"\n";
1
%
The error with this small test case is different than the original
problem report ... but I'm hoping it uncovers whatever the underlying
problem is. David
-----Original Message-----
From: Tim Bunce [mailto:Tim.Bunce@xxxxxxxxx]
Sent: Wednesday, May 30, 2007 6:00 AM
To: Wood, David
Cc: dbi-users@xxxxxxxx
Subject: Re: Incompatibility with DBI v1.56 / DBD::Sybase v1.08 /
DBIx::ContextualFetch v1.03
Thanks for the report David.
I believe clear_cache() is only called on an 'inner' handle, which is
not tied. So I can't see why you'd get this error. (Or why the error
would say "Undefined subroutine" and not "Can't find method".)
To be able to look into this I'll need a very small test case that uses
as
few modules as possible. Ideally just DBI + DBD::Sybase +
DBIx::ContextualFetch.
Tim.
On Tue, May 29, 2007 at 10:45:37PM -0400, Wood, David wrote:
Hello,he's
We're running Perl v5.8.6 on Linux, Solaris Sparc, and Solaris x86.
We're using the latest DBI/DBD related modules:
o DBI v1.56
o DBD::Sybase v1.08
o DBIx::ContextualFetch v1.03
o Class::DBI v3.0.16
o Class::DBI::Sybase v0.5
o Ima::DBI v0.34
o etc
We recently upgraded DBD::Sybase from v1.07 to v1.08. The upgrade
resulted in the following problem on all platforms:
Undefined subroutine &DBIx::ContextualFetch::st::DELETE
I mentioned the problem to Michael Peppler; however, I don't think
very familiar with DBIx::ContextualFetch and friends ... nor am I surehttp://search.cpan.org/~timb/DBI-1.56/lib/DBI/DBD.pm#The_more_results_me
this is a DBD::Sybase problem. I narrowed down the failure to this
piece of code (DBD-Sybase/dbdimp.c):
static void clear_cache(SV *sth, imp_sth_t *imp_sth)
{
dTHX;
/* Code from DBI::DBD */
/* Clear cached statement handle attributes, if necessary */
hv_delete((HV*)SvRV(sth), "NAME", 4, G_DISCARD);
hv_delete((HV*)SvRV(sth), "NULLABLE", 8, G_DISCARD);
hv_delete((HV*)SvRV(sth), "NUM_OF_FIELDS", 13, G_DISCARD);
hv_delete((HV*)SvRV(sth), "PRECISION", 9, G_DISCARD);
hv_delete((HV*)SvRV(sth), "SCALE", 5, G_DISCARD);
hv_delete((HV*)SvRV(sth), "TYPE", 4, G_DISCARD);
}
It seems Michael was implementing the changes described here:
http://www.mail-archive.com/dbi-dev@xxxxxxxx/msg04663.html
thodcame
I decided to e-mail dbi-users since the motivation for this change
from here. If this isn't the correct list ... hopefully someone can.
direct me to a more appropriate list. David
- Follow-Ups:
- Prev by Date: RE: Duplicate table structure
- Next by Date: Re: Incompatibility with DBI v1.56 / DBD::Sybase v1.08 / DBIx::ContextualFetch v1.03
- Previous by thread: Duplicate table structure
- Next by thread: Re: Incompatibility with DBI v1.56 / DBD::Sybase v1.08 / DBIx::ContextualFetch v1.03
- Index(es):
Relevant Pages
|
|