[fix](nereids)should always call visitBoundFunction first when binding ElementAt function (#30469)

This commit is contained in:
starocean999
2024-01-28 00:23:22 +08:00
committed by yiguolei
parent 7e19224a6c
commit 92dc395f9a

View File

@ -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;
}
/**