mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-12-21 02:00:45 +08:00
Merged fix-1050737-1075638-ptc-division-by-zero-nibble_time
This commit is contained in:
@@ -9477,14 +9477,15 @@ sub main {
|
|||||||
# Update the rate of rows per second for the entire server.
|
# Update the rate of rows per second for the entire server.
|
||||||
# This is used for the initial chunk size of the next table.
|
# This is used for the initial chunk size of the next table.
|
||||||
$total_rows += $cnt;
|
$total_rows += $cnt;
|
||||||
$total_time += $tbl->{nibble_time};
|
$total_time += ($tbl->{nibble_time} || 0);
|
||||||
$total_rate = int($total_rows / $total_time);
|
$total_rate = $total_time ? int($total_rows / $total_time) : 0;
|
||||||
PTDEBUG && _d('Total avg rate:', $total_rate);
|
PTDEBUG && _d('Total avg rate:', $total_rate);
|
||||||
|
|
||||||
# Adjust chunk size. This affects the next chunk.
|
# Adjust chunk size. This affects the next chunk.
|
||||||
if ( $o->get('chunk-time') ) {
|
if ( $o->get('chunk-time') ) {
|
||||||
$tbl->{chunk_size}
|
$tbl->{chunk_size} = $tbl->{nibble_time}
|
||||||
= $tbl->{rate}->update($cnt, $tbl->{nibble_time});
|
? $tbl->{rate}->update($cnt, $tbl->{nibble_time})
|
||||||
|
: $o->get('chunk-time');
|
||||||
|
|
||||||
if ( $tbl->{chunk_size} < 1 ) {
|
if ( $tbl->{chunk_size} < 1 ) {
|
||||||
# This shouldn't happen. WeightedAvgRate::update() may return
|
# This shouldn't happen. WeightedAvgRate::update() may return
|
||||||
@@ -9500,7 +9501,7 @@ sub main {
|
|||||||
. "or increase --chunk-time. The last chunk, number "
|
. "or increase --chunk-time. The last chunk, number "
|
||||||
. "$chunk of table $tbl->{db}.$tbl->{tbl}, "
|
. "$chunk of table $tbl->{db}.$tbl->{tbl}, "
|
||||||
. "selected $cnt rows and took "
|
. "selected $cnt rows and took "
|
||||||
. sprintf('%.3f', $tbl->{nibble_time})
|
. sprintf('%.3f', $tbl->{nibble_time} || 0)
|
||||||
. " seconds to execute.\n");
|
. " seconds to execute.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,40 @@ like(
|
|||||||
"Bug 1016131: ptc should skip tables where all columns are excluded"
|
"Bug 1016131: ptc should skip tables where all columns are excluded"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# #############################################################################
|
||||||
|
# Illegal division by zero at pt-table-checksum line 7950
|
||||||
|
# https://bugs.launchpad.net/percona-toolkit/+bug/1075638
|
||||||
|
# and the ptc part of
|
||||||
|
# divison by zero errors on default Gentoo mysql
|
||||||
|
# https://bugs.launchpad.net/percona-toolkit/+bug/1050737
|
||||||
|
# #############################################################################
|
||||||
|
|
||||||
|
{
|
||||||
|
no warnings qw(redefine once);
|
||||||
|
my $orig = \&Time::HiRes::time;
|
||||||
|
my $time = Time::HiRes::time();
|
||||||
|
local *pt_table_checksum::time = local *Time::HiRes::time = sub { $time };
|
||||||
|
|
||||||
|
($output) = output(
|
||||||
|
sub { pt_table_checksum::main(@args,
|
||||||
|
qw(--replicate=pt.checksums -t test.t --chunk-size 10))
|
||||||
|
},
|
||||||
|
stderr => 1
|
||||||
|
);
|
||||||
|
|
||||||
|
unlike(
|
||||||
|
$output,
|
||||||
|
qr/Illegal division by zero/,
|
||||||
|
"Bugs 1075638 and 1050737: No division by zero error when nibble_time is zero"
|
||||||
|
);
|
||||||
|
|
||||||
|
is(
|
||||||
|
PerconaTest::count_checksum_results($output, 'diffs'),
|
||||||
|
3,
|
||||||
|
"Bug 1075638 and 1050737: ...And we get the correct number of diffs"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
# pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves
|
# pt-table-checksum doesn't warn if binlog_format=row or mixed on slaves
|
||||||
# https://bugs.launchpad.net/percona-toolkit/+bug/938068
|
# https://bugs.launchpad.net/percona-toolkit/+bug/938068
|
||||||
|
|||||||
Reference in New Issue
Block a user