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-641 Basic extent elimination support for Decimal38.
This commit is contained in:
committed by
Roman Nozdrin
parent
84f9821720
commit
55afcd8890
@ -411,6 +411,7 @@ void BatchPrimitiveProcessorJL::addElementType(const StringElementType& et, uint
|
||||
* block touches
|
||||
*/
|
||||
|
||||
// TODO MCOL-641 Add support here. Refer to BatchPrimitiveProcessor::makeResponse()
|
||||
void BatchPrimitiveProcessorJL::getElementTypes(ByteStream& in,
|
||||
vector<ElementType>* out, bool* validCPData, uint64_t* lbid, int64_t* min,
|
||||
int64_t* max, uint32_t* cachedIO, uint32_t* physIO,
|
||||
@ -491,6 +492,7 @@ void BatchPrimitiveProcessorJL::getElementTypes(ByteStream& in,
|
||||
* blocks touched
|
||||
*/
|
||||
|
||||
// TODO MCOL-641 Add support here. Refer to BatchPrimitiveProcessor::makeResponse()
|
||||
void BatchPrimitiveProcessorJL::getStringElementTypes(ByteStream& in,
|
||||
vector<StringElementType>* out, bool* validCPData, uint64_t* lbid, int64_t* min,
|
||||
int64_t* max, uint32_t* cachedIO, uint32_t* physIO, uint32_t* touchedBlocks) const
|
||||
@ -547,6 +549,7 @@ void BatchPrimitiveProcessorJL::getStringElementTypes(ByteStream& in,
|
||||
* as when the output type is TableBands
|
||||
*/
|
||||
|
||||
// TODO MCOL-641 Add support here. Refer to BatchPrimitiveProcessor::makeResponse()
|
||||
void BatchPrimitiveProcessorJL::getTuples(messageqcpp::ByteStream& in,
|
||||
std::vector<TupleType>* out, bool* validCPData, uint64_t* lbid, int64_t* min,
|
||||
int64_t* max, uint32_t* cachedIO, uint32_t* physIO, uint32_t* touchedBlocks) const
|
||||
@ -692,9 +695,9 @@ bool BatchPrimitiveProcessorJL::countThisMsg(messageqcpp::ByteStream& in) const
|
||||
if (_hasScan)
|
||||
{
|
||||
if (data[offset] != 0)
|
||||
offset += 25; // skip the CP data
|
||||
offset += (data[offset + CP_FLAG_AND_LBID] * 2) + CP_FLAG_AND_LBID + 1; // skip the CP data with wide min/max values (16/32 bytes each)
|
||||
else
|
||||
offset += 9; // skip only the "valid CP data" & LBID bytes
|
||||
offset += CP_FLAG_AND_LBID; // skip only the "valid CP data" & LBID bytes
|
||||
}
|
||||
|
||||
idbassert(in.length() > offset);
|
||||
@ -718,11 +721,12 @@ void BatchPrimitiveProcessorJL::deserializeAggregateResult(ByteStream* in,
|
||||
}
|
||||
|
||||
void BatchPrimitiveProcessorJL::getRowGroupData(ByteStream& in, vector<RGData>* out,
|
||||
bool* validCPData, uint64_t* lbid, int64_t* min, int64_t* max,
|
||||
bool* validCPData, uint64_t* lbid, __int128* min, __int128* max,
|
||||
uint32_t* cachedIO, uint32_t* physIO, uint32_t* touchedBlocks, bool* countThis,
|
||||
uint32_t threadID) const
|
||||
uint32_t threadID, bool* hasBinaryColumn, const execplan::CalpontSystemCatalog::ColType& colType) const
|
||||
{
|
||||
uint64_t tmp64;
|
||||
unsigned __int128 tmp128;
|
||||
uint8_t tmp8;
|
||||
RGData rgData;
|
||||
uint32_t rowCount;
|
||||
@ -754,10 +758,23 @@ void BatchPrimitiveProcessorJL::getRowGroupData(ByteStream& in, vector<RGData>*
|
||||
if (*validCPData)
|
||||
{
|
||||
in >> *lbid;
|
||||
in >> tmp64;
|
||||
*min = (int64_t) tmp64;
|
||||
in >> tmp64;
|
||||
*max = (int64_t) tmp64;
|
||||
in >> tmp8;
|
||||
*hasBinaryColumn = (tmp8 > 8);
|
||||
if (*hasBinaryColumn)
|
||||
{
|
||||
idbassert(colType.colWidth > 8);
|
||||
in >> tmp128;
|
||||
*min = tmp128;
|
||||
in >> tmp128;
|
||||
*max = tmp128;
|
||||
}
|
||||
else
|
||||
{
|
||||
in >> tmp64;
|
||||
*min = static_cast<__int128>(tmp64);
|
||||
in >> tmp64;
|
||||
*max = static_cast<__int128>(tmp64);
|
||||
}
|
||||
}
|
||||
else
|
||||
in >> *lbid;
|
||||
|
Reference in New Issue
Block a user