• unknown's avatar
    fix for bug #17494 (The algorithm for calculating execution times is not fully correct) · 7c596993
    unknown authored
    This also should fix 17493 and 17346, and probably 16397 (not tested).
    WL#1034 (Internal CRON)
    (post-review commit)
    
    
    mysql-test/r/events.result:
      update result
    mysql-test/t/events.test:
      update test
    sql/event.cc:
      seems we get a crash if we compile it this way. better let the worker thread do it,
      this increases the stability.
    sql/event_executor.cc:
      kick in more often
    sql/event_timed.cc:
      - don't NULLify last_executed
      - implement (fix) better get_next_time() which does not use last_executed as basis
        but STARTS. STARTS is used as basis and the next point of time which is before ENDS,
        if set, is being found. The point > now and (point-starts) % interval_expression == 0.
    sql/item_timefunc.cc:
      move calc_time_diff to time.cc as it can be reused in other parts of the 
      server code (see event_timed.cc)
    sql/mysql_priv.h:
      export calc_time_diff() moved to time.cc from item_timefunc.cc
    sql/sql_show.cc:
      - fix presenting of LAST_EXECUTED
      - cleanup a bit
    sql/time.cc:
      - move calc_time_diff() from item_timefunc.cc to here
    7c596993
event_executor.cc 28.2 KB