DRILL-1647: Enable rewrite rule to allow multiple flattens in s a select 
clause. Fixes a few outstanding issues that were the reason for disabling it.

Fix for the failed Regression test run. Was an issue with removing cast 
information, simply needed to return the original expression rather than try to 
clone it if rewriting was not needed.

Was not visiting the child of a project appropriately, this was causing complex 
expressions nested inside of a sub-query to fail.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/761156bf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/761156bf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/761156bf

Branch: refs/heads/master
Commit: 761156bf8b09a9b9cbe801bae730da340ea36d03
Parents: e515e62
Author: Jason Altekruse <altekruseja...@gmail.com>
Authored: Thu Oct 30 14:05:32 2014 -0700
Committer: Jacques Nadeau <jacq...@apache.org>
Committed: Tue Nov 11 16:48:45 2014 -0800

----------------------------------------------------------------------
 .../planner/physical/visitor/RexVisitorComplexExprSplitter.java    | 2 +-
 .../exec/planner/physical/visitor/SplitUpComplexExpressions.java   | 2 +-
 .../apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/761156bf/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java
index 73242d5..9742a90 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/RexVisitorComplexExprSplitter.java
@@ -98,7 +98,7 @@ public class RexVisitorComplexExprSplitter extends 
RexVisitorImpl<RexNode> {
       complexExprs.add(call.clone(new RelDataTypeDrillImpl(new 
RelDataTypeHolder(),factory), newOps));
       return ret;
     }
-    return call.clone(new RelDataTypeDrillImpl(new 
RelDataTypeHolder(),factory), newOps);
+    return call.clone(call.getType(), newOps);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/761156bf/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/visitor/SplitUpComplexExpressions.java
----------------------------------------------------------------------
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 f53b228..0a49f3a 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
@@ -108,7 +108,7 @@ public class SplitUpComplexExpressions extends 
BasePrelVisitor<Prel, Object, Rel
     }
     List<RexNode> complexExprs = exprSplitter.getComplexExprs();
 
-    RelNode originalInput = project.getInput(0);
+    RelNode originalInput = ((Prel)project.getInput(0)).accept(this, null);
     ProjectPrel childProject;
 
     List<RexNode> allExprs = new ArrayList();

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/761156bf/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
index 5f91e6e..58c80a6 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
@@ -200,7 +200,7 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
     // within a single query, it also breaks up all expressions with complex 
outputs into their own project operations.
     // It currently appears to be producing good plans, but for the flatten 
case it is revealing execution errors in the
     // project operator.
-//    phyRelNode = ((Prel) phyRelNode).accept(new 
SplitUpComplexExpressions(planner.getTypeFactory(), 
context.getDrillOperatorTable(), 
context.getPlannerSettings().functionImplementationRegistry), null);
+    phyRelNode = ((Prel) phyRelNode).accept(new 
SplitUpComplexExpressions(planner.getTypeFactory(), 
context.getDrillOperatorTable(), 
context.getPlannerSettings().functionImplementationRegistry), null);
     phyRelNode = ((Prel) phyRelNode).accept(new 
RewriteProjectToFlatten(planner.getTypeFactory(), 
context.getDrillOperatorTable()), null);
     // Definitely before this one
     /*

Reply via email to