[ 
https://issues.apache.org/jira/browse/DRILL-6589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16555596#comment-16555596
 ] 

ASF GitHub Bot commented on DRILL-6589:
---------------------------------------

vdiravka commented on a change in pull request #1372: DRILL-6589: Push 
transitive closure predicates past aggregates/projects
URL: https://github.com/apache/drill/pull/1372#discussion_r205087321
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterAggregateTransposeRule.java
 ##########
 @@ -24,20 +24,29 @@
 import org.apache.calcite.rel.core.Filter;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.rules.FilterAggregateTransposeRule;
+import org.apache.calcite.tools.RelBuilderFactory;
 import org.apache.drill.exec.planner.DrillRelBuilder;
 
 public class DrillFilterAggregateTransposeRule extends 
FilterAggregateTransposeRule{
 
   // Since Calcite's default FilterAggregateTransposeRule would match Filter 
on top of Aggregate, it potentially will match Rels with mixed CONVENTION trait.
-  // Here override match method, such that the rule matchs with Rel in the 
same CONVENTION.
+  // Here override match method, such that the rule matches with Rel in the 
same CONVENTION.
 
   public static final FilterAggregateTransposeRule INSTANCE = new 
DrillFilterAggregateTransposeRule();
 
+  public static final FilterAggregateTransposeRule DRILL_LOGICAL_INSTANCE = 
new DrillFilterAggregateTransposeRule(
+      DrillRelBuilder.proto(DrillRelFactories.DRILL_LOGICAL_FILTER_FACTORY, 
DrillRelFactories.DRILL_LOGICAL_AGGREGATE_FACTORY),
+      Filter.class, Aggregate.class);
+
   private DrillFilterAggregateTransposeRule() {
     super(Filter.class, 
DrillRelBuilder.proto(Contexts.of(RelFactories.DEFAULT_FILTER_FACTORY)),
         Aggregate.class);
   }
 
+  private DrillFilterAggregateTransposeRule(RelBuilderFactory 
relBuilderFactory,
 
 Review comment:
   Let's combine two constructors into one:
   `private DrillFilterAggregateTransposeRule(RelBuilderFactory 
relBuilderFactory) {`
   `    super(Filter.class, relBuilderFactory, Aggregate.class);`
   `}`
   In result you can use this constructor for `INSTANCE` and 
`DRILL_LOGICAL_INSTANCE`, but with different `RelBuilderFactory`

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Push transitive closure generated predicates past aggregates/projects
> ---------------------------------------------------------------------
>
>                 Key: DRILL-6589
>                 URL: https://issues.apache.org/jira/browse/DRILL-6589
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.13.0
>            Reporter: Gautam Kumar Parai
>            Assignee: Gautam Kumar Parai
>            Priority: Major
>             Fix For: 1.15.0
>
>
> Here is a sample query that may benefit from this optimization:
> SELECT * FROM T1 WHERE a1 = 5 AND a1 IN (SELECT a2 FROM T2); 
> Here the transitive predicate a2 = 5 would be pushed past the aggregate due 
> to this optimization.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to