diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result index 7ec12c1b021..33af0b30d1c 100644 --- a/mysql-test/r/alter_table.result +++ b/mysql-test/r/alter_table.result @@ -412,3 +412,12 @@ t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE t1 0 PRIMARY 2 User A 0 NULL NULL BTREE t1 1 Host 1 Host A NULL NULL NULL BTREE disabled DROP TABLE t1; +CREATE TABLE t1 (a int UNIQUE); +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) default NULL, + UNIQUE KEY `a` (`a`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +DROP TABLE t1; diff --git a/mysql-test/t/alter_table.test b/mysql-test/t/alter_table.test index eab4fd7f5f0..71991973105 100644 --- a/mysql-test/t/alter_table.test +++ b/mysql-test/t/alter_table.test @@ -244,3 +244,12 @@ LOCK TABLES t1 WRITE; ALTER TABLE t1 DISABLE KEYS; SHOW INDEX FROM t1; DROP TABLE t1; + +# +# Bug 2361 +# + +CREATE TABLE t1 (a int UNIQUE); +ALTER TABLE t1 DROP PRIMARY KEY; +SHOW CREATE TABLE t1; +DROP TABLE t1; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index ecd5f9ccb66..be42de34899 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2242,13 +2242,15 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, KEY *key_info=table->key_info; for (uint i=0 ; i < table->keys ; i++,key_info++) { - if (drop_primary && (key_info->flags & HA_NOSAME)) + char *key_name= key_info->name; + + if (drop_primary && !my_strcasecmp(system_charset_info, key_name, + "PRIMARY")) { - drop_primary=0; + drop_primary= 0; continue; } - char *key_name=key_info->name; Alter_drop *drop; drop_it.rewind(); while ((drop=drop_it++))