summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/select.result10
-rw-r--r--mysql-test/t/select.test9
-rw-r--r--sql/item_cmpfunc.cc2
3 files changed, 20 insertions, 1 deletions
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result
index fa030670d6e..c0526837ba9 100644
--- a/mysql-test/r/select.result
+++ b/mysql-test/r/select.result
@@ -4694,4 +4694,14 @@ HAVING v <= 't'
ORDER BY pk;
v
DROP TABLE t1;
+#
+# Bug#49489 Uninitialized cache led to a wrong result.
+#
+CREATE TABLE t1(c1 DOUBLE(5,4));
+INSERT INTO t1 VALUES (9.1234);
+SELECT * FROM t1 WHERE c1 < 9.12345;
+c1
+9.1234
+DROP TABLE t1;
+# End of test for bug#49489.
End of 5.1 tests
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test
index 116a09f5d00..61a694599ed 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -4014,4 +4014,13 @@ ORDER BY pk;
DROP TABLE t1;
+--echo #
+--echo # Bug#49489 Uninitialized cache led to a wrong result.
+--echo #
+CREATE TABLE t1(c1 DOUBLE(5,4));
+INSERT INTO t1 VALUES (9.1234);
+SELECT * FROM t1 WHERE c1 < 9.12345;
+DROP TABLE t1;
+--echo # End of test for bug#49489.
+
--echo End of 5.1 tests
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 644cc432bc4..d5a61ea4050 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -1031,7 +1031,7 @@ Item** Arg_comparator::cache_converted_constant(THD *thd, Item **value,
(*value)->const_item() && type != (*value)->result_type())
{
Item_cache *cache= Item_cache::get_cache(*value, type);
- cache->store(*value);
+ cache->setup(*value);
*cache_item= cache;
return cache_item;
}