diff --git a/mysql-test/main/ps.result b/mysql-test/main/ps.result index 6df83228875..5d72cde5dd2 100644 --- a/mysql-test/main/ps.result +++ b/mysql-test/main/ps.result @@ -5650,5 +5650,18 @@ connection default; SET GLOBAL disconnect_on_expired_password=@disconnect_on_expired_password_save; DROP USER user1@localhost; # +# MDEV-21173: Assertion `m_thd == __null' failed in sp_head::~sp_head +# +CREATE TABLE t1 (a INT); +EXECUTE IMMEDIATE "CREATE PROCEDURE p1() SELECT 1 FROM t1 PROCEDURE ANALYSE( 10, (SELECT a FROM t1));"; +ERROR 42000: PROCEDURE does not support subqueries or stored functions +DROP TABLE t1; +BEGIN NOT ATOMIC +PREPARE stmt FROM 'SELECT ?'; +EXECUTE stmt USING ((SELECT 1)); +END; +$ +ERROR 42000: EXECUTE..USING does not support subqueries or stored functions +# # End of 10.4 tests # diff --git a/mysql-test/main/ps.test b/mysql-test/main/ps.test index 9b781f32631..c99731e768d 100644 --- a/mysql-test/main/ps.test +++ b/mysql-test/main/ps.test @@ -5082,6 +5082,25 @@ connection default; SET GLOBAL disconnect_on_expired_password=@disconnect_on_expired_password_save; DROP USER user1@localhost; +--echo # +--echo # MDEV-21173: Assertion `m_thd == __null' failed in sp_head::~sp_head +--echo # +CREATE TABLE t1 (a INT); + +--error ER_SUBQUERIES_NOT_SUPPORTED +EXECUTE IMMEDIATE "CREATE PROCEDURE p1() SELECT 1 FROM t1 PROCEDURE ANALYSE( 10, (SELECT a FROM t1));"; +DROP TABLE t1; + +delimiter $; +--error ER_SUBQUERIES_NOT_SUPPORTED +BEGIN NOT ATOMIC + PREPARE stmt FROM 'SELECT ?'; + EXECUTE stmt USING ((SELECT 1)); +END; +$ + +delimiter ;$ + --echo # --echo # End of 10.4 tests --echo # diff --git a/mysql-test/main/sp.result b/mysql-test/main/sp.result index 7dfaa6176a3..3795e4db894 100644 --- a/mysql-test/main/sp.result +++ b/mysql-test/main/sp.result @@ -8916,5 +8916,11 @@ END; $$ ERROR 42000: Incorrect usage/placement of 'HIGH_PRIORITY' # +# MDEV-21173: Assertion `m_thd == __null' failed in sp_head::~sp_head +# +CREATE TABLE t1 (a INT); +CREATE PROCEDURE p1() SELECT 1 FROM t1 PROCEDURE ANALYSE( 10, (SELECT a FROM t1)); +ERROR 42000: PROCEDURE does not support subqueries or stored functions +DROP TABLE t1; # End of 10.4 tests # diff --git a/mysql-test/main/sp.test b/mysql-test/main/sp.test index bd614072e1a..4fa5085128a 100644 --- a/mysql-test/main/sp.test +++ b/mysql-test/main/sp.test @@ -10481,7 +10481,14 @@ END; $$ DELIMITER ;$$ - --echo # +--echo # MDEV-21173: Assertion `m_thd == __null' failed in sp_head::~sp_head +--echo # +CREATE TABLE t1 (a INT); +--error ER_SUBQUERIES_NOT_SUPPORTED +CREATE PROCEDURE p1() SELECT 1 FROM t1 PROCEDURE ANALYSE( 10, (SELECT a FROM t1)); + +DROP TABLE t1; + --echo # End of 10.4 tests --echo # diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3bda2381230..7d8b02a0f12 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -9610,7 +9610,7 @@ subselect: query_expression { if (!($$= Lex->parsed_subselect($1))) - YYABORT; + MYSQL_YYABORT; } ; @@ -9655,14 +9655,14 @@ subquery: else $1->fake_select_lex->braces= false; if (!($$= Lex->parsed_subselect($1))) - YYABORT; + MYSQL_YYABORT; } | '(' with_clause query_expression_no_with_clause ')' { $3->set_with_clause($2); $2->attach_to($3->first_select()); if (!($$= Lex->parsed_subselect($3))) - YYABORT; + MYSQL_YYABORT; } ;