mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Bug#48370: Absolutely wrong calculations with GROUP BY and decimal fields when using IF
Bug#45261: Crash, stored procedure + decimal Revert fix for Bug#45261 due to unforeseen bugs.
This commit is contained in:
@@ -48,12 +48,10 @@ C_MODE_END
|
||||
digits * number of decimal digits in one our big digit - number of decimal
|
||||
digits in one our big digit decreased by 1 (because we always put decimal
|
||||
point on the border of our big digits))
|
||||
|
||||
This value is 65 due to historical reasons partly due to it being used
|
||||
as the maximum allowed precision and not the actual maximum precision.
|
||||
*/
|
||||
#define DECIMAL_MAX_PRECISION (DECIMAL_MAX_POSSIBLE_PRECISION - 8*2)
|
||||
#define DECIMAL_MAX_SCALE 30
|
||||
#define DECIMAL_NOT_SPECIFIED 31
|
||||
|
||||
/**
|
||||
maximum length of string representation (number of maximum decimal
|
||||
@@ -77,6 +75,12 @@ inline uint my_decimal_size(uint precision, uint scale)
|
||||
}
|
||||
|
||||
|
||||
inline int my_decimal_int_part(uint precision, uint decimals)
|
||||
{
|
||||
return precision - ((decimals == DECIMAL_NOT_SPECIFIED) ? 0 : decimals);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
my_decimal class limits 'decimal_t' type to what we need in MySQL.
|
||||
|
||||
@@ -180,7 +184,7 @@ inline uint my_decimal_length_to_precision(uint length, uint scale,
|
||||
}
|
||||
|
||||
inline uint32 my_decimal_precision_to_length_no_truncation(uint precision,
|
||||
uint scale,
|
||||
uint8 scale,
|
||||
bool unsigned_flag)
|
||||
{
|
||||
/*
|
||||
@@ -192,7 +196,7 @@ inline uint32 my_decimal_precision_to_length_no_truncation(uint precision,
|
||||
(unsigned_flag || !precision ? 0 : 1));
|
||||
}
|
||||
|
||||
inline uint32 my_decimal_precision_to_length(uint precision, uint scale,
|
||||
inline uint32 my_decimal_precision_to_length(uint precision, uint8 scale,
|
||||
bool unsigned_flag)
|
||||
{
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user