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::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1508,7 +1510,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1567,12 +1570,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1053,6 +1053,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1107,7 +1109,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -1213,6 +1213,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1267,7 +1269,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1326,12 +1329,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -923,6 +923,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -977,7 +979,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1036,12 +1039,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
17
bin/pt-find
17
bin/pt-find
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -141,12 +144,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1130,6 +1130,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1184,7 +1186,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1243,12 +1246,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1761,6 +1761,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1815,7 +1817,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1874,12 +1877,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -141,12 +144,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1190,7 +1192,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -2008,6 +2008,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -2062,7 +2064,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -2121,12 +2124,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1190,7 +1192,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -141,12 +144,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1053,6 +1053,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1107,7 +1109,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1166,12 +1169,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1136,6 +1136,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1190,7 +1192,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1249,12 +1252,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1053,6 +1053,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1107,7 +1109,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1166,12 +1169,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1213,6 +1213,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1267,7 +1269,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1326,12 +1329,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -1172,6 +1172,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1226,7 +1228,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -82,7 +84,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
|
@@ -1053,6 +1053,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1107,7 +1109,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1166,12 +1169,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
@@ -1725,6 +1725,8 @@ use Data::Dumper;
|
|||||||
$Data::Dumper::Indent = 0;
|
$Data::Dumper::Indent = 0;
|
||||||
$Data::Dumper::Quotekeys = 0;
|
$Data::Dumper::Quotekeys = 0;
|
||||||
|
|
||||||
|
my $dsn_sep = qr/(?<!\\),/;
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
require DBI;
|
require DBI;
|
||||||
};
|
};
|
||||||
@@ -1779,7 +1781,8 @@ sub parse {
|
|||||||
my %final_props;
|
my %final_props;
|
||||||
my $opts = $self->{opts};
|
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/^(.)=(.*)$/ ) {
|
if ( my ($prop_key, $prop_val) = $dsn_part =~ m/^(.)=(.*)$/ ) {
|
||||||
$given_props{$prop_key} = $prop_val;
|
$given_props{$prop_key} = $prop_val;
|
||||||
}
|
}
|
||||||
@@ -1838,12 +1841,14 @@ sub parse_options {
|
|||||||
sub as_string {
|
sub as_string {
|
||||||
my ( $self, $dsn, $props ) = @_;
|
my ( $self, $dsn, $props ) = @_;
|
||||||
return $dsn unless ref $dsn;
|
return $dsn unless ref $dsn;
|
||||||
my %allowed = $props ? map { $_=>1 } @$props : ();
|
my @keys = $props ? @$props : sort keys %$dsn;
|
||||||
return join(',',
|
return join(',',
|
||||||
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
map { "$_=" . ($_ eq 'p' ? '...' : $dsn->{$_}) }
|
||||||
grep { defined $dsn->{$_} && $self->{opts}->{$_} }
|
grep {
|
||||||
grep { !$props || $allowed{$_} }
|
exists $self->{opts}->{$_}
|
||||||
sort keys %$dsn );
|
&& exists $dsn->{$_}
|
||||||
|
&& defined $dsn->{$_}
|
||||||
|
} @keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub usage {
|
sub usage {
|
||||||
|
Reference in New Issue
Block a user