From e3dbbed47c31440519671be0bade3438c1c72664 Mon Sep 17 00:00:00 2001 From: morrySnow <101034200+morrySnow@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:22:08 +0800 Subject: [PATCH] [fix](Nereids) query failed when fold constant on be failed (#25982) we translate expression to legacy one when do fold constant on BE. some times, we generate invalid expression that cannot be tranlsated. So, we should catch translate exception to avoid query failed. --- .../rules/expression/rules/FoldConstantRuleOnBE.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java index 689bfc442b..681fa4b56c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java @@ -134,7 +134,13 @@ public class FoldConstantRuleOnBE extends AbstractExpressionRewriteRule { } String id = idGenerator.getNextId().toString(); constMap.put(id, expr); - Expr staleExpr = ExpressionTranslator.translate(expr, null); + Expr staleExpr; + try { + staleExpr = ExpressionTranslator.translate(expr, null); + } catch (Exception e) { + LOG.warn("expression {} translate to legacy expr failed. ", expr, e); + return; + } tExprMap.put(id, staleExpr.treeToThrift()); } else { for (int i = 0; i < expr.children().size(); i++) {