summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2018-04-10 18:07:29 -0700
committerIgor Babaev <igor@askmonty.org>2018-04-10 18:07:29 -0700
commit740fc2ae084f8f81990de557d696aefbc507752d (patch)
treeac20fe4974df67d667d76faa81a21fe17c1bd134 /sql
parent45e6d0aebf023acb50671f82b87e6de5d1e78f5e (diff)
downloadmariadb-git-740fc2ae084f8f81990de557d696aefbc507752d.tar.gz
Fixed mdev-15765 BETWEEN not working in certain cases
The implementations of the convert_to_basic_const_item() virtual function for the Item_cache classes should call cache_value() when value_cached == NULL.
Diffstat (limited to 'sql')
-rw-r--r--sql/item.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 007b4f4bd54..0350b437e7d 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -9687,6 +9687,8 @@ Item *Item_cache_int::convert_to_basic_const_item(THD *thd)
{
Item *new_item;
DBUG_ASSERT(value_cached || example != 0);
+ if (!value_cached)
+ cache_value();
new_item= null_value ?
(Item*) new (thd->mem_root) Item_null(thd) :
(Item*) new (thd->mem_root) Item_int(thd, val_int(), max_length);
@@ -9862,6 +9864,8 @@ Item *Item_cache_temporal::convert_to_basic_const_item(THD *thd)
{
Item *new_item;
DBUG_ASSERT(value_cached || example != 0);
+ if (!value_cached)
+ cache_value();
if (null_value)
new_item= (Item*) new (thd->mem_root) Item_null(thd);
else
@@ -9936,6 +9940,8 @@ Item *Item_cache_real::convert_to_basic_const_item(THD *thd)
{
Item *new_item;
DBUG_ASSERT(value_cached || example != 0);
+ if (!value_cached)
+ cache_value();
new_item= null_value ?
(Item*) new (thd->mem_root) Item_null(thd) :
(Item*) new (thd->mem_root) Item_float(thd, val_real(),
@@ -9999,6 +10005,8 @@ Item *Item_cache_decimal::convert_to_basic_const_item(THD *thd)
{
Item *new_item;
DBUG_ASSERT(value_cached || example != 0);
+ if (!value_cached)
+ cache_value();
if (null_value)
new_item= (Item*) new (thd->mem_root) Item_null(thd);
else
@@ -10094,6 +10102,8 @@ Item *Item_cache_str::convert_to_basic_const_item(THD *thd)
{
Item *new_item;
DBUG_ASSERT(value_cached || example != 0);
+ if (!value_cached)
+ cache_value();
if (null_value)
new_item= (Item*) new (thd->mem_root) Item_null(thd);
else