
| Key: |
MDL-17868
|
| Type: |
Bug
|
| Status: |
Resolved
|
| Resolution: |
Fixed
|
| Priority: |
Critical
|
| Assignee: |
Petr Skoda
|
| Reporter: |
Tim Hunt
|
| Votes: |
0
|
| Watchers: |
0
|
|
|
|
Issue Links:
|
Cloners
|
|
This issue is a clone of:
|
|
MDL-18253
Continuing problems with upgrades and installs because of fractional version numbers
|
|
|
|
|
|
|
|
| Participants: |
Petr Skoda and Tim Hunt
|
| Security Level: |
None
|
| Resolved date: |
22/Jan/09
|
| Affected Branches: |
MOODLE_19_STABLE
|
| Fixed Branches: |
MOODLE_19_STABLE
|
See http://moodle.org/mod/forum/discuss.php?d=113752
The issue seems to be
(mysql): UPDATE mdl_config SET value = '2.0071E+9' WHERE name = 'version'
Note that the version number has been rounded (value = '2.0071E+9') so the upgrade continues from the wrong place.
http://www.php.net/manual/en/language.types.float.php seems to say that PHP floats always use 15 decimal digits of precision internally, so my diagnosis is that the error occurs when the float is converted to a string somewhere in set_config before it is stored in the DB.
|
|
Description
|
See http://moodle.org/mod/forum/discuss.php?d=113752
The issue seems to be
(mysql): UPDATE mdl_config SET value = '2.0071E+9' WHERE name = 'version'
Note that the version number has been rounded (value = '2.0071E+9') so the upgrade continues from the wrong place.
http://www.php.net/manual/en/language.types.float.php seems to say that PHP floats always use 15 decimal digits of precision internally, so my diagnosis is that the error occurs when the float is converted to a string somewhere in set_config before it is stored in the DB. |
Show » |
|
$num1 = 2009010200.01;
$num2 = 2009010200.02;
if((string)$num1 === (string)$num2 or $num1 === $num2) {
error ('incorrect float handling detected');
}