mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Bug#35161: --myisam-recover does not work for partitioned MyISAM tables
Problem was that auto_repair, is_crashed and check_and_repair was not implemented in ha_partition. Solution, implemented them as loop over all partitions for is_crashed and check_and_repair, and using the first partition for auto_repair. (Recommit after fixing review comments) mysql-test/lib/mtr_report.pl: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Added filter for crashed tables, when testing auto repair mysql-test/std_data/corrupt_t1#P#p1.MYI: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Corrupt MYI file for testing auto repair mysql-test/std_data/corrupt_t1.MYI: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Corrupt MYI file for testing auto repair mysql-test/suite/parts/r/partition_repair_myisam.result: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Result file for testing auto repair of crashed myisam partitions mysql-test/suite/parts/t/partition_repair_myisam-master.opt: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables opt file for testing auto repair of crashed myisam partitions mysql-test/suite/parts/t/partition_repair_myisam.test: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Test file for testing auto repair of crashed myisam partitions sql/ha_partition.cc: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Added auto_repair as returning the first partitions auto_repair Added is_crashed and check_and_repair as loop over all partitions sql/ha_partition.h: Bug#35161: --myisam-recover does not work for partitioned MyISAM tables Activating check_and_repair, auto_repair and is_crashed
This commit is contained in:
@@ -1129,6 +1129,70 @@ int ha_partition::handle_opt_partitions(THD *thd, HA_CHECK_OPT *check_opt,
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@brief Check and repair the table if neccesary
|
||||
|
||||
@param thd Thread object
|
||||
|
||||
@retval TRUE Error/Not supported
|
||||
@retval FALSE Success
|
||||
*/
|
||||
|
||||
bool ha_partition::check_and_repair(THD *thd)
|
||||
{
|
||||
handler **file= m_file;
|
||||
DBUG_ENTER("ha_partition::check_and_repair");
|
||||
|
||||
do
|
||||
{
|
||||
if ((*file)->ha_check_and_repair(thd))
|
||||
DBUG_RETURN(TRUE);
|
||||
} while (*(++file));
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@breif Check if the table can be automatically repaired
|
||||
|
||||
@retval TRUE Can be auto repaired
|
||||
@retval FALSE Cannot be auto repaired
|
||||
*/
|
||||
|
||||
bool ha_partition::auto_repair() const
|
||||
{
|
||||
DBUG_ENTER("ha_partition::auto_repair");
|
||||
|
||||
/*
|
||||
As long as we only support one storage engine per table,
|
||||
we can use the first partition for this function.
|
||||
*/
|
||||
DBUG_RETURN(m_file[0]->auto_repair());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@breif Check if the table is crashed
|
||||
|
||||
@retval TRUE Crashed
|
||||
@retval FALSE Not crashed
|
||||
*/
|
||||
|
||||
bool ha_partition::is_crashed() const
|
||||
{
|
||||
handler **file= m_file;
|
||||
DBUG_ENTER("ha_partition::is_crashed");
|
||||
|
||||
do
|
||||
{
|
||||
if ((*file)->is_crashed())
|
||||
DBUG_RETURN(TRUE);
|
||||
} while (*(++file));
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Prepare by creating a new partition
|
||||
|
||||
|
Reference in New Issue
Block a user