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 5092 MODA uses wrong column width for some types (#2450)
* MCOL-5092 Ensure column width is correct for datatype Change MODA return type to STRING Modify MODA to handle every numeric type * MCOL-5162 MODA to support char and varchar with collation support Fixes to the aggregate bit functions When we fixed the storage sign issue for MCOL-5092, it uncovered a problem in the bit aggregates (bit_and, bit_or and bit_xor). These aggregates should always return UBIGINT, but they relied on the type of the argument column, which gave bad results.
This commit is contained in:
@ -1332,16 +1332,7 @@ void TupleAggregateStep::prep1PhaseAggregate(JobInfo& jobInfo, vector<RowGroup>&
|
||||
keysAgg.push_back(key);
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-16); // for connector to skip null check
|
||||
|
||||
if (isUnsigned(typeProj[colProj]))
|
||||
{
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
}
|
||||
else
|
||||
{
|
||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
}
|
||||
@ -1941,16 +1932,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(JobInfo& jobInfo, vector<Ro
|
||||
keysAgg.push_back(aggKey);
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-16); // for connector to skip null check
|
||||
|
||||
if (isUnsigned(typeProj[colProj]))
|
||||
{
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
}
|
||||
else
|
||||
{
|
||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
colAgg++;
|
||||
@ -3274,16 +3256,7 @@ void TupleAggregateStep::prep2PhasesAggregate(JobInfo& jobInfo, vector<RowGroup>
|
||||
keysAggPm.push_back(aggKey);
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-16); // for connector to skip null check
|
||||
|
||||
if (isUnsigned(typeProj[colProj]))
|
||||
{
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
}
|
||||
else
|
||||
{
|
||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
colAggPm++;
|
||||
@ -4183,16 +4156,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(JobInfo& jobInfo, vector<R
|
||||
keysAggPm.push_back(aggKey);
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-16); // for connector to skip null check
|
||||
|
||||
if (isUnsigned(typeProj[colProj]))
|
||||
{
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
}
|
||||
else
|
||||
{
|
||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
++colAggPm;
|
||||
|
Reference in New Issue
Block a user