diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-10-08 11:50:18 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-10-08 11:50:18 +0400 |
commit | 4c45b820aa0e04fd25527279175fdc7fabcd731e (patch) | |
tree | e52297dbbe7798cc21aabc4e747467bad78e1e79 /sql/sql_yacc.yy | |
parent | 8ea2e143f09bd0602ffd9695a78c076d483dd65a (diff) | |
download | mariadb-git-4c45b820aa0e04fd25527279175fdc7fabcd731e.tar.gz |
MDEV-10709 Expressions as parameters to Dynamic SQL
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 4a88c1f2ddf..0da0b442946 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2255,7 +2255,14 @@ execute: execute_using: /* nothing */ - | USING execute_var_list + | USING { Lex->expr_allows_subselect= false; } + execute_var_list + { + if (Lex->table_or_sp_used()) + my_yyabort_error((ER_SUBQUERIES_NOT_SUPPORTED, MYF(0), + "EXECUTE..USING")); + Lex->expr_allows_subselect= true; + } ; execute_var_list: @@ -2264,12 +2271,9 @@ execute_var_list: ; execute_var_ident: - '@' ident_or_text + expr { - LEX *lex=Lex; - LEX_STRING *lexstr= (LEX_STRING*)thd->memdup(&$2, sizeof(LEX_STRING)); - if (!lexstr || lex->prepared_stmt_params.push_back(lexstr, - thd->mem_root)) + if (Lex->prepared_stmt_params.push_back($1, thd->mem_root)) MYSQL_YYABORT; } ; |