diff options
-rw-r--r-- | mysql-test/main/parser.result | 13 | ||||
-rw-r--r-- | mysql-test/main/parser.test | 14 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 2 |
3 files changed, 28 insertions, 1 deletions
diff --git a/mysql-test/main/parser.result b/mysql-test/main/parser.result index 2e2342161fc..2b4a0bb7163 100644 --- a/mysql-test/main/parser.result +++ b/mysql-test/main/parser.result @@ -1784,4 +1784,17 @@ a select * from t1 for update; a drop table t1; +# +# MDEV-20108: [ERROR] mysqld got signal 11 in +# st_select_lex::add_table_to_list +# +CREATE TABLE t1 (c1 INT NULL); +CREATE TABLE t2 (c1 INT NULL); +SET STATEMENT max_statement_time=900 FOR LOCK TABLES `t1` WRITE; +select * from t1; +c1 +select * from t2; +ERROR HY000: Table 't2' was not locked with LOCK TABLES +SET STATEMENT max_statement_time=900 FOR unlock tables; +drop table t1, t2; # End of 10.4 tests diff --git a/mysql-test/main/parser.test b/mysql-test/main/parser.test index 35a2334eec2..b3cfcfb4fcc 100644 --- a/mysql-test/main/parser.test +++ b/mysql-test/main/parser.test @@ -1552,4 +1552,18 @@ create table t1 (a int); select * from t1 for update; drop table t1; +--echo # +--echo # MDEV-20108: [ERROR] mysqld got signal 11 in +--echo # st_select_lex::add_table_to_list +--echo # +CREATE TABLE t1 (c1 INT NULL); +CREATE TABLE t2 (c1 INT NULL); + +SET STATEMENT max_statement_time=900 FOR LOCK TABLES `t1` WRITE; +select * from t1; +--error ER_TABLE_NOT_LOCKED +select * from t2; +SET STATEMENT max_statement_time=900 FOR unlock tables; +drop table t1, t2; + --echo # End of 10.4 tests diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 5dd1011c07e..104d47f7cad 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -16715,7 +16715,7 @@ table_lock: ? MDL_SHARED_WRITE : MDL_SHARED_NO_READ_WRITE; - if (unlikely(!Select-> + if (unlikely(!Lex->current_select_or_default()-> add_table_to_list(thd, $1, $2, table_options, lock_type, mdl_type))) MYSQL_YYABORT; |