Bug #50087 Interval arithmetic for Event_queue_element is not portable.
| Submitted: | 5 Jan 2010 12:37 | Modified: | 14 Oct 2010 14:04 |
|---|---|---|---|
| Reporter: | Tor Didriksen | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S3 (Non-critical) |
| Version: | 5.1, 5.5.99 | OS: | Any |
| Assigned to: | Tor Didriksen | CPU Architecture: | Any |
[6 Jan 2010 12:59]
Tor Didriksen
See also http://bugs.mysql.com/bug.php?id=50077&thanks=1¬ify=131
[6 Jan 2010 13:04]
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/96119 2958 Tor Didriksen 2010-01-06 Bug #50087 Interval arithmetic for Event_queue_element is not portable. Subtraction of two unsigned months yielded a (very large) positive value. Conversion of this to a signed value was not necessarily well defined. Solution: do the subtraction on signed values. @ mysql-test/r/events_scheduling.result Add test case. @ mysql-test/t/events_scheduling.test Add test case. @ sql/event_data_objects.cc Convert month to signed before doing the subtraction.
[6 Jan 2010 14:01]
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/96126 2958 Tor Didriksen 2010-01-06 Bug #50087 Interval arithmetic for Event_queue_element is not portable. Subtraction of two unsigned months yielded a (very large) positive value. Conversion of this to a signed value was not necessarily well defined. Solution: do the subtraction on signed values. @ mysql-test/r/events_scheduling.result Add test case. @ mysql-test/t/events_scheduling.test Add test case. @ sql/event_data_objects.cc Convert month to signed before doing the subtraction.
[6 Jan 2010 14:06]
Guilhem Bichot
simple bugfix, no second review needed
[6 Jan 2010 14:47]
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/96132 3811 Tor Didriksen 2010-01-06 [merge] Merge of Bug #50087 Interval arithmetic for Event_queue_element is not portable. Subtraction of two unsigned months yielded a (very large) positive value. Conversion of this to a signed value was not necessarily well defined. Solution: do the subtraction on signed values. @ mysql-test/r/events_scheduling.result Add test case. @ mysql-test/suite/backup/t/disabled.def Re-enable tests, since underlying bug is fixed. @ mysql-test/t/events_scheduling.test Add test case. @ sql/event_data_objects.cc Convert to signed before doing the subtraction.
[6 Jan 2010 14:50]
Tor Didriksen
Pushed to bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-next-mr-bugfixing Merged and pushed to bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-codebase-bugfixing
[12 Jan 2010 16:25]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100112162328-2sblcul1kl08bbib) (version source revid:guilhem@mysql.com-20100108092756-k0zzf4kvx9b7bh38) (merge vers: 6.0.14-alpha) (pib:15)
[12 Jan 2010 16:25]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100112162142-nrjoxn6h2nrnh2o0) (version source revid:guilhem@mysql.com-20100108092756-k0zzf4kvx9b7bh38) (pib:15)
[13 Jan 2010 18:04]
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/96809 3062 Ingo Struewing 2010-01-13 WL#5101 - MySQL Backup back port Merged revid:tor.didriksen@sun.com-20100106140051-3j2iuag63eltsr2e Bug #50087 Interval arithmetic for Event_queue_element is not portable. Subtraction of two unsigned months yielded a (very large) positive value. Conversion of this to a signed value was not necessarily well defined. Solution: do the subtraction on signed values. @ mysql-test/r/events_scheduling.result WL#5101 - MySQL Backup back port Add test case. @ mysql-test/t/events_scheduling.test WL#5101 - MySQL Backup back port Add test case. @ sql/event_data_objects.cc WL#5101 - MySQL Backup back port Convert month to signed before doing the subtraction.
[6 Mar 2010 10:52]
Bugs System
Pushed into 5.5.3-m3 (revid:alik@sun.com-20100306103849-hha31z2enhh7jwt3) (version source revid:guilhem@mysql.com-20100108092756-k0zzf4kvx9b7bh38) (merge vers: 6.0.14-alpha) (pib:16)
[14 Mar 2010 6:31]
Sveta Smirnova
Bug exists in 5.1 as well.
[14 Mar 2010 6:32]
Sveta Smirnova
Test case demonstrating problem in 5.1:
delimiter //;
CREATE EVENT `subscription_addpartition_ev2` ON SCHEDULE EVERY 1 MONTH STARTS '2009-06-09 13:36:27' ON COMPLETION NOT PRESERVE ENABLE DO
BEGIN
select 1;
END//
show warnings //
Repeatable only on 64-bit box
[19 May 2010 9:29]
Tor Didriksen
Backported and pushed to mysql-5.1-bugteam Merged (unchanged) and pushed to mysql-pe
[28 May 2010 5:59]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (pib:16)
[28 May 2010 6:28]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:alik@sun.com-20100524190409-5w4l7mje1wk1c90l) (merge vers: 6.0.14-alpha) (pib:16)
[28 May 2010 6:56]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:alexey.kopytov@sun.com-20100523204118-0tl3goawu658rxh6) (merge vers: 5.5.5-m3) (pib:16)
[2 Jun 2010 8:49]
Bugs System
Pushed into 5.1.48 (revid:georgi.kodinov@oracle.com-20100602084411-2yu607bslbmgufl3) (version source revid:tor.didriksen@sun.com-20100519091859-rwwjn5kjrgmoypic) (merge vers: 5.1.47) (pib:16)
[8 Jun 2010 18:30]
Paul DuBois
Noted in 5.1.48, 5.5.5, 6.0.14 changelogs. Calculation of intervals for Event Scheduler events was not portable.
[14 Oct 2010 8:31]
Bugs System
Pushed into mysql-5.1-telco-7.0 5.1.51-ndb-7.0.20 (revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 8:46]
Bugs System
Pushed into mysql-5.1-telco-6.3 5.1.51-ndb-6.3.39 (revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 9:01]
Bugs System
Pushed into mysql-5.1-telco-6.2 5.1.51-ndb-6.2.19 (revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (version source revid:vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh) (merge vers: 5.5.5-m3) (pib:21)
[14 Oct 2010 14:04]
Jon Stephens
Already documented in the 5.1.48 changelog; no additional changelog entries required. Set back to Closed state.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.085 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: These tests started to fail in January 2010: backup.backup_xpfm_compat_restore_lctn0 backup.backup_xpfm_compat_restore_lctn1 There's now lots of Warnings: +# 1441 Datetime function: datetime field overflow due to bogus unsigned/signed arithmetic when computing intervals. I guess this started to fail simply because we passed newyear. It turns out that this arithmetic in get_next_time() is not portable: long diff_months= (long) (local_now.year - local_start.year)*12 + (local_now.month - local_start.month); On 64-bit platforms we now get a month interval of 4294967292 in date_add_interval(), which will set an ER_DATETIME_FUNCTION_OVERFLOW warning. How to repeat: Run these tests on a 64bit platform. backup.backup_xpfm_compat_restore_lctn0 backup.backup_xpfm_compat_restore_lctn1 (see pushbuild for verification) Suggested fix: Never perform subtraction on unsigned values! (or even better: don't use unsigned)