1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

better fix for bug#3749 - do not consider already removed keys in key removal process

This commit is contained in:
serg@serg.mylan
2004-05-14 12:49:18 +02:00
parent a71771788e
commit 67f1c04ffc
3 changed files with 41 additions and 15 deletions

View File

@ -688,9 +688,10 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
'generated', and a generated key is a prefix of the other key. Then we
do not need the generated shorter key.
*/
if ((key2->type != Key::FOREIGN_KEY && !foreign_key_prefix(key, key2)))
if (key2->name != ignore_key && key2->type != Key::FOREIGN_KEY &&
!foreign_key_prefix(key, key2))
{
/* TO DO: issue warning message */
/* TODO: issue warning message */
/* mark that the generated key should be ignored */
if (!key2->generated ||
(key->generated && key->columns.elements <
@ -698,17 +699,9 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
key->name= ignore_key;
else
{
/*
Remove the previous, generated key if it has not yet been
removed. Note that if we have several identical generated keys,
the last one will remain and others get removed here.
*/
if (key2->name != ignore_key)
{
key2->name= ignore_key;
key_parts-= key2->columns.elements;
(*key_count)--;
}
key2->name= ignore_key;
key_parts-= key2->columns.elements;
(*key_count)--;
}
break;
}