This is an automated email from the ASF dual-hosted git repository.

jakevin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 4fec0826f8 [fix](Nereids): avoid Exception to cause analyze time too 
long (#23627)
4fec0826f8 is described below

commit 4fec0826f853b57323b4b7ad1bf284be4c78c374
Author: jakevin <jakevin...@gmail.com>
AuthorDate: Wed Aug 30 12:25:31 2023 +0800

    [fix](Nereids): avoid Exception to cause analyze time too long (#23627)
    
    AnyDataType will cause toCatalogDataType throw Exception, it will cost much 
time.
    
    Avoid to throw Exception in Analyzer.
---
 .../nereids/trees/expressions/functions/IdenticalSignature.java   | 8 ++++++++
 .../trees/expressions/functions/ImplicitlyCastableSignature.java  | 7 +++++++
 .../trees/expressions/functions/NullOrIdenticalSignature.java     | 8 ++++++++
 3 files changed, 23 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/IdenticalSignature.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/IdenticalSignature.java
index 829f9125e4..499cd15f7f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/IdenticalSignature.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/IdenticalSignature.java
@@ -18,7 +18,9 @@
 package org.apache.doris.nereids.trees.expressions.functions;
 
 import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.types.ArrayType;
 import org.apache.doris.nereids.types.DataType;
+import org.apache.doris.nereids.types.coercion.AnyDataType;
 
 import java.util.List;
 
@@ -33,6 +35,12 @@ public interface IdenticalSignature extends ComputeSignature 
{
     static boolean isIdentical(DataType signatureType, DataType realType) {
         try {
             // TODO: copy matchesType to DataType
+            // TODO: resolve AnyDataType invoke toCatalogDataType
+            if (signatureType instanceof ArrayType) {
+                if (((ArrayType) signatureType).getItemType() instanceof 
AnyDataType) {
+                    return false;
+                }
+            }
             return 
realType.toCatalogDataType().matchesType(signatureType.toCatalogDataType());
         } catch (Throwable t) {
             // the signatureType maybe DataType and can not cast to catalog 
data type.
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ImplicitlyCastableSignature.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ImplicitlyCastableSignature.java
index 0a0f2a972f..490d1344b2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ImplicitlyCastableSignature.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/ImplicitlyCastableSignature.java
@@ -19,6 +19,7 @@ package org.apache.doris.nereids.trees.expressions.functions;
 
 import org.apache.doris.catalog.FunctionSignature;
 import org.apache.doris.catalog.Type;
+import org.apache.doris.nereids.types.ArrayType;
 import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.nereids.types.NullType;
 import org.apache.doris.nereids.types.coercion.AnyDataType;
@@ -51,6 +52,12 @@ public interface ImplicitlyCastableSignature extends 
ComputeSignature {
         }
         try {
             // TODO: copy isImplicitlyCastable method to DataType
+            // TODO: resolve AnyDataType invoke toCatalogDataType
+            if (signatureType instanceof ArrayType) {
+                if (((ArrayType) signatureType).getItemType() instanceof 
AnyDataType) {
+                    return false;
+                }
+            }
             if (Type.isImplicitlyCastable(realType.toCatalogDataType(), 
signatureType.toCatalogDataType(), true)) {
                 return true;
             }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/NullOrIdenticalSignature.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/NullOrIdenticalSignature.java
index 5ed0bea656..6533d0fa50 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/NullOrIdenticalSignature.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/NullOrIdenticalSignature.java
@@ -18,8 +18,10 @@
 package org.apache.doris.nereids.trees.expressions.functions;
 
 import org.apache.doris.catalog.FunctionSignature;
+import org.apache.doris.nereids.types.ArrayType;
 import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.nereids.types.NullType;
+import org.apache.doris.nereids.types.coercion.AnyDataType;
 
 import java.util.List;
 
@@ -34,6 +36,12 @@ public interface NullOrIdenticalSignature extends 
ComputeSignature {
     static boolean isNullOrIdentical(DataType signatureType, DataType 
realType) {
         try {
             // TODO: copy matchesType to DataType
+            // TODO: resolve AnyDataType invoke toCatalogDataType
+            if (signatureType instanceof ArrayType) {
+                if (((ArrayType) signatureType).getItemType() instanceof 
AnyDataType) {
+                    return false;
+                }
+            }
             return realType instanceof NullType
                     || 
realType.toCatalogDataType().matchesType(signatureType.toCatalogDataType());
         } catch (Throwable t) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to