This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.1 by this push:
new 758fce9de56 branch-3.1: [opt](nereids) improve performance of cast big
string to complex type #55476 (#55521)
758fce9de56 is described below
commit 758fce9de563846decdc5a3d6aff4019d2575349
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Sep 4 10:29:22 2025 +0800
branch-3.1: [opt](nereids) improve performance of cast big string to
complex type #55476 (#55521)
Cherry-picked from #55476
Co-authored-by: 924060929 <[email protected]>
---
.../rules/expression/rules/FoldConstantRuleOnFE.java | 4 ++++
.../trees/expressions/literal/StringLikeLiteral.java | 18 ++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
index afd6e788cd1..d9b794707f9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java
@@ -494,6 +494,10 @@ public class FoldConstantRuleOnFE extends
AbstractExpressionRewriteRule
}
}
try {
+ // TODO: support no throw exception in `checkedCastTo` and return
Optional<Expression>
+ if (cast.child().getDataType().isStringLikeType() &&
dataType.isComplexType()) {
+ return cast;
+ }
Expression castResult = child.checkedCastTo(dataType);
if (!Objects.equals(castResult, cast) &&
!Objects.equals(castResult, child)) {
castResult = rewrite(castResult, context);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/StringLikeLiteral.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/StringLikeLiteral.java
index d1d98fe218a..9c52e763a1a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/StringLikeLiteral.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/StringLikeLiteral.java
@@ -75,6 +75,24 @@ public abstract class StringLikeLiteral extends Literal {
return Objects.equals(value, that.value);
}
+ @Override
+ public int fastChildrenHashCode() {
+ return doComputeHashCode();
+ }
+
+ @Override
+ protected int computeHashCode() {
+ return doComputeHashCode();
+ }
+
+ private int doComputeHashCode() {
+ if (value != null && value.length() > 36) {
+ return value.substring(0, 36).hashCode();
+ } else {
+ return Objects.hashCode(getValue());
+ }
+ }
+
@Override
public String toString() {
return "'" + value + "'";
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]