diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 700ce54cf95..890ab7998ac 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -15102,11 +15102,18 @@ bool prepare_fields_and_keys(THD *thd, const dd::Table *src_table, TABLE *table, // Erase all alter operations that operate on this index. for (auto it = index_visibility_list.begin(); - it < index_visibility_list.end();) - if (my_strcasecmp(system_charset_info, key_name, (*it)->name()) == 0) + it < index_visibility_list.end();) { + if (my_strcasecmp(system_charset_info, key_name, (*it)->name()) == 0) { + if (table->s->primary_key <= MAX_KEY && + table->key_info + table->s->primary_key == key_info) { + my_error(ER_PK_INDEX_CANT_BE_INVISIBLE, MYF(0)); + return true; + } + key_create_info.is_visible = (*it)->is_visible(); index_visibility_list.erase(it); - else + } else ++it; + } if (key_info->is_algorithm_explicit) { key_create_info.algorithm = key_info->algorithm; @@ -15138,19 +15145,6 @@ bool prepare_fields_and_keys(THD *thd, const dd::Table *src_table, TABLE *table, key_create_info.m_secondary_engine_attribute = key_info->secondary_engine_attribute; - for (const Alter_index_visibility *alter_index_visibility : - alter_info->alter_index_visibility_list) { - const char *name = alter_index_visibility->name(); - if (my_strcasecmp(system_charset_info, key_name, name) == 0) { - if (table->s->primary_key <= MAX_KEY && - table->key_info + table->s->primary_key == key_info) { - my_error(ER_PK_INDEX_CANT_BE_INVISIBLE, MYF(0)); - return true; - } - key_create_info.is_visible = alter_index_visibility->is_visible(); - } - } - if (key_info->flags & HA_SPATIAL) key_type = KEYTYPE_SPATIAL; else if (key_info->flags & HA_NOSAME) {