Bug #35981 | ALTER EVENT causes the server to change the PRESERVE option. | ||
---|---|---|---|
Submitted: | 11 Apr 2008 0:00 | Modified: | 17 Oct 2008 17:25 |
Reporter: | Santo Leto | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Stored Routines | Severity: | S2 (Serious) |
Version: | 5.1.23-rc | OS: | Windows (XPSP2) |
Assigned to: | Tatiana Azundris Nuernberg | CPU Architecture: | Any |
Tags: | ALTER EVENT, preserve |
[11 Apr 2008 0:00]
Santo Leto
[11 Apr 2008 0:28]
MySQL Verification Team
Thank you for the bug report. Verified on Linux and Windows: c:\dbs>5.1\bin\mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.25-rc-nt-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SELECT CURRENT_USER(), VERSION(), CONNECTION_ID(), @@global.event_scheduler; +----------------+------------------+-----------------+--------------------------+ | CURRENT_USER() | VERSION() | CONNECTION_ID() | @@global.event_scheduler | +----------------+------------------+-----------------+--------------------------+ | root@localhost | 5.1.25-rc-nt-log | 1 | OFF | +----------------+------------------+-----------------+--------------------------+ 1 row in set (0.03 sec) mysql> mysql> DROP DATABASE IF EXISTS `alter_event_bug`; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> CREATE DATABASE IF NOT EXISTS `alter_event_bug`; Query OK, 1 row affected (0.00 sec) mysql> mysql> DELIMITER $$ mysql> mysql> CREATE -> DEFINER = 'root'@'localhost' -> EVENT `alter_event_bug`.`test_bug` -> ON SCHEDULE EVERY 6 MONTH -> STARTS CURRENT_TIMESTAMP -> ON COMPLETION PRESERVE -> DISABLE -> COMMENT '' -> DO -> BEGIN -> # do nothing -> END$$ Query OK, 0 rows affected (0.05 sec) mysql> mysql> DELIMITER ; mysql> mysql> SELECT -> `EVENT_TYPE`, -> `EXECUTE_AT`, -> `STATUS`, -> `ON_COMPLETION`, -> `INTERVAL_VALUE`, -> `INTERVAL_FIELD`, -> `STARTS`, -> `ENDS`, -> `CREATED`, -> `LAST_ALTERED`, -> `LAST_EXECUTED`, -> `SQL_MODE`, -> `TIME_ZONE`, -> `DEFINER`, -> `ORIGINATOR`, -> `EVENT_COMMENT`, -> `EVENT_DEFINITION` -> FROM -> `INFORMATION_SCHEMA`.`EVENTS` -> WHERE `EVENT_SCHEMA` = 'alter_event_bug' -> AND `EVENT_NAME` = 'test_bug'\G *************************** 1. row *************************** EVENT_TYPE: RECURRING EXECUTE_AT: NULL STATUS: DISABLED ON_COMPLETION: PRESERVE INTERVAL_VALUE: 6 INTERVAL_FIELD: MONTH STARTS: 2008-04-10 21:13:00 ENDS: NULL CREATED: 2008-04-10 21:13:00 LAST_ALTERED: 2008-04-10 21:13:00 LAST_EXECUTED: NULL SQL_MODE: TIME_ZONE: SYSTEM DEFINER: root@localhost ORIGINATOR: 3 EVENT_COMMENT: EVENT_DEFINITION: BEGIN END 1 row in set (0.05 sec) mysql> mysql> ALTER -> EVENT `alter_event_bug`.`test_bug` -> ENABLE; Query OK, 0 rows affected (0.00 sec) mysql> mysql> SELECT -> `EVENT_TYPE`, -> `EXECUTE_AT`, -> `STATUS`, -> `ON_COMPLETION`, -> `INTERVAL_VALUE`, -> `INTERVAL_FIELD`, -> `STARTS`, -> `ENDS`, -> `CREATED`, -> `LAST_ALTERED`, -> `LAST_EXECUTED`, -> `SQL_MODE`, -> `TIME_ZONE`, -> `DEFINER`, -> `ORIGINATOR`, -> `EVENT_COMMENT`, -> `EVENT_DEFINITION` -> FROM -> `INFORMATION_SCHEMA`.`EVENTS` -> WHERE `EVENT_SCHEMA` = 'alter_event_bug' -> AND `EVENT_NAME` = 'test_bug'\G *************************** 1. row *************************** EVENT_TYPE: RECURRING EXECUTE_AT: NULL STATUS: ENABLED ON_COMPLETION: NOT PRESERVE INTERVAL_VALUE: 6 INTERVAL_FIELD: MONTH STARTS: 2008-04-10 21:13:00 ENDS: NULL CREATED: 2008-04-10 21:13:00 LAST_ALTERED: 2008-04-10 21:13:01 LAST_EXECUTED: NULL SQL_MODE: TIME_ZONE: SYSTEM DEFINER: root@localhost ORIGINATOR: 3 EVENT_COMMENT: EVENT_DEFINITION: BEGIN END 1 row in set (0.01 sec) mysql>
[14 Apr 2008 19:00]
Omer Barnir
workaround: include all event parameters in the alter statement (even those that are not changing
[28 May 2008 6:10]
Tatiana Azundris Nuernberg
notes event-object is always created with a default of "DROP" (NOT PRESERVE), hence we can't tell on ALTER EVENT whether the user really meant DROP, or just got the default as a result of not stating anything specifically. fix like so: - add new state ON_COMPLETION_DEFAULT - default to this state on create event-object - change yy so CREATE EVENT sets this to DROP (default as per the docs) if not given by user - ALTER EVENT will have _DEFAULT set unless anything is stated specifically mysql_event_fill_row() will not update "completion" if ALTER EVENT hands in _DEFAULT. (assert() against getting this flag on CREATE EVENT, just to be sure)
[28 May 2008 6:27]
Tatiana Azundris Nuernberg
note ALTER EVENT w/o explicit [NOT] PRESERVE will call Event_parse_data::check_if_in_the_past() while we don't have PRESERVE/DROP info yet, so if the date is in the past, we're stuck not knowing whether to react according to PRESERVE or to DROP. (added extra tests for that.)
[18 Aug 2008 11:09]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/51829 2654 Tatiana A. Nurnberg 2008-08-18 Bug#35981: ALTER EVENT causes the server to change the PRESERVE option. 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.
[11 Sep 2008 7:55]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/53785 2684 Tatiana A. Nurnberg 2008-09-11 [merge] Bug#35981: ALTER EVENT causes the server to change the PRESERVE option. 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.
[15 Sep 2008 13:57]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/54105 2699 Tatiana A. Nurnberg 2008-09-15 [merge] Bug#35981: ALTER EVENT causes the server to change the PRESERVE option. 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.
[18 Sep 2008 15:21]
Tatiana Azundris Nuernberg
q'd for 5.1.30, 6.0.8
[1 Oct 2008 10:15]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/54904 2753 Georgi Kodinov 2008-10-01 fixed a win32 warning caused by the fix for bug #35981
[1 Oct 2008 10:15]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/54905 2753 Georgi Kodinov 2008-10-01 fixed a win32 warning caused by the fix for bug #35981
[7 Oct 2008 19:44]
Paul DuBois
Noted in 5.1.29 changelog. ALTER EVENT changed the PRESERVE attribute of an event even when PRESERVE was not specified in the statement. Leaving report status unchanged; this is early documentation of an upcoming push into 5.1.29.
[9 Oct 2008 17:57]
Bugs System
Pushed into 5.1.30 (revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (version source revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (pib:4)
[9 Oct 2008 18:41]
Paul DuBois
Setting report to NDI pending push into 6.0.x.
[17 Oct 2008 16:45]
Bugs System
Pushed into 6.0.8-alpha (revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (version source revid:kgeorge@mysql.com-20081001101819-4v95jij3w9sdlpxo) (pib:5)
[17 Oct 2008 17:25]
Paul DuBois
Noted in 6.0.8 changelog.
[28 Oct 2008 21:04]
Bugs System
Pushed into 5.1.29-ndb-6.2.17 (revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (version source revid:tomas.ulin@sun.com-20081028140209-u4emkk1xphi5tkfb) (pib:5)
[28 Oct 2008 22:23]
Bugs System
Pushed into 5.1.29-ndb-6.3.19 (revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (version source revid:tomas.ulin@sun.com-20081028194045-0353yg8cvd2c7dd1) (pib:5)
[1 Nov 2008 9:49]
Bugs System
Pushed into 5.1.29-ndb-6.4.0 (revid:kgeorge@mysql.com-20081001101208-iz5u26r71khu4el7) (version source revid:jonas@mysql.com-20081101082305-qx5a1bj0z7i8ueys) (pib:5)