• Monty's avatar
    MDEV-6112 multiple triggers per table · 8be53a38
    Monty authored
    This is similar to MysQL Worklog 3253, but with
    a different implementation. The disk format and
    SQL syntax is identical with MySQL 5.7.
    
    Fetures supported:
    - "Any" ammount of any trigger
    - Supports FOLLOWS and PRECEDES to be
      able to put triggers in a certain execution order.
    
    Implementation details:
    - Class Trigger added to hold information about a trigger.
      Before this trigger information was stored in a set of lists in
      Table_triggers_list and in Table_triggers_list::bodies
    - Each Trigger has a next field that poinst to the next Trigger with the
      same action and time.
    - When accessing a trigger, we now always access all linked triggers
    - The list are now only used to load and save trigger files.
    - MySQL trigger test case (trigger_wl3253) added and we execute these
      identically.
    - Even more gracefully handling of wrong trigger files than before. This
      is useful if a trigger file uses functions or syntax not provided by
      the server.
    - Each trigger now has a "Created" field that shows when the trigger was
      created, with 2 decimals.
    
    Other comments:
    - Many of the changes in test files was done because of the new "Created"
      field in the trigger file. This shows up in SHOW ... TRIGGER and when
      using information_schema.trigger.
    - Don't check if all memory is released if on uses --gdb;  This is needed
      to be able to get a list from safemalloc of not freed memory while
      debugging.
    - Added option to trim_whitespace() to know how many prefix characters
      was skipped.
    - Changed a few ulonglong sql_mode to sql_mode_t, to find some wrong usage
      of sql_mode.
    8be53a38
table.cc 242 KB