Eval checking each table in case the table goes away.

This commit is contained in:
Daniel Nichter
2012-08-15 16:35:45 -06:00
parent 3369a6c37d
commit 310105b976

View File

@@ -3405,6 +3405,7 @@ sub main {
); );
TABLE: TABLE:
while ( my $tbl = $schema_itr->next() ) { while ( my $tbl = $schema_itr->next() ) {
eval {
$tbl->{engine} = $tbl->{tbl_struct}->{engine}; $tbl->{engine} = $tbl->{tbl_struct}->{engine};
my ($keys, $clustered_key, $fks); my ($keys, $clustered_key, $fks);
@@ -3416,15 +3417,14 @@ sub main {
$fks = $tp->get_fks($tbl->{ddl}, {database => $tbl->{db}}); $fks = $tp->get_fks($tbl->{ddl}, {database => $tbl->{db}});
} }
next TABLE unless ($keys && %$keys) || ($fks && %$fks); if ( ($keys && %$keys) || ($fks && %$fks) ) {
if ( $o->got('verbose') ) { if ( $o->got('verbose') ) {
print_all_keys($keys, $tbl, \%seen_tbl) if $keys; print_all_keys($keys, $tbl, \%seen_tbl) if $keys;
print_all_keys($fks, $tbl, \%seen_tbl) if $fks; print_all_keys($fks, $tbl, \%seen_tbl) if $fks;
} }
else { else {
PTDEBUG && _d('Getting duplicate keys on', $tbl->{db}, $tbl->{tbl}); PTDEBUG && _d('Getting duplicate keys on',
eval { $tbl->{db}, $tbl->{tbl});
if ( $keys ) { if ( $keys ) {
$dk->get_duplicate_keys( $dk->get_duplicate_keys(
$keys, $keys,
@@ -3462,17 +3462,17 @@ sub main {
summary => \%summary, summary => \%summary,
); );
} }
};
if ( $EVAL_ERROR ) {
warn "Error checking `$tbl->{db}`.`$tbl->{tbl}` for duplicate keys: "
. $EVAL_ERROR;
next TABLE;
}
} }
# Always count Total Keys so print_key_summary won't die # Always count Total Keys so print_key_summary won't die
# because %summary is empty. # because %summary is empty.
$summary{'Total Indexes'} += (scalar keys %$keys) + (scalar keys %$fks) $summary{'Total Indexes'} += (scalar keys %$keys)
+ (scalar keys %$fks)
}
};
if ( $EVAL_ERROR ) {
warn "Error checking $tbl->{db}.$tbl->{tbl}: $EVAL_ERROR";
}
} # TABLE } # TABLE
print_key_summary(%summary) if $o->get('summary'); print_key_summary(%summary) if $o->get('summary');