1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

MCOL-641 Refactor initial extent elimination support.

This commit also adds support in TupleHashJoinStep::forwardCPData,
although we currently do not support wide decimals as join keys.

Row estimation to determine large-side of the join is also updated.
This commit is contained in:
Gagan Goel
2020-07-24 19:04:25 -04:00
committed by Roman Nozdrin
parent ca53b6348a
commit d3bc68b02f
32 changed files with 1221 additions and 386 deletions

View File

@ -476,7 +476,9 @@ void TupleHashJoinStep::forwardCPData()
for (col = 0; col < joiners[i]->getSmallKeyColumns().size(); col++)
{
if (smallRGs[i].isLongString(joiners[i]->getSmallKeyColumns()[col]))
uint32_t idx = joiners[i]->getSmallKeyColumns()[col];
if (smallRGs[i].isLongString(idx))
continue;
// @bug3683, not to add CP predicates if large side is not simple column
@ -484,8 +486,12 @@ void TupleHashJoinStep::forwardCPData()
fFunctionJoinKeys.end())
continue;
bool isSmallSideWideDecimal =
datatypes::Decimal::isWideDecimalType(smallRGs[i].getColType(idx), smallRGs[i].getColumnWidth(idx));
largeBPS->addCPPredicates(largeRG.getOIDs()[joiners[i]->getLargeKeyColumns()[col]],
joiners[i]->getCPData()[col], !joiners[i]->discreteCPValues()[col]);
joiners[i]->getCPData()[col], !joiners[i]->discreteCPValues()[col],
isSmallSideWideDecimal);
}
}
}