summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/renamedb.result4
-rw-r--r--mysql-test/t/renamedb.test8
-rw-r--r--sql/sql_db.cc6
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);
}