summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorSergey Glukhov <sergey.glukhov@oracle.com>2010-12-21 14:50:03 +0300
committerSergey Glukhov <sergey.glukhov@oracle.com>2010-12-21 14:50:03 +0300
commit41f17a87074eeeb173ce3b75c4293fabdade8aae (patch)
tree0494999be141ccd9f626e86427b958c8116e2cd6 /sql/item_sum.cc
parentc37ad60ef1eafa7ef52164422ee49b4a35c72d8b (diff)
parente2db8e6ccb2655ec5706305b491540ad3f1c8267 (diff)
downloadmariadb-git-41f17a87074eeeb173ce3b75c4293fabdade8aae.tar.gz
5.1-bugteam->5.5-bugteam merge
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 107634e196d..9bd551d2a30 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -1196,8 +1196,10 @@ void Item_sum_hybrid::setup_hybrid(Item *item, Item *value_arg)
value= Item_cache::get_cache(item);
value->setup(item);
value->store(value_arg);
+ arg_cache= Item_cache::get_cache(item);
+ arg_cache->setup(item);
cmp= new Arg_comparator();
- cmp->set_cmp_func(this, args, (Item**)&value, FALSE);
+ cmp->set_cmp_func(this, (Item**)&arg_cache, (Item**)&value, FALSE);
collation.set(item->collation);
}
@@ -1966,11 +1968,11 @@ Item *Item_sum_min::copy_or_same(THD* thd)
bool Item_sum_min::add()
{
/* args[0] < value */
- int res= cmp->compare();
- if (!args[0]->null_value &&
- (null_value || res < 0))
+ arg_cache->cache_value();
+ if (!arg_cache->null_value &&
+ (null_value || cmp->compare() < 0))
{
- value->store(args[0]);
+ value->store(arg_cache);
value->cache_value();
null_value= 0;
}
@@ -1989,11 +1991,11 @@ Item *Item_sum_max::copy_or_same(THD* thd)
bool Item_sum_max::add()
{
/* args[0] > value */
- int res= cmp->compare();
- if (!args[0]->null_value &&
- (null_value || res > 0))
+ arg_cache->cache_value();
+ if (!arg_cache->null_value &&
+ (null_value || cmp->compare() > 0))
{
- value->store(args[0]);
+ value->store(arg_cache);
value->cache_value();
null_value= 0;
}