I am looking at a release-critical bug which means that the
libdbd-ram-perl Debian package fails to build on sid/unstable, see
this page for details:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=264670

The error occurs in the DBD::RAM (version 0.072) test routine (test.pl):

Testing empty loop speed ...
100000 iterations in 0.1 cpu+sys seconds (2000000 per sec)

Testing connect/disconnect speed ...
Can't locate object method "STORE" via package "DBD::File::db" at 
/usr/lib/perl5/DBD/File.pm line 264.
Test failed, message: Can't locate object method "STORE" via package "DBD::File::db" 
at /usr/lib/perl5/DBD/File.pm line 264.

This is with perl 5.8.4 and DBI version 1.43, in the past the module
DBD::File was part of DBD::CSV. It recently moved into DBI and it is
only the version in DBI that causes a problem, the DBD::RAM module
builds fine with the version in DBD::CSV (version 0.2002).

Now looking at line 264, I see:

return $dbh->SUPER::STORE($attrib, $value);

The way the SUPER pseudopackage works, according to "Programming Perl"
is that it looks for the method in the super-class of the current
package. In this case the current package is DBD::File::db which does
not contain a STORE method and does not inherit from anything.

It may be that the intention is to look at the super-class of the
object $dbh (it is in the class DBI::db), which does look like it can
provide a STORE method. If this is the case then the code needs to do
something to alter the current package to the correct one so that
SUPER does the right thing. I cannot tell what is really intended here
and when I did some changes myself to test and create a patch I
managed to get a segfault instead.

Any help gratefully received, thanks in advance,

Stephen Quinney

p.s. Please reply to me directly, I tried to get onto the mailing list
but the website dbi.perl.org, where I guess the subscribe interface
lives, is broken with a "Bad Gateway" error.



Attachment: signature.asc
Description: Digital signature

Reply via email to