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

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new c2ad828b0c6 [fix] (Nereids) restrict the execution of match on the 
scan (#40532) (#40780)
c2ad828b0c6 is described below

commit c2ad828b0c67c464efd5972a53b419a8e2989d0f
Author: Sun Chenyang <[email protected]>
AuthorDate: Fri Sep 13 20:03:11 2024 +0800

    [fix] (Nereids) restrict the execution of match on the scan (#40532) 
(#40780)
    
    ## Proposed changes
    
    pick from master #40532
    
    <!--Describe your changes.-->
---
 .../nereids/rules/analysis/CheckAfterRewrite.java    | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
index e193c5fc493..df8ec64fc2e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
@@ -24,6 +24,7 @@ import org.apache.doris.nereids.rules.RuleType;
 import org.apache.doris.nereids.trees.expressions.Alias;
 import org.apache.doris.nereids.trees.expressions.ExprId;
 import org.apache.doris.nereids.trees.expressions.Expression;
+import org.apache.doris.nereids.trees.expressions.Match;
 import org.apache.doris.nereids.trees.expressions.NamedExpression;
 import org.apache.doris.nereids.trees.expressions.Slot;
 import org.apache.doris.nereids.trees.expressions.SlotNotFromChildren;
@@ -38,6 +39,9 @@ import 
org.apache.doris.nereids.trees.expressions.functions.window.WindowFunctio
 import org.apache.doris.nereids.trees.plans.Plan;
 import org.apache.doris.nereids.trees.plans.algebra.Generate;
 import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
+import 
org.apache.doris.nereids.trees.plans.logical.LogicalDeferMaterializeOlapScan;
+import org.apache.doris.nereids.trees.plans.logical.LogicalFilter;
+import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
 import org.apache.doris.nereids.trees.plans.logical.LogicalSort;
 import org.apache.doris.nereids.trees.plans.logical.LogicalTopN;
 import org.apache.doris.nereids.trees.plans.logical.LogicalWindow;
@@ -60,6 +64,7 @@ public class CheckAfterRewrite extends OneAnalysisRuleFactory 
{
             checkAllSlotReferenceFromChildren(plan);
             checkUnexpectedExpression(plan);
             checkMetricTypeIsUsedCorrectly(plan);
+            checkMatchIsUsedCorrectly(plan);
             return null;
         }).toRule(RuleType.CHECK_ANALYSIS);
     }
@@ -176,4 +181,19 @@ public class CheckAfterRewrite extends 
OneAnalysisRuleFactory {
             });
         }
     }
+
+    private void checkMatchIsUsedCorrectly(Plan plan) {
+        for (Expression expression : plan.getExpressions()) {
+            if (expression instanceof Match) {
+                if (plan instanceof LogicalFilter && (plan.child(0) instanceof 
LogicalOlapScan
+                        || plan.child(0) instanceof 
LogicalDeferMaterializeOlapScan)) {
+                    return;
+                } else {
+                    throw new AnalysisException(String.format(
+                            "Not support match in %s in plan: %s, only support 
in olapScan filter",
+                            plan.child(0), plan));
+                }
+            }
+        }
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to