You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by vl...@apache.org on 2019/01/03 19:26:05 UTC
[calcite] branch master updated: [CALCITE-2768] PlannerTest ignores
top-level order by clause (~RootRel.collation)
This is an automated email from the ASF dual-hosted git repository.
vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new b54f6de [CALCITE-2768] PlannerTest ignores top-level order by clause (~RootRel.collation)
b54f6de is described below
commit b54f6de9d7f87e9853fc9ec01b586555a089b913
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Thu Jan 3 21:58:55 2019 +0300
[CALCITE-2768] PlannerTest ignores top-level order by clause (~RootRel.collation)
---
.../calcite/sql/validate/LexCaseSensitiveTest.java | 2 +-
.../java/org/apache/calcite/tools/PlannerTest.java | 56 ++++++++++++++++------
2 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/core/src/test/java/org/apache/calcite/sql/validate/LexCaseSensitiveTest.java b/core/src/test/java/org/apache/calcite/sql/validate/LexCaseSensitiveTest.java
index 589a466..d315269 100644
--- a/core/src/test/java/org/apache/calcite/sql/validate/LexCaseSensitiveTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/validate/LexCaseSensitiveTest.java
@@ -70,7 +70,7 @@ public class LexCaseSensitiveTest {
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).rel;
RelTraitSet traitSet =
- planner.getEmptyTraitSet().replace(EnumerableConvention.INSTANCE);
+ convert.getTraitSet().replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(transform, instanceOf(EnumerableProject.class));
List<String> fieldNames = transform.getRowType().getFieldNames();
diff --git a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
index 3b68d16..7bd85b6 100644
--- a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
+++ b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
@@ -361,7 +361,7 @@ public class PlannerTest {
SqlNode parse = planner.parse("select * from \"emps\"");
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform),
@@ -424,14 +424,26 @@ public class PlannerTest {
+ " EnumerableTableScan(table=[[hr, emps]])\n");
}
+ @Test public void testTwoSortDontRemove() throws Exception {
+ runDuplicateSortCheck("select empid+deptno from ( "
+ + "select empid, deptno "
+ + "from emps "
+ + "order by empid) "
+ + "order by deptno",
+ "EnumerableSort(sort0=[$1], dir0=[ASC])\n"
+ + " EnumerableProject(EXPR$0=[+($0, $1)], deptno=[$1])\n"
+ + " EnumerableSort(sort0=[$0], dir0=[ASC])\n"
+ + " EnumerableProject(empid=[$0], deptno=[$1])\n"
+ + " EnumerableTableScan(table=[[hr, emps]])\n");
+ }
+
/** Tests that outer order by is not removed since window function
* might reorder the rows in-between */
- @Ignore("RelOptPlanner$CannotPlanException: Node [rel#27:Subset#6"
- + ".ENUMERABLE.[]] could not be implemented; planner state:\n"
+ @Ignore("Node [rel#22:Subset#3.ENUMERABLE.[2]] could not be implemented; planner state:\n"
+ "\n"
- + "Root: rel#27:Subset#6.ENUMERABLE.[]")
+ + "Root: rel#22:Subset#3.ENUMERABLE.[2]")
@Test public void testDuplicateSortPlanWithOver() throws Exception {
- runDuplicateSortCheck("select empid+deptno from ( "
+ runDuplicateSortCheck("select emp_cnt, empid+deptno from ( "
+ "select empid, deptno, count(*) over (partition by deptno) emp_cnt from ( "
+ " select empid, deptno "
+ " from emps "
@@ -448,6 +460,20 @@ public class PlannerTest {
+ " EnumerableTableScan(table=[[hr, emps]])\n");
}
+ @Test public void testDuplicateSortPlanWithRemovedOver() throws Exception {
+ runDuplicateSortCheck("select empid+deptno from ( "
+ + "select empid, deptno, count(*) over (partition by deptno) emp_cnt from ( "
+ + " select empid, deptno "
+ + " from emps "
+ + " order by emps.deptno) "
+ + ")"
+ + "order by deptno",
+ "EnumerableProject(EXPR$0=[+($0, $1)], deptno=[$1])\n"
+ + " EnumerableSort(sort0=[$1], dir0=[ASC])\n"
+ + " EnumerableProject(empid=[$0], deptno=[$1])\n"
+ + " EnumerableTableScan(table=[[hr, emps]])\n");
+ }
+
// If proper "SqlParseException, ValidationException, RelConversionException"
// is used, then checkstyle fails with
// "Redundant throws: 'ValidationException' listed more then one time"
@@ -466,7 +492,7 @@ public class PlannerTest {
SqlNode parse = planner.parse(sql);
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).rel;
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
if (traitSet.getTrait(RelCollationTraitDef.INSTANCE) == null) {
// SortRemoveRule can only work if collation trait is enabled.
@@ -492,7 +518,7 @@ public class PlannerTest {
+ "order by \"deptno\"");
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).rel;
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform),
@@ -520,7 +546,7 @@ public class PlannerTest {
SqlNode parse = planner.parse("select * from \"emps\"");
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform),
@@ -540,7 +566,7 @@ public class PlannerTest {
SqlNode parse = planner.parse("select * from \"emps\"");
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
RelNode transform2 = planner.transform(0, traitSet, transform);
@@ -594,7 +620,7 @@ public class PlannerTest {
SqlNode parse = planner.parse("select * from \"emps\"");
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).rel;
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
RelNode transform2 = planner.transform(1, traitSet, transform);
@@ -644,10 +670,10 @@ public class PlannerTest {
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet0 = planner.getEmptyTraitSet()
+ RelTraitSet traitSet0 = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
- RelTraitSet traitSet1 = planner.getEmptyTraitSet()
+ RelTraitSet traitSet1 = convert.getTraitSet()
.replace(out);
RelNode transform = planner.transform(0, traitSet0, convert);
@@ -704,7 +730,7 @@ public class PlannerTest {
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform),
@@ -786,7 +812,7 @@ public class PlannerTest {
SqlNode parse = planner.parse(sql);
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).rel;
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform), containsString(expected));
@@ -936,7 +962,7 @@ public class PlannerTest {
SqlNode validate = planner.validate(parse);
RelNode convert = planner.rel(validate).project();
- RelTraitSet traitSet = planner.getEmptyTraitSet()
+ RelTraitSet traitSet = convert.getTraitSet()
.replace(EnumerableConvention.INSTANCE);
RelNode transform = planner.transform(0, traitSet, convert);
assertThat(toString(transform), containsString(expected));