use 5.6.1;
use Storable ();
use Digest::SHA1 ();
+use Carp::Clan qw/^DBIx::Class/;
use vars qw($VERSION);
# so the cache key is only affected by what the database sees
# and not any other cruft in $attrs
my $ref = $storage->_select_args_to_query(@{$args}[0..2], $attrs);
- my $connect_info = $storage->_dbi_connect_info;
- my ($dbname, $username);
- if (ref($connect_info->[0]) eq 'CODE') {
- my $dbh = $connect_info->[0]->();
+
+ my ($connect_info, $dbname, $username);
+ $connect_info = $storage->_dbi_connect_info;
+ if (my $dbh = $storage->_dbh) {
$dbname = $dbh->{Name};
$username = $dbh->{Username} || '';
- } else {
+ } elsif (! ref($connect_info->[0]) ) {
$dbname = $connect_info->[0];
$username = $connect_info->[1] || '';
+ } else {
+ carp "Invoking connector coderef $connect_info->[0] in order to obtain cache-lookup information";
+ my $dbh = $connect_info->[0]->();
+ $dbname = $dbh->{Name};
+ $username = $dbh->{Username} || '';
}
local $Storable::canonical = 1;