From 92dc395f9a9d7538b7b622431f9bf6cdec9843c6 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Sun, 28 Jan 2024 00:23:22 +0800 Subject: [PATCH] [fix](nereids)should always call visitBoundFunction first when binding ElementAt function (#30469) --- .../doris/nereids/rules/expression/rules/FunctionBinder.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java index 76d3b6748e..f60f38f764 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FunctionBinder.java @@ -200,7 +200,8 @@ public class FunctionBinder extends AbstractExpressionRewriteRule { @Override public Expression visitElementAt(ElementAt elementAt, ExpressionRewriteContext context) { - if (PushDownToProjectionFunction.validToPushDown(elementAt)) { + Expression boundFunction = visitBoundFunction(elementAt, context); + if (PushDownToProjectionFunction.validToPushDown(boundFunction)) { if (ConnectContext.get() != null && ConnectContext.get().getSessionVariable() != null && !ConnectContext.get().getSessionVariable().isEnableRewriteElementAtToSlot()) { @@ -214,7 +215,7 @@ public class FunctionBinder extends AbstractExpressionRewriteRule { // rewrite to slot and bound this slot return ElementAtToSlot.rewriteToSlot(elementAt, (SlotReference) slot); } - return visitBoundFunction(elementAt, context); + return boundFunction; } /**