Bug #4780 | microsecond() returns incorrect value | ||
---|---|---|---|
Submitted: | 28 Jul 2004 2:50 | Modified: | 28 Jul 2004 16:34 |
Reporter: | Christopher Miller | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.0.0-alpha | OS: | Windows (XP) |
Assigned to: | Dean Ellis | CPU Architecture: | Any |
[28 Jul 2004 2:50]
Christopher Miller
[28 Jul 2004 3:38]
Christopher Miller
for whomever wishes to incorporate the change into cvs (i'm a developer but not active with mysql on cvs) here is a fix to sql/time.cpp:775 that will eliminate this bug... fractional: /* Get fractional second part */ if ((end-str) >= 2 && *str == '.' && my_isdigit(&my_charset_latin1,str[1])) { value = 0; uint mul = 1000000U; while ( ++str < end && my_isdigit(&my_charset_latin1,*str) ) value += ( (uint) (uchar) ( *str - '0' ) ) * ( mul /= 10 ); date[4]=value; } else date[4]=0;
[28 Jul 2004 4:04]
Paul DuBois
The incorrect result also occurs in 4.1.1. The correct result occurs in 4.1.2, 4.1.3, and 4.1.4. Perhaps the merge from 4.1 -> 5.0 will take care of the issue.
[28 Jul 2004 16:34]
Dean Ellis
As suggested, this is already corrected in 5.0.1-alpha, so you could build from the BitKeeper repository for 5.0 or await the next binary release.