[Fix](nereids) change setting byte size from translator to catalog generate scalar type (#18450)

Problem: when used nereids to generate scalarType, byteSize would be set. After switch the optimizer to planner, planner would reuse scalarType in some cases.
Fix: change byteSize setting from Plan translator to toCatalogDataType
This commit is contained in:
LiBinfeng
2023-04-07 17:38:08 +08:00
committed by GitHub
parent 30f2abe5d3
commit 5678708b7d
2 changed files with 4 additions and 6 deletions

View File

@ -107,11 +107,7 @@ public class ExpressionTranslator extends DefaultExpressionVisitor<Expr, PlanTra
* @return stale planner's expr
*/
public static Expr translate(Expression expression, PlanTranslatorContext context) {
Expr staleExpr = expression.accept(INSTANCE, context);
if (staleExpr.getType() instanceof ScalarType) {
((ScalarType) staleExpr.getType()).setByteSize(expression.getDataType().width());
}
return staleExpr;
return expression.accept(INSTANCE, context);
}
@Override

View File

@ -49,7 +49,9 @@ public class VarcharType extends CharacterType {
@Override
public Type toCatalogDataType() {
return ScalarType.createVarcharType(len);
ScalarType catalogDataType = ScalarType.createVarcharType(len);
catalogDataType.setByteSize(len);
return catalogDataType;
}
@Override