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]

Reply via email to