diff options
author | Sergei Golubchik <sergii@pisem.net> | 2012-11-17 16:50:15 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2012-11-17 16:50:15 +0100 |
commit | 13ba0dd286f3296bfbbd202fa76d47770734b472 (patch) | |
tree | 5790c99069390098160a26ac5b05215f4179f818 /sql/item_sum.cc | |
parent | ecf04668a2db3d7fc91e421e68eeb5ab25064aa0 (diff) | |
download | mariadb-git-13ba0dd286f3296bfbbd202fa76d47770734b472.tar.gz |
MDEV-736 LP:1004615 - Unexpected warnings "Encountered illegal value '' when converting to DECIMAL" on a query with aggregate functions and GROUP BY
fix: don't call field->val_decimal() if the field->is_null()
because the buffer at field->ptr might not hold a valid decimal value
sql/item_sum.cc:
do not call field->val_decimal() if the field->is_null()
storage/maria/ma_blockrec.c:
cleanup
storage/maria/ma_rrnd.c:
cleanup
strings/decimal.c:
typo
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r-- | sql/item_sum.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 86aef19efc0..1c83f0e2422 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -2149,9 +2149,8 @@ Item_sum_hybrid::min_max_update_int_field() void Item_sum_hybrid::min_max_update_decimal_field() { - /* TODO: optimize: do not get result_field in case of args[0] is NULL */ my_decimal old_val, nr_val; - const my_decimal *old_nr= result_field->val_decimal(&old_val); + const my_decimal *old_nr; const my_decimal *nr= args[0]->val_decimal(&nr_val); if (!args[0]->null_value) { @@ -2159,16 +2158,17 @@ Item_sum_hybrid::min_max_update_decimal_field() old_nr=nr; else { + old_nr= result_field->val_decimal(&old_val); bool res= my_decimal_cmp(old_nr, nr) > 0; /* (cmp_sign > 0 && res) || (!(cmp_sign > 0) && !res) */ if ((cmp_sign > 0) ^ (!res)) old_nr=nr; } result_field->set_notnull(); + result_field->store_decimal(old_nr); } else if (result_field->is_null(0)) result_field->set_null(); - result_field->store_decimal(old_nr); } |