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,
>
> 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 he's
> very familiar with DBIx::ContextualFetch and friends ... nor am I sure
> 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/[EMAIL PROTECTED]/msg04663.html
>
> http://search.cpan.org/~timb/DBI-1.56/lib/DBI/DBD.pm#The_more_results_me
> thod
>
> I decided to e-mail dbi-users since the motivation for this change came
> from here. If this isn't the correct list ... hopefully someone can
> direct me to a more appropriate list. David