mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-23337 Rounding functions create a wrong data type for integer input
1. Fixing ROUND(x) and TRUNCATE(x,0) with TINYINT, SMALLINT, MEDIUMINT, BIGINT input to preserve the exact data type of the argument when it's possible. 2. Fixing FLOOR(x) and CEILING(x) with TINYINT, SMALLINT, MEDIUMINT, BIGINT to preserve the exact data type of the argument. 3. Adding dedicated Type_handler_year::Item_func_round_fix_length_and_dec() to easier handle ROUND(x) and TRUNCATE(x,y) for the YEAR(2) and YEAR(4) input. They still return INT(2) UNSIGNED and INT(4) UNSIGNED correspondingly, as before.
This commit is contained in:
@ -5124,6 +5124,8 @@ public:
|
||||
const Column_definition_attributes *attr,
|
||||
uint32 flags) const;
|
||||
Item_cache *Item_get_cache(THD *thd, const Item *item) const;
|
||||
bool Item_func_round_fix_length_and_dec(Item_func_round *) const;
|
||||
bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const;
|
||||
void Item_get_date(THD *thd, Item *item, Temporal::Warn *warn,
|
||||
MYSQL_TIME *ltime, date_mode_t fuzzydate) const;
|
||||
void Item_func_hybrid_field_type_get_date(THD *,
|
||||
|
Reference in New Issue
Block a user