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 566d133610 [enhancement](Nereids) Refactor EliminateLimitTest and
EliminateFilterTest by match-pattern (#17631)
566d133610 is described below
commit 566d1336104ec8a0eb4060e2ec6bf23ecab555b1
Author: Weijie Guo <[email protected]>
AuthorDate: Fri Mar 10 21:24:36 2023 +0800
[enhancement](Nereids) Refactor EliminateLimitTest and EliminateFilterTest
by match-pattern (#17631)
---
.../rules/rewrite/logical/EliminateFilterTest.java | 40 ++++++++-----------
.../rules/rewrite/logical/EliminateLimitTest.java | 45 ++++++++--------------
.../doris/nereids/util/LogicalPlanBuilder.java | 7 ++++
3 files changed, 39 insertions(+), 53 deletions(-)
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilterTest.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilterTest.java
index 9e920f1b24..23a35cc893 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilterTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilterTest.java
@@ -17,49 +17,39 @@
package org.apache.doris.nereids.rules.rewrite.logical;
-import org.apache.doris.nereids.CascadesContext;
-import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
-import org.apache.doris.nereids.trees.plans.Plan;
-import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation;
-import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.util.LogicalPlanBuilder;
+import org.apache.doris.nereids.util.MemoPatternMatchSupported;
import org.apache.doris.nereids.util.MemoTestUtils;
+import org.apache.doris.nereids.util.PlanChecker;
import org.apache.doris.nereids.util.PlanConstructor;
-import com.google.common.collect.Lists;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import java.util.List;
-
-public class EliminateFilterTest {
+/**
+ * Tests for {@link EliminateFilter}.
+ */
+class EliminateFilterTest implements MemoPatternMatchSupported {
@Test
- public void testEliminateFilterFalse() {
+ void testEliminateFilterFalse() {
LogicalPlan filterFalse = new
LogicalPlanBuilder(PlanConstructor.newLogicalOlapScan(0, "t1", 0))
.filter(BooleanLiteral.FALSE)
.build();
- CascadesContext cascadesContext =
MemoTestUtils.createCascadesContext(filterFalse);
- List<Rule> rules = Lists.newArrayList(new EliminateFilter().build());
- cascadesContext.topDownRewrite(rules);
-
- Plan actual = cascadesContext.getMemo().copyOut();
- Assertions.assertTrue(actual instanceof LogicalEmptyRelation);
+ PlanChecker.from(MemoTestUtils.createConnectContext(), filterFalse)
+ .applyTopDown(new EliminateFilter())
+ .matches(logicalEmptyRelation());
}
@Test
- public void testEliminateFilterTrue() {
- LogicalPlan filterFalse = new
LogicalPlanBuilder(PlanConstructor.newLogicalOlapScan(0, "t1", 0))
+ void testEliminateFilterTrue() {
+ LogicalPlan filterTrue = new
LogicalPlanBuilder(PlanConstructor.newLogicalOlapScan(0, "t1", 0))
.filter(BooleanLiteral.TRUE)
.build();
- CascadesContext cascadesContext =
MemoTestUtils.createCascadesContext(filterFalse);
- List<Rule> rules = Lists.newArrayList(new EliminateFilter().build());
- cascadesContext.topDownRewrite(rules);
-
- Plan actual = cascadesContext.getMemo().copyOut();
- Assertions.assertTrue(actual instanceof LogicalOlapScan);
+ PlanChecker.from(MemoTestUtils.createConnectContext(), filterTrue)
+ .applyTopDown(new EliminateFilter())
+ .matches(logicalOlapScan());
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimitTest.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimitTest.java
index 44a88ac0c8..1396636729 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimitTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimitTest.java
@@ -17,54 +17,43 @@
package org.apache.doris.nereids.rules.rewrite.logical;
-import org.apache.doris.nereids.CascadesContext;
import org.apache.doris.nereids.properties.OrderKey;
-import org.apache.doris.nereids.rules.Rule;
-import org.apache.doris.nereids.trees.plans.LimitPhase;
-import org.apache.doris.nereids.trees.plans.Plan;
-import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation;
import org.apache.doris.nereids.trees.plans.logical.LogicalLimit;
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.LogicalPlan;
+import org.apache.doris.nereids.util.LogicalPlanBuilder;
+import org.apache.doris.nereids.util.MemoPatternMatchSupported;
import org.apache.doris.nereids.util.MemoTestUtils;
import org.apache.doris.nereids.util.PlanChecker;
import org.apache.doris.nereids.util.PlanConstructor;
-import com.google.common.collect.Lists;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import java.util.List;
import java.util.stream.Collectors;
/**
- * MergeConsecutiveFilter ut
+ * Tests for the elimination of {@link LogicalLimit}.
*/
-public class EliminateLimitTest {
+class EliminateLimitTest implements MemoPatternMatchSupported {
@Test
- public void testEliminateLimit() {
- LogicalOlapScan scan = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
- LogicalLimit<LogicalOlapScan> limit = new LogicalLimit<>(0, 0,
LimitPhase.ORIGIN, scan);
-
- CascadesContext cascadesContext =
MemoTestUtils.createCascadesContext(limit);
- List<Rule> rules = Lists.newArrayList(new EliminateLimit().build());
- cascadesContext.topDownRewrite(rules);
+ void testEliminateLimit() {
+ LogicalPlan limit = new
LogicalPlanBuilder(PlanConstructor.newLogicalOlapScan(0, "t1", 0))
+ .limit(0, 0).build();
- Plan actual = cascadesContext.getMemo().copyOut();
- Assertions.assertTrue(actual instanceof LogicalEmptyRelation);
+ PlanChecker.from(MemoTestUtils.createConnectContext(), limit)
+ .applyTopDown(new EliminateLimit())
+ .matches(logicalEmptyRelation());
}
@Test
- public void testLimitSort() {
+ void testLimitSort() {
LogicalOlapScan scan = PlanConstructor.newLogicalOlapScan(0, "t1", 0);
- LogicalLimit limit = new LogicalLimit<>(1, 1, LimitPhase.ORIGIN,
- new LogicalSort<>(scan.getOutput().stream().map(c -> new
OrderKey(c, true, true)).collect(Collectors.toList()),
- scan));
+ LogicalPlan limit = new LogicalPlanBuilder(scan).sort(
+ scan.getOutput().stream().map(c -> new OrderKey(c,
true, true)).collect(Collectors.toList()))
+ .limit(1, 1).build();
- Plan actual = PlanChecker.from(MemoTestUtils.createConnectContext(),
limit)
+ PlanChecker.from(MemoTestUtils.createConnectContext(), limit)
.rewrite()
- .getPlan();
- Assertions.assertTrue(actual instanceof LogicalTopN);
+ .matches(logicalTopN());
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java
index 43177698bc..7ae95e1511 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/nereids/util/LogicalPlanBuilder.java
@@ -18,6 +18,7 @@
package org.apache.doris.nereids.util;
import org.apache.doris.common.Pair;
+import org.apache.doris.nereids.properties.OrderKey;
import org.apache.doris.nereids.trees.expressions.Alias;
import org.apache.doris.nereids.trees.expressions.EqualTo;
import org.apache.doris.nereids.trees.expressions.Expression;
@@ -33,6 +34,7 @@ import
org.apache.doris.nereids.trees.plans.logical.LogicalLimit;
import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
+import org.apache.doris.nereids.trees.plans.logical.LogicalSort;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
@@ -123,6 +125,11 @@ public class LogicalPlanBuilder {
return from(join);
}
+ public LogicalPlanBuilder sort(List<OrderKey> orderKeys) {
+ LogicalSort<LogicalPlan> sortPlan = new LogicalSort<>(orderKeys,
this.plan);
+ return from(sortPlan);
+ }
+
public LogicalPlanBuilder limit(long limit, long offset) {
LogicalLimit<LogicalPlan> limitPlan = new LogicalLimit<>(limit,
offset, LimitPhase.ORIGIN, this.plan);
return from(limitPlan);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]