summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.cc
diff options
context:
space:
mode:
authorhf@deer.(none) <>2005-02-09 02:50:45 +0400
committerhf@deer.(none) <>2005-02-09 02:50:45 +0400
commitb94a482ee9fdc45b64eb001a908f52784dfabcc1 (patch)
tree9631c72d46b0fd08479ad02de00e5846cd339cda /sql/item_strfunc.cc
parent6e6daf818943e34d72017f64e496d6d94c90134f (diff)
downloadmariadb-git-b94a482ee9fdc45b64eb001a908f52784dfabcc1.tar.gz
Precision Math implementation
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r--sql/item_strfunc.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index e3f1053dc73..55185a5f75b 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -49,6 +49,8 @@ static void my_coll_agg_error(DTCollation &c1, DTCollation &c2,
uint nr_of_decimals(const char *str)
{
+ if (strchr(str,'e') || strchr(str,'E'))
+ return NOT_FIXED_DEC;
if ((str=strchr(str,'.')))
{
const char *start= ++str;
@@ -1784,10 +1786,9 @@ void Item_func_make_set::split_sum_func(THD *thd, Item **ref_pointer_array,
(item->used_tables() && item->type() != REF_ITEM))
{
uint el= fields.elements;
- ref_pointer_array[el]=item;
+ ref_pointer_array[el]= item;
Item *new_item= new Item_ref(ref_pointer_array + el, 0, item->name);
fields.push_front(item);
- ref_pointer_array[el]= item;
thd->change_item_tree(&item, new_item);
}
Item_str_func::split_sum_func(thd, ref_pointer_array, fields);
@@ -1803,7 +1804,7 @@ void Item_func_make_set::fix_length_and_dec()
for (uint i=0 ; i < arg_count ; i++)
max_length+=args[i]->max_length;
-
+
used_tables_cache|= item->used_tables();
not_null_tables_cache&= item->not_null_tables();
const_item_cache&= item->const_item();