Github user gparai commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1096#discussion_r171085780
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushLimitToScanRule.java
 ---
    @@ -55,18 +62,21 @@ public void onMatch(RelOptRuleCall call) {
         }
       };
     
    -  public static DrillPushLimitToScanRule LIMIT_ON_PROJECT =
    -      new DrillPushLimitToScanRule(
    -          RelOptHelper.some(DrillLimitRel.class, RelOptHelper.some(
    -              DrillProjectRel.class, 
RelOptHelper.any(DrillScanRel.class))),
    -          "DrillPushLimitToScanRule_LimitOnProject") {
    +  public static DrillPushLimitToScanRule LIMIT_ON_PROJECT = new 
DrillPushLimitToScanRule(
    +      RelOptHelper.some(DrillLimitRel.class, 
RelOptHelper.any(DrillProjectRel.class)), 
"DrillPushLimitToScanRule_LimitOnProject") {
         @Override
         public boolean matches(RelOptRuleCall call) {
           DrillLimitRel limitRel = call.rel(0);
    -      DrillScanRel scanRel = call.rel(2);
    -      // For now only applies to Parquet. And pushdown only apply limit 
but not offset,
    +      DrillProjectRel projectRel = call.rel(1);
    +      // pushdown only apply limit but not offset,
           // so if getFetch() return null no need to run this rule.
    -      if (scanRel.getGroupScan().supportsLimitPushdown() && 
(limitRel.getFetch() != null)) {
    --- End diff --
    
    We still have the LIMIT_ON_SCAN rule which does that check. This rule is 
changed from LIMIT_PROJECT_SCAN to LIMIT_PROJECT. The LIMIT_SCAN along with the 
LIMIT_PROJECT would work as the LIMIT_PROJECT_SCAN.


---

Reply via email to