From: Justin Hunter Date: Tue, 25 Jan 2011 12:32:18 +0000 (+0000) Subject: streamlined db connection disambiguation, per Tim Bunce X-Git-Tag: v1.1.0~3 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=366de7a2760cd823832ad0d7b9503a6892c56f06;p=dbsrgits%2FDBIx-Class-Cursor-Cached.git streamlined db connection disambiguation, per Tim Bunce --- 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} || '' ] )); }