| 1036 | |
| 1037 | |
| 1038 | String *field_decimal::avg(String *s, ha_rows rows) |
| 1039 | { |
| 1040 | if (!(rows - nulls)) |
| 1041 | { |
| 1042 | s->set_real((double) 0.0, 1,my_thd_charset); |
| 1043 | return s; |
| 1044 | } |
| 1045 | my_decimal num, avg_val, rounded_avg; |
| 1046 | int prec_increment= current_thd->variables.div_precincrement; |
| 1047 | |
| 1048 | int2my_decimal(E_DEC_FATAL_ERROR, rows - nulls, FALSE, &num); |
| 1049 | my_decimal_div(E_DEC_FATAL_ERROR, &avg_val, sum+cur_sum, &num, prec_increment); |
| 1050 | /* TODO remove this after decimal_div returns proper frac */ |
| 1051 | avg_val.round_to(&rounded_avg, |
| 1052 | MY_MIN(sum[cur_sum].frac + prec_increment, DECIMAL_MAX_SCALE), |
| 1053 | HALF_UP); |
| 1054 | rounded_avg.to_string_native(s, 0, 0, '0'); |
| 1055 | return s; |
| 1056 | } |
| 1057 | |
| 1058 | |
| 1059 | String *field_decimal::std(String *s, ha_rows rows) |
no test coverage detected