summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <gluh@mysql.com>2005-04-06 14:14:13 +0500
committerunknown <gluh@mysql.com>2005-04-06 14:14:13 +0500
commitddd9fd8964e3d162521e38e047f787dcfa064a62 (patch)
tree8e74a708f11299b65a8a4a710cdbc1c65fafb1d7 /sql
parent97b26d3b93abef87bc6918af326202467212e103 (diff)
parent31d15c3f76f84e3ebf6d6158cff7a454c5a8d222 (diff)
downloadmariadb-git-ddd9fd8964e3d162521e38e047f787dcfa064a62.tar.gz
Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/gluh/MySQL/Bugs/mysql-4.1.9286 sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_yacc.yy66
1 files changed, 39 insertions, 27 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index dcda19a7080..af5adbaa19f 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -5361,17 +5361,26 @@ opt_option:
| OPTION {};
option_value_list:
- option_type option_value
- | option_value_list ',' option_type option_value;
+ option_value_ext
+ | option_value_list ',' option_value_ext;
-option_type:
- /* empty */ {}
+option_value_ext:
+ option_type_ext sys_option_value {}
+ | option_type option_value {}
+ ;
+
+option_type_ext:
+ option_type {}
| GLOBAL_SYM { Lex->option_type= OPT_GLOBAL; }
| LOCAL_SYM { Lex->option_type= OPT_SESSION; }
| SESSION_SYM { Lex->option_type= OPT_SESSION; }
- | ONE_SHOT_SYM { Lex->option_type= OPT_SESSION; Lex->one_shot_set= 1; }
;
+option_type:
+ /* empty */ {}
+ | ONE_SHOT_SYM { Lex->option_type= OPT_SESSION; Lex->one_shot_set= 1; }
+ ;
+
opt_var_type:
/* empty */ { $$=OPT_SESSION; }
| GLOBAL_SYM { $$=OPT_GLOBAL; }
@@ -5386,34 +5395,37 @@ opt_var_ident_type:
| SESSION_SYM '.' { $$=OPT_SESSION; }
;
+sys_option_value:
+ internal_variable_name equal set_expr_or_default
+ {
+ LEX *lex=Lex;
+ lex->var_list.push_back(new set_var(lex->option_type, $1.var,
+ &$1.base_name, $3));
+ }
+ | TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
+ {
+ LEX *lex=Lex;
+ LEX_STRING tmp;
+ tmp.str=0;
+ tmp.length=0;
+ lex->var_list.push_back(new set_var(lex->option_type,
+ find_sys_var("tx_isolation"),
+ &tmp,
+ new Item_int((int32) $4)));
+ }
+ ;
+
option_value:
'@' ident_or_text equal expr
{
Lex->var_list.push_back(new set_var_user(new Item_func_set_user_var($2,$4)));
}
- | internal_variable_name equal set_expr_or_default
- {
- LEX *lex=Lex;
- lex->var_list.push_back(new set_var(lex->option_type, $1.var,
- &$1.base_name, $3));
- }
| '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default
- {
- LEX *lex=Lex;
- lex->var_list.push_back(new set_var((enum_var_type) $3, $4.var,
- &$4.base_name, $6));
- }
- | TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types
- {
- LEX *lex=Lex;
- LEX_STRING tmp;
- tmp.str=0;
- tmp.length=0;
- lex->var_list.push_back(new set_var(lex->option_type,
- find_sys_var("tx_isolation"),
- &tmp,
- new Item_int((int32) $4)));
- }
+ {
+ LEX *lex=Lex;
+ lex->var_list.push_back(new set_var((enum_var_type) $3, $4.var,
+ &$4.base_name, $6));
+ }
| charset old_or_new_charset_name_or_default
{
THD *thd= YYTHD;