[
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)