diff options
-rw-r--r-- | mysql-test/r/renamedb.result | 4 | ||||
-rw-r--r-- | mysql-test/t/renamedb.test | 8 | ||||
-rw-r--r-- | sql/sql_db.cc | 6 |
3 files changed, 15 insertions, 3 deletions
diff --git a/mysql-test/r/renamedb.result b/mysql-test/r/renamedb.result index 26ae42e72aa..b22322fbe8d 100644 --- a/mysql-test/r/renamedb.result +++ b/mysql-test/r/renamedb.result @@ -27,3 +27,7 @@ a 2 3 drop database testdb2; +create database testdb1; +rename database testdb1 to testdb1; +ERROR HY000: Can't create database 'testdb1'; database exists +drop database testdb1; diff --git a/mysql-test/t/renamedb.test b/mysql-test/t/renamedb.test index 5cfb2ce0c12..1e71adb3bf3 100644 --- a/mysql-test/t/renamedb.test +++ b/mysql-test/t/renamedb.test @@ -16,3 +16,11 @@ select database(); show tables; select a from t1 order by a; drop database testdb2; + +# +# Bug#19392 Rename Database: Crash if case change +# +create database testdb1; +--error 1007 +rename database testdb1 to testdb1; +drop database testdb1; diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 3d035359b6f..cb43bb77def 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -134,9 +134,9 @@ void lock_db_delete(const char *name, uint length) { my_dblock_t *opt; safe_mutex_assert_owner(&LOCK_lock_db); - opt= (my_dblock_t *)hash_search(&lock_db_cache, (const byte*) name, length); - DBUG_ASSERT(opt != NULL); - hash_delete(&lock_db_cache, (byte*) opt); + if (opt= (my_dblock_t *)hash_search(&lock_db_cache, + (const byte*) name, length)) + hash_delete(&lock_db_cache, (byte*) opt); } |