diff options
author | konstantin@mysql.com <> | 2004-02-06 14:28:57 +0300 |
---|---|---|
committer | konstantin@mysql.com <> | 2004-02-06 14:28:57 +0300 |
commit | 2093624a732c5bec57db3460d2297356e07c4946 (patch) | |
tree | 02ab95be219033200e8a697bc32e7e67f7377ae3 /sql | |
parent | 62f193bfdd458d8612158155100dcab23f00e262 (diff) | |
download | mariadb-git-2093624a732c5bec57db3460d2297356e07c4946.tar.gz |
Fix for bug #2628 "ALTER TABLE destroys table and reports success"
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_table.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index f273821c5e0..04dfd8a1fbd 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1151,7 +1151,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, thd->proc_info="init"; table_name=table_list->real_name; db=table_list->db; - if (!new_db) + if (!new_db || !strcmp(new_db, db)) new_db=db; if (!(table=open_ltable(thd,table_list,TL_WRITE_ALLOW_READ))) @@ -1161,14 +1161,20 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, if (new_name) { strmov(new_name_buff,new_name); - fn_same(new_name_buff,table_name,3); if (lower_case_table_names) casedn_str(new_name); - if ((lower_case_table_names && - !my_strcasecmp(new_name_buff,table_name)) || - (!lower_case_table_names && + if (new_db == db && + (lower_case_table_names && + !my_strcasecmp(new_name_buff,table_name) || + !lower_case_table_names && !strcmp(new_name_buff,table_name))) - new_name=table_name; // No. Make later check easier + { + /* + Source and destination table names are equal: make later check + easier. + */ + new_name= table_name; + } else { if (table->tmp_table) |