[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:
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user