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-4188 Regression fixes for MCOL-641.
1. In TupleAggregateStep::configDeliveredRowGroup(), use jobInfo.projectionCols instead of jobInfo.nonConstCols for setting scale and precision if the source column is wide decimal. 2. Tighten rules for wide decimal processing. Specifically: a. Replace (precision > INT64MAXPRECISION) checks with (precision > INT64MAXPRECISION && precision <= INT128MAXPRECISION) b. At places where (colWidth == MAXDECIMALWIDTH) is not enough to determine if a column is wide decimal or not, also add a check on type being DECIMAL/UDECIMAL.
This commit is contained in:
@ -1068,7 +1068,7 @@ dec3: /* have to pick a scale to use for the double. using 5..
|
||||
case CalpontSystemCatalog::DECIMAL:
|
||||
case CalpontSystemCatalog::UDECIMAL:
|
||||
{
|
||||
dec4: /* have to pick a scale to use for the double. using 5... */
|
||||
dec4: /* have to pick a scale to use for the double. using 5... */
|
||||
uint32_t scale = 5;
|
||||
uint64_t ival = (uint64_t) (double) (val * pow((double) 10, (double) scale));
|
||||
int diff = out->getScale(i) - scale;
|
||||
@ -1128,7 +1128,8 @@ dec4: /* have to pick a scale to use for the double. using 5... */
|
||||
case CalpontSystemCatalog::DECIMAL:
|
||||
case CalpontSystemCatalog::UDECIMAL:
|
||||
{
|
||||
if (out->getColumnWidth(i) == datatypes::MAXDECIMALWIDTH)
|
||||
if (datatypes::isWideDecimalType(out->getColTypes()[i],
|
||||
out->getColumnWidth(i)))
|
||||
{
|
||||
if (out->getScale(i) == scale)
|
||||
out->setInt128Field(isInputWide ? val128 : val, i);
|
||||
|
Reference in New Issue
Block a user