X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCursor%2FCached.pm;fp=lib%2FDBIx%2FClass%2FCursor%2FCached.pm;h=b9a9ec69aaf1014702b2f3091d4303bc89358ca5;hb=366de7a2760cd823832ad0d7b9503a6892c56f06;hp=70bd04a8f0f081e82eebc6bf1fddf72ecbe9d8a8;hpb=539f1573040a87f18f91655554956bcdd9d34b79;p=dbsrgits%2FDBIx-Class-Cursor-Cached.git diff --git a/lib/DBIx/Class/Cursor/Cached.pm b/lib/DBIx/Class/Cursor/Cached.pm index 70bd04a..b9a9ec6 100644 --- a/lib/DBIx/Class/Cursor/Cached.pm +++ b/lib/DBIx/Class/Cursor/Cached.pm @@ -54,23 +54,19 @@ sub _build_cache_key { # and not any other cruft in $attrs my $ref = $storage->_select_args_to_query(@{$args}[0..2], $attrs); - my ($connect_info, $dbname, $username); - $connect_info = $storage->_dbi_connect_info; - if (my $dbh = $storage->_dbh) { - $dbname = $dbh->{Name}; - $username = $dbh->{Username} || ''; - } 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} || ''; + my $conn; + if (! ($conn = $storage->_dbh) ) { + my $connect_info = $storage->_dbi_connect_info; + if (! ref($connect_info->[0]) ) { + $conn = { Name => $connect_info->[0], Username => $connect_info->[1] }; + } else { + carp "Invoking connector coderef $connect_info->[0] in order to obtain cache-lookup information"; + $conn = $connect_info->[0]->(); + } } local $Storable::canonical = 1; - return Digest::SHA1::sha1_hex(Storable::nfreeze( [ $ref, $dbname, $username ] )); + return Digest::SHA1::sha1_hex(Storable::nfreeze( [ $ref, $conn->{Name}, $conn->{Username} || '' ] )); }