mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-24387: Wrong number of decimal digits in certain UNION/Subqery
constellation Analysis: The decimals is set to NOT_FIXED_DEC for Field_str even if it is NULL. Unsigned has decimals=0. So Type_std_attributes::decimals is set to 39 (maximum between 0 and 39). This results in incorrect number of decimals when we have union of unsigned and NULL type. Fix: Check if the field is created from NULL value. If yes, set decimals to 0 otherwise set it to NOT_FIXED_DEC.
This commit is contained in:
@ -1762,7 +1762,7 @@ public:
|
||||
uchar null_bit_arg, utype unireg_check_arg,
|
||||
const LEX_CSTRING *field_name_arg,
|
||||
const DTCollation &collation);
|
||||
uint decimals() const { return NOT_FIXED_DEC; }
|
||||
uint decimals() const { return is_created_from_null_item ? 0 : NOT_FIXED_DEC; }
|
||||
int save_in_field(Field *to) { return save_in_field_str(to); }
|
||||
bool memcpy_field_possible(const Field *from) const
|
||||
{
|
||||
|
Reference in New Issue
Block a user