diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2020-02-11 14:40:35 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2020-02-11 14:40:35 +0100 |
commit | 646d1ec83a57d9a5b380079afc3612c1d9acadd5 (patch) | |
tree | b46ec54915361f3baa221bcd01b4308a55c59c48 /sql/sql_partition.cc | |
parent | c1eaa385ffb44bdf6264d2cc4b4cc0e10284c88a (diff) | |
parent | 58b70dc13630d2f2f0244359d6351085d70fd5dd (diff) | |
download | mariadb-git-646d1ec83a57d9a5b380079afc3612c1d9acadd5.tar.gz |
Merge branch '10.3' into 10.4
Diffstat (limited to 'sql/sql_partition.cc')
-rw-r--r-- | sql/sql_partition.cc | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 0c7be11bd59..12198d34c88 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -2836,14 +2836,34 @@ bool partition_key_modified(TABLE *table, const MY_BITMAP *fields) static inline int part_val_int(Item *item_expr, longlong *result) { - *result= item_expr->val_int(); + switch (item_expr->cmp_type()) + { + case DECIMAL_RESULT: + { + my_decimal buf; + my_decimal *val= item_expr->val_decimal(&buf); + if (val && my_decimal2int(E_DEC_FATAL_ERROR, val, item_expr->unsigned_flag, + result, FLOOR) != E_DEC_OK) + return true; + break; + } + case INT_RESULT: + *result= item_expr->val_int(); + break; + case STRING_RESULT: + case REAL_RESULT: + case ROW_RESULT: + case TIME_RESULT: + DBUG_ASSERT(0); + break; + } if (item_expr->null_value) { if (unlikely(current_thd->is_error())) - return TRUE; + return true; *result= LONGLONG_MIN; } - return FALSE; + return false; } |