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-3536 collation
This commit is contained in:
@ -758,13 +758,14 @@ void TupleAggregateStep::configDeliveredRowGroup(const JobInfo& jobInfo)
|
||||
vector<uint32_t>::const_iterator offsets0 = fRowGroupOut.getOffsets().begin();
|
||||
vector<CalpontSystemCatalog::ColDataType>::const_iterator types0 =
|
||||
fRowGroupOut.getColTypes().begin();
|
||||
|
||||
vector<uint32_t> csNums = fRowGroupOut.getCharsetNumbers();
|
||||
vector<uint32_t>::const_iterator precision0 = fRowGroupOut.getPrecision().begin();
|
||||
fRowGroupDelivered = RowGroup(retColCount,
|
||||
vector<uint32_t>(offsets0, offsets0 + retColCount + 1),
|
||||
vector<uint32_t>(oids.begin(), oids.begin() + retColCount),
|
||||
vector<uint32_t>(keys.begin(), keys.begin() + retColCount),
|
||||
vector<CalpontSystemCatalog::ColDataType>(types0, types0 + retColCount),
|
||||
vector<uint32_t>(csNums.begin(), csNums.begin() + retColCount),
|
||||
vector<uint32_t>(scale.begin(), scale.begin() + retColCount),
|
||||
vector<uint32_t>(precision0, precision0 + retColCount),
|
||||
jobInfo.stringTableThreshold);
|
||||
@ -1037,6 +1038,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
const vector<uint32_t>& scaleProj = projRG.getScale();
|
||||
const vector<uint32_t>& precisionProj = projRG.getPrecision();
|
||||
const vector<CalpontSystemCatalog::ColDataType>& typeProj = projRG.getColTypes();
|
||||
const vector<uint32_t>& csNumProj = projRG.getCharsetNumbers();
|
||||
|
||||
vector<uint32_t> posAgg;
|
||||
vector<uint32_t> oidsAgg;
|
||||
@ -1044,6 +1046,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
vector<uint32_t> scaleAgg;
|
||||
vector<uint32_t> precisionAgg;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAgg;
|
||||
vector<uint32_t> csNumAgg;
|
||||
vector<uint32_t> widthAgg;
|
||||
vector<SP_ROWAGG_GRPBY_t> groupBy;
|
||||
vector<SP_ROWAGG_FUNC_t> functionVec;
|
||||
@ -1108,6 +1111,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(ti.scale);
|
||||
precisionAgg.push_back(ti.precision);
|
||||
typeAgg.push_back(ti.dtype);
|
||||
csNumAgg.push_back(ti.csNum);
|
||||
widthAgg.push_back(ti.width);
|
||||
SP_ROWAGG_FUNC_t funct(new RowAggFunctionCol(
|
||||
aggOp, stats, 0, outIdx, jobInfo.cntStarPos));
|
||||
@ -1126,6 +1130,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(ti.scale);
|
||||
precisionAgg.push_back(ti.precision);
|
||||
typeAgg.push_back(ti.dtype);
|
||||
csNumAgg.push_back(ti.csNum);
|
||||
widthAgg.push_back(width);
|
||||
SP_ROWAGG_FUNC_t funct(new RowAggFunctionCol(
|
||||
aggOp, stats, 0, outIdx, -1));
|
||||
@ -1174,6 +1179,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(width[colProj]);
|
||||
|
||||
if (groupBy[it->second]->fOutputColumnIndex == (uint32_t) - 1)
|
||||
@ -1199,6 +1205,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(ti.scale);
|
||||
precisionAgg.push_back(ti.precision);
|
||||
typeAgg.push_back(ti.dtype);
|
||||
csNumAgg.push_back(ti.csNum);
|
||||
widthAgg.push_back(ti.width);
|
||||
++outIdx;
|
||||
continue;
|
||||
@ -1212,6 +1219,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(width[colProj]);
|
||||
++outIdx;
|
||||
continue;
|
||||
@ -1224,6 +1232,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(width[colProj]);
|
||||
++outIdx;
|
||||
continue;
|
||||
@ -1291,7 +1300,8 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
widthAgg.push_back(width[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(width[colProj]);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -1321,6 +1331,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
oidsAgg.push_back(oidsProj[colProj]);
|
||||
keysAgg.push_back(key);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
precisionAgg.push_back(-1);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
scaleAgg.push_back(0);
|
||||
@ -1336,6 +1347,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
// work around count() in select subquery
|
||||
precisionAgg.push_back(9999);
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
}
|
||||
break;
|
||||
@ -1365,6 +1377,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(0);
|
||||
typeAgg.push_back(CalpontSystemCatalog::DOUBLE);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(sizeof(double));
|
||||
}
|
||||
break;
|
||||
@ -1387,6 +1400,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
}
|
||||
break;
|
||||
@ -1406,6 +1420,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(udafFuncCol->fUDAFContext.getScale());
|
||||
precisionAgg.push_back(udafFuncCol->fUDAFContext.getPrecision());
|
||||
typeAgg.push_back(udafFuncCol->fUDAFContext.getResultType());
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(udafFuncCol->fUDAFContext.getColWidth());
|
||||
break;
|
||||
}
|
||||
@ -1507,6 +1522,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
precisionAgg.push_back(0);
|
||||
precisionAgg.push_back(0);
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(bigUintWidth);
|
||||
continue;
|
||||
}
|
||||
@ -1522,6 +1538,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-1);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
|
||||
@ -1531,6 +1548,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-1);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
}
|
||||
@ -1541,7 +1559,7 @@ void TupleAggregateStep::prep1PhaseAggregate(
|
||||
for (uint64_t i = 0; i < oidsAgg.size(); i++)
|
||||
posAgg.push_back(posAgg[i] + widthAgg[i]);
|
||||
|
||||
RowGroup aggRG(oidsAgg.size(), posAgg, oidsAgg, keysAgg, typeAgg, scaleAgg, precisionAgg,
|
||||
RowGroup aggRG(oidsAgg.size(), posAgg, oidsAgg, keysAgg, typeAgg, csNumAgg, scaleAgg, precisionAgg,
|
||||
jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_UM_t rowAgg(new RowAggregationUM(groupBy, functionVec, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAgg->timeZone(jobInfo.timeZone);
|
||||
@ -1588,6 +1606,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
const vector<uint32_t>& scaleProj = projRG.getScale();
|
||||
const vector<uint32_t>& precisionProj = projRG.getPrecision();
|
||||
const vector<CalpontSystemCatalog::ColDataType>& typeProj = projRG.getColTypes();
|
||||
const vector<uint32_t>& csNumProj = projRG.getCharsetNumbers();
|
||||
|
||||
vector<uint32_t> posAgg, posAggDist;
|
||||
vector<uint32_t> oidsAgg, oidsAggDist;
|
||||
@ -1595,6 +1614,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
vector<uint32_t> scaleAgg, scaleAggDist;
|
||||
vector<uint32_t> precisionAgg, precisionAggDist;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAgg, typeAggDist;
|
||||
vector<uint32_t> csNumAgg, csNumAggDist;
|
||||
vector<uint32_t> widthProj, widthAgg, widthAggDist;
|
||||
vector<SP_ROWAGG_GRPBY_t> groupBy, groupByNoDist;
|
||||
vector<SP_ROWAGG_FUNC_t> functionVec1, functionVec2, functionNoDistVec;
|
||||
@ -1662,6 +1682,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(widthProj[colProj]);
|
||||
|
||||
aggFuncMap.insert(make_pair(boost::make_tuple(keysAgg[colAgg], 0, pUDAFFunc, udafc ? udafc->getContext().getParamKeys() : NULL), colAgg));
|
||||
@ -1703,6 +1724,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(widthProj[colProj]);
|
||||
|
||||
aggFuncMap.insert(make_pair(boost::make_tuple(keysAgg[colAgg], 0, pUDAFFunc, udafc ? udafc->getContext().getParamKeys() : NULL), colAgg));
|
||||
@ -1731,6 +1753,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(ti.scale);
|
||||
precisionAgg.push_back(ti.precision);
|
||||
typeAgg.push_back(ti.dtype);
|
||||
csNumAgg.push_back(ti.csNum);
|
||||
widthAgg.push_back(width);
|
||||
SP_ROWAGG_FUNC_t funct(new RowAggFunctionCol(
|
||||
aggOp, stats, colAgg, colAgg, -1));
|
||||
@ -1824,6 +1847,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(widthProj[colProj]);
|
||||
colAgg++;
|
||||
}
|
||||
@ -1853,6 +1877,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
oidsAgg.push_back(oidsProj[colProj]);
|
||||
keysAgg.push_back(aggKey);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(8);
|
||||
precisionAgg.push_back(-1);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
scaleAgg.push_back(0);
|
||||
@ -1884,6 +1909,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
colAgg++;
|
||||
}
|
||||
@ -1924,6 +1950,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-1);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
++colAgg;
|
||||
|
||||
@ -1933,6 +1960,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(-1);
|
||||
typeAgg.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(sizeof(long double));
|
||||
++colAgg;
|
||||
}
|
||||
@ -1956,6 +1984,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
typeAgg.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(bigIntWidth);
|
||||
colAgg++;
|
||||
}
|
||||
@ -1976,6 +2005,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(udafFuncCol->fUDAFContext.getScale());
|
||||
precisionAgg.push_back(udafFuncCol->fUDAFContext.getPrecision());
|
||||
typeAgg.push_back(udafFuncCol->fUDAFContext.getResultType());
|
||||
csNumAgg.push_back(udafFuncCol->fUDAFContext.getCharsetNumber());
|
||||
widthAgg.push_back(udafFuncCol->fUDAFContext.getColWidth());
|
||||
++colAgg;
|
||||
// Column for index of UDAF UserData struct
|
||||
@ -1984,6 +2014,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(0);
|
||||
precisionAgg.push_back(0);
|
||||
typeAgg.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAgg.push_back(8);
|
||||
widthAgg.push_back(sizeof(uint64_t));
|
||||
funct->fAuxColumnIndex = colAgg++;
|
||||
// If the first param is const
|
||||
@ -2004,6 +2035,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAgg.push_back(scaleProj[colProj]);
|
||||
precisionAgg.push_back(precisionProj[colProj]);
|
||||
typeAgg.push_back(typeProj[colProj]);
|
||||
csNumAgg.push_back(csNumProj[colProj]);
|
||||
widthAgg.push_back(widthProj[colProj]);
|
||||
multiParmIndexes.push_back(colAgg);
|
||||
++colAgg;
|
||||
@ -2174,6 +2206,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
oidsAggDist.push_back(oidsAgg[colAgg]);
|
||||
keysAggDist.push_back(retKey);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
precisionAggDist.push_back(-1);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
scaleAggDist.push_back(0);
|
||||
@ -2188,6 +2221,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
// work around count() in select subquery
|
||||
precisionAggDist.push_back(9999);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
break;
|
||||
@ -2214,6 +2248,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(scaleAgg[colAgg]);
|
||||
precisionAggDist.push_back(precisionAgg[colAgg]);
|
||||
typeAggDist.push_back(typeAgg[colAgg]);
|
||||
csNumAggDist.push_back(csNumAgg[colAgg]);
|
||||
uint32_t width = widthAgg[colAgg];
|
||||
|
||||
if (aggOp == ROWAGG_GROUP_CONCAT)
|
||||
@ -2250,6 +2285,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
keysAggDist.push_back(retKey);
|
||||
scaleAggDist.push_back(0);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
precisionAggDist.push_back(-1);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
}
|
||||
@ -2272,7 +2308,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||
precisionAggDist.push_back(19);
|
||||
}
|
||||
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -2287,6 +2323,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -2299,6 +2336,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -2313,6 +2351,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -2332,6 +2371,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(scaleProj[k] >> 8);
|
||||
precisionAggDist.push_back(precisionProj[k]);
|
||||
typeAggDist.push_back(typeProj[k]);
|
||||
csNumAggDist.push_back(csNumProj[k]);
|
||||
widthAggDist.push_back(widthProj[k]);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -2352,6 +2392,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(scaleProj[k] >> 8);
|
||||
precisionAggDist.push_back(precisionProj[k]);
|
||||
typeAggDist.push_back(typeProj[k]);
|
||||
csNumAggDist.push_back(csNumProj[k]);
|
||||
widthAggDist.push_back(widthProj[k]);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -2476,6 +2517,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(19);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -2508,6 +2550,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(19);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -2533,6 +2576,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(0);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(uint64_t));
|
||||
continue;
|
||||
}
|
||||
@ -2548,6 +2592,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(0);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
|
||||
@ -2557,6 +2602,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(-1);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
}
|
||||
@ -2568,7 +2614,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
for (uint64_t i = 0; i < oidsAgg.size(); i++)
|
||||
posAgg.push_back(posAgg[i] + widthAgg[i]);
|
||||
|
||||
RowGroup aggRG(oidsAgg.size(), posAgg, oidsAgg, keysAgg, typeAgg, scaleAgg, precisionAgg,
|
||||
RowGroup aggRG(oidsAgg.size(), posAgg, oidsAgg, keysAgg, typeAgg, csNumAgg, scaleAgg, precisionAgg,
|
||||
jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_UM_t rowAgg(new RowAggregationUM(groupBy, functionVec1, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAgg->timeZone(jobInfo.timeZone);
|
||||
@ -2579,7 +2625,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
posAggDist.push_back(posAggDist[i] + widthAggDist[i]);
|
||||
|
||||
RowGroup aggRgDist(oidsAggDist.size(), posAggDist, oidsAggDist, keysAggDist, typeAggDist,
|
||||
scaleAggDist, precisionAggDist, jobInfo.stringTableThreshold);
|
||||
csNumAggDist, scaleAggDist, precisionAggDist, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_DIST rowAggDist(new RowAggregationDistinct(groupByNoDist, functionVec2, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAggDist->timeZone(jobInfo.timeZone);
|
||||
|
||||
@ -2609,6 +2655,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
vector<uint32_t> scaleAggGb, scaleAggSub;
|
||||
vector<uint32_t> precisionAggGb, precisionAggSub;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAggGb, typeAggSub;
|
||||
vector<uint32_t> csNumAggGb, csNumAggSub;
|
||||
vector<uint32_t> widthAggGb, widthAggSub;
|
||||
|
||||
// populate groupby column info
|
||||
@ -2619,6 +2666,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggGb.push_back(scaleProj[i]);
|
||||
precisionAggGb.push_back(precisionProj[i]);
|
||||
typeAggGb.push_back(typeProj[i]);
|
||||
csNumAggGb.push_back(csNumProj[i]);
|
||||
widthAggGb.push_back(widthProj[i]);
|
||||
}
|
||||
|
||||
@ -2647,6 +2695,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggSub = scaleAggGb;
|
||||
precisionAggSub = precisionAggGb;
|
||||
typeAggSub = typeAggGb;
|
||||
csNumAggSub = csNumAggGb;
|
||||
widthAggSub = widthAggGb;
|
||||
|
||||
oidsAggSub.push_back(oidsProj[j]);
|
||||
@ -2654,6 +2703,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
scaleAggSub.push_back(scaleProj[j]);
|
||||
precisionAggSub.push_back(precisionProj[j]);
|
||||
typeAggSub.push_back(typeProj[j]);
|
||||
csNumAggSub.push_back(csNumProj[j]);
|
||||
widthAggSub.push_back(widthProj[j]);
|
||||
|
||||
// construct sub-rowgroup
|
||||
@ -2664,7 +2714,7 @@ void TupleAggregateStep::prep1PhaseDistinctAggregate(
|
||||
posAggSub.push_back(posAggSub[k] + widthAggSub[k]);
|
||||
|
||||
RowGroup subRg(oidsAggSub.size(), posAggSub, oidsAggSub, keysAggSub, typeAggSub,
|
||||
scaleAggSub, precisionAggSub, jobInfo.stringTableThreshold);
|
||||
csNumAggSub, scaleAggSub, precisionAggSub, jobInfo.stringTableThreshold);
|
||||
subRgVec.push_back(subRg);
|
||||
|
||||
// construct groupby vector
|
||||
@ -2873,6 +2923,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
const vector<uint32_t>& scaleProj = projRG.getScale();
|
||||
const vector<uint32_t>& precisionProj = projRG.getPrecision();
|
||||
const vector<CalpontSystemCatalog::ColDataType>& typeProj = projRG.getColTypes();
|
||||
const vector<uint32_t>& csNumProj = projRG.getCharsetNumbers();
|
||||
|
||||
vector<uint32_t> posAggPm, posAggUm;
|
||||
vector<uint32_t> oidsAggPm, oidsAggUm;
|
||||
@ -2880,6 +2931,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
vector<uint32_t> scaleAggPm, scaleAggUm;
|
||||
vector<uint32_t> precisionAggPm, precisionAggUm;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAggPm, typeAggUm;
|
||||
vector<uint32_t> csNumAggPm, csNumAggUm;
|
||||
vector<uint32_t> widthAggPm, widthAggUm;
|
||||
vector<SP_ROWAGG_GRPBY_t> groupByPm, groupByUm;
|
||||
vector<SP_ROWAGG_FUNC_t> functionVecPm, functionVecUm;
|
||||
@ -2937,6 +2989,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
|
||||
aggFuncMap.insert(make_pair(boost::make_tuple(keysAggPm[colAggPm], 0, pUDAFFunc, udafc ? udafc->getContext().getParamKeys() : NULL), colAggPm));
|
||||
@ -2977,6 +3030,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
keysAggPm.push_back(key);
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
|
||||
@ -3071,6 +3125,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
colAggPm++;
|
||||
}
|
||||
@ -3100,6 +3155,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
oidsAggPm.push_back(oidsProj[colProj]);
|
||||
keysAggPm.push_back(aggKey);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-1);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
@ -3120,6 +3176,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
// work around count() in select subquery
|
||||
precisionAggPm.push_back(9999);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
colAggPm++;
|
||||
}
|
||||
@ -3151,6 +3208,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(0);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::DOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(double));
|
||||
funct->fAuxColumnIndex = ++colAggPm;
|
||||
|
||||
@ -3160,6 +3218,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-1);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
++colAggPm;
|
||||
|
||||
@ -3169,6 +3228,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-1);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
++colAggPm;
|
||||
}
|
||||
@ -3192,6 +3252,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
colAggPm++;
|
||||
}
|
||||
@ -3212,6 +3273,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(udafFuncCol->fUDAFContext.getScale());
|
||||
precisionAggPm.push_back(udafFuncCol->fUDAFContext.getPrecision());
|
||||
typeAggPm.push_back(udafFuncCol->fUDAFContext.getResultType());
|
||||
csNumAggPm.push_back(udafFuncCol->fUDAFContext.getCharsetNumber());
|
||||
widthAggPm.push_back(udafFuncCol->fUDAFContext.getColWidth());
|
||||
++colAggPm;
|
||||
// Column for index of UDAF UserData struct
|
||||
@ -3220,6 +3282,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(0);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigUintWidth);
|
||||
funct->fAuxColumnIndex = colAggPm++;
|
||||
// If the first param is const
|
||||
@ -3240,6 +3303,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
colAggPm++;
|
||||
// If the param is const
|
||||
@ -3353,6 +3417,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(scaleAggPm[colPm]);
|
||||
precisionAggUm.push_back(precisionAggPm[colPm]);
|
||||
typeAggUm.push_back(typeAggPm[colPm]);
|
||||
csNumAggUm.push_back(csNumAggPm[colPm]);
|
||||
widthAggUm.push_back(widthAggPm[colPm]);
|
||||
}
|
||||
|
||||
@ -3379,6 +3444,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
keysAggUm.push_back(retKey);
|
||||
scaleAggUm.push_back(0);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggUm.push_back(8);
|
||||
precisionAggUm.push_back(-1);
|
||||
widthAggUm.push_back(sizeof(long double));
|
||||
}
|
||||
@ -3393,6 +3459,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(0);
|
||||
precisionAggUm.push_back(19);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggUm.push_back(8);
|
||||
widthAggUm.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -3407,6 +3474,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(ti.scale);
|
||||
precisionAggUm.push_back(ti.precision);
|
||||
typeAggUm.push_back(ti.dtype);
|
||||
csNumAggUm.push_back(ti.csNum);
|
||||
widthAggUm.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -3420,6 +3488,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(ti.scale);
|
||||
precisionAggUm.push_back(ti.precision);
|
||||
typeAggUm.push_back(ti.dtype);
|
||||
csNumAggUm.push_back(ti.csNum);
|
||||
widthAggUm.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -3432,6 +3501,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(ti.scale);
|
||||
precisionAggUm.push_back(ti.precision);
|
||||
typeAggUm.push_back(ti.dtype);
|
||||
csNumAggUm.push_back(ti.csNum);
|
||||
widthAggUm.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -3560,6 +3630,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(0);
|
||||
precisionAggUm.push_back(19);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggUm.push_back(8);
|
||||
widthAggUm.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -3585,6 +3656,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(0);
|
||||
precisionAggUm.push_back(0);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggUm.push_back(8);
|
||||
widthAggUm.push_back(bigUintWidth);
|
||||
continue;
|
||||
}
|
||||
@ -3600,6 +3672,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(0);
|
||||
precisionAggUm.push_back(-1);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggUm.push_back(8);
|
||||
widthAggUm.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
|
||||
@ -3609,6 +3682,7 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
scaleAggUm.push_back(0);
|
||||
precisionAggUm.push_back(-1);
|
||||
typeAggUm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggUm.push_back(8);
|
||||
widthAggUm.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
}
|
||||
@ -3620,8 +3694,8 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
for (uint64_t i = 0; i < oidsAggUm.size(); i++)
|
||||
posAggUm.push_back(posAggUm[i] + widthAggUm[i]);
|
||||
|
||||
RowGroup aggRgUm(oidsAggUm.size(), posAggUm, oidsAggUm, keysAggUm, typeAggUm, scaleAggUm,
|
||||
precisionAggUm, jobInfo.stringTableThreshold);
|
||||
RowGroup aggRgUm(oidsAggUm.size(), posAggUm, oidsAggUm, keysAggUm, typeAggUm,
|
||||
csNumAggUm, scaleAggUm, precisionAggUm, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_UM_t rowAggUm(new RowAggregationUMP2(groupByUm, functionVecUm, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAggUm->timeZone(jobInfo.timeZone);
|
||||
rowgroups.push_back(aggRgUm);
|
||||
@ -3632,8 +3706,8 @@ void TupleAggregateStep::prep2PhasesAggregate(
|
||||
for (uint64_t i = 0; i < oidsAggPm.size(); i++)
|
||||
posAggPm.push_back(posAggPm[i] + widthAggPm[i]);
|
||||
|
||||
RowGroup aggRgPm(oidsAggPm.size(), posAggPm, oidsAggPm, keysAggPm, typeAggPm, scaleAggPm,
|
||||
precisionAggPm, jobInfo.stringTableThreshold);
|
||||
RowGroup aggRgPm(oidsAggPm.size(), posAggPm, oidsAggPm, keysAggPm, typeAggPm,
|
||||
csNumAggPm, scaleAggPm, precisionAggPm, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_PM_t rowAggPm(new RowAggregation(groupByPm, functionVecPm));
|
||||
rowAggPm->timeZone(jobInfo.timeZone);
|
||||
rowgroups.push_back(aggRgPm);
|
||||
@ -3717,6 +3791,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
const vector<uint32_t>& scaleProj = projRG.getScale();
|
||||
const vector<uint32_t>& precisionProj = projRG.getPrecision();
|
||||
const vector<CalpontSystemCatalog::ColDataType>& typeProj = projRG.getColTypes();
|
||||
const vector<uint32_t>& csNumProj = projRG.getCharsetNumbers();
|
||||
|
||||
vector<uint32_t> posAggPm, posAggUm, posAggDist;
|
||||
vector<uint32_t> oidsAggPm, oidsAggUm, oidsAggDist;
|
||||
@ -3724,6 +3799,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
vector<uint32_t> scaleAggPm, scaleAggUm, scaleAggDist;
|
||||
vector<uint32_t> precisionAggPm, precisionAggUm, precisionAggDist;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAggPm, typeAggUm, typeAggDist;
|
||||
vector<uint32_t> csNumAggPm, csNumAggUm, csNumAggDist;
|
||||
vector<uint32_t> widthAggPm, widthAggUm, widthAggDist;
|
||||
|
||||
vector<SP_ROWAGG_GRPBY_t> groupByPm, groupByUm, groupByNoDist;
|
||||
@ -3785,6 +3861,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
|
||||
aggFuncMap.insert(make_pair(boost::make_tuple(keysAggPm[colAggPm], 0, pUDAFFunc, udafc ? udafc->getContext().getParamKeys() : NULL), colAggPm));
|
||||
@ -3826,6 +3903,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
|
||||
@ -3927,6 +4005,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
colAggPm++;
|
||||
}
|
||||
@ -3956,6 +4035,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
oidsAggPm.push_back(oidsProj[colProj]);
|
||||
keysAggPm.push_back(aggKey);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
precisionAggPm.push_back(-1);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
scaleAggPm.push_back(0);
|
||||
@ -3987,6 +4067,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
colAggPm++;
|
||||
}
|
||||
@ -4018,6 +4099,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(0);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::DOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(double));
|
||||
funct->fAuxColumnIndex = ++colAggPm;
|
||||
|
||||
@ -4027,6 +4109,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-1);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
++colAggPm;
|
||||
|
||||
@ -4036,6 +4119,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(-1);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(long double));
|
||||
++colAggPm;
|
||||
}
|
||||
@ -4059,6 +4143,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
typeAggPm.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(bigIntWidth);
|
||||
++colAggPm;
|
||||
}
|
||||
@ -4079,6 +4164,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(udafFuncCol->fUDAFContext.getScale());
|
||||
precisionAggPm.push_back(udafFuncCol->fUDAFContext.getPrecision());
|
||||
typeAggPm.push_back(udafFuncCol->fUDAFContext.getResultType());
|
||||
csNumAggPm.push_back(udafFuncCol->fUDAFContext.getCharsetNumber());
|
||||
widthAggPm.push_back(udafFuncCol->fUDAFContext.getColWidth());
|
||||
++colAggPm;
|
||||
// Column for index of UDAF UserData struct
|
||||
@ -4087,6 +4173,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(0);
|
||||
precisionAggPm.push_back(0);
|
||||
typeAggPm.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggPm.push_back(8);
|
||||
widthAggPm.push_back(sizeof(uint64_t));
|
||||
funct->fAuxColumnIndex = colAggPm++;
|
||||
// If the first param is const
|
||||
@ -4107,6 +4194,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggPm.push_back(scaleProj[colProj]);
|
||||
precisionAggPm.push_back(precisionProj[colProj]);
|
||||
typeAggPm.push_back(typeProj[colProj]);
|
||||
csNumAggPm.push_back(csNumProj[colProj]);
|
||||
widthAggPm.push_back(width[colProj]);
|
||||
multiParmIndexes.push_back(colAggPm);
|
||||
++colAggPm;
|
||||
@ -4208,6 +4296,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
precisionAggUm.push_back(precisionAggPm[idx]);
|
||||
widthAggUm.push_back(widthAggPm[idx]);
|
||||
typeAggUm.push_back(typeAggPm[idx]);
|
||||
csNumAggUm.push_back(csNumAggPm[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4325,6 +4414,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
oidsAggDist.push_back(oidsAggUm[colUm]);
|
||||
keysAggDist.push_back(retKey);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
precisionAggDist.push_back(-1);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
scaleAggDist.push_back(0);
|
||||
@ -4342,6 +4432,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
// work around count() in select subquery
|
||||
precisionAggDist.push_back(9999);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
break;
|
||||
@ -4365,6 +4456,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(scaleAggUm[colUm]);
|
||||
precisionAggDist.push_back(precisionAggUm[colUm]);
|
||||
typeAggDist.push_back(typeAggUm[colUm]);
|
||||
csNumAggDist.push_back(csNumAggUm[colUm]);
|
||||
widthAggDist.push_back(widthAggUm[colUm]);
|
||||
}
|
||||
|
||||
@ -4391,6 +4483,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
keysAggDist.push_back(retKey);
|
||||
scaleAggDist.push_back(0);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
precisionAggDist.push_back(-1);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
}
|
||||
@ -4412,6 +4505,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
precisionAggDist.push_back(19);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||
}
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -4426,6 +4520,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -4439,6 +4534,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -4451,6 +4547,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(ti.scale);
|
||||
precisionAggDist.push_back(ti.precision);
|
||||
typeAggDist.push_back(ti.dtype);
|
||||
csNumAggDist.push_back(ti.csNum);
|
||||
widthAggDist.push_back(ti.width);
|
||||
|
||||
returnColMissing = false;
|
||||
@ -4570,6 +4667,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(19);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -4602,6 +4700,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(19);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::BIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(bigIntWidth);
|
||||
}
|
||||
}
|
||||
@ -4627,6 +4726,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(0);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::UBIGINT);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(uint64_t));
|
||||
continue;
|
||||
}
|
||||
@ -4642,6 +4742,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(-1);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
|
||||
@ -4651,6 +4752,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggDist.push_back(0);
|
||||
precisionAggDist.push_back(-1);
|
||||
typeAggDist.push_back(CalpontSystemCatalog::LONGDOUBLE);
|
||||
csNumAggDist.push_back(8);
|
||||
widthAggDist.push_back(sizeof(long double));
|
||||
++lastCol;
|
||||
}
|
||||
@ -4663,8 +4765,8 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
for (uint64_t i = 0; i < oidsAggUm.size(); i++)
|
||||
posAggUm.push_back(posAggUm[i] + widthAggUm[i]);
|
||||
|
||||
RowGroup aggRgUm(oidsAggUm.size(), posAggUm, oidsAggUm, keysAggUm, typeAggUm, scaleAggUm,
|
||||
precisionAggUm, jobInfo.stringTableThreshold);
|
||||
RowGroup aggRgUm(oidsAggUm.size(), posAggUm, oidsAggUm, keysAggUm, typeAggUm,
|
||||
csNumAggUm, scaleAggUm, precisionAggUm, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_UM_t rowAggUm(new RowAggregationUMP2(groupByUm, functionNoDistVec, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAggUm->timeZone(jobInfo.timeZone);
|
||||
|
||||
@ -4673,8 +4775,9 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
for (uint64_t i = 0; i < oidsAggDist.size(); i++)
|
||||
posAggDist.push_back(posAggDist[i] + widthAggDist[i]);
|
||||
|
||||
RowGroup aggRgDist(oidsAggDist.size(), posAggDist, oidsAggDist, keysAggDist, typeAggDist,
|
||||
scaleAggDist, precisionAggDist, jobInfo.stringTableThreshold);
|
||||
RowGroup aggRgDist(oidsAggDist.size(), posAggDist, oidsAggDist, keysAggDist,
|
||||
typeAggDist, csNumAggDist, scaleAggDist,
|
||||
precisionAggDist, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_DIST rowAggDist(new RowAggregationDistinct(groupByNoDist, functionVecUm, jobInfo.rm, jobInfo.umMemLimit));
|
||||
rowAggDist->timeZone(jobInfo.timeZone);
|
||||
|
||||
@ -4695,6 +4798,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
vector<uint32_t> scaleAggGb, scaleAggSub;
|
||||
vector<uint32_t> precisionAggGb, precisionAggSub;
|
||||
vector<CalpontSystemCatalog::ColDataType> typeAggGb, typeAggSub;
|
||||
vector<uint32_t> csNumAggGb, csNumAggSub;
|
||||
vector<uint32_t> widthAggGb, widthAggSub;
|
||||
|
||||
// populate groupby column info
|
||||
@ -4705,6 +4809,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggGb.push_back(scaleAggUm[i]);
|
||||
precisionAggGb.push_back(precisionAggUm[i]);
|
||||
typeAggGb.push_back(typeAggUm[i]);
|
||||
csNumAggGb.push_back(csNumAggUm[i]);
|
||||
widthAggGb.push_back(widthAggUm[i]);
|
||||
}
|
||||
|
||||
@ -4733,6 +4838,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggSub = scaleAggGb;
|
||||
precisionAggSub = precisionAggGb;
|
||||
typeAggSub = typeAggGb;
|
||||
csNumAggSub = csNumAggGb;
|
||||
widthAggSub = widthAggGb;
|
||||
|
||||
oidsAggSub.push_back(oidsAggUm[j]);
|
||||
@ -4740,6 +4846,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
scaleAggSub.push_back(scaleAggUm[j]);
|
||||
precisionAggSub.push_back(precisionAggUm[j]);
|
||||
typeAggSub.push_back(typeAggUm[j]);
|
||||
csNumAggSub.push_back(csNumAggUm[i]);
|
||||
widthAggSub.push_back(widthAggUm[j]);
|
||||
|
||||
// construct sub-rowgroup
|
||||
@ -4750,7 +4857,7 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
posAggSub.push_back(posAggSub[k] + widthAggSub[k]);
|
||||
|
||||
RowGroup subRg(oidsAggSub.size(), posAggSub, oidsAggSub, keysAggSub, typeAggSub,
|
||||
scaleAggSub, precisionAggSub, jobInfo.stringTableThreshold);
|
||||
csNumAggSub, scaleAggSub, precisionAggSub, jobInfo.stringTableThreshold);
|
||||
subRgVec.push_back(subRg);
|
||||
|
||||
// construct groupby vector
|
||||
@ -4908,8 +5015,8 @@ void TupleAggregateStep::prep2PhasesDistinctAggregate(
|
||||
for (uint64_t i = 0; i < oidsAggPm.size(); i++)
|
||||
posAggPm.push_back(posAggPm[i] + widthAggPm[i]);
|
||||
|
||||
RowGroup aggRgPm(oidsAggPm.size(), posAggPm, oidsAggPm, keysAggPm, typeAggPm, scaleAggPm,
|
||||
precisionAggPm, jobInfo.stringTableThreshold);
|
||||
RowGroup aggRgPm(oidsAggPm.size(), posAggPm, oidsAggPm, keysAggPm, typeAggPm,
|
||||
csNumAggPm, scaleAggPm, precisionAggPm, jobInfo.stringTableThreshold);
|
||||
SP_ROWAGG_PM_t rowAggPm(new RowAggregation(groupByPm, functionVecPm));
|
||||
rowAggPm->timeZone(jobInfo.timeZone);
|
||||
rowgroups.push_back(aggRgPm);
|
||||
|
Reference in New Issue
Block a user