You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
MCOL-3959 Separate processing for decimal
Preserves precision better than double
This commit is contained in:
@ -52,7 +52,6 @@ DateTime getDateTime(rowgroup::Row& row,
|
||||
{
|
||||
case execplan::CalpontSystemCatalog::FLOAT:
|
||||
case execplan::CalpontSystemCatalog::DOUBLE:
|
||||
case execplan::CalpontSystemCatalog::DECIMAL:
|
||||
{
|
||||
double value = parm[0]->data()->getDoubleVal(row, isNull);
|
||||
double fracpart, intpart;
|
||||
@ -61,6 +60,13 @@ DateTime getDateTime(rowgroup::Row& row,
|
||||
msec = (uint32_t)(fracpart * IDB_pow[parm[0]->data()->resultType().scale]);
|
||||
break;
|
||||
}
|
||||
case execplan::CalpontSystemCatalog::DECIMAL:
|
||||
{
|
||||
IDB_Decimal dec = parm[0]->data()->getDecimalVal(row, isNull);
|
||||
val = dec.value / IDB_pow[dec.scale];
|
||||
msec = dec.value % IDB_pow[dec.scale];
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
val = parm[0]->data()->getDatetimeIntVal(row, isNull);
|
||||
|
Reference in New Issue
Block a user