jh3507 commented on a change in pull request #1309: [CALCITE-3183] Trimming
method for Filter rel uses wrong traitSet
URL: https://github.com/apache/calcite/pull/1309#discussion_r302739418
##########
File path:
core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
##########
@@ -1926,6 +1937,57 @@ public void testJoinUsingDynamicTable() {
sql(sql).trim(true).ok();
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-3183">[CALCITE-3183]
+ * Trimming method for Filter rel uses wrong traitSet </a> */
+ @Test public void testFilterAndSortWithTrim() {
+ // Create a customized test with RelCollation trait in the test cluster.
+ Tester tester = new TesterImpl(getDiffRepos(),
+ false, true,
+ true, false,
+ null, null) {
+ @Override public RelOptPlanner createPlanner() {
+ return new MockRelOptPlanner(Contexts.empty()) {
+ @Override public List<RelTraitDef> getRelTraitDefs() {
+ return
ImmutableList.<RelTraitDef>of(RelCollationTraitDef.INSTANCE);
+ }
+ @Override public RelTraitSet emptyTraitSet() {
+ return RelTraitSet.createEmpty().plus(
+ RelCollationTraitDef.INSTANCE.getDefault());
+ }
+ };
+ }
+ };
+
+ // Run query and save plan after trimming
+ final String sql = "select count(a.EMPNO)\n"
+ + "from (select * from emp order by sal limit 3) a\n"
+ + "where a.EMPNO > 10 group by 2";
+ RelNode afterTrim = tester.convertSqlToRel(sql).rel;
+
+ // Get Sort and Filter operators
+ final List<RelNode> rels = new ArrayList<>();
+ final RelShuttleImpl visitor = new RelShuttleImpl() {
+ @Override public RelNode visit(LogicalSort sort) {
+ rels.add(sort);
+ return super.visit(sort);
+ }
+ @Override public RelNode visit(LogicalFilter filter) {
+ rels.add(filter);
+ return super.visit(filter);
+ }
+ };
+ visitor.visit(afterTrim);
+
+ // Ensure sort and filter operators have consistent traitSet after trimming
+ assert rels.size() == 2;
Review comment:
Done
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services