Commit 584cfcbe authored by Igor Babaev's avatar Igor Babaev

Made the process of collecting persistent statistics killable.

parent 85db0298
......@@ -716,6 +716,8 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
!(compl_result_code=
collect_statistics_for_table(thd, table->table)))
compl_result_code= update_statistics_for_table(thd, table->table);
if (compl_result_code)
result_code= HA_ADMIN_FAILED;
}
if (result_code == HA_ADMIN_NOT_IMPLEMENTED && need_repair_or_alter)
......
......@@ -1926,7 +1926,7 @@ void Column_statistics_collected::finish(ha_rows rows)
*/
static
int collect_statistics_for_index(TABLE *table, uint index)
int collect_statistics_for_index(THD *thd, TABLE *table, uint index)
{
int rc= 0;
KEY *key_info= &table->key_info[index];
......@@ -1944,6 +1944,9 @@ int collect_statistics_for_index(TABLE *table, uint index)
rc= table->file->ha_index_first(table->record[0]);
while (rc != HA_ERR_END_OF_FILE)
{
if (thd->killed)
break;
if (rc)
break;
rows++;
......@@ -1953,7 +1956,7 @@ int collect_statistics_for_index(TABLE *table, uint index)
table->key_read= 0;
table->file->ha_index_end();
rc= (rc == HA_ERR_END_OF_FILE) ? 0 : 1;
rc= (rc == HA_ERR_END_OF_FILE && !thd->killed) ? 0 : 1;
if (!rc)
index_prefix_calc.get_avg_frequency();
......@@ -2040,6 +2043,9 @@ int collect_statistics_for_table(THD *thd, TABLE *table)
{
while ((rc= file->ha_rnd_next(table->record[0])) != HA_ERR_END_OF_FILE)
{
if (thd->killed)
break;
if (rc)
break;
......@@ -2054,7 +2060,7 @@ int collect_statistics_for_table(THD *thd, TABLE *table)
}
file->ha_rnd_end();
}
rc= rc == HA_ERR_END_OF_FILE ? 0 : 1;
rc= (rc == HA_ERR_END_OF_FILE && !thd->killed) ? 0 : 1;
/*
Calculate values for all statistical characteristics on columns and
......@@ -2087,7 +2093,7 @@ int collect_statistics_for_table(THD *thd, TABLE *table)
/* Collect statistics for indexes */
while ((key= it++) != key_map::Iterator::BITMAP_END)
{
if ((rc= collect_statistics_for_index(table, key)))
if ((rc= collect_statistics_for_index(thd, table, key)))
break;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment