mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-22 11:54:54 +00:00
Update DSNParser in all tools.
This commit is contained in:
@@ -1053,6 +1053,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1107,7 +1109,8 @@ sub parse {
|
||||
my %final_props;
|
||||
my $opts = $self->{opts};
|
||||
|
||||
foreach my $dsn_part ( split(/,/, $dsn) ) {
|
||||
foreach my $dsn_part ( split($dsn_sep, $dsn) ) {
|
||||
$dsn_part =~ s/\\,/,/g;
|
||||
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||
$given_props{$prop_key} = $prop_val;
|
||||
}
|
||||
@@ -1166,12 +1169,14 @@ sub parse_options {
|
||||
sub as_string {
|
||||
my ( $self, $dsn, $props ) = @_;
|
||||
return $dsn unless ref $dsn;
|
||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
||||
my @keys = $props ? @$props : sort keys %$dsn;
|
||||
return join(',',
|
||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
||||
grep { !$props || $allowed{$_} }
|
||||
sort keys %$dsn );
|
||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||
grep {
|
||||
exists $self->{opts}->{$_}
|
||||
&& exists $dsn->{$_}
|
||||
&& defined $dsn->{$_}
|
||||
} @keys);
|
||||
}
|
||||
|
||||
sub usage {
|
||||
|
Reference in New Issue
Block a user