mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-21889 IF EXISTS clause does not work for RENAME COLUMN and RENAME INDEX
This commit is contained in:
@ -6256,7 +6256,7 @@ drop_create_field:
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle ALTER COLUMN IF EXISTS SET/DROP DEFAULT. */
|
||||
/* Handle ALTER/RENAME COLUMN IF EXISTS. */
|
||||
{
|
||||
List_iterator<Alter_column> it(alter_info->alter_list);
|
||||
Alter_column *acol;
|
||||
@ -6424,6 +6424,35 @@ drop_create_field:
|
||||
alter_info->flags|= left_flags;
|
||||
}
|
||||
|
||||
/* Handle RENAME KEY IF EXISTS. */
|
||||
{
|
||||
List_iterator<Alter_rename_key> rename_key_it(alter_info->alter_rename_key_list);
|
||||
Alter_rename_key *rename_key;
|
||||
while ((rename_key= rename_key_it++))
|
||||
{
|
||||
if (!rename_key->alter_if_exists)
|
||||
continue;
|
||||
bool exists= false;
|
||||
for (uint n_key= 0; n_key < table->s->keys; n_key++)
|
||||
{
|
||||
if (my_strcasecmp(system_charset_info,
|
||||
rename_key->old_name.str,
|
||||
table->key_info[n_key].name.str) == 0)
|
||||
{
|
||||
exists= true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (exists)
|
||||
continue;
|
||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
|
||||
ER_KEY_DOES_NOT_EXISTS,
|
||||
ER_THD(thd, ER_KEY_DOES_NOT_EXISTS),
|
||||
rename_key->old_name.str, table->s->table_name.str);
|
||||
rename_key_it.remove();
|
||||
}
|
||||
}
|
||||
|
||||
/* ALTER TABLE ADD KEY IF NOT EXISTS */
|
||||
/* ALTER TABLE ADD FOREIGN KEY IF NOT EXISTS */
|
||||
{
|
||||
|
Reference in New Issue
Block a user