diff options
author | Alexander Barkov <bar@mariadb.com> | 2019-09-24 11:16:36 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2019-09-24 11:18:39 +0400 |
commit | 5f118b26c83960c8fa98bfd544f57ffd76b55304 (patch) | |
tree | 762e9475ea3b0e402ebd0571a55958b377a3fab4 /sql/item_func.cc | |
parent | 896974fc3d721aabe1afbf637a566cab856a731d (diff) | |
parent | 67b0faa29e59387b74ae8547c96cf0f31fc3d9d1 (diff) | |
download | mariadb-git-5f118b26c83960c8fa98bfd544f57ffd76b55304.tar.gz |
Merge remote-tracking branch 'origin/5.5' into 10.1
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 8e8020e28f7..702d8a1a2ee 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1951,8 +1951,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)); } @@ -1960,6 +1963,10 @@ void Item_func_mod::fix_length_and_dec() { Item_num_op::fix_length_and_dec(); maybe_null= 1; + /* + result_precision() sets unsigned_flag for INT_RESULT and DECIMAL_RESULT. + Here we need to set it in case of REAL_RESULT. + */ unsigned_flag= args[0]->unsigned_flag; } |