mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-29 09:32:47 +00:00
Merged fix-1038276-changehandler-hex-looking-vals
This commit is contained in:
@@ -2559,11 +2559,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -1741,11 +1741,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -76,11 +76,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -1470,11 +1470,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -1097,11 +1097,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -2396,11 +2396,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -455,11 +455,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -4148,11 +4148,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -2318,11 +2318,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -1481,11 +1481,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -473,11 +473,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -74,11 +74,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -3015,11 +3015,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -1564,11 +1564,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
@@ -3463,10 +3464,13 @@ sub make_UPDATE {
|
||||
else {
|
||||
@cols = $self->sort_cols($row);
|
||||
}
|
||||
my $types = $self->{tbl_struct}->{type_for};
|
||||
return "UPDATE $self->{dst_db_tbl} SET "
|
||||
. join(', ', map {
|
||||
my $is_char = ($types->{$_} || '') =~ m/char|text/i;
|
||||
$self->{Quoter}->quote($_)
|
||||
. '=' . $self->{Quoter}->quote_val($row->{$_})
|
||||
. '=' . $self->{Quoter}->quote_val($row->{$_},
|
||||
is_char => $is_char);
|
||||
} grep { !$in_where{$_} } @cols)
|
||||
. " WHERE $where LIMIT 1";
|
||||
}
|
||||
@@ -3500,11 +3504,15 @@ sub make_row {
|
||||
else {
|
||||
@cols = $self->sort_cols($row);
|
||||
}
|
||||
my $q = $self->{Quoter};
|
||||
my $q = $self->{Quoter};
|
||||
my $type_for = $self->{tbl_struct}->{type_for};
|
||||
return "$verb INTO $self->{dst_db_tbl}("
|
||||
. join(', ', map { $q->quote($_) } @cols)
|
||||
. ') VALUES ('
|
||||
. join(', ', map { $q->quote_val($_) } @{$row}{@cols} )
|
||||
. join(', ', map {
|
||||
my $is_char = ($type_for->{$_} || '') =~ m/char|text/i;
|
||||
$q->quote_val($row->{$_},
|
||||
is_char => $is_char) } @cols )
|
||||
. ')';
|
||||
}
|
||||
|
||||
@@ -3513,7 +3521,9 @@ sub make_where_clause {
|
||||
my @clauses = map {
|
||||
my $val = $row->{$_};
|
||||
my $sep = defined $val ? '=' : ' IS ';
|
||||
$self->{Quoter}->quote($_) . $sep . $self->{Quoter}->quote_val($val);
|
||||
my $is_char = ($self->{tbl_struct}->{type_for}->{$_} || '') =~ m/char|text/i;
|
||||
$self->{Quoter}->quote($_) . $sep . $self->{Quoter}->quote_val($val,
|
||||
is_char => $is_char);
|
||||
} @$cols;
|
||||
return join(' AND ', @clauses);
|
||||
}
|
||||
|
@@ -5486,11 +5486,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
|
@@ -909,11 +909,12 @@ sub quote {
|
||||
}
|
||||
|
||||
sub quote_val {
|
||||
my ( $self, $val ) = @_;
|
||||
my ( $self, $val, %args ) = @_;
|
||||
|
||||
return 'NULL' unless defined $val; # undef = NULL
|
||||
return "''" if $val eq ''; # blank string = ''
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/; # hex data
|
||||
return $val if $val =~ m/^0x[0-9a-fA-F]+$/ # quote hex data
|
||||
&& !$args{is_char}; # unless is_char is true
|
||||
|
||||
$val =~ s/(['\\])/\\$1/g;
|
||||
return "'$val'";
|
||||
@@ -4702,10 +4703,13 @@ sub make_UPDATE {
|
||||
else {
|
||||
@cols = $self->sort_cols($row);
|
||||
}
|
||||
my $types = $self->{tbl_struct}->{type_for};
|
||||
return "UPDATE $self->{dst_db_tbl} SET "
|
||||
. join(', ', map {
|
||||
my $is_char = ($types->{$_} || '') =~ m/char|text/i;
|
||||
$self->{Quoter}->quote($_)
|
||||
. '=' . $self->{Quoter}->quote_val($row->{$_})
|
||||
. '=' . $self->{Quoter}->quote_val($row->{$_},
|
||||
is_char => $is_char);
|
||||
} grep { !$in_where{$_} } @cols)
|
||||
. " WHERE $where LIMIT 1";
|
||||
}
|
||||
@@ -4739,11 +4743,15 @@ sub make_row {
|
||||
else {
|
||||
@cols = $self->sort_cols($row);
|
||||
}
|
||||
my $q = $self->{Quoter};
|
||||
my $q = $self->{Quoter};
|
||||
my $type_for = $self->{tbl_struct}->{type_for};
|
||||
return "$verb INTO $self->{dst_db_tbl}("
|
||||
. join(', ', map { $q->quote($_) } @cols)
|
||||
. ') VALUES ('
|
||||
. join(', ', map { $q->quote_val($_) } @{$row}{@cols} )
|
||||
. join(', ', map {
|
||||
my $is_char = ($type_for->{$_} || '') =~ m/char|text/i;
|
||||
$q->quote_val($row->{$_},
|
||||
is_char => $is_char) } @cols )
|
||||
. ')';
|
||||
}
|
||||
|
||||
@@ -4752,7 +4760,9 @@ sub make_where_clause {
|
||||
my @clauses = map {
|
||||
my $val = $row->{$_};
|
||||
my $sep = defined $val ? '=' : ' IS ';
|
||||
$self->{Quoter}->quote($_) . $sep . $self->{Quoter}->quote_val($val);
|
||||
my $is_char = ($self->{tbl_struct}->{type_for}->{$_} || '') =~ m/char|text/i;
|
||||
$self->{Quoter}->quote($_) . $sep . $self->{Quoter}->quote_val($val,
|
||||
is_char => $is_char);
|
||||
} @$cols;
|
||||
return join(' AND ', @clauses);
|
||||
}
|
||||
|
Reference in New Issue
Block a user