You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by vl...@apache.org on 2014/12/14 14:32:00 UTC

incubator-calcite git commit: [CALCITE-527] Drop rowType field and constructor/copy argument of Calc

Repository: incubator-calcite
Updated Branches:
  refs/heads/master 039f7cb08 -> 076ac11a8


[CALCITE-527] Drop rowType field and constructor/copy argument of Calc


Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/076ac11a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/076ac11a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/076ac11a

Branch: refs/heads/master
Commit: 076ac11a8b8eddb3200f199051414421db7fbdad
Parents: 039f7cb
Author: Vladimir Sitnikov <si...@gmail.com>
Authored: Sun Dec 14 16:27:35 2014 +0300
Committer: Vladimir Sitnikov <si...@gmail.com>
Committed: Sun Dec 14 16:28:54 2014 +0300

----------------------------------------------------------------------
 .../calcite/adapter/enumerable/EnumerableCalc.java     |  6 ++----
 .../calcite/adapter/enumerable/EnumerableCalcRule.java |  1 -
 .../adapter/enumerable/EnumerableFilterToCalcRule.java |  1 -
 .../enumerable/EnumerableProjectToCalcRule.java        |  3 ---
 .../main/java/org/apache/calcite/plan/RelOptUtil.java  |  1 -
 .../main/java/org/apache/calcite/rel/core/Calc.java    | 13 +------------
 .../org/apache/calcite/rel/logical/LogicalCalc.java    |  6 ++----
 .../org/apache/calcite/rel/logical/LogicalWindow.java  |  4 ++--
 .../org/apache/calcite/rel/rules/CalcRelSplitter.java  |  3 ---
 .../apache/calcite/rel/rules/FilterCalcMergeRule.java  |  1 -
 .../org/apache/calcite/rel/rules/FilterToCalcRule.java |  1 -
 .../apache/calcite/rel/rules/ProjectCalcMergeRule.java |  2 --
 .../apache/calcite/rel/rules/ProjectToCalcRule.java    |  3 ---
 .../apache/calcite/rel/rules/ProjectToWindowRule.java  |  8 +-------
 .../apache/calcite/rel/rules/ReduceDecimalsRule.java   |  1 -
 .../calcite/rel/rules/ReduceExpressionsRule.java       |  1 -
 .../calcite/sql2rel/RelStructuredTypeFlattener.java    |  1 -
 17 files changed, 8 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
index 8a849fb..b467163 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
@@ -31,7 +31,6 @@ import org.apache.calcite.plan.RelTraitSet;
 import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.core.Calc;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexProgram;
 import org.apache.calcite.util.BuiltInMethod;
 import org.apache.calcite.util.Pair;
@@ -54,10 +53,9 @@ public class EnumerableCalc extends Calc implements EnumerableRel {
       RelOptCluster cluster,
       RelTraitSet traitSet,
       RelNode child,
-      RelDataType rowType,
       RexProgram program,
       List<RelCollation> collationList) {
-    super(cluster, traitSet, child, rowType, program, collationList);
+    super(cluster, traitSet, child, program, collationList);
     assert getConvention() instanceof EnumerableConvention;
     assert !program.containsAggs();
   }
@@ -66,7 +64,7 @@ public class EnumerableCalc extends Calc implements EnumerableRel {
       RexProgram program, List<RelCollation> collationList) {
     // we do not need to copy program; it is immutable
     return new EnumerableCalc(getCluster(), traitSet, child,
-        program.getOutputRowType(), program, collationList);
+        program, collationList);
   }
 
   public Result implement(EnumerableRelImplementor implementor, Prefer pref) {

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
index 05d907a..35c83dd 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
@@ -52,7 +52,6 @@ class EnumerableCalcRule extends ConverterRule {
             calc.getInput(),
             calc.getInput().getTraitSet()
                 .replace(EnumerableConvention.INSTANCE)),
-        calc.getRowType(),
         program,
         calc.getCollationList());
   }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterToCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterToCalcRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterToCalcRule.java
index 901dc6b..09ad78b 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterToCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterToCalcRule.java
@@ -52,7 +52,6 @@ public class EnumerableFilterToCalcRule extends RelOptRule {
             filter.getCluster(),
             filter.getTraitSet(),
             rel,
-            inputRowType,
             program,
             ImmutableList.<RelCollation>of());
     call.transformTo(calc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectToCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectToCalcRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectToCalcRule.java
index 988eb46..c654d19 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectToCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectToCalcRule.java
@@ -20,7 +20,6 @@ import org.apache.calcite.plan.RelOptRule;
 import org.apache.calcite.plan.RelOptRuleCall;
 import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexProgram;
 
 import com.google.common.collect.ImmutableList;
@@ -35,7 +34,6 @@ public class EnumerableProjectToCalcRule extends RelOptRule {
   public void onMatch(RelOptRuleCall call) {
     final EnumerableProject project = call.rel(0);
     final RelNode child = project.getInput();
-    final RelDataType rowType = project.getRowType();
     final RexProgram program =
         RexProgram.create(child.getRowType(),
             project.getProjects(),
@@ -47,7 +45,6 @@ public class EnumerableProjectToCalcRule extends RelOptRule {
             project.getCluster(),
             project.getTraitSet(),
             child,
-            rowType,
             program,
             ImmutableList.<RelCollation>of());
     call.transformTo(calc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
index 7d7093b..3c31ed2 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
@@ -2834,7 +2834,6 @@ public abstract class RelOptUtil {
         rel.getCluster(),
         rel.getTraitSet(),
         rel,
-        program.getOutputRowType(),
         program,
         ImmutableList.<RelCollation>of());
   }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/core/Calc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Calc.java b/core/src/main/java/org/apache/calcite/rel/core/Calc.java
index e337b7a..47240f0 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Calc.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Calc.java
@@ -28,7 +28,6 @@ import org.apache.calcite.rel.RelWriter;
 import org.apache.calcite.rel.SingleRel;
 import org.apache.calcite.rel.logical.LogicalFilter;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexProgram;
 
 import com.google.common.collect.ImmutableList;
@@ -53,7 +52,6 @@ public abstract class Calc extends SingleRel {
    * @param cluster Cluster
    * @param traits Traits
    * @param child Input relation
-   * @param rowType Output row type
    * @param program Calc program
    * @param collationList Description of the physical ordering (or orderings)
    *                      of this relational expression. Never null
@@ -62,11 +60,10 @@ public abstract class Calc extends SingleRel {
       RelOptCluster cluster,
       RelTraitSet traits,
       RelNode child,
-      RelDataType rowType,
       RexProgram program,
       List<RelCollation> collationList) {
     super(cluster, traits, child);
-    this.rowType = rowType;
+    this.rowType = program.getOutputRowType();
     this.program = program;
     this.collationList = ImmutableList.copyOf(collationList);
     assert isValid(true);
@@ -106,14 +103,6 @@ public abstract class Calc extends SingleRel {
         fail)) {
       return false;
     }
-    if (!RelOptUtil.equal(
-        "rowtype of program",
-        program.getOutputRowType(),
-        "declared rowtype of rel",
-        rowType,
-        fail)) {
-      return false;
-    }
     if (!program.isValid(fail)) {
       return false;
     }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
index 3d74fab..1f7dfbe 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
@@ -24,7 +24,6 @@ import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.core.Calc;
 import org.apache.calcite.rel.rules.FilterToCalcRule;
 import org.apache.calcite.rel.rules.ProjectToCalcRule;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.rex.RexProgram;
 
@@ -63,10 +62,9 @@ public final class LogicalCalc extends Calc {
       RelOptCluster cluster,
       RelTraitSet traits,
       RelNode child,
-      RelDataType rowType,
       RexProgram program,
       List<RelCollation> collationList) {
-    super(cluster, traits, child, rowType, program, collationList);
+    super(cluster, traits, child, program, collationList);
   }
 
   //~ Methods ----------------------------------------------------------------
@@ -74,7 +72,7 @@ public final class LogicalCalc extends Calc {
   @Override public LogicalCalc copy(RelTraitSet traitSet, RelNode child,
       RexProgram program, List<RelCollation> collationList) {
     return new LogicalCalc(getCluster(), traitSet, child,
-        program.getOutputRowType(), program, collationList);
+        program, collationList);
   }
 
   @Override public void collectVariablesUsed(Set<String> variableSet) {

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
index 4534d56..3d3b761 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
@@ -82,8 +82,8 @@ public final class LogicalWindow extends Window {
       RelOptCluster cluster,
       RelTraitSet traitSet,
       RelNode child,
-      final RexProgram program,
-      RelDataType outRowType) {
+      final RexProgram program) {
+    final RelDataType outRowType = program.getOutputRowType();
     // Build a list of distinct groups, partitions and aggregate
     // functions.
     final Multimap<WindowKey, RexOver> windowMap =

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java b/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
index 5797273..989e1fc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
@@ -224,7 +224,6 @@ public abstract class CalcRelSplitter {
           relType.makeRel(
               cluster,
               traits,
-              program1.getOutputRowType(),
               rel,
               program1);
 
@@ -773,14 +772,12 @@ public abstract class CalcRelSplitter {
     protected RelNode makeRel(
         RelOptCluster cluster,
         RelTraitSet traits,
-        RelDataType rowType,
         RelNode child,
         RexProgram program) {
       return new LogicalCalc(
           cluster,
           traits,
           child,
-          rowType,
           program,
           Collections.<RelCollation>emptyList());
     }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/FilterCalcMergeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterCalcMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterCalcMergeRule.java
index 5257ee6..fdc8415 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterCalcMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterCalcMergeRule.java
@@ -87,7 +87,6 @@ public class FilterCalcMergeRule extends RelOptRule {
             calc.getCluster(),
             calc.getTraitSet(),
             calc.getInput(),
-            filter.getRowType(),
             mergedProgram,
             Collections.<RelCollation>emptyList());
     call.transformTo(newCalc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/FilterToCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterToCalcRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterToCalcRule.java
index 6df80d2..68044bf 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterToCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterToCalcRule.java
@@ -74,7 +74,6 @@ public class FilterToCalcRule extends RelOptRule {
             filter.getCluster(),
             filter.getTraitSet(),
             rel,
-            inputRowType,
             program,
             ImmutableList.<RelCollation>of());
     call.transformTo(calc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCalcMergeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCalcMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCalcMergeRule.java
index 40f4aab..f2c832a 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCalcMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCalcMergeRule.java
@@ -83,7 +83,6 @@ public class ProjectCalcMergeRule extends RelOptRule {
               cluster,
               project.getTraitSet(),
               calc,
-              project.getRowType(),
               program,
               Collections.<RelCollation>emptyList());
       call.transformTo(projectAsCalc);
@@ -113,7 +112,6 @@ public class ProjectCalcMergeRule extends RelOptRule {
             cluster,
             project.getTraitSet(),
             calc.getInput(),
-            project.getRowType(),
             mergedProgram,
             Collections.<RelCollation>emptyList());
     call.transformTo(newCalc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToCalcRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToCalcRule.java
index c6fc5fe..6233fc1 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToCalcRule.java
@@ -22,7 +22,6 @@ import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.logical.LogicalCalc;
 import org.apache.calcite.rel.logical.LogicalProject;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexProgram;
 
 import com.google.common.collect.ImmutableList;
@@ -57,7 +56,6 @@ public class ProjectToCalcRule extends RelOptRule {
   public void onMatch(RelOptRuleCall call) {
     final LogicalProject project = call.rel(0);
     final RelNode child = project.getInput();
-    final RelDataType rowType = project.getRowType();
     final RexProgram program =
         RexProgram.create(
             child.getRowType(),
@@ -70,7 +68,6 @@ public class ProjectToCalcRule extends RelOptRule {
             project.getCluster(),
             project.getTraitSet(),
             child,
-            rowType,
             program,
             ImmutableList.<RelCollation>of());
     call.transformTo(calc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
index b3a8023..685b925 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
@@ -29,7 +29,6 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.logical.LogicalCalc;
 import org.apache.calcite.rel.logical.LogicalFilter;
 import org.apache.calcite.rel.logical.LogicalWindow;
-import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexCall;
 import org.apache.calcite.rex.RexDynamicParam;
 import org.apache.calcite.rex.RexFieldAccess;
@@ -114,7 +113,6 @@ public abstract class ProjectToWindowRule extends RelOptRule {
           Project project = call.rel(0);
           assert RexOver.containsOver(project.getProjects(), null);
           final RelNode child = project.getInput();
-          final RelDataType rowType = project.getRowType();
           final RexProgram program =
               RexProgram.create(
                   child.getRowType(),
@@ -128,7 +126,6 @@ public abstract class ProjectToWindowRule extends RelOptRule {
                   project.getCluster(),
                   project.getTraitSet(),
                   child,
-                  rowType,
                   program,
                   ImmutableList.<RelCollation>of());
           CalcRelSplitter transform = new WindowedAggRelSplitter(calc) {
@@ -203,7 +200,6 @@ public abstract class ProjectToWindowRule extends RelOptRule {
               protected RelNode makeRel(
                   RelOptCluster cluster,
                   RelTraitSet traits,
-                  RelDataType rowType,
                   RelNode child,
                   RexProgram program) {
                 assert !program.containsAggs();
@@ -212,7 +208,6 @@ public abstract class ProjectToWindowRule extends RelOptRule {
                 return super.makeRel(
                     cluster,
                     traits,
-                    rowType,
                     child,
                     program);
               }
@@ -241,14 +236,13 @@ public abstract class ProjectToWindowRule extends RelOptRule {
               protected RelNode makeRel(
                   RelOptCluster cluster,
                   RelTraitSet traits,
-                  RelDataType rowType,
                   RelNode child,
                   RexProgram program) {
                 Util.permAssert(
                     program.getCondition() == null,
                     "WindowedAggregateRel cannot accept a condition");
                 return LogicalWindow.create(
-                    cluster, traits, child, program, rowType);
+                    cluster, traits, child, program);
               }
             }
           });

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java
index 9d9cc2d..a3ecf19 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java
@@ -115,7 +115,6 @@ public class ReduceDecimalsRule extends RelOptRule {
             calc.getCluster(),
             calc.getTraitSet(),
             calc.getInput(),
-            newProgram.getOutputRowType(),
             newProgram,
             Collections.<RelCollation>emptyList());
     call.transformTo(newCalc);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
index 5bf65de..c41a99d 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
@@ -277,7 +277,6 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
                     calc.getCluster(),
                     calc.getTraitSet(),
                     calc.getInput(),
-                    calc.getRowType(),
                     builder.getProgram(),
                     calc.getCollationList()));
 

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/076ac11a/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java b/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
index c66b1a2..b34ea40 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/RelStructuredTypeFlattener.java
@@ -548,7 +548,6 @@ public class RelStructuredTypeFlattener implements ReflectiveVisitor {
             cluster,
             rel.getTraitSet(),
             newChild,
-            newProgram.getOutputRowType(),
             newProgram,
             Collections.<RelCollation>emptyList());
     setNewForOldRel(rel, newRel);