summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/drop.result10
-rw-r--r--mysql-test/t/drop.test17
-rw-r--r--sql/sql_yacc.yy4
3 files changed, 29 insertions, 2 deletions
diff --git a/mysql-test/r/drop.result b/mysql-test/r/drop.result
index 17ec2b09a0a..f1712a650b1 100644
--- a/mysql-test/r/drop.result
+++ b/mysql-test/r/drop.result
@@ -157,3 +157,13 @@ Error 1051 Unknown table 't1'
# --
# -- End of Bug#37431.
# --
+#
+# Bug#54282 Crash in MDL_context::upgrade_shared_lock_to_exclusive
+#
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a INT);
+LOCK TABLE t1 WRITE;
+DROP TABLE t1, t1;
+ERROR 42000: Not unique table/alias: 't1'
+UNLOCK TABLES;
+DROP TABLE t1;
diff --git a/mysql-test/t/drop.test b/mysql-test/t/drop.test
index 5ef4a28b202..b5ca0817b6f 100644
--- a/mysql-test/t/drop.test
+++ b/mysql-test/t/drop.test
@@ -256,3 +256,20 @@ SHOW WARNINGS;
--echo # --
--echo # -- End of Bug#37431.
--echo # --
+
+
+--echo #
+--echo # Bug#54282 Crash in MDL_context::upgrade_shared_lock_to_exclusive
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (a INT);
+LOCK TABLE t1 WRITE;
+--error ER_NONUNIQ_TABLE
+DROP TABLE t1, t1;
+
+UNLOCK TABLES;
+DROP TABLE t1;
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 34e20374042..84412469252 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -10151,7 +10151,7 @@ drop:
lex->sql_command = SQLCOM_DROP_TABLE;
lex->drop_temporary= $2;
lex->drop_if_exists= $4;
- YYPS->m_lock_type= TL_IGNORE;
+ YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
table_list opt_restrict
@@ -10244,7 +10244,7 @@ drop:
LEX *lex= Lex;
lex->sql_command= SQLCOM_DROP_VIEW;
lex->drop_if_exists= $3;
- YYPS->m_lock_type= TL_IGNORE;
+ YYPS->m_lock_type= TL_UNLOCK;
YYPS->m_mdl_type= MDL_EXCLUSIVE;
}
table_list opt_restrict