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:
@@ -1454,6 +1454,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1508,7 +1510,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;
|
||||
}
|
||||
@@ -1567,12 +1570,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 {
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -1213,6 +1213,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1267,7 +1269,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;
|
||||
}
|
||||
@@ -1326,12 +1329,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 {
|
||||
|
@@ -923,6 +923,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -977,7 +979,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;
|
||||
}
|
||||
@@ -1036,12 +1039,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 {
|
||||
|
17
bin/pt-find
17
bin/pt-find
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
@@ -141,12 +144,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 {
|
||||
|
@@ -1130,6 +1130,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1184,7 +1186,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;
|
||||
}
|
||||
@@ -1243,12 +1246,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 {
|
||||
|
@@ -1761,6 +1761,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1815,7 +1817,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;
|
||||
}
|
||||
@@ -1874,12 +1877,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 {
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
@@ -141,12 +144,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 {
|
||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1190,7 +1192,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;
|
||||
}
|
||||
|
@@ -2008,6 +2008,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -2062,7 +2064,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;
|
||||
}
|
||||
@@ -2121,12 +2124,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 {
|
||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1190,7 +1192,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;
|
||||
}
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
@@ -141,12 +144,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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1190,7 +1192,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;
|
||||
}
|
||||
@@ -1249,12 +1252,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 {
|
||||
|
@@ -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 {
|
||||
|
@@ -1213,6 +1213,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1267,7 +1269,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;
|
||||
}
|
||||
@@ -1326,12 +1329,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 {
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
|
@@ -1172,6 +1172,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1226,7 +1228,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;
|
||||
}
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -82,7 +84,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;
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
@@ -1725,6 +1725,8 @@ use Data::Dumper;
|
||||
$Data::Dumper::Indent = 0;
|
||||
$Data::Dumper::Quotekeys = 0;
|
||||
|
||||
my $dsn_sep = qr/(?<!\\),/;
|
||||
|
||||
eval {
|
||||
require DBI;
|
||||
};
|
||||
@@ -1779,7 +1781,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;
|
||||
}
|
||||
@@ -1838,12 +1841,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