1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-4313 Introduced TSInt128 that is a storage class for int128

Removed uint128 from joblist/lbidlist.*

Another toString() method for wide-decimal that is EMPTY/NULL aware

Unified decimal processing in WF functions

Fixed a potential issue in EqualCompData::operator() for
    wide-decimal processing

Fixed some signedness warnings
This commit is contained in:
Roman Nozdrin
2020-11-06 10:52:43 +00:00
parent d5c6645ba1
commit 3eb26c0d4a
35 changed files with 505 additions and 364 deletions

View File

@ -635,8 +635,8 @@ void SimpleColumn::evaluate(Row& row, bool& isNull)
{
case 16:
{
fResult.decimalVal.s128Value =
*row.getBinaryField_offset<decltype(fResult.decimalVal.s128Value)>(fInputOffset);
datatypes::TSInt128::assignPtrPtr(&fResult.decimalVal.s128Value,
row.getBinaryField_offset<int128_t>(fInputOffset));
break;
}
case 1:

View File

@ -61,6 +61,12 @@ class IDB_Decimal: public datatypes::VDecimal
{
public:
using datatypes::VDecimal::VDecimal;
inline void operator=(const datatypes::TSInt128& rhs)
{
value = 0; scale = 0; precision = 0;
datatypes::TSInt128::operator=(rhs);
}
};

View File

@ -687,12 +687,12 @@ void WindowFunctionColumn::evaluate(Row& row, bool& isNull)
case 16:
{
int128_t dec = row.getInt128Field(fInputIndex);
datatypes::TSInt128 dec(row.getBinaryField<int128_t>(fInputIndex));
if (dec == datatypes::Decimal128Null)
isNull = true;
else
{
fResult.decimalVal.s128Value = dec;
fResult.decimalVal = dec;
fResult.decimalVal.scale = (unsigned)fResultType.scale;
}