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

MCOL-4100 Use correct collation for certain functions

LOCATE, INSTR, STRCMP and FIND_IN_SET
This commit is contained in:
David Hall
2020-06-24 15:32:22 -05:00
parent 960c07a647
commit 3f15ed1303
2 changed files with 15 additions and 2 deletions

View File

@ -4087,7 +4087,20 @@ ReturnedColumn* buildFunctionColumn(
fc->operationType(functor->operationType(funcParms, fc->resultType()));
fc->expressionId(ci->expressionId++);
fc->charsetNumber(ifp->collation.collation->number);
// A few functions use a different collation than that found in
// the base ifp class
if (funcName == "locate" ||
funcName == "find_in_set" ||
funcName == "strcmp")
{
DTCollation dt;
ifp->Type_std_attributes::agg_arg_charsets_for_comparison(dt, ifp->func_name(), ifp->arguments(), 1, 1);
fc->charsetNumber(dt.collation->number);
}
else
{
fc->charsetNumber(ifp->collation.collation->number);
}
}
else if (ifp->type() == Item::COND_ITEM ||
ifp->functype() == Item_func::EQ_FUNC ||