You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by dz...@apache.org on 2022/05/12 17:28:02 UTC

[drill] branch master updated: DRILL-8211: Replace deprecated RelNode.getChildExps with Project.getProjects (#2535)

This is an automated email from the ASF dual-hosted git repository.

dzamo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git


The following commit(s) were added to refs/heads/master by this push:
     new c95777439c DRILL-8211: Replace deprecated RelNode.getChildExps with Project.getProjects (#2535)
c95777439c is described below

commit c95777439c79f4cd936cefa1ee683d83878e40c9
Author: Volodymyr Vysotskyi <vv...@gmail.com>
AuthorDate: Thu May 12 20:27:55 2022 +0300

    DRILL-8211: Replace deprecated RelNode.getChildExps with Project.getProjects (#2535)
---
 .../exec/store/mapr/db/MapRDBPushProjectIntoScan.java      | 10 ++++------
 .../store/elasticsearch/plan/ElasticsearchProjectRule.java |  4 ++--
 .../apache/drill/exec/planner/common/DrillRelOptUtil.java  |  8 ++++----
 .../planner/logical/DrillFilterItemStarReWriterRule.java   |  8 ++++----
 .../drill/exec/planner/logical/DrillMergeProjectRule.java  | 10 +++-------
 .../logical/DrillProjectPushIntoLateralJoinRule.java       | 14 ++++++--------
 .../exec/planner/logical/DrillPushProjectIntoScanRule.java |  9 ++++-----
 .../planner/logical/DrillPushRowKeyJoinToScanRule.java     |  5 +++--
 .../drill/exec/planner/logical/PreProcessLogicalRel.java   | 10 +++++-----
 .../exec/planner/physical/explain/NumberingRelWriter.java  |  8 +-------
 .../planner/physical/visitor/RewriteProjectToFlatten.java  |  4 ++--
 .../physical/visitor/SplitUpComplexExpressions.java        |  7 +++----
 .../exec/planner/sql/handlers/ComplexUnnestVisitor.java    |  2 +-
 .../exec/store/enumerable/plan/DrillJdbcRuleBase.java      | 13 +++----------
 .../drill/exec/store/plan/rule/PluginProjectRule.java      |  2 +-
 15 files changed, 46 insertions(+), 68 deletions(-)

diff --git a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBPushProjectIntoScan.java b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBPushProjectIntoScan.java
index d8d0a2c41a..67e40947e5 100644
--- a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBPushProjectIntoScan.java
+++ b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBPushProjectIntoScan.java
@@ -17,7 +17,6 @@
  */
 package org.apache.drill.exec.store.mapr.db;
 
-import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.calcite.plan.RelOptRuleCall;
 import org.apache.calcite.plan.RelOptRuleOperand;
 import org.apache.calcite.plan.RelTrait;
@@ -38,6 +37,7 @@ import org.apache.drill.exec.store.mapr.db.json.JsonTableGroupScan;
 import org.apache.drill.exec.util.Utilities;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Push a physical Project into Scan. Currently, this rule is only doing projection pushdown for MapRDB-JSON tables
@@ -46,7 +46,6 @@ import java.util.List;
  * planning phase.
  */
 public abstract class MapRDBPushProjectIntoScan extends StoragePluginOptimizerRule {
-  static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(MapRDBPushProjectIntoScan.class);
 
   private MapRDBPushProjectIntoScan(RelOptRuleOperand operand, String description) {
     super(operand, description);
@@ -99,10 +98,9 @@ public abstract class MapRDBPushProjectIntoScan extends StoragePluginOptimizerRu
           groupScan.clone(columnInfo.getFields()),
           columnInfo.createNewRowType(project.getInput().getCluster().getTypeFactory()), scan.getTable());
 
-      List<RexNode> newProjects = Lists.newArrayList();
-      for (RexNode n : project.getChildExps()) {
-        newProjects.add(n.accept(columnInfo.getInputReWriter()));
-      }
+      List<RexNode> newProjects = project.getProjects().stream()
+        .map(n -> n.accept(columnInfo.getInputReWriter()))
+        .collect(Collectors.toList());
 
       final ProjectPrel newProj =
           new ProjectPrel(project.getCluster(),
diff --git a/contrib/storage-elasticsearch/src/main/java/org/apache/drill/exec/store/elasticsearch/plan/ElasticsearchProjectRule.java b/contrib/storage-elasticsearch/src/main/java/org/apache/drill/exec/store/elasticsearch/plan/ElasticsearchProjectRule.java
index 1995262b94..f64cac6278 100644
--- a/contrib/storage-elasticsearch/src/main/java/org/apache/drill/exec/store/elasticsearch/plan/ElasticsearchProjectRule.java
+++ b/contrib/storage-elasticsearch/src/main/java/org/apache/drill/exec/store/elasticsearch/plan/ElasticsearchProjectRule.java
@@ -65,7 +65,7 @@ public class ElasticsearchProjectRule extends ConverterRule {
 
     // check for literals only without input exprs
     DrillRelOptUtil.InputRefVisitor collectRefs = new DrillRelOptUtil.InputRefVisitor();
-    project.getChildExps().forEach(exp -> exp.accept(collectRefs));
+    project.getProjects().forEach(exp -> exp.accept(collectRefs));
 
     if (!collectRefs.getInputRefs().isEmpty()) {
       for (RelDataTypeField relDataTypeField : rowType.getFieldList()) {
@@ -73,7 +73,7 @@ public class ElasticsearchProjectRule extends ConverterRule {
       }
     }
 
-    boolean allExprsInputRefs = project.getChildExps().stream().allMatch(rexNode -> rexNode instanceof RexInputRef);
+    boolean allExprsInputRefs = project.getProjects().stream().allMatch(rexNode -> rexNode instanceof RexInputRef);
     if (collectRefs.getInputRefs().isEmpty() || allExprsInputRefs) {
       return CalciteUtils.createProject(traitSet,
           convert(project.getInput(), out), project.getProjects(), project.getRowType());
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java
index d64215401d..adfddd5a51 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/common/DrillRelOptUtil.java
@@ -444,12 +444,12 @@ public abstract class DrillRelOptUtil {
     }
   }
 
-  @SuppressWarnings("deprecation")
-  public static boolean isProjectFlatten(RelNode project) {
+  public static boolean isProjectFlatten(RelNode relNode) {
 
-    assert project instanceof Project : "Rel is NOT an instance of project!";
+    assert relNode instanceof Project : "Rel is NOT an instance of Project";
 
-    for (RexNode rex : project.getChildExps()) {
+    Project project = (Project) relNode;
+    for (RexNode rex : project.getProjects()) {
       if (rex instanceof RexCall) {
         RexCall function = (RexCall) rex;
         String functionName = function.getOperator().getName();
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterItemStarReWriterRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterItemStarReWriterRule.java
index b7cdcfc9b6..349d10dbcf 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterItemStarReWriterRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillFilterItemStarReWriterRule.java
@@ -39,6 +39,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static org.apache.drill.exec.planner.logical.FieldsReWriterUtil.DesiredField;
 import static org.apache.drill.exec.planner.logical.FieldsReWriterUtil.FieldsReWriter;
@@ -99,10 +100,9 @@ public class DrillFilterItemStarReWriterRule {
       // re-write projects
       Map<RexNode, Integer> fieldMapper = createFieldMapper(itemStarFields.values(), scanRel.getRowType().getFieldCount());
       FieldsReWriter fieldsReWriter = new FieldsReWriter(fieldMapper);
-      List<RexNode> newProjects = new ArrayList<>();
-      for (RexNode node : projectRel.getChildExps()) {
-        newProjects.add(node.accept(fieldsReWriter));
-      }
+      List<RexNode> newProjects = projectRel.getProjects().stream()
+        .map(node -> node.accept(fieldsReWriter))
+        .collect(Collectors.toList());
 
       DrillProjectRel newProject = new DrillProjectRel(
           projectRel.getCluster(),
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
index 9801011843..46cbdb4850 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillMergeProjectRule.java
@@ -46,7 +46,7 @@ import java.util.List;
  */
 public class DrillMergeProjectRule extends RelOptRule {
 
-  private FunctionImplementationRegistry functionRegistry;
+  private final FunctionImplementationRegistry functionRegistry;
   private final boolean force;
 
   public static DrillMergeProjectRule getInstance(boolean force, ProjectFactory pFactory,
@@ -71,15 +71,11 @@ public class DrillMergeProjectRule extends RelOptRule {
     Project bottomProject = call.rel(1);
 
     // We have a complex output type do not fire the merge project rule
-    if (checkComplexOutput(topProject) || checkComplexOutput(bottomProject)) {
-      return false;
-    }
-
-    return true;
+    return !checkComplexOutput(topProject) && !checkComplexOutput(bottomProject);
   }
 
   private boolean checkComplexOutput(Project project) {
-    for (RexNode expr: project.getChildExps()) {
+    for (RexNode expr: project.getProjects()) {
       if (expr instanceof RexCall) {
         if (functionRegistry.isFunctionComplexOutput(((RexCall) expr).getOperator().getName())) {
           return true;
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectPushIntoLateralJoinRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectPushIntoLateralJoinRule.java
index d44b916ad7..722598a3b6 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectPushIntoLateralJoinRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectPushIntoLateralJoinRule.java
@@ -54,7 +54,7 @@ public class DrillProjectPushIntoLateralJoinRule extends RelOptRule {
       return;
     }
     DrillRelOptUtil.InputRefVisitor collectRefs = new DrillRelOptUtil.InputRefVisitor();
-    for (RexNode exp: origProj.getChildExps()) {
+    for (RexNode exp: origProj.getProjects()) {
       exp.accept(collectRefs);
     }
 
@@ -78,7 +78,7 @@ public class DrillProjectPushIntoLateralJoinRule extends RelOptRule {
 
     if (!trivial) {
       Map<Integer, Integer> mapWithoutCorr = buildMapWithoutCorrColumn(corr, correlationIndex);
-      List<RexNode> outputExprs = DrillRelOptUtil.transformExprs(origProj.getCluster().getRexBuilder(), origProj.getChildExps(), mapWithoutCorr);
+      List<RexNode> outputExprs = DrillRelOptUtil.transformExprs(origProj.getCluster().getRexBuilder(), origProj.getProjects(), mapWithoutCorr);
 
       relNode = new DrillProjectRel(origProj.getCluster(),
                                     left.getTraitSet().plus(DrillRel.DRILL_LOGICAL),
@@ -89,14 +89,12 @@ public class DrillProjectPushIntoLateralJoinRule extends RelOptRule {
 
   private Map<Integer, Integer> buildMapWithoutCorrColumn(RelNode corr, int correlationIndex) {
     int index = 0;
-    Map<Integer, Integer> result = new HashMap();
-    for (int i=0;i<corr.getRowType().getFieldList().size();i++) {
-      if (i == correlationIndex) {
-        continue;
-      } else {
+    Map<Integer, Integer> result = new HashMap<>();
+    for (int i = 0; i < corr.getRowType().getFieldList().size(); i++) {
+      if (i != correlationIndex) {
         result.put(i, index++);
       }
     }
     return result;
   }
-}
\ No newline at end of file
+}
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectIntoScanRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectIntoScanRule.java
index c7f1fc97d2..9da72c4b48 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectIntoScanRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjectIntoScanRule.java
@@ -36,8 +36,8 @@ import org.apache.drill.exec.planner.physical.ScanPrel;
 import org.apache.drill.exec.util.Utilities;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * When table support project push down, rule can be applied to reduce number of read columns
@@ -110,10 +110,9 @@ public class DrillPushProjectIntoScanRule extends RelOptRule {
 
       TableScan newScan = createScan(scan, projectPushInfo);
 
-      List<RexNode> newProjects = new ArrayList<>();
-      for (RexNode n : project.getChildExps()) {
-        newProjects.add(n.accept(projectPushInfo.getInputReWriter()));
-      }
+      List<RexNode> newProjects = project.getProjects().stream()
+        .map(n -> n.accept(projectPushInfo.getInputReWriter()))
+        .collect(Collectors.toList());
 
       Project newProject =
           createProject(project, newScan, newProjects);
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushRowKeyJoinToScanRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushRowKeyJoinToScanRule.java
index b06c58f18e..835fdf182d 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushRowKeyJoinToScanRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushRowKeyJoinToScanRule.java
@@ -463,8 +463,9 @@ public class DrillPushRowKeyJoinToScanRule extends RelOptRule {
       }
       // If no exprs present in projection the column index remains the same in the child.
       // Otherwise, the column index is the `RexInputRef` index.
-      if (curRel != null && curRel instanceof DrillProjectRel) {
-        List<RexNode> childExprs = curRel.getChildExps();
+      if (curRel instanceof DrillProjectRel) {
+        DrillProjectRel projectRel = (DrillProjectRel) curRel;
+        List<RexNode> childExprs = projectRel.getProjects();
         if (childExprs != null && childExprs.size() > 0) {
           if (childExprs.get(curIndex) instanceof RexInputRef) {
             curIndex = ((RexInputRef) childExprs.get(curIndex)).getIndex();
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java
index 7dbd84a3e9..b87350d6dd 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/PreProcessLogicalRel.java
@@ -58,9 +58,9 @@ public class PreProcessLogicalRel extends RelShuttleImpl {
 
   private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(PreProcessLogicalRel.class);
 
-  private RelDataTypeFactory factory;
-  private DrillOperatorTable table;
-  private UnsupportedOperatorCollector unsupportedOperatorCollector;
+  private final RelDataTypeFactory factory;
+  private final DrillOperatorTable table;
+  private final UnsupportedOperatorCollector unsupportedOperatorCollector;
   private final UnwrappingExpressionVisitor unwrappingExpressionVisitor;
 
   public static PreProcessLogicalRel createVisitor(RelDataTypeFactory factory, DrillOperatorTable table, RexBuilder rexBuilder) {
@@ -78,7 +78,7 @@ public class PreProcessLogicalRel extends RelShuttleImpl {
   @Override
   public RelNode visit(LogicalProject project) {
     final List<RexNode> projExpr = Lists.newArrayList();
-    for(RexNode rexNode : project.getChildExps()) {
+    for(RexNode rexNode : project.getProjects()) {
       projExpr.add(rexNode.accept(unwrappingExpressionVisitor));
     }
 
@@ -90,7 +90,7 @@ public class PreProcessLogicalRel extends RelShuttleImpl {
     List<RexNode> exprList = new ArrayList<>();
     boolean rewrite = false;
 
-    for (RexNode rex : project.getChildExps()) {
+    for (RexNode rex : project.getProjects()) {
       RexNode newExpr = rex;
       if (rex instanceof RexCall) {
         RexCall function = (RexCall) rex;
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java
index 5e90f855c6..335605c140 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/explain/NumberingRelWriter.java
@@ -28,7 +28,6 @@ import org.apache.calcite.linq4j.Ord;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.RelWriter;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
-import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.runtime.FlatLists;
 import org.apache.calcite.sql.SqlExplainLevel;
 import org.apache.calcite.util.Pair;
@@ -209,7 +208,6 @@ class NumberingRelWriter implements RelWriter {
     return this;
   }
 
-  @SuppressWarnings("deprecation")
   public RelWriter done(RelNode node) {
     int i = 0;
     if (values.size() > 0 && values.get(0).left.equals("subset")) {
@@ -219,11 +217,7 @@ class NumberingRelWriter implements RelWriter {
       assert values.get(i).right == input;
       ++i;
     }
-    for (RexNode expr : node.getChildExps()) {
-      assert values.get(i).right == expr;
-      ++i;
-    }
-    final List<Pair<String, Object>> valuesCopy =
+    List<Pair<String, Object>> valuesCopy =
         ImmutableList.copyOf(values);
     values.clear();
     explain_(node, valuesCopy);
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java
index a1ffe2eaff..0b64a8cb96 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RewriteProjectToFlatten.java
@@ -70,7 +70,7 @@ public class RewriteProjectToFlatten extends BasePrelVisitor<Prel, Object, RelCo
     List<RelDataTypeField> relDataTypes = new ArrayList<>();
     int i = 0;
     RexNode flatttenExpr = null;
-    for (RexNode rex : project.getChildExps()) {
+    for (RexNode rex : project.getProjects()) {
       RexNode newExpr = rex;
       if (rex instanceof RexCall) {
         RexCall function = (RexCall) rex;
@@ -99,7 +99,7 @@ public class RewriteProjectToFlatten extends BasePrelVisitor<Prel, Object, RelCo
     }
 
     Prel child = ((Prel)project.getInput()).accept(this, null);
-    if (child == project.getInput() && exprList.equals(project.getChildExps())) {
+    if (child == project.getInput() && exprList.equals(project.getProjects())) {
       return project;
     }
     return (Prel) project.copy(project.getTraitSet(), child, exprList, new RelRecordType(relDataTypes));
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java
index 7bbd55bf1f..d319cb0697 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java
@@ -87,7 +87,7 @@ public class SplitUpComplexExpressions extends BasePrelVisitor<Prel, Object, Rel
     final int lastRexInput = lastColumnReferenced + 1;
     RexVisitorComplexExprSplitter exprSplitter = new RexVisitorComplexExprSplitter(funcReg, rexBuilder, lastRexInput);
     int i = 0;
-    for (RexNode rex : newProject.getChildExps()) {
+    for (RexNode rex : newProject.getProjects()) {
       RelDataTypeField originField = projectFields.get(i++);
       RexNode splitRex = rex.accept(exprSplitter);
       origRelDataTypes.add(originField);
@@ -95,7 +95,7 @@ public class SplitUpComplexExpressions extends BasePrelVisitor<Prel, Object, Rel
     }
 
     final List<RexNode> complexExprs = exprSplitter.getComplexExprs();
-    if (complexExprs.size() == 1 && findTopComplexFunc(newProject.getChildExps()).size() == 1) {
+    if (complexExprs.size() == 1 && findTopComplexFunc(newProject.getProjects()).size() == 1) {
       return newProject;
     }
 
@@ -132,8 +132,7 @@ public class SplitUpComplexExpressions extends BasePrelVisitor<Prel, Object, Rel
         relDataTypes.add(new RelDataTypeFieldImpl(getExprName(exprIndex), allExprs.size(), factory.createSqlType(SqlTypeName.ANY)));
 
         RelRecordType childProjectType = new RelRecordType(relDataTypes);
-        ProjectPrel childProject  = new ProjectPrel(newProject.getCluster(), newProject.getTraitSet(), newInput, ImmutableList.copyOf(allExprs), childProjectType);
-        newInput = childProject;
+        newInput = new ProjectPrel(newProject.getCluster(), newProject.getTraitSet(), newInput, ImmutableList.copyOf(allExprs), childProjectType);
       }
 
       allExprs.set(allExprs.size() - 1,
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ComplexUnnestVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ComplexUnnestVisitor.java
index 60e46ef46c..03c333a9e6 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ComplexUnnestVisitor.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ComplexUnnestVisitor.java
@@ -118,7 +118,7 @@ public class ComplexUnnestVisitor extends RelShuttleImpl {
 
     Project project = (Project) uncollect.getInput();
     // If project below uncollect contains only field references, no need to rewrite it
-    List<RexNode> projectChildExps = project.getChildExps();
+    List<RexNode> projectChildExps = project.getProjects();
     assert projectChildExps.size() == 1 : "Uncollect does not support multiple expressions";
 
     RexNode projectExpr = projectChildExps.iterator().next();
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/enumerable/plan/DrillJdbcRuleBase.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/enumerable/plan/DrillJdbcRuleBase.java
index be258a2cc2..2fc5183efb 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/enumerable/plan/DrillJdbcRuleBase.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/enumerable/plan/DrillJdbcRuleBase.java
@@ -78,7 +78,7 @@ public abstract class DrillJdbcRuleBase extends ConverterRule {
       try {
 
         final LogicalProject project = call.rel(0);
-        for (RexNode node : project.getChildExps()) {
+        for (RexNode node : project.getProjects()) {
           if (!checkedExpressions.get(node)) {
             return false;
           }
@@ -108,15 +108,8 @@ public abstract class DrillJdbcRuleBase extends ConverterRule {
     @Override
     public boolean matches(RelOptRuleCall call) {
       try {
-
-        final LogicalFilter filter = call.rel(0);
-        for (RexNode node : filter.getChildExps()) {
-          if (!checkedExpressions.get(node)) {
-            return false;
-          }
-        }
-        return true;
-
+        LogicalFilter filter = call.rel(0);
+        return checkedExpressions.get(filter.getCondition());
       } catch (ExecutionException e) {
         throw new IllegalStateException("Failure while trying to evaluate push down.", e);
       }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/rule/PluginProjectRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/rule/PluginProjectRule.java
index 2589f90116..2471d2b14b 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/rule/PluginProjectRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/plan/rule/PluginProjectRule.java
@@ -71,7 +71,7 @@ public class PluginProjectRule extends PluginConverterRule {
       return null;
     }
 
-    List<RexNode> newProjects = project.getChildExps().stream()
+    List<RexNode> newProjects = project.getProjects().stream()
       .map(n -> n.accept(projectPushInfo.getInputReWriter()))
       .collect(Collectors.toList());