Fixes for bugs 1074179 and the ptc part of 1050737: division by zero errors when nibble_time is zero

This commit is contained in:
Brian Fraser
2012-11-09 10:32:22 -03:00
parent fb345eb3fd
commit 9b4c80fd0f
2 changed files with 40 additions and 5 deletions

View File

@@ -9232,14 +9232,15 @@ sub main {
# Update the rate of rows per second for the entire server.
# This is used for the initial chunk size of the next table.
$total_rows += $cnt;
$total_time += $tbl->{nibble_time};
$total_rate = int($total_rows / $total_time);
$total_time += ($tbl->{nibble_time} || 0);
$total_rate = $total_time ? int($total_rows / $total_time) : 0;
PTDEBUG && _d('Total avg rate:', $total_rate);
# Adjust chunk size. This affects the next chunk.
if ( $o->get('chunk-time') ) {
$tbl->{chunk_size}
= $tbl->{rate}->update($cnt, $tbl->{nibble_time});
$tbl->{chunk_size} = $tbl->{nibble_time}
? $tbl->{rate}->update($cnt, $tbl->{nibble_time})
: $o->get('chunk-time');
if ( $tbl->{chunk_size} < 1 ) {
# This shouldn't happen. WeightedAvgRate::update() may return
@@ -9255,7 +9256,7 @@ sub main {
. "or increase --chunk-time. The last chunk, number "
. "$chunk of table $tbl->{db}.$tbl->{tbl}, "
. "selected $cnt rows and took "
. sprintf('%.3f', $tbl->{nibble_time})
. sprintf('%.3f', $tbl->{nibble_time} || 0)
. " seconds to execute.\n");
}
}