diff options
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r-- | sql/sql_yacc.yy | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 2e3d2b86eb1..d1b8ac690d2 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1857,7 +1857,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); predicate bit_expr parenthesized_expr table_wild simple_expr column_default_non_parenthesized_expr udf_expr expr_or_default set_expr_or_default - geometry_function signed_literal + geometry_function signed_literal expr_or_literal opt_escape sp_opt_default simple_ident_nospvar simple_ident_q @@ -6174,7 +6174,7 @@ field_list_item: column_def: field_spec opt_check_constraint - { $$= $1; Lex->last_field->check_constraint= $2; } + { $$= $1; $$->check_constraint= $2; } | field_spec references { $$= $1; } ; @@ -6399,11 +6399,7 @@ parse_vcol_expr: when reading a '*.frm' file. Prevent the end user from invoking this command. */ - if (!Lex->parse_vcol_expr) - { - my_message(ER_SYNTAX_ERROR, ER_THD(thd, ER_SYNTAX_ERROR), MYF(0)); - MYSQL_YYABORT; - } + MYSQL_YYABORT_UNLESS(Lex->parse_vcol_expr); Lex->last_field->vcol_info= $2; } ; @@ -6438,18 +6434,15 @@ virtual_column_func: } ; +expr_or_literal: column_default_non_parenthesized_expr | signed_literal ; + column_default_expr: virtual_column_func - | remember_name column_default_non_parenthesized_expr opt_impossible_action remember_end + | remember_name expr_or_literal opt_impossible_action remember_end { if (!($$= add_virtual_expression(thd, $1, (uint) ($4- $1), $2))) MYSQL_YYABORT; } - | signed_literal - { - if (!($$= add_virtual_expression(thd, "literal", 6, $1))) - MYSQL_YYABORT; - } ; /* This is to force remember_end to look at next token */ @@ -7792,7 +7785,7 @@ alter_list_item: } | ADD constraint_def { - Lex->alter_info.flags|= Alter_info::ALTER_ADD_CONSTRAINT; + Lex->alter_info.flags|= Alter_info::ALTER_ADD_CHECK_CONSTRAINT; } | CHANGE opt_column opt_if_exists_table_element field_ident field_spec opt_place @@ -7824,12 +7817,12 @@ alter_list_item: { LEX *lex=Lex; Alter_drop *ad= (new (thd->mem_root) - Alter_drop(Alter_drop::CONSTRAINT_CHECK, + Alter_drop(Alter_drop::CHECK_CONSTRAINT, $4.str, $3)); if (ad == NULL) MYSQL_YYABORT; lex->alter_info.drop_list.push_back(ad, thd->mem_root); - lex->alter_info.flags|= Alter_info::ALTER_DROP_CONSTRAINT; + lex->alter_info.flags|= Alter_info::ALTER_DROP_CHECK_CONSTRAINT; } | DROP FOREIGN KEY_SYM opt_if_exists_table_element field_ident { |