summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorAlexey Kopytov <Alexey.Kopytov@Sun.com>2009-07-03 14:36:04 +0400
committerAlexey Kopytov <Alexey.Kopytov@Sun.com>2009-07-03 14:36:04 +0400
commit2d4df13ef28f4d5f0fbb67d570bfce9c1ebe1881 (patch)
tree06e2ea011ccd6c53fc3aca4b2248b33e484509e3 /sql/item_sum.cc
parente2ac8c07bdd2e58f5f7b4919a76a0d1881f3ed5e (diff)
parent096c12b2c42b83d879314276fe6471edf8c61fd0 (diff)
downloadmariadb-git-2d4df13ef28f4d5f0fbb67d570bfce9c1ebe1881.tar.gz
Manual merge.
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 759a53c3c5e..46a58351872 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -798,8 +798,9 @@ void Item_sum_sum::fix_length_and_dec()
{
/* SUM result can't be longer than length(arg) + length(MAX_ROWS) */
int precision= args[0]->decimal_precision() + DECIMAL_LONGLONG_DIGITS;
- max_length= my_decimal_precision_to_length(precision, decimals,
- unsigned_flag);
+ max_length= my_decimal_precision_to_length_no_truncation(precision,
+ decimals,
+ unsigned_flag);
curr_dec_buff= 0;
hybrid_type= DECIMAL_RESULT;
my_decimal_set_zero(dec_buffs);
@@ -1233,8 +1234,9 @@ void Item_sum_avg::fix_length_and_dec()
{
int precision= args[0]->decimal_precision() + prec_increment;
decimals= min(args[0]->decimals + prec_increment, DECIMAL_MAX_SCALE);
- max_length= my_decimal_precision_to_length(precision, decimals,
- unsigned_flag);
+ max_length= my_decimal_precision_to_length_no_truncation(precision,
+ decimals,
+ unsigned_flag);
f_precision= min(precision+DECIMAL_LONGLONG_DIGITS, DECIMAL_MAX_PRECISION);
f_scale= args[0]->decimals;
dec_bin_size= my_decimal_get_binary_size(f_precision, f_scale);
@@ -1439,8 +1441,9 @@ void Item_sum_variance::fix_length_and_dec()
{
int precision= args[0]->decimal_precision()*2 + prec_increment;
decimals= min(args[0]->decimals + prec_increment, DECIMAL_MAX_SCALE);
- max_length= my_decimal_precision_to_length(precision, decimals,
- unsigned_flag);
+ max_length= my_decimal_precision_to_length_no_truncation(precision,
+ decimals,
+ unsigned_flag);
break;
}