summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <vva@eagle.mysql.r18.ru>2004-03-14 01:31:30 +0400
committerunknown <vva@eagle.mysql.r18.ru>2004-03-14 01:31:30 +0400
commitb9793c5473f7a0b2a2b011d0897ba2667450a91c (patch)
treefb0387ba3be89722d2976971f7b30de9a601a4b5 /sql
parent8b11f1c10620b40c9fa654f3738daeab4369f8b6 (diff)
downloadmariadb-git-b9793c5473f7a0b2a2b011d0897ba2667450a91c.tar.gz
fixed bug #856 'Naming a key "Primary" causes trouble'
mysql-test/r/create.result: added test for bug #856 'Naming a key "Primary" causes trouble' mysql-test/t/create.test: added test for bug #856 'Naming a key "Primary" causes trouble'
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_table.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index ee11b7b9da0..200511481b1 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -639,6 +639,12 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name,
DBUG_RETURN(-1);
}
key_parts+=key->columns.elements;
+ if (key->name && !tmp_table &&
+ !my_strcasecmp(system_charset_info,key->name,primary_key_name))
+ {
+ my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name);
+ DBUG_RETURN(-1);
+ }
}
tmp=min(file->max_keys(), MAX_KEY);
if (key_count > tmp)
@@ -1079,7 +1085,8 @@ make_unique_key_name(const char *field_name,KEY *start,KEY *end)
{
char buff[MAX_FIELD_NAME],*buff_end;
- if (!check_if_keyname_exists(field_name,start,end))
+ if (!check_if_keyname_exists(field_name,start,end) &&
+ my_strcasecmp(system_charset_info,field_name,primary_key_name))
return (char*) field_name; // Use fieldname
buff_end=strmake(buff,field_name,MAX_FIELD_NAME-4);
for (uint i=2 ; ; i++)
@@ -2403,6 +2410,12 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
{
if (key->type != Key::FOREIGN_KEY)
key_list.push_back(key);
+ if (key->name &&
+ !my_strcasecmp(system_charset_info,key->name,primary_key_name))
+ {
+ my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key->name);
+ DBUG_RETURN(-1);
+ }
}
}