• Tatiana A. Nurnberg's avatar
    Bug#35981: ALTER EVENT causes the server to change the PRESERVE option. · 1ab7907e
    Tatiana A. Nurnberg authored
    If [NOT] PRESERVE was not given, parser always defaulted to NOT
    PRESERVE, making it impossible for the "not given = no change"
    rule to work in ALTER EVENT. Leaving out the PRESERVE-clause
    defaults to NOT PRESERVE on CREATE now, and to "no change" in
    ALTER.
    
    mysql-test/r/events_2.result:
      show that giving no PRESERVE-clause to ALTER EVENT
      results in no change. show that giving no PRESERVE-clause
      to CREATE EVENT defaults to NOT PRESERVE as per the docs.
      Show specifically that this is also handled correctly when
      trying to ALTER EVENTs into the past.
    mysql-test/t/events_2.test:
      show that giving no PRESERVE-clause to ALTER EVENT
      results in no change. show that giving no PRESERVE-clause
      to CREATE EVENT defaults to NOT PRESERVE as per the docs.
      Show specifically that this is also handled correctly when
      trying to ALTER EVENTs into the past.
    sql/event_db_repository.cc:
      If ALTER EVENT was given no PRESERVE-clause (meaning "no change"),
      we don't know the previous PRESERVE-setting by the time we check
      the parse-data. If ALTER EVENT was given dates that are in the past,
      we don't know how to react, lacking the PRESERVE-setting. Heal this
      by running the check later when we have actually read the previous
      EVENT-data.
    sql/event_parse_data.cc:
      Change default for ON COMPLETION to indicate, "not specified."
      Also defer throwing errors when ALTER EVENT is given dates in
      the past but not PRESERVE-clause until we know the previous
      PRESERVE-value.
    sql/event_parse_data.h:
      Add third state for ON COMPLETION [NOT] PRESERVE (preserve,
      don't, not specified).
      
      Make check_dates() public so we can defer this check until
      deeper in the callstack where we have all the required data.
    sql/sql_yacc.yy:
      If CREATE EVENT is not given ON COMPLETION [NOT] PRESERVE,
      we default to NOT, as per the docs.
    1ab7907e
event_parse_data.cc 14.5 KB