This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 475f9840ca [fix](planner)only forbid substitute literal expr in
function call expr (#23533)
475f9840ca is described below
commit 475f9840ca961a3db598ce9da9a016acd40e79bc
Author: starocean999 <[email protected]>
AuthorDate: Sun Aug 27 00:16:09 2023 +0800
[fix](planner)only forbid substitute literal expr in function call expr
(#23533)
pick from master #23532
---
.../apache/doris/analysis/FunctionCallExpr.java | 24 +++++++++++++++++++++-
.../org/apache/doris/analysis/LiteralExpr.java | 6 ------
2 files changed, 23 insertions(+), 7 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
index 0929c24770..76c2fe825a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java
@@ -460,7 +460,29 @@ public class FunctionCallExpr extends Expr {
aggFnParams = aggFnParams
.clone(newParams);
}
- return super.substituteImpl(smap, disjunctsMap, analyzer);
+ if (isImplicitCast()) {
+ return getChild(0).substituteImpl(smap, disjunctsMap, analyzer);
+ }
+ if (smap != null) {
+ Expr substExpr = smap.get(this);
+ if (substExpr != null) {
+ return substExpr.clone();
+ }
+ }
+ if (Expr.IS_OR_PREDICATE.apply(this) && disjunctsMap != null) {
+ smap = disjunctsMap;
+ disjunctsMap = null;
+ }
+ for (int i = 0; i < children.size(); ++i) {
+ if (!(children.get(i) instanceof LiteralExpr)) {
+ children.set(i, children.get(i).substituteImpl(smap,
disjunctsMap, analyzer));
+ }
+ }
+ // SlotRefs must remain analyzed to support substitution across query
blocks. All
+ // other exprs must be analyzed again after the substitution to add
implicit casts
+ // and for resolving their correct function signature.
+ resetAnalysisState();
+ return this;
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
index c52d77b2ee..022f1b41d6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/LiteralExpr.java
@@ -267,10 +267,4 @@ public abstract class LiteralExpr extends Expr implements
Comparable<LiteralExpr
public String toString() {
return getStringValue();
}
-
- @Override
- protected Expr substituteImpl(ExprSubstitutionMap smap,
ExprSubstitutionMap disjunctsMap,
- Analyzer analyzer) {
- return this;
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]