streamlined db connection disambiguation, per Tim Bunce
Justin Hunter [Tue, 25 Jan 2011 12:32:18 +0000 (12:32 +0000)]
lib/DBIx/Class/Cursor/Cached.pm

index 70bd04a..b9a9ec6 100644 (file)
@@ -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} || '' ] ));
 
 }