Merged fix-889739-pt-cd-quoted-strings and added the new sample files

This commit is contained in:
Brian Fraser fraserb@gmail.com
2012-08-01 15:02:28 -03:00
6 changed files with 52 additions and 2 deletions

View File

@@ -2171,6 +2171,13 @@ sub _parse_varvals {
$val = ''; $val = '';
} }
else { else {
$val =~ s/
\A # Start of value
(['"]) # Opening quote
(.*) # Value
\1 # Closing quote
[\n\r]*\z # End of value
/$2/x;
if ( my ($num, $factor) = $val =~ m/(\d+)([KMGT])b?$/i ) { if ( my ($num, $factor) = $val =~ m/(\d+)([KMGT])b?$/i ) {
my %factor_for = ( my %factor_for = (
k => 1_024, k => 1_024,

View File

@@ -371,6 +371,13 @@ sub _parse_varvals {
$val = ''; $val = '';
} }
else { else {
$val =~ s/
\A # Start of value
(['"]) # Opening quote
(.*) # Value
\1 # Closing quote
[\n\r]*\z # End of value
/$2/x;
if ( my ($num, $factor) = $val =~ m/(\d+)([KMGT])b?$/i ) { if ( my ($num, $factor) = $val =~ m/(\d+)([KMGT])b?$/i ) {
# value is a size like 1k, 16M, etc. # value is a size like 1k, 16M, etc.
my %factor_for = ( my %factor_for = (

View File

@@ -9,7 +9,7 @@ BEGIN {
use strict; use strict;
use warnings FATAL => 'all'; use warnings FATAL => 'all';
use English qw(-no_match_vars); use English qw(-no_match_vars);
use Test::More tests => 16; use Test::More;
use TextResultSetParser(); use TextResultSetParser();
use MySQLConfigComparer; use MySQLConfigComparer;
@@ -369,6 +369,29 @@ $c2 = new MySQLConfig(
) or print Dumper($diff); ) or print Dumper($diff);
} }
# ############################################################################
# https://bugs.launchpad.net/percona-toolkit/+bug/889739
# pt-config-diff doesn't diff quoted strings properly
# ############################################################################
$c1 = new MySQLConfig(
file => "$trunk/$sample/quoted_cnf.txt",
TextResultSetParser => $trp,
);
$c2 = new MySQLConfig(
file => "$trunk/$sample/unquoted_cnf.txt",
TextResultSetParser => $trp,
);
{
my $diff = $cc->diff(
configs => [$c1, $c2],
);
is_deeply(
$diff,
undef,
"Values are the same regardless of quoting"
) or diag(Dumper($diff));
}
# ############################################################################# # #############################################################################
# Done. # Done.
# ############################################################################# # #############################################################################
@@ -382,4 +405,5 @@ like(
qr/Complete test coverage/, qr/Complete test coverage/,
'_d() works' '_d() works'
); );
exit;
done_testing;

View File

@@ -0,0 +1,6 @@
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
init-connect='SET NAMES utf8'

View File

@@ -0,0 +1,6 @@
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
init-connect=SET NAMES utf8

0
t/lib/samples/empty.txt Normal file
View File