• unknown's avatar
    - fix bug #16435 (Weekly events execute every second) (WL#1034 Internal CRON) · 6bd58a2a
    unknown authored
    Before the interval expression was considered to be in seconds, now it is
    just a number and the type of interval is considered.
    
    - this changeset introduces also fix for bug#16432 (Events: error re interval
      misrepresents the facts)
      the code of event_timed::set_interval() was refactored anyway so it is meaningful to
      fix the bug in the same changeset.
    
    
    include/my_time.h:
      - move enum interval_type to include/my_time.h so it can be used by functions
        in the whole server
    sql/event.cc:
      - don't use second_part
      - fix small problem with create event xyz, when xyz exists -> make it error
        instead of warning if create_if_not is false.
    sql/event.h:
      pass thd to mark_last_executed() to be able to call thd->end_time()
    sql/event_executor.cc:
      - pass thd to event_timed::compute_next_execution_time()
      - a bit more DBUG info in the server log
      - handle error returned by event_timed::compute_next_execution_time()
    sql/event_priv.h:
      - define the maximal possible value for interval_value
    sql/event_timed.cc:
      - more docs
      - add static get_next_time() which sums a TIME with an interval
      - fix bug #16435 (Weekly events execute every second)
      Before the interval expression was considered to be in seconds, now it is
      just a number and the type of interval is considered.
      - fix for bug#16432 (Events: error re interval misrepresents the facts)
        (return an error if a value is too big or is negative - errmsg changed)
    sql/item_timefunc.cc:
      - export get_interval_date()
      - refactor Item_date_add_interval::get_date() and extract the core
        to date_add_interval() in time.cc so it can be reused by the
        scheduler code in event_timed.cc
    sql/item_timefunc.h:
      - export get_interval_value() so it can be reused in event_timed.cc in
        function static get_next_time()
      - move enum interval_type to include/my_time.h so it can be used by functions
        in the whole server
    sql/mysql_priv.h:
      export the new function date_add_interval() added to time.cc
    sql/share/errmsg.txt:
      - change error message to be appropriate as fix for bug#16432
        (Events: error re interval misrepresents the facts)
    sql/sql_yacc.yy:
      - change error message to be appropriate as fix for bug#16432
        (Events: error re interval misrepresents the facts)
    sql/time.cc:
      extract the core of Item_date_add_interval::get_date()
      to a function per Serg's request. The code can be reused
      to add und substract interval from a date.
    6bd58a2a
my_time.h 3.62 KB