• unknown's avatar
    - final fixes for bug#16431 (Events: An event which alters itself disappears) · 8d4f74be
    unknown authored
    - fix for bug#16423 (Events: SHOW CREATE EVENT doesn't work)
    - this Changeset commits makes CREATE/UPDATE/DELETE EVENT real DDL statements
      by committing the currently open transaction before they are executed.
    - this Changeset also fixes a trailing space problem since the very early days
      of the internal cron
    - adds sophisticated checking of whether mysql.event was tampered accidentally
      or with purpose by an user.
    - adds a lot of inline function documentation - documents everything left
      uncodumented
    - INTERVAL_XXXX to XXX in I_S.EVENTS.INTERVAL_FIELD
    
    WL#1034 (Internal CRON)
    
    
    mysql-test/r/events.result:
      update result
    mysql-test/t/events.test:
      add test cases for SHOW CREATE EVENT
      add test cases where the structure of mysql.event is changed and error reporting in this case
    sql/event.cc:
      - do a lot more checking on mysql.event whether it's valid
        introduced generic function table_check_intact() which can be used also
        for checking whether a system table (mysql.*) has been tampered by user
        and report an error in this case. The checking is quite strict, thus
        maybe some mechanism can be added later that loosens this like some
        session variable, for instance, i_am_aware_that_i_can_damage_my_data
        so the table will be opened nevertheless we think that it's not valid.
      - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
      - document a loooot. not a single function left undocumented.
    sql/event.h:
      - add evex_show_create_event(THD *thd, sp_name *spn, LEX_STRING definer)
      - change get_show_create_event() to get_create_event()
      - add TABLE_FIELD_W_TYPE used by table_check_intact()
      - add event_timed::sql_mode so it can be used by show create event. currently
        always 0, will be fixed by a patch for another bug. At least makes the code
        of show create event complete.
    sql/event_executor.cc:
      - add evex_check_system_tables() that checks on boot and event
        main thread startup that mysql.db and mysql.user tables are correct.
      - document everything!
    sql/event_priv.h:
      remove a line
    sql/event_timed.cc:
      - implement SHOW CREATE EVENT
      - document undocumented functions!
    sql/share/errmsg.txt:
      - fix an error message and add two new
    sql/sql_acl.cc:
      - add mysql.db table definition to use by table_check_intact()
      - exchange some of the positions by numbers from mysql.db to enum names (see sql_acl.h)
    sql/sql_acl.h:
      - define the structure of mysql.db table
    sql/sql_parse.cc:
      - handle SQLCOM_SHOW_CREATE_EVENT
      - end the current transaction becase CREATE/UPDATE/DELETE EVENT is a DDL
        statement
    sql/sql_show.cc:
      - remove interval_type_to_name
      - use common function event_reconstruct_interval_expression()
        that reconstructs the expression given at create/alter, to some
        extent - interval of 2:62 MINUTE_SECOND will be reconstructed as
        interval of 3:02 MINUTE_SECOND!
    sql/sql_yacc.yy:
      init the definer of event_timed also when doing SHOW CREATE EVENT
      because it's needed for checking into mysql.event
    sql/table.cc:
      - remove stale code. only mysql.event should be a 'system_table'
      - add table_check_intact() to check the consistency of a table.
        mostly usable with mysql.xxx tables.
    sql/table.h:
      - export TABLE_FIELD_W_TYPE and table_check_intact() which are used for 
        checking the structure of a table. mostly usable for mysql.xxx tables.
    8d4f74be
event.cc 37.4 KB