diff options
author | unknown <sergefp@mysql.com> | 2004-04-05 19:43:37 +0400 |
---|---|---|
committer | unknown <sergefp@mysql.com> | 2004-04-05 19:43:37 +0400 |
commit | ef8a5401f146e0aa17d9cc342c52a82e16e7c6ef (patch) | |
tree | 617aa81bcde9afbb78f590039c16af502a91bb52 /sql/sql_yacc.yy | |
parent | b26165d3a2eeb748b9bd5573f9bac7b73d5f9a37 (diff) | |
download | mariadb-git-ef8a5401f146e0aa17d9cc342c52a82e16e7c6ef.tar.gz |
Many files:
SQL Syntax for Prepared Statements (WL#1622)
ps.test, ps.result:
new file
sql/item.cc:
SQL Syntax for Prepared Statements (WL#1622)
sql/item.h:
SQL Syntax for Prepared Statements (WL#1622)
sql/lex.h:
SQL Syntax for Prepared Statements (WL#1622)
sql/mysql_priv.h:
SQL Syntax for Prepared Statements (WL#1622)
sql/mysqld.cc:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_class.cc:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_class.h:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_lex.h:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_parse.cc:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_prepare.cc:
SQL Syntax for Prepared Statements (WL#1622)
sql/sql_yacc.yy:
SQL Syntax for Prepared Statements (WL#1622)
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 90dc209f0bc..9e9b698f0b4 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -430,6 +430,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token MEDIUMTEXT %token NUMERIC_SYM %token PRECISION +%token PREPARE_SYM +%token DEALLOCATE_SYM %token QUICK %token REAL %token SIGNED_SYM @@ -722,6 +724,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); precision subselect_start opt_and charset subselect_end select_var_list select_var_list_init help opt_len opt_extended_describe + prepare execute deallocate END_OF_INPUT %type <NONE> @@ -758,10 +761,12 @@ verb_clause: | checksum | commit | create + | deallocate | delete | describe | do | drop + | execute | flush | grant | handler @@ -773,6 +778,7 @@ verb_clause: | optimize | keycache | preload + | prepare | purge | rename | repair @@ -793,6 +799,72 @@ verb_clause: | use ; +deallocate: + DEALLOCATE_SYM PREPARE_SYM ident + { + THD *thd=YYTHD; + LEX *lex= thd->lex; + if (thd->command == COM_PREPARE) + { + yyerror(ER(ER_SYNTAX_ERROR)); + YYABORT; + } + lex->sql_command= SQLCOM_DEALLOCATE_PREPARE; + lex->prepared_stmt_name= $3; + }; + +prepare: + PREPARE_SYM ident FROM TEXT_STRING_sys + { + THD *thd=YYTHD; + LEX *lex= thd->lex; + if (thd->command == COM_PREPARE) + { + yyerror(ER(ER_SYNTAX_ERROR)); + YYABORT; + } + lex->sql_command= SQLCOM_PREPARE; + lex->prepared_stmt_name= $2; + lex->prepared_stmt_code= $4; + }; + + +execute: + EXECUTE_SYM ident + { + THD *thd=YYTHD; + LEX *lex= thd->lex; + if (thd->command == COM_PREPARE) + { + yyerror(ER(ER_SYNTAX_ERROR)); + YYABORT; + } + lex->sql_command= SQLCOM_EXECUTE; + lex->prepared_stmt_name= $2; + } + execute_using + {} + ; + +execute_using: + /* nothing */ + | USING execute_var_list + ; + +execute_var_list: + execute_var_list ',' execute_var_ident + | execute_var_ident + ; + +execute_var_ident: '@' ident_or_text + { + LEX *lex=Lex; + LEX_STRING *lexstr= (LEX_STRING*)sql_memdup(&$2, sizeof(LEX_STRING)); + if (!lexstr || lex->prepared_stmt_params.push_back(lexstr)) + YYABORT; + } + ; + /* help */ help: @@ -4782,6 +4854,7 @@ keyword: | DATETIME {} | DATE_SYM {} | DAY_SYM {} + | DEALLOCATE_SYM {} | DELAY_KEY_WRITE_SYM {} | DES_KEY_FILE {} | DIRECTORY_SYM {} @@ -4879,6 +4952,7 @@ keyword: | PASSWORD {} | POINT_SYM {} | POLYGON {} + | PREPARE_SYM {} | PREV_SYM {} | PROCESS {} | PROCESSLIST_SYM {} |