summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2018-12-26 12:10:50 +0400
committerAlexander Barkov <bar@mariadb.com>2018-12-26 12:10:50 +0400
commitd89d12e3b723ba7a5113b3cdffd1d4a48127ff0a (patch)
tree307f208284919808f4d2784b8d41d7b7beee2024 /sql/item_func.cc
parent812bb1303c4a012edb8de9f6ad4c1d97d29533f6 (diff)
downloadmariadb-git-d89d12e3b723ba7a5113b3cdffd1d4a48127ff0a.tar.gz
MDEV-17759 Assertion `precision > 0' failed in decimal_bin_size upon CREATE TABLE .. SELECT
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r--sql/item_func.cc10
1 files changed, 3 insertions, 7 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc
index f902191d9cf..3b9dfc9d97a 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -1752,13 +1752,9 @@ longlong Item_func_int_div::val_int()
bool Item_func_int_div::fix_length_and_dec()
{
- Item_result argtype= args[0]->result_type();
- /* use precision ony for the data type it is applicable for and valid */
- uint32 char_length= args[0]->max_char_length() -
- (argtype == DECIMAL_RESULT || argtype == INT_RESULT ?
- args[0]->decimals : 0);
- fix_char_length(char_length > MY_INT64_NUM_DECIMAL_DIGITS ?
- MY_INT64_NUM_DECIMAL_DIGITS : char_length);
+ uint32 prec= args[0]->decimal_int_part();
+ set_if_smaller(prec, MY_INT64_NUM_DECIMAL_DIGITS);
+ fix_char_length(prec);
maybe_null=1;
unsigned_flag=args[0]->unsigned_flag | args[1]->unsigned_flag;
return false;