On Fri, Jun 17, 2005 at 05:49:01PM -0700, Peter Scott wrote: > The connected() method of subclasses doesn't get all the attribute > that were set by the caller; three of them are deleted first: > > DBI.pm: > 643 foreach $a (qw(RaiseError PrintError AutoCommit)) { # do > the > se first > 644 next unless exists $attr->{$a}; > 645 $dbh->{$a} = delete $attr->{$a}; > 646 } > 647 foreach $a (keys %$attr) { > 648 eval { $dbh->{$a} = $attr->{$a} } or $@ && warn $@; > 649 } > 650 } > 651 > 652 # if we've been subclassed then let the subclass know that > we're > connected > 653 $dbh->connected($dsn, $user, $pass, $attr) if ref $dbh ne > 'DBI:: > dbh; > > I'd rather like to get those attributes in my subclass. Would a > patch be accepted?
They're only deleted as they're applied to the handle, so connected() can get the values from the handle. > Likewise - and this is more debatable - the $dsn passed to > connected() has had the driver prefix stripped off so you can't > tell which driver was used. You can get it from $dbh->{Driver}->{Name} (unless you're using DBI_AUTOPROXY, I think). > That information would be most valuable to my application. Why? > It does seem from reading the documentation > as though the expectation is that connected() will get the same > arguments as connect(), so would a patch for this be accepted also? A documentation patch? :) Tim.