diff options
author | Sergey Glukhov <sergey.glukhov@oracle.com> | 2010-12-21 14:50:03 +0300 |
---|---|---|
committer | Sergey Glukhov <sergey.glukhov@oracle.com> | 2010-12-21 14:50:03 +0300 |
commit | 41f17a87074eeeb173ce3b75c4293fabdade8aae (patch) | |
tree | 0494999be141ccd9f626e86427b958c8116e2cd6 /sql/item_sum.cc | |
parent | c37ad60ef1eafa7ef52164422ee49b4a35c72d8b (diff) | |
parent | e2db8e6ccb2655ec5706305b491540ad3f1c8267 (diff) | |
download | mariadb-git-41f17a87074eeeb173ce3b75c4293fabdade8aae.tar.gz |
5.1-bugteam->5.5-bugteam merge
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r-- | sql/item_sum.cc | 20 |
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; } |