summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <Sinisa@sinisa.nasamreza.org>2002-11-30 18:38:44 +0200
committerunknown <Sinisa@sinisa.nasamreza.org>2002-11-30 18:38:44 +0200
commit50e61c5175846ebcc72e15444b20995234270ee3 (patch)
treeecdcdc76ebb039cd85dc7270371846cbf9836648 /sql
parent7dc2b70f4960b201e0edfb8b92a565d71053acf4 (diff)
downloadmariadb-git-50e61c5175846ebcc72e15444b20995234270ee3.tar.gz
a fix for a bug with HAVING sum_func IN (...)
Diffstat (limited to 'sql')
-rw-r--r--sql/item_cmpfunc.cc8
-rw-r--r--sql/item_cmpfunc.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 36ecde337a7..4ef77d0c509 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -1029,6 +1029,14 @@ void Item_func_in::update_used_tables()
used_tables_cache|=item->used_tables();
const_item_cache&=item->const_item();
}
+void Item_func_in::split_sum_func(List<Item> &fields)
+{
+ if (item->used_tables() || item->type() == SUM_FUNC_ITEM)
+ {
+ fields.push_front(item);
+ item=new Item_ref((Item**) fields.head_ref(),0,item->name);
+ }
+}
longlong Item_func_bit_or::val_int()
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index e7c598808e8..72d4e06e39c 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -410,6 +410,7 @@ class Item_func_in :public Item_int_func
longlong val_int();
bool fix_fields(THD *thd,struct st_table_list *tlist)
{
+ with_sum_func= with_sum_func || item->with_sum_func;
return (item->fix_fields(thd,tlist) || Item_func::fix_fields(thd,tlist));
}
void fix_length_and_dec();
@@ -421,6 +422,7 @@ class Item_func_in :public Item_int_func
enum Functype functype() const { return IN_FUNC; }
const char *func_name() const { return " IN "; }
void update_used_tables();
+ void split_sum_func(List<Item> &fields);
};