You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
MCOL-4180 Add some missing support for wide decimals to dbcon/execplan
classes.
This commit is contained in:
@ -347,12 +347,31 @@ class Decimal: public TSInt128
|
||||
return toDouble();
|
||||
}
|
||||
|
||||
inline long double toLongDouble() const
|
||||
inline float toFloat() const
|
||||
{
|
||||
datatypes::TFloat128 y(s128Value);
|
||||
return static_cast<long double>(y);
|
||||
int128_t scaleDivisor;
|
||||
getScaleDivisor(scaleDivisor, scale);
|
||||
datatypes::TFloat128 tmpval((__float128) s128Value / scaleDivisor);
|
||||
return static_cast<float>(tmpval);
|
||||
}
|
||||
|
||||
inline operator float() const
|
||||
{
|
||||
return toFloat();
|
||||
}
|
||||
|
||||
inline long double toLongDouble() const
|
||||
{
|
||||
int128_t scaleDivisor;
|
||||
getScaleDivisor(scaleDivisor, scale);
|
||||
datatypes::TFloat128 tmpval((__float128) s128Value / scaleDivisor);
|
||||
return static_cast<long double>(tmpval);
|
||||
}
|
||||
|
||||
inline operator long double() const
|
||||
{
|
||||
return toLongDouble();
|
||||
}
|
||||
|
||||
// This method returns integral part as a TSInt128 and
|
||||
// fractional part as a TFloat128
|
||||
|
@ -102,6 +102,21 @@ class TFloat128
|
||||
return toLongDouble();
|
||||
}
|
||||
|
||||
inline operator float() const
|
||||
{
|
||||
return toFloat();
|
||||
}
|
||||
|
||||
inline float toFloat() const
|
||||
{
|
||||
if (value > static_cast<__float128>(FLT_MAX))
|
||||
return FLT_MAX;
|
||||
else if (value < -static_cast<__float128>(FLT_MAX))
|
||||
return -FLT_MAX;
|
||||
|
||||
return static_cast<float>(value);
|
||||
}
|
||||
|
||||
inline int64_t toTSInt64() const
|
||||
{
|
||||
if (value > static_cast<__float128>(INT64_MAX))
|
||||
|
Reference in New Issue
Block a user