• unknown's avatar
    Remove direct mapping of enum interval_type to mysql.event.interval_field · 92b3a32b
    unknown authored
      This decoupling allows in further versions of MySQL enum interval_type to
      be reordered without this affecting any backward compatibility in the
      events code.
      This changeset doesn't change any exposed behavior but makes events' code
      more durable to changes outside of their code base.
      
      To the reviewer: There is no regression test included as it is impossible
      to construct one with the current infrastructure which can test it. To test
      the code one has create and event, then change the order of
      enum interval_type in my_time.h, update sql/time.cc, recompile the server
      and run it with scheduler running.
    
    
    include/my_time.h:
      Add a reminder to keep enum interval_type and
      interval_type_to_name in sync
    sql/event_data_objects.cc:
      When loading from disk don't use the integer value of
      mysql.event.interval_field because it could be different of the
      values of enum interval_type, if the latter is reordered in a later
      version of MySQL. Loaded from disk is the string value which is then
      resolved against interval_type_to_name to get the exact enum value we
      need for Event_queue_element::interval.
    sql/event_db_repository.cc:
      Use interval_type_to_name from sql/time.cc during storage thus
      decoupling the value stored on disk (the enum) from the integer
      representation in memory. interval_type can be changed and as
      long as interval_type_to_name is kept in sync correct values will
      be saved to disk.
    sql/mysql_priv.h:
      add proto of find_string_in_array
    sql/strfunc.cc:
      Add a function for searching a LEX_STRING in an array of LEX_STRINGs
    92b3a32b
event_data_objects.cc 50.1 KB