1
0
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:
Gagan Goel
2020-12-12 00:14:48 +00:00
parent 9c623a5434
commit ed7811e161
5 changed files with 67 additions and 9 deletions

View File

@ -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

View File

@ -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))