Okay, thanks. Tim.
p.s. The best way to identify a release candidate is with a post-it note on your monitor to remind you to install the full release over it :) On Wed, Nov 12, 2003 at 03:29:36PM -0000, Martin J. Evans wrote: > > On 12-Nov-2003 Tim Bunce wrote: > > On Wed, Nov 12, 2003 at 01:48:14PM -0000, Martin J. Evans wrote: > >> Tim, > >> > >> Whilst I'm trying to narrow this issue down to just DBI or DBD::ODBC here is > >> a > >> level 2 trace (against the now installed DBD::ODBC 1.06): > >> > >> [EMAIL PROTECTED] DBD-ODBC-1.06]$ perl -w x.pl > >> DBI 1.38-nothread dispatch trace level set to 2 > >> -> DBI->install_driver(ODBC) for linux perl=5.008 pid=22209 ruid=1000 > >> euid=1000 > >> install_driver: DBD::ODBC version 1.06 loaded from > >> /usr/local/lib/perl5/site_perl/5.8.0/i686-linux/DBD/ODBC.pm > >> <- install_driver= DBI::dr=HASH(0x81ea584) > >> -> data_sources for DBD::ODBC::dr (DBI::dr=HASH(0x81ea584)~0x8242454 > >> undef undef) > >> Usage: DBD::ODBC::dr::data_sources(drh, attr = NULL) at > >> /usr/local/lib/perl5/site_perl/5.8.0/i686-linux/DBI.pm line 964. > > > > Okay. The question now is were did the two undefs in the arguments > > to $drh->data_sources come from? > > Having stepped back to DBI 1.35 and worked forward upgrading what I thought I'd > done before I can no longer duplicate the problem. However, I suspect a DBI 1.38 > release candidate perhaps? > > See http://www.mail-archive.com/[EMAIL PROTECTED]/msg02376.html > and > http://www.mail-archive.com/[EMAIL PROTECTED]/msg02377.html > > So I guess I still had a release candidate on my machine - sorry for that, but > perhaps there should be some more obvious way of identifying release candidates. > > Martin > -- > Martin J. Evans > Easysoft Ltd, UK > > > > Tim. > > > >> >> my @data_sources = DBI->data_sources('ODBC'); > >> >> print "Data sources:\n\t", join("\n\t",@data_sources),"\n\n"; > >> >> > >> >> [EMAIL PROTECTED] DBD-ODBC-1.06]$ perl x.pl > >> >> Usage: DBD::ODBC::dr::data_sources(drh, attr = NULL) at > >> >> /usr/local/lib/perl5/site_perl/5.8.0/i686-linux/DBI.pm line 964. > >> > > >> > sub data_sources { > >> > my ($class, $driver, @other) = @_; > >> > my $drh = $class->install_driver($driver); > >> > my @ds = $drh->data_sources(@other); > >> > return @ds; > >> > } > >> > > >> > So $class would be "DBI", $driver would be "ODBC" and @other would be > >> > empty. > >> > So then data_sources should be called with only the $drh as a parameter > >> > and that shouldn't cause an error. > >> > > >> > Could you post a level 2 trace so we can see what's going on? > >> > > >> >> perldoc DBI appears to say: > >> >> @data_sources = DBI->data_sources($driver_name, \%attr, $dbh); > >> >> under SYNOPSIS and: > >> >> @ary = DBI->data_sources($driver); > >> >> @ary = DBI->data_sources($driver, \%attr); > >> >> under "data_sources" > >> >> > >> >> The above code works fine with DBI 1.13 and DBD::ODBC 0.28. > >> > > >> > It would be more helpful if you could narrow it down to one changed > >> > module instead of two. Also note that although the code that's failing > >> > is 'in' the driver, it's actually supplied by the DBI that's installed > >> > at the time the driver is compiled and installed. > >> > > >> > Tim. > >> > >
