Changeset 159 for branches

Show
Ignore:
Timestamp:
02/10/09 00:02:50 (10 months ago)
Author:
swistow
Message:

Extract the dsn and user from a passed driver so that we can hash correctly.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/use-existing-dbh/lib/TheSchwartz.pm

    r156 r159  
    6161    my($list) = @_; 
    6262    for my $ref (@$list) { 
    63         my $full = ($ref->{driver}) ? rand().time().{}.$$ : join '|', map { $ref->{$_} || '' } qw( dsn user pass ); 
     63        my $var; 
     64        my @parts; 
     65        if ($ref->{driver}) { 
     66            my $dbh  = tied(%{$ref->{driver}->dbh}); 
     67            my $dsn  = "dbd:".$dbh->{Driver}->{Name}.":".$dbh->{Name}; 
     68            my $user = $dbh->{Username} || '';  
     69            @parts   = ($dsn, $user);    
     70        } else { 
     71            @parts   = map { $ref->{$_} || '' } qw(dsn user); 
     72        } 
     73        my $full = join '|', @parts; 
    6474        $client->{databases}{ md5_hex($full) } = $ref; 
    6575    }