diff options
author | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-12-06 02:16:14 +0200 |
---|---|---|
committer | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-12-06 02:16:14 +0200 |
commit | ac61a575dfff6b9510576be920a522c710732c0d (patch) | |
tree | 44138f54e7bd45680918dff097b196620a694316 /sql/item.cc | |
parent | 7603463a46b288c1b5630348e36c622e4c2abb09 (diff) | |
download | mariadb-git-ac61a575dfff6b9510576be920a522c710732c0d.tar.gz |
Revert "Remove use of volatile in stored_field_cmp_to_item"
This reverts commit 7603463a46b288c1b5630348e36c622e4c2abb09.
The commit itself is fine, however when disabling volatile, compiler
optimizations mess up our double results due to precision differences.
Revert the patch till a proper solution is found.
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/item.cc b/sql/item.cc index 574e8722c3d..332e027adf1 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -8924,10 +8924,15 @@ int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) } return my_time_compare(&field_time, &item_time); } - double result= item->val_real(); + /* + The patch for Bug#13463415 started using this function for comparing + BIGINTs. That uncovered a bug in Visual Studio 32bit optimized mode. + Prefixing the auto variables with volatile fixes the problem.... + */ + volatile double result= item->val_real(); if (item->null_value) return 0; - double field_result= field->val_real(); + volatile double field_result= field->val_real(); if (field_result < result) return -1; else if (field_result > result) |