diff options
author | Alexander Barkov <bar@mariadb.com> | 2019-09-24 23:05:09 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2019-09-24 23:05:09 +0400 |
commit | b6bb64e54a3e34a20cda34e25b6ec62a097955ef (patch) | |
tree | 70fc710317991ae4892c57f179759ed3147d3d47 /sql | |
parent | 0e50ee6f28ca709c3ab8d143360faca182e74db4 (diff) | |
parent | 102bc7beb080e936ba70c0524a8759799f42458e (diff) | |
download | mariadb-git-b6bb64e54a3e34a20cda34e25b6ec62a097955ef.tar.gz |
Merge remote-tracking branch 'origin/10.2' into 10.3
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_func.cc | 5 | ||||
-rw-r--r-- | sql/item_func.h | 9 |
2 files changed, 8 insertions, 6 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 53ea77db0c8..bf4909e1846 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1854,8 +1854,11 @@ my_decimal *Item_func_mod::decimal_op(my_decimal *decimal_value) void Item_func_mod::result_precision() { + unsigned_flag= args[0]->unsigned_flag; decimals= MY_MAX(args[0]->decimal_scale(), args[1]->decimal_scale()); - max_length= MY_MAX(args[0]->max_length, args[1]->max_length); + uint prec= MY_MAX(args[0]->decimal_precision(), args[1]->decimal_precision()); + fix_char_length(my_decimal_precision_to_length_no_truncation(prec, decimals, + unsigned_flag)); } diff --git a/sql/item_func.h b/sql/item_func.h index 4f22286723c..3fc02e6e51d 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -1209,14 +1209,13 @@ public: } void fix_length_and_dec_decimal() { - Item_num_op::fix_length_and_dec_decimal(); - unsigned_flag= args[0]->unsigned_flag; + result_precision(); + fix_decimals(); } void fix_length_and_dec_int() { - max_length= MY_MAX(args[0]->max_length, args[1]->max_length); - decimals= 0; - unsigned_flag= args[0]->unsigned_flag; + result_precision(); + DBUG_ASSERT(decimals == 0); set_handler(type_handler_long_or_longlong()); } bool check_partition_func_processor(void *int_arg) {return FALSE;} |