Update TableChunker in pt-table-checksum. Include COUNT in test samples.

This commit is contained in:
Daniel Nichter
2011-08-27 11:26:00 -06:00
parent a7ab27bb54
commit 3c6edf6d71
4 changed files with 14 additions and 13 deletions

View File

@@ -2863,7 +2863,7 @@ sub _chunk_numeric {
sub _chunk_char { sub _chunk_char {
my ( $self, %args ) = @_; my ( $self, %args ) = @_;
my @required_args = qw(dbh db tbl tbl_struct chunk_col rows_in_range chunk_size); my @required_args = qw(dbh db tbl tbl_struct chunk_col min max rows_in_range chunk_size);
foreach my $arg ( @required_args ) { foreach my $arg ( @required_args ) {
die "I need a $arg argument" unless defined $args{$arg}; die "I need a $arg argument" unless defined $args{$arg};
} }
@@ -2874,12 +2874,7 @@ sub _chunk_char {
my $row; my $row;
my $sql; my $sql;
$sql = "SELECT MIN($chunk_col), MAX($chunk_col) FROM $db_tbl " my ($min_col, $max_col) = @{args}{qw(min max)};
. "ORDER BY `$chunk_col`";
MKDEBUG && _d($dbh, $sql);
$row = $dbh->selectrow_arrayref($sql);
my ($min_col, $max_col) = ($row->[0], $row->[1]);
$sql = "SELECT ORD(?) AS min_col_ord, ORD(?) AS max_col_ord"; $sql = "SELECT ORD(?) AS min_col_ord, ORD(?) AS max_col_ord";
MKDEBUG && _d($dbh, $sql); MKDEBUG && _d($dbh, $sql);
my $ord_sth = $dbh->prepare($sql); # avoid quoting issues my $ord_sth = $dbh->prepare($sql); # avoid quoting issues
@@ -2950,7 +2945,9 @@ sub _chunk_char {
MKDEBUG && _d("Base", $base, "chars:", @chars); MKDEBUG && _d("Base", $base, "chars:", @chars);
$sql = "SELECT MAX(LENGTH($chunk_col)) FROM $db_tbl ORDER BY `$chunk_col`"; $sql = "SELECT MAX(LENGTH($chunk_col)) FROM $db_tbl "
. ($args{where} ? "WHERE $args{where} " : "")
. "ORDER BY `$chunk_col`";
MKDEBUG && _d($dbh, $sql); MKDEBUG && _d($dbh, $sql);
$row = $dbh->selectrow_arrayref($sql); $row = $dbh->selectrow_arrayref($sql);
my $max_col_len = $row->[0]; my $max_col_len = $row->[0];

View File

@@ -132,7 +132,7 @@ ok(
qw(--no-zero-chunk --chunk-size 5), '--where', "date = '2011-03-03'"); qw(--no-zero-chunk --chunk-size 5), '--where', "date = '2011-03-03'");
}, },
"t/pt-table-checksum/samples/where01.out", "t/pt-table-checksum/samples/where01.out",
trf => "awk '{print \$1 \" \" \$2 \" \" \$3}'", trf => "awk '{print \$1 \" \" \$2 \" \" \$3 \" \" \$6}'",
), ),
"--where affects int range stats (bug 821673)" "--where affects int range stats (bug 821673)"
); );
@@ -150,7 +150,7 @@ ok(
qw(--no-zero-chunk --chunk-size 5), '--where', "date = '2011-03-03'"); qw(--no-zero-chunk --chunk-size 5), '--where', "date = '2011-03-03'");
}, },
"t/pt-table-checksum/samples/where02.out", "t/pt-table-checksum/samples/where02.out",
trf => "awk '{print \$1 \" \" \$2 \" \" \$3}'", trf => "awk '{print \$1 \" \" \$2 \" \" \$3 \" \" \$6}'",
), ),
"--where affects char range stats (bug 821673)" "--where affects char range stats (bug 821673)"
); );

View File

@@ -1,3 +1,3 @@
DATABASE TABLE CHUNK DATABASE TABLE CHUNK COUNT
test checksum_test 0 test checksum_test 0 2
test checksum_test 1 test checksum_test 1 3

View File

@@ -0,0 +1,4 @@
DATABASE TABLE CHUNK COUNT
test checksum_test 0 1
test checksum_test 1 4
test checksum_test 2 0