• unknown's avatar
    WL#3337 (Events new architecture) · 9fa9378b
    unknown authored
    This cut No 7 should finish the part of fixing the parsing of the events :
    - Event_timed is no more used during parsing. Less problems because it has
      a mutex. Event_parse_data class is used during parsing. It is suited only
      for this purpose. It's pretty lightweight
    - Late checking of data from parsing is being performed. This should solve
      the problems of nested events in SP or other events (for the situation 
      of no nested bodies). Before if an ALTER EVENT was in a SP, then when the
      SP was compiled, and not executed, the actual init_xxx methods of Event_timed
      were called, which is wrong.
    - It could be a side effect of using a specialized class, but test events_stress is
      now 25% quicker.
    
    Cut No8 will start splitting Event_scheduler into 2 parts, the QUEUE will be moved
    to Event_queue.
    
    
    mysql-test/r/events.result:
      update result
    mysql-test/t/events.test:
      disabled is actually wrong, should be disable, but because of the early
      checking it was never parsed.
    sql/event_data_objects.cc:
      move add init_xxx methods from Event_timed to Event_parse_data
      Event_parse data does not need definer_user and definer_host
      in Event_timed::compile() do not use lex.et, well there is no more lex.et :)
    sql/event_data_objects.h:
      move parsing responsibilities from Event_timed to Event_parse_data
    sql/event_db_repository.cc:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/event_db_repository.h:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/event_scheduler.cc:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/event_scheduler.h:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/events.cc:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/events.h:
      No more Event_timed comes from parsing but Event_parse_data
      The initialization of Item*-s from parsing is done late, and not
      during the actual parsing. This is the right way to go because
      if an ALTER EVENT is inside a SP or CREATE EVENT it should not be
      executed (initialized) during parsing, as it was done.
    sql/sql_lex.cc:
      lex->et_compile_phase and lex->et are no more.
      Use lex->event_parse_data
    sql/sql_lex.h:
      lex->et_compile_phase and lex->et are no more.
      Use lex->event_parse_data
    sql/sql_parse.cc:
      lex->et_compile_phase and lex->et are no more.
      Use lex->event_parse_data
      ACL checks were moved inside the Events subsystem.
      Also ending of the transaction is performed only just
      before doing disk operation. Therefore only when needed.
    sql/sql_yacc.yy:
      lex->et and lex->et_parse_phase are no more
      Use the specialized for parsing Event_parse_data
    9fa9378b
sql_lex.cc 55.4 KB