You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-08 14:22:09 +03:00
MCOL-944 Fix more signed/unsigned cases in agg
Applies the first fix to more places
This commit is contained in:
@@ -1208,7 +1208,14 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
|||||||
scaleAgg.push_back(0);
|
scaleAgg.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAgg.push_back(9999);
|
precisionAgg.push_back(9999);
|
||||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAgg.push_back(bigIntWidth);
|
widthAgg.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1248,7 +1255,14 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
|||||||
keysAgg.push_back(key);
|
keysAgg.push_back(key);
|
||||||
scaleAgg.push_back(0);
|
scaleAgg.push_back(0);
|
||||||
precisionAgg.push_back(-16); // for connector to skip null check
|
precisionAgg.push_back(-16); // for connector to skip null check
|
||||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAgg.push_back(bigIntWidth);
|
widthAgg.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1655,13 +1669,21 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
if (typeProj[colProj] != CalpontSystemCatalog::DOUBLE &&
|
if (typeProj[colProj] != CalpontSystemCatalog::DOUBLE &&
|
||||||
typeProj[colProj] != CalpontSystemCatalog::FLOAT)
|
typeProj[colProj] != CalpontSystemCatalog::FLOAT)
|
||||||
{
|
{
|
||||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
uint32_t scale = scaleProj[colProj];
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
precisionAgg.push_back(20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
precisionAgg.push_back(19);
|
||||||
|
}
|
||||||
|
uint32_t scale = scaleProj[colProj];
|
||||||
// for int average, FE expects a decimal
|
// for int average, FE expects a decimal
|
||||||
if (aggOp == ROWAGG_AVG)
|
if (aggOp == ROWAGG_AVG)
|
||||||
scale = jobInfo.scaleOfAvg[aggKey]; // scale += 4;
|
scale = jobInfo.scaleOfAvg[aggKey]; // scale += 4;
|
||||||
scaleAgg.push_back(scale);
|
scaleAgg.push_back(scale);
|
||||||
precisionAgg.push_back(19);
|
|
||||||
widthAgg.push_back(bigIntWidth);
|
widthAgg.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1688,7 +1710,14 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
scaleAgg.push_back(0);
|
scaleAgg.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAgg.push_back(9999);
|
precisionAgg.push_back(9999);
|
||||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAgg.push_back(bigIntWidth);
|
widthAgg.push_back(bigIntWidth);
|
||||||
colAgg++;
|
colAgg++;
|
||||||
}
|
}
|
||||||
@@ -1750,7 +1779,15 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
scaleAgg.push_back(0);
|
scaleAgg.push_back(0);
|
||||||
precisionAgg.push_back(-16); // for connector to skip null check
|
precisionAgg.push_back(-16); // for connector to skip null check
|
||||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
widthAgg.push_back(bigIntWidth);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
|
widthAgg.push_back(bigIntWidth);
|
||||||
colAgg++;
|
colAgg++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1882,13 +1919,21 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
if (typeAgg[colAgg] != CalpontSystemCatalog::DOUBLE &&
|
if (typeAgg[colAgg] != CalpontSystemCatalog::DOUBLE &&
|
||||||
typeAgg[colAgg] != CalpontSystemCatalog::FLOAT)
|
typeAgg[colAgg] != CalpontSystemCatalog::FLOAT)
|
||||||
{
|
{
|
||||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeAgg[colAgg]))
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
precisionAggDist.push_back(20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
precisionAggDist.push_back(19);
|
||||||
|
}
|
||||||
uint32_t scale = scaleProj[colAgg];
|
uint32_t scale = scaleProj[colAgg];
|
||||||
// for int average, FE expects a decimal
|
// for int average, FE expects a decimal
|
||||||
if (aggOp == ROWAGG_DISTINCT_AVG)
|
if (aggOp == ROWAGG_DISTINCT_AVG)
|
||||||
scale = jobInfo.scaleOfAvg[retKey]; // scale += 4;
|
scale = jobInfo.scaleOfAvg[retKey]; // scale += 4;
|
||||||
scaleAggDist.push_back(scale);
|
scaleAggDist.push_back(scale);
|
||||||
precisionAggDist.push_back(19);
|
|
||||||
widthAggDist.push_back(bigIntWidth);
|
widthAggDist.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1908,7 +1953,14 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
scaleAggDist.push_back(0);
|
scaleAggDist.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAggDist.push_back(9999);
|
precisionAggDist.push_back(9999);
|
||||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeAgg[colAgg]))
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAggDist.push_back(bigIntWidth);
|
widthAggDist.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1977,8 +2029,16 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
|||||||
oidsAggDist.push_back(oidsAgg[colAgg]);
|
oidsAggDist.push_back(oidsAgg[colAgg]);
|
||||||
keysAggDist.push_back(retKey);
|
keysAggDist.push_back(retKey);
|
||||||
scaleAggDist.push_back(0);
|
scaleAggDist.push_back(0);
|
||||||
precisionAggDist.push_back(19);
|
if (isUnsigned(typeAgg[colAgg]))
|
||||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
precisionAggDist.push_back(20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
precisionAggDist.push_back(19);
|
||||||
|
}
|
||||||
widthAggDist.push_back(bigIntWidth);
|
widthAggDist.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2763,7 +2823,14 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
|||||||
scaleAggPm.push_back(0);
|
scaleAggPm.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAggPm.push_back(9999);
|
precisionAggPm.push_back(9999);
|
||||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAggPm.push_back(bigIntWidth);
|
widthAggPm.push_back(bigIntWidth);
|
||||||
colAggPm++;
|
colAggPm++;
|
||||||
}
|
}
|
||||||
@@ -2824,8 +2891,15 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
|||||||
keysAggPm.push_back(aggKey);
|
keysAggPm.push_back(aggKey);
|
||||||
scaleAggPm.push_back(0);
|
scaleAggPm.push_back(0);
|
||||||
precisionAggPm.push_back(-16); // for connector to skip null check
|
precisionAggPm.push_back(-16); // for connector to skip null check
|
||||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
widthAggPm.push_back(bigIntWidth);
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
|
widthAggPm.push_back(bigIntWidth);
|
||||||
colAggPm++;
|
colAggPm++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -3486,7 +3560,14 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
|||||||
scaleAggPm.push_back(0);
|
scaleAggPm.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAggPm.push_back(9999);
|
precisionAggPm.push_back(9999);
|
||||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAggPm.push_back(bigIntWidth);
|
widthAggPm.push_back(bigIntWidth);
|
||||||
colAggPm++;
|
colAggPm++;
|
||||||
}
|
}
|
||||||
@@ -3547,7 +3628,14 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
|||||||
keysAggPm.push_back(aggKey);
|
keysAggPm.push_back(aggKey);
|
||||||
scaleAggPm.push_back(0);
|
scaleAggPm.push_back(0);
|
||||||
precisionAggPm.push_back(-16); // for connector to skip null check
|
precisionAggPm.push_back(-16); // for connector to skip null check
|
||||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeProj[colProj]))
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAggPm.push_back(bigIntWidth);
|
widthAggPm.push_back(bigIntWidth);
|
||||||
colAggPm++;
|
colAggPm++;
|
||||||
}
|
}
|
||||||
@@ -3712,13 +3800,21 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
|||||||
if (typeAggUm[colUm] != CalpontSystemCatalog::DOUBLE &&
|
if (typeAggUm[colUm] != CalpontSystemCatalog::DOUBLE &&
|
||||||
typeAggUm[colUm] != CalpontSystemCatalog::FLOAT)
|
typeAggUm[colUm] != CalpontSystemCatalog::FLOAT)
|
||||||
{
|
{
|
||||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeAggUm[colUm]))
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
precisionAggDist.push_back(20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
precisionAggDist.push_back(19);
|
||||||
|
}
|
||||||
uint32_t scale = scaleAggUm[colUm];
|
uint32_t scale = scaleAggUm[colUm];
|
||||||
// for int average, FE expects a decimal
|
// for int average, FE expects a decimal
|
||||||
if (aggOp == ROWAGG_DISTINCT_AVG)
|
if (aggOp == ROWAGG_DISTINCT_AVG)
|
||||||
scale = jobInfo.scaleOfAvg[retKey]; // scale += 4;
|
scale = jobInfo.scaleOfAvg[retKey]; // scale += 4;
|
||||||
scaleAggDist.push_back(scale);
|
scaleAggDist.push_back(scale);
|
||||||
precisionAggDist.push_back(19);
|
|
||||||
widthAggDist.push_back(bigIntWidth);
|
widthAggDist.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3741,7 +3837,14 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
|||||||
scaleAggDist.push_back(0);
|
scaleAggDist.push_back(0);
|
||||||
// work around count() in select subquery
|
// work around count() in select subquery
|
||||||
precisionAggDist.push_back(9999);
|
precisionAggDist.push_back(9999);
|
||||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
if (isUnsigned(typeAggUm[colUm]))
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||||
|
}
|
||||||
widthAggDist.push_back(bigIntWidth);
|
widthAggDist.push_back(bigIntWidth);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user