Commit 8b3b76c6 authored by unknown's avatar unknown
Browse files

fix for bug#16434 (Events: Illegal dates don't cause errors)

(post-review commit)
WL#1034 (Internal CRON)


sql/event_timed.cc:
  remove bogus check
sql/share/errmsg.txt:
  change error messages
sql/sql_yacc.yy:
  handle error code returned by event_timed::init_starts()
parent 14c38f00
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -238,9 +238,6 @@ event_timed::init_starts(THD *thd, Item *new_starts)
  if (new_starts->fix_fields(thd, &new_starts))
    DBUG_RETURN(EVEX_PARSE_ERROR);

  if (new_starts->val_int() == MYSQL_TIMESTAMP_ERROR)
    DBUG_RETURN(EVEX_BAD_PARAMS);

  if ((not_used= new_starts->get_date(&ltime, TIME_NO_ZERO_DATE)))
    DBUG_RETURN(EVEX_BAD_PARAMS);

+1 −1
Original line number Diff line number Diff line
@@ -5760,7 +5760,7 @@ ER_EVENT_DROP_FAILED
ER_EVENT_INTERVAL_NOT_POSITIVE
        eng "INTERVAL must be positive"
ER_EVENT_ENDS_BEFORE_STARTS
        eng "ENDS must be after STARTS"
        eng "ENDS is either invalid or before STARTS"
ER_EVENT_EXEC_TIME_IN_THE_PAST
        eng "Activation (AT) time is in the past"
ER_EVENT_OPEN_TABLE_FAILED
+19 −1
Original line number Diff line number Diff line
@@ -1467,7 +1467,25 @@ ev_starts: /* empty */
          {
            LEX *lex= Lex;
            if (!lex->et_compile_phase)
              lex->et->init_starts(YYTHD, $2);
            {
              
              switch (lex->et->init_starts(YYTHD, $2)) {
              case EVEX_PARSE_ERROR:
                yyerror(ER(ER_SYNTAX_ERROR));
                YYABORT;
                break;
              case EVEX_BAD_PARAMS:
                {
                  char buff[20];
                  String str(buff,(uint32) sizeof(buff), system_charset_info);
                  String *str2= $2->val_str(&str);
                  my_error(ER_WRONG_VALUE, MYF(0), "STARTS", str2? str2->c_ptr():
                                                                   NULL);
                  YYABORT;
                  break;
                }
              }
            }
          }
      ;