summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorVicențiu Ciorbaru <vicentiu@mariadb.org>2017-12-06 02:16:14 +0200
committerVicențiu Ciorbaru <vicentiu@mariadb.org>2017-12-06 02:16:14 +0200
commitac61a575dfff6b9510576be920a522c710732c0d (patch)
tree44138f54e7bd45680918dff097b196620a694316 /sql/item.cc
parent7603463a46b288c1b5630348e36c622e4c2abb09 (diff)
downloadmariadb-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.cc9
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)