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]