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

[37/58] [abbrv] [partial] incubator-calcite git commit: [CALCITE-306] Standardize code style for "import package.*; "

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Intersect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Intersect.java b/core/src/main/java/org/apache/calcite/rel/core/Intersect.java
index 6f43441..472cd92 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Intersect.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Intersect.java
@@ -14,25 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.sql.SqlKind;
 
 import java.util.BitSet;
 import java.util.List;
 
-import org.eigenbase.rel.metadata.RelMetadataQuery;
-import org.eigenbase.relopt.RelOptCluster;
-import org.eigenbase.relopt.RelTraitSet;
-import org.eigenbase.sql.SqlKind;
-
 /**
- * Abstract base class for implementations of
- * {@link IntersectRel}.
+ * Relational expression that returns the intersection of the rows of its
+ * inputs.
+ *
+ * <p>If "all" is true, performs then multiset intersection; otherwise,
+ * performs set set intersection (implying no duplicates in the results).
  */
-public abstract class IntersectRelBase extends SetOpRel {
+public abstract class Intersect extends SetOp {
   /**
-   * Creates an IntersectRelBase.
+   * Creates an Intersect.
    */
-  public IntersectRelBase(
+  public Intersect(
       RelOptCluster cluster,
       RelTraitSet traits,
       List<RelNode> inputs,
@@ -41,14 +46,13 @@ public abstract class IntersectRelBase extends SetOpRel {
   }
 
   /**
-   * Creates an IntersectRelBase by parsing serialized output.
+   * Creates an Intersect by parsing serialized output.
    */
-  protected IntersectRelBase(RelInput input) {
+  protected Intersect(RelInput input) {
     super(input);
   }
 
-  @Override
-  public double getRows() {
+  @Override public double getRows() {
     // REVIEW jvs 30-May-2005:  I just pulled this out of a hat.
     double dRows = Double.MAX_VALUE;
     for (RelNode input : inputs) {
@@ -59,8 +63,7 @@ public abstract class IntersectRelBase extends SetOpRel {
     return dRows;
   }
 
-  @Override
-  public boolean isKey(BitSet columns) {
+  @Override public boolean isKey(BitSet columns) {
     for (RelNode input : inputs) {
       if (input.isKey(columns)) {
         return true;
@@ -70,4 +73,4 @@ public abstract class IntersectRelBase extends SetOpRel {
   }
 }
 
-// End IntersectRelBase.java
+// End Intersect.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Join.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Join.java b/core/src/main/java/org/apache/calcite/rel/core/Join.java
index e37c196..c3b2f11 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Join.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Join.java
@@ -14,27 +14,44 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.type.SqlTypeName;
-import org.eigenbase.util.*;
-
-import net.hydromatic.optiq.runtime.FlatLists;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelVisitor;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexChecker;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.runtime.FlatLists;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 /**
- * <code>JoinRelBase</code> is an abstract base class for implementations of
- * {@link JoinRel}.
+ * Relational expression that combines two relational expressions according to
+ * some condition.
+ *
+ * <p>Each output row has columns from the left and right inputs.
+ * The set of output rows is a subset of the cartesian product of the two
+ * inputs; precisely which subset depends on the join condition.
  */
-public abstract class JoinRelBase extends AbstractRelNode {
+public abstract class Join extends AbstractRelNode {
   //~ Instance fields --------------------------------------------------------
 
   protected final RexNode condition;
@@ -43,15 +60,15 @@ public abstract class JoinRelBase extends AbstractRelNode {
   protected final ImmutableSet<String> variablesStopped;
 
   /**
-   * Values must be of enumeration {@link JoinRelType}, except that {@link
-   * JoinRelType#RIGHT} is disallowed.
+   * Values must be of enumeration {@link JoinRelType}, except that
+   * {@link JoinRelType#RIGHT} is disallowed.
    */
   protected JoinRelType joinType;
 
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a JoinRelBase.
+   * Creates a Join.
    *
    * @param cluster          Cluster
    * @param traits           Traits
@@ -61,9 +78,9 @@ public abstract class JoinRelBase extends AbstractRelNode {
    * @param joinType         Join type
    * @param variablesStopped Set of names of variables which are set by the
    *                         LHS and used by the RHS and are not available to
-   *                         nodes above this JoinRel in the tree
+   *                         nodes above this LogicalJoin in the tree
    */
-  protected JoinRelBase(
+  protected Join(
       RelOptCluster cluster,
       RelTraitSet traits,
       RelNode left,
@@ -83,8 +100,7 @@ public abstract class JoinRelBase extends AbstractRelNode {
 
   //~ Methods ----------------------------------------------------------------
 
-  @Override
-  public List<RexNode> getChildExps() {
+  @Override public List<RexNode> getChildExps() {
     return ImmutableList.of(condition);
   }
 
@@ -157,7 +173,7 @@ public abstract class JoinRelBase extends AbstractRelNode {
   }
 
   public static double estimateJoinedRows(
-      JoinRelBase joinRel,
+      Join joinRel,
       RexNode condition) {
     double product =
         RelMetadataQuery.getRowCount(joinRel.getLeft())
@@ -219,9 +235,9 @@ public abstract class JoinRelBase extends AbstractRelNode {
   }
 
   /**
-   * Returns whether this JoinRel has already spawned a
-   * {@link org.eigenbase.rel.rules.SemiJoinRel} via
-   * {@link org.eigenbase.rel.rules.AddRedundantSemiJoinRule}.
+   * Returns whether this LogicalJoin has already spawned a
+   * {@link SemiJoin} via
+   * {@link org.apache.calcite.rel.rules.JoinAddRedundantSemiJoinRule}.
    *
    * <p>The base implementation returns false.</p>
    *
@@ -356,8 +372,7 @@ public abstract class JoinRelBase extends AbstractRelNode {
     }
   }
 
-  @Override
-  public final JoinRelBase copy(RelTraitSet traitSet, List<RelNode> inputs) {
+  @Override public final Join copy(RelTraitSet traitSet, List<RelNode> inputs) {
     assert inputs.size() == 2;
     return copy(traitSet, getCondition(), inputs.get(0), inputs.get(1),
         joinType, isSemiJoinDone());
@@ -367,7 +382,7 @@ public abstract class JoinRelBase extends AbstractRelNode {
    * Creates a copy of this join, overriding condition, system fields and
    * inputs.
    *
-   * <p>General contract as {@link org.eigenbase.rel.RelNode#copy}.
+   * <p>General contract as {@link RelNode#copy}.
    *
    * @param conditionExpr Condition
    * @param left          Left input
@@ -377,7 +392,7 @@ public abstract class JoinRelBase extends AbstractRelNode {
    *                      semi-join
    * @return Copy of this join
    */
-  public abstract JoinRelBase copy(RelTraitSet traitSet, RexNode conditionExpr,
+  public abstract Join copy(RelTraitSet traitSet, RexNode conditionExpr,
       RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone);
 
   /** Analyzes the join condition. */
@@ -386,4 +401,4 @@ public abstract class JoinRelBase extends AbstractRelNode {
   }
 }
 
-// End JoinRelBase.java
+// End Join.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java b/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
index f40374c..b1c8a18 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
@@ -14,32 +14,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.ImmutableIntList;
+import org.apache.calcite.util.mapping.IntPair;
+
+import com.google.common.base.Preconditions;
 
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.List;
 
-import org.eigenbase.relopt.RelOptUtil;
-import org.eigenbase.rex.RexBuilder;
-import org.eigenbase.rex.RexNode;
-import org.eigenbase.util.ImmutableIntList;
-import org.eigenbase.util.mapping.IntPair;
-
-import net.hydromatic.optiq.util.BitSets;
-
-import com.google.common.base.Preconditions;
-
 /** An analyzed join condition.
  *
  * <p>It is useful for the many algorithms that care whether a join is an
  * equi-join.
  *
- * <p>You can create one using {@link #of}, or call {@link JoinRelBase#analyzeCondition()};
- * many kinds of join cache their join info, especially those that are
- * equi-joins and sub-class {@link org.eigenbase.rel.rules.EquiJoinRel}.</p>
+ * <p>You can create one using {@link #of}, or call
+ * {@link Join#analyzeCondition()}; many kinds of join cache their
+ * join info, especially those that are equi-joins and sub-class
+ * {@link org.apache.calcite.rel.rules.EquiJoin}.</p>
  *
- * @see JoinRelBase#analyzeCondition() */
+ * @see Join#analyzeCondition() */
 public abstract class JoinInfo {
   public final ImmutableIntList leftKeys;
   public final ImmutableIntList rightKeys;

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/JoinRelType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/JoinRelType.java b/core/src/main/java/org/apache/calcite/rel/core/JoinRelType.java
index 8fac256..677021e 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/JoinRelType.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/JoinRelType.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
 /**
  * Enumeration of join types.

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Minus.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Minus.java b/core/src/main/java/org/apache/calcite/rel/core/Minus.java
index 06039f8..12feba8 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Minus.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Minus.java
@@ -14,38 +14,42 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.sql.SqlKind;
 
 import java.util.BitSet;
 import java.util.List;
 
-import org.eigenbase.rel.metadata.RelMetadataQuery;
-import org.eigenbase.relopt.RelOptCluster;
-import org.eigenbase.relopt.RelTraitSet;
-import org.eigenbase.sql.SqlKind;
-
 /**
- * Abstract base class for implementations of
- * {@link MinusRel}.
+ * Relational expression that returns the rows of its first input minus any
+ * matching rows from its other inputs.
+ *
+ * <p>Corresponds to the SQL {@code EXCEPT} operator.
+ *
+ * <p>If "all" is true, then multiset subtraction is
+ * performed; otherwise, set subtraction is performed (implying no duplicates in
+ * the results).
  */
-public abstract class MinusRelBase extends SetOpRel {
-  public MinusRelBase(
-      RelOptCluster cluster,
-      RelTraitSet traits,
-      List<RelNode> inputs,
+public abstract class Minus extends SetOp {
+  public Minus(RelOptCluster cluster, RelTraitSet traits, List<RelNode> inputs,
       boolean all) {
     super(cluster, traits, inputs, SqlKind.EXCEPT, all);
   }
 
   /**
-   * Creates a MinusRelBase by parsing serialized output.
+   * Creates a Minus by parsing serialized output.
    */
-  protected MinusRelBase(RelInput input) {
+  protected Minus(RelInput input) {
     super(input);
   }
 
-  @Override
-  public double getRows() {
+  @Override public double getRows() {
     // REVIEW jvs 30-May-2005:  I just pulled this out of a hat.
     double dRows = RelMetadataQuery.getRowCount(inputs.get(0));
     for (int i = 1; i < inputs.size(); i++) {
@@ -57,11 +61,10 @@ public abstract class MinusRelBase extends SetOpRel {
     return dRows;
   }
 
-  @Override
-  public boolean isKey(BitSet columns) {
+  @Override public boolean isKey(BitSet columns) {
     return inputs.get(0).isKey(columns)
         || super.isKey(columns);
   }
 }
 
-// End MinusRelBase.java
+// End Minus.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/OneRow.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/OneRow.java b/core/src/main/java/org/apache/calcite/rel/core/OneRow.java
index 5ae37e6..a3ccc5b 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/OneRow.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/OneRow.java
@@ -14,34 +14,42 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.type.*;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.sql.type.SqlTypeName;
 
 /**
- * <code>OneRowRelBase</code> is an abstract base class for implementations of
- * {@link OneRowRel}.
+ * Relational expression that always returns one row.
+ *
+ * <p>It has one column, called "ZERO", containing the value 0.
+ *
+ * @see Values
  */
-public abstract class OneRowRelBase extends AbstractRelNode {
+public abstract class OneRow extends AbstractRelNode {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a <code>OneRowRelBase</code> with specific traits.
+   * Creates a <code>OneRow</code>.
    *
-   * @param cluster {@link RelOptCluster}  this relational expression belongs
-   *                to
-   * @param traits  for this rel
+   * @param cluster   Cluster that this relational expression belongs to
+   * @param traits    Traits
    */
-  protected OneRowRelBase(RelOptCluster cluster, RelTraitSet traits) {
+  protected OneRow(RelOptCluster cluster, RelTraitSet traits) {
     super(cluster, traits);
   }
 
   /**
-   * Creates a OneRowRelBase by parsing serialized output.
+   * Creates a OneRow by parsing serialized output.
    */
-  protected OneRowRelBase(RelInput input) {
+  protected OneRow(RelInput input) {
     this(input.getCluster(), input.getTraitSet());
   }
 
@@ -60,4 +68,4 @@ public abstract class OneRowRelBase extends AbstractRelNode {
   }
 }
 
-// End OneRowRelBase.java
+// End OneRow.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Project.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Project.java b/core/src/main/java/org/apache/calcite/rel/core/Project.java
index 68c40f9..7ff2cc4 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Project.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Project.java
@@ -14,32 +14,54 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.util.Pair;
-import org.eigenbase.util.Permutation;
-import org.eigenbase.util.Util;
-import org.eigenbase.util.mapping.MappingType;
-import org.eigenbase.util.mapping.Mappings;
-
-import net.hydromatic.linq4j.Ord;
-import net.hydromatic.linq4j.function.Function1;
-import net.hydromatic.linq4j.function.Functions;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.linq4j.function.Function1;
+import org.apache.calcite.linq4j.function.Functions;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationTraitDef;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexChecker;
+import org.apache.calcite.rex.RexFieldAccess;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLocalRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.rex.RexVisitorImpl;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Permutation;
+import org.apache.calcite.util.Util;
+import org.apache.calcite.util.mapping.MappingType;
+import org.apache.calcite.util.mapping.Mappings;
 
 import com.google.common.collect.ImmutableList;
 
+import java.util.List;
+
 /**
- * <code>ProjectRelBase</code> is an abstract base class for implementations of
- * {@link ProjectRel}.
+ * Relational expression that computes a set of
+ * 'select expressions' from its input relational expression.
+ *
+ * <p>The result is usually 'boxed' as a record with one named field for each
+ * column; if there is precisely one expression, the result may be 'unboxed',
+ * and consist of the raw value type.
+ *
+ * @see org.apache.calcite.rel.logical.LogicalProject
  */
-public abstract class ProjectRelBase extends SingleRel {
+public abstract class Project extends SingleRel {
   //~ Instance fields --------------------------------------------------------
 
   protected final ImmutableList<RexNode> exps;
@@ -56,21 +78,22 @@ public abstract class ProjectRelBase extends SingleRel {
   /**
    * Creates a Project.
    *
-   * @param cluster Cluster this relational expression belongs to
+   * @param cluster Cluster that this relational expression belongs to
    * @param traits  traits of this rel
-   * @param child   input relational expression
+   * @param input   input relational expression
    * @param exps    List of expressions for the input columns
    * @param rowType output row type
-   * @param flags   values as in {@link Flags}
+   * @param flags      Flags; values as in {@link Project.Flags},
+   *                   usually {@link Project.Flags#BOXED}
    */
-  protected ProjectRelBase(
+  protected Project(
       RelOptCluster cluster,
       RelTraitSet traits,
-      RelNode child,
+      RelNode input,
       List<? extends RexNode> exps,
       RelDataType rowType,
       int flags) {
-    super(cluster, traits, child);
+    super(cluster, traits, input);
     assert rowType != null;
     this.exps = ImmutableList.copyOf(exps);
     this.rowType = rowType;
@@ -85,11 +108,10 @@ public abstract class ProjectRelBase extends SingleRel {
   }
 
   /**
-   * Creates a ProjectRelBase by parsing serialized output.
+   * Creates a Project by parsing serialized output.
    */
-  protected ProjectRelBase(RelInput input) {
-    this(
-        input.getCluster(), input.getTraitSet(), input.getInput(),
+  protected Project(RelInput input) {
+    this(input.getCluster(), input.getTraitSet(), input.getInput(),
         input.getExpressionList("exprs"),
         input.getRowType("exprs", "fields"), Flags.BOXED);
   }
@@ -104,7 +126,7 @@ public abstract class ProjectRelBase extends SingleRel {
   /** Copies a project.
    *
    * @see #copy(RelTraitSet, List) */
-  public abstract ProjectRelBase copy(RelTraitSet traitSet, RelNode input,
+  public abstract Project copy(RelTraitSet traitSet, RelNode input,
       List<RexNode> exps, RelDataType rowType);
 
   public List<RelCollation> getCollationList() {
@@ -115,8 +137,7 @@ public abstract class ProjectRelBase extends SingleRel {
     return (flags & Flags.BOXED) == Flags.BOXED;
   }
 
-  @Override
-  public List<RexNode> getChildExps() {
+  @Override public List<RexNode> getChildExps() {
     return exps;
   }
 
@@ -153,7 +174,7 @@ public abstract class ProjectRelBase extends SingleRel {
     }
     RexChecker checker =
         new RexChecker(
-            getChild().getRowType(), fail);
+            getInput().getRowType(), fail);
     for (RexNode exp : exps) {
       exp.accept(checker);
     }
@@ -203,7 +224,7 @@ public abstract class ProjectRelBase extends SingleRel {
   }
 
   public RelOptCost computeSelfCost(RelOptPlanner planner) {
-    double dRows = RelMetadataQuery.getRowCount(getChild());
+    double dRows = RelMetadataQuery.getRowCount(getInput());
     double dCpu = dRows * exps.size();
     double dIo = 0;
     return planner.getCostFactory().makeCost(dRows, dCpu, dIo);
@@ -241,7 +262,7 @@ public abstract class ProjectRelBase extends SingleRel {
    * Returns a mapping, or null if this projection is not a mapping.
    */
   public Mappings.TargetMapping getMapping() {
-    return getMapping(getChild().getRowType().getFieldCount(), exps);
+    return getMapping(getInput().getRowType().getFieldCount(), exps);
   }
 
   /**
@@ -276,7 +297,7 @@ public abstract class ProjectRelBase extends SingleRel {
    */
   public Permutation getPermutation() {
     final int fieldCount = rowType.getFieldList().size();
-    if (fieldCount != getChild().getRowType().getFieldList().size()) {
+    if (fieldCount != getInput().getRowType().getFieldList().size()) {
       return null;
     }
     Permutation permutation = new Permutation(fieldCount);
@@ -398,4 +419,4 @@ public abstract class ProjectRelBase extends SingleRel {
   }
 }
 
-// End ProjectRelBase.java
+// End Project.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java b/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
index b5d9634..fcc9a2d 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
@@ -15,22 +15,29 @@
  * limitations under the License.
  */
 
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.logical.LogicalAggregate;
+import org.apache.calcite.rel.logical.LogicalFilter;
+import org.apache.calcite.rel.logical.LogicalIntersect;
+import org.apache.calcite.rel.logical.LogicalJoin;
+import org.apache.calcite.rel.logical.LogicalMinus;
+import org.apache.calcite.rel.logical.LogicalUnion;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlKind;
+
+import com.google.common.collect.ImmutableList;
 
 import java.util.BitSet;
 import java.util.List;
 import java.util.Set;
 
-import org.eigenbase.rel.rules.SemiJoinRel;
-import org.eigenbase.relopt.RelOptCluster;
-import org.eigenbase.relopt.RelOptUtil;
-import org.eigenbase.relopt.RelTraitSet;
-import org.eigenbase.reltype.RelDataTypeField;
-import org.eigenbase.rex.RexNode;
-import org.eigenbase.sql.SqlKind;
-
-import com.google.common.collect.ImmutableList;
-
 /**
  * Contains factory interface and default implementation for creating various
  * rel nodes.
@@ -60,8 +67,9 @@ public class RelFactories {
   }
 
   /**
-   * Can create a {@link org.eigenbase.rel.ProjectRel} of the appropriate type
-   * for this rule's calling convention.
+   * Can create a
+   * {@link org.apache.calcite.rel.logical.LogicalProject} of the
+   * appropriate type for this rule's calling convention.
    */
   public interface ProjectFactory {
     /** Creates a project. */
@@ -71,7 +79,7 @@ public class RelFactories {
 
   /**
    * Implementation of {@link ProjectFactory} that returns a vanilla
-   * {@link ProjectRel}.
+   * {@link org.apache.calcite.rel.logical.LogicalProject}.
    */
   private static class ProjectFactoryImpl implements ProjectFactory {
     public RelNode createProject(RelNode child,
@@ -81,7 +89,7 @@ public class RelFactories {
   }
 
   /**
-   * Can create a {@link org.eigenbase.rel.SortRel} of the appropriate type
+   * Can create a {@link Sort} of the appropriate type
    * for this rule's calling convention.
    */
   public interface SortFactory {
@@ -91,19 +99,19 @@ public class RelFactories {
   }
 
   /**
-   * Implementation of {@link org.eigenbase.rel.RelFactories.SortFactory} that
-   * returns a vanilla {@link SortRel}.
+   * Implementation of {@link RelFactories.SortFactory} that
+   * returns a vanilla {@link Sort}.
    */
   private static class SortFactoryImpl implements SortFactory {
     public RelNode createSort(RelTraitSet traits, RelNode child,
         RelCollation collation, RexNode offset, RexNode fetch) {
-      return new SortRel(child.getCluster(), traits, child, collation,
+      return new Sort(child.getCluster(), traits, child, collation,
           offset, fetch);
     }
   }
 
   /**
-   * Can create a {@link org.eigenbase.rel.SetOpRel} for a particular kind of
+   * Can create a {@link SetOp} for a particular kind of
    * set operation (UNION, EXCEPT, INTERSECT) and of the appropriate type
    * for this rule's calling convention.
    */
@@ -113,8 +121,8 @@ public class RelFactories {
   }
 
   /**
-   * Implementation of {@link org.eigenbase.rel.RelFactories.SetOpFactory} that
-   * returns a vanilla {@link SetOpRel} for the particular kind of set
+   * Implementation of {@link RelFactories.SetOpFactory} that
+   * returns a vanilla {@link SetOp} for the particular kind of set
    * operation (UNION, EXCEPT, INTERSECT).
    */
   private static class SetOpFactoryImpl implements SetOpFactory {
@@ -123,11 +131,11 @@ public class RelFactories {
       final RelOptCluster cluster = inputs.get(0).getCluster();
       switch (kind) {
       case UNION:
-        return new UnionRel(cluster, inputs, all);
+        return new LogicalUnion(cluster, inputs, all);
       case EXCEPT:
-        return new MinusRel(cluster, inputs, all);
+        return new LogicalMinus(cluster, inputs, all);
       case INTERSECT:
-        return new IntersectRel(cluster, inputs, all);
+        return new LogicalIntersect(cluster, inputs, all);
       default:
         throw new AssertionError("not a set op: " + kind);
       }
@@ -135,7 +143,7 @@ public class RelFactories {
   }
 
   /**
-   * Can create a {@link org.eigenbase.rel.AggregateRel} of the appropriate type
+   * Can create a {@link LogicalAggregate} of the appropriate type
    * for this rule's calling convention.
    */
   public interface AggregateFactory {
@@ -145,18 +153,19 @@ public class RelFactories {
   }
 
   /**
-   * Implementation of {@link org.eigenbase.rel.RelFactories.AggregateFactory}
-   * that returns a vanilla {@link AggregateRel}.
+   * Implementation of {@link RelFactories.AggregateFactory}
+   * that returns a vanilla {@link LogicalAggregate}.
    */
   private static class AggregateFactoryImpl implements AggregateFactory {
     public RelNode createAggregate(RelNode child, BitSet groupSet,
         List<AggregateCall> aggCalls) {
-      return new AggregateRel(child.getCluster(), child, groupSet, aggCalls);
+      return new LogicalAggregate(child.getCluster(), child, groupSet,
+          aggCalls);
     }
   }
 
   /**
-   * Can create a {@link org.eigenbase.rel.FilterRel} of the appropriate type
+   * Can create a {@link LogicalFilter} of the appropriate type
    * for this rule's calling convention.
    */
   public interface FilterFactory {
@@ -165,19 +174,19 @@ public class RelFactories {
   }
 
   /**
-   * Implementation of {@link org.eigenbase.rel.RelFactories.FilterFactory} that
-   * returns a vanilla {@link FilterRel}.
+   * Implementation of {@link RelFactories.FilterFactory} that
+   * returns a vanilla {@link LogicalFilter}.
    */
   private static class FilterFactoryImpl implements FilterFactory {
     public RelNode createFilter(RelNode child, RexNode condition) {
-      return new FilterRel(child.getCluster(), child, condition);
+      return new LogicalFilter(child.getCluster(), child, condition);
     }
   }
 
   /**
    * Can create a join of the appropriate type for a rule's calling convention.
    *
-   * <p>The result is typically a {@link org.eigenbase.rel.JoinRelBase}.
+   * <p>The result is typically a {@link Join}.
    */
   public interface JoinFactory {
     /**
@@ -189,7 +198,7 @@ public class RelFactories {
      * @param joinType         Join type
      * @param variablesStopped Set of names of variables which are set by the
      *                         LHS and used by the RHS and are not available to
-     *                         nodes above this JoinRel in the tree
+     *                         nodes above this LogicalJoin in the tree
      * @param semiJoinDone     Whether this join has been translated to a
      *                         semi-join
      */
@@ -200,14 +209,14 @@ public class RelFactories {
 
   /**
    * Implementation of {@link JoinFactory} that returns a vanilla
-   * {@link JoinRel}.
+   * {@link org.apache.calcite.rel.logical.LogicalJoin}.
    */
   private static class JoinFactoryImpl implements JoinFactory {
     public RelNode createJoin(RelNode left, RelNode right,
         RexNode condition, JoinRelType joinType,
         Set<String> variablesStopped, boolean semiJoinDone) {
       final RelOptCluster cluster = left.getCluster();
-      return new JoinRel(cluster, left, right, condition, joinType,
+      return new LogicalJoin(cluster, left, right, condition, joinType,
           variablesStopped, semiJoinDone, ImmutableList.<RelDataTypeField>of());
     }
   }
@@ -229,13 +238,13 @@ public class RelFactories {
 
   /**
    * Implementation of {@link SemiJoinFactory} that returns a vanilla
-   * {@link SemiJoinRel}.
+   * {@link SemiJoin}.
    */
   private static class SemiJoinFactoryImpl implements SemiJoinFactory {
     public RelNode createSemiJoin(RelNode left, RelNode right,
         RexNode condition) {
       final JoinInfo joinInfo = JoinInfo.of(left, right, condition);
-      return new SemiJoinRel(left.getCluster(), left.getTraitSet(), left, right,
+      return new SemiJoin(left.getCluster(), left.getTraitSet(), left, right,
         condition, joinInfo.leftKeys, joinInfo.rightKeys);
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Sample.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Sample.java b/core/src/main/java/org/apache/calcite/rel/core/Sample.java
index ee22849..e22e0de 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Sample.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Sample.java
@@ -14,40 +14,43 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
-import java.util.List;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptSamplingParameters;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
 
-import org.eigenbase.relopt.*;
+import java.util.List;
 
 /**
- * SamplingRel represents the TABLESAMPLE BERNOULLI or SYSTEM keyword applied to
- * a table, view or subquery.
+ * Relational expression that returns a sample of the rows from its input.
+ *
+ * <p>In SQL, a sample is expressed using the {@code TABLESAMPLE BERNOULLI} or
+ * {@code SYSTEM} keyword applied to a table, view or subquery.
  */
-public class SamplingRel extends SingleRel {
+public class Sample extends SingleRel {
   //~ Instance fields --------------------------------------------------------
 
   private final RelOptSamplingParameters params;
 
   //~ Constructors -----------------------------------------------------------
 
-  public SamplingRel(
-      RelOptCluster cluster,
-      RelNode child,
+  public Sample(RelOptCluster cluster, RelNode child,
       RelOptSamplingParameters params) {
-    super(
-        cluster,
-        cluster.traitSetOf(Convention.NONE),
-        child);
+    super(cluster, cluster.traitSetOf(Convention.NONE), child);
     this.params = params;
   }
 
   /**
-   * Creates a SamplingRel by parsing serialized output.
+   * Creates a Sample by parsing serialized output.
    */
-  public SamplingRel(RelInput input) {
-    this(
-        input.getCluster(), input.getInput(), getSamplingParameters(input));
+  public Sample(RelInput input) {
+    this(input.getCluster(), input.getInput(), getSamplingParameters(input));
   }
 
   //~ Methods ----------------------------------------------------------------
@@ -65,28 +68,23 @@ public class SamplingRel extends SingleRel {
 
   public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
     assert traitSet.containsIfApplicable(Convention.NONE);
-    return new SamplingRel(
-        getCluster(),
-        sole(inputs),
-        params);
+    return new Sample(getCluster(), sole(inputs), params);
   }
 
   /**
-   * Retrieve the sampling parameters for this SamplingRel.
+   * Retrieve the sampling parameters for this Sample.
    */
   public RelOptSamplingParameters getSamplingParameters() {
     return params;
   }
 
-  // implement RelNode
-  public RelWriter explainTerms(RelWriter pw) {
+  @Override public RelWriter explainTerms(RelWriter pw) {
     return super.explainTerms(pw)
         .item("mode", params.isBernoulli() ? "bernoulli" : "system")
         .item("rate", params.getSamplingPercentage())
-        .item(
-            "repeatableSeed",
+        .item("repeatableSeed",
             params.isRepeatable() ? params.getRepeatableSeed() : "-");
   }
 }
 
-// End SamplingRel.java
+// End Sample.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/SemiJoin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/SemiJoin.java b/core/src/main/java/org/apache/calcite/rel/core/SemiJoin.java
index c78c343..17347bf 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/SemiJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/SemiJoin.java
@@ -14,39 +14,46 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.rules;
+package org.apache.calcite.rel.core;
 
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.util.ImmutableIntList;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.rules.EquiJoin;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.util.ImmutableIntList;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
 /**
- * A SemiJoinRel represents two relational expressions joined according to some
- * condition, where the output only contains the columns from the left join
- * input.
+ * Relational expression that joins two relational expressions according to some
+ * condition, but outputs only columns from the left input, and eliminates
+ * duplicates.
+ *
+ * <p>The effect is something like the SQL {@code IN} operator.
  */
-public class SemiJoinRel extends EquiJoinRel {
+public class SemiJoin extends EquiJoin {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a SemiJoinRel.
+   * Creates a SemiJoin.
    *
    * @param cluster   cluster that join belongs to
-   * @param traitSet  Traits
+   * @param traitSet  Trait set
    * @param left      left join input
    * @param right     right join input
    * @param condition join condition
    * @param leftKeys  left keys of the semijoin
    * @param rightKeys right keys of the semijoin
    */
-  public SemiJoinRel(
+  public SemiJoin(
       RelOptCluster cluster,
       RelTraitSet traitSet,
       RelNode left,
@@ -68,41 +75,41 @@ public class SemiJoinRel extends EquiJoinRel {
 
   //~ Methods ----------------------------------------------------------------
 
-  @Override
-  public SemiJoinRel copy(RelTraitSet traitSet, RexNode condition,
+  @Override public SemiJoin copy(RelTraitSet traitSet, RexNode condition,
       RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) {
     assert joinType == JoinRelType.INNER;
     final JoinInfo joinInfo = JoinInfo.of(left, right, condition);
     assert joinInfo.isEqui();
-    return new SemiJoinRel(getCluster(), traitSet, left, right, condition,
+    return new SemiJoin(getCluster(), traitSet, left, right, condition,
         joinInfo.leftKeys, joinInfo.rightKeys);
   }
 
-  // implement RelNode
-  public RelOptCost computeSelfCost(RelOptPlanner planner) {
+  @Override public RelOptCost computeSelfCost(RelOptPlanner planner) {
     // REVIEW jvs 9-Apr-2006:  Just for now...
     return planner.getCostFactory().makeTinyCost();
   }
 
-  // implement RelNode
-  public double getRows() {
+  @Override public double getRows() {
     // TODO:  correlation factor
     return RelMetadataQuery.getRowCount(left)
         * RexUtil.getSelectivity(condition);
   }
 
   /**
-   * @return returns rowtype representing only the left join input
+   * {@inheritDoc}
+   *
+   * <p>In the case of semi-join, the row type consists of columns from left
+   * input only.
    */
-  public RelDataType deriveRowType() {
+  @Override public RelDataType deriveRowType() {
     return deriveJoinRowType(
         left.getRowType(),
         null,
         JoinRelType.INNER,
         getCluster().getTypeFactory(),
         null,
-        Collections.<RelDataTypeField>emptyList());
+        ImmutableList.<RelDataTypeField>of());
   }
 }
 
-// End SemiJoinRel.java
+// End SemiJoin.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/SetOp.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/SetOp.java b/core/src/main/java/org/apache/calcite/rel/core/SetOp.java
index 6a650e4..7b0187a 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/SetOp.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/SetOp.java
@@ -14,24 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.SqlKind;
-
-import net.hydromatic.linq4j.Ord;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.sql.SqlKind;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+
 /**
- * <code>SetOpRel</code> is an abstract base for relational set operators such
+ * <code>SetOp</code> is an abstract base for relational set operators such
  * as UNION, MINUS (aka EXCEPT), and INTERSECT.
  */
-public abstract class SetOpRel extends AbstractRelNode {
+public abstract class SetOp extends AbstractRelNode {
   //~ Instance fields --------------------------------------------------------
 
   protected ImmutableList<RelNode> inputs;
@@ -41,14 +49,10 @@ public abstract class SetOpRel extends AbstractRelNode {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a SetOpRel.
+   * Creates a SetOp.
    */
-  protected SetOpRel(
-      RelOptCluster cluster,
-      RelTraitSet traits,
-      List<RelNode> inputs,
-      SqlKind kind,
-      boolean all) {
+  protected SetOp(RelOptCluster cluster, RelTraitSet traits,
+      List<RelNode> inputs, SqlKind kind, boolean all) {
     super(cluster, traits);
     Preconditions.checkArgument(kind == SqlKind.UNION
         || kind == SqlKind.INTERSECT
@@ -59,49 +63,42 @@ public abstract class SetOpRel extends AbstractRelNode {
   }
 
   /**
-   * Creates a SetOpRel by parsing serialized output.
+   * Creates a SetOp by parsing serialized output.
    */
-  protected SetOpRel(RelInput input) {
+  protected SetOp(RelInput input) {
     this(input.getCluster(), input.getTraitSet(), input.getInputs(),
         SqlKind.UNION, input.getBoolean("all"));
   }
 
   //~ Methods ----------------------------------------------------------------
 
-  public abstract SetOpRel copy(
+  public abstract SetOp copy(
       RelTraitSet traitSet,
       List<RelNode> inputs,
       boolean all);
 
-  @Override
-  public SetOpRel copy(
-      RelTraitSet traitSet,
-      List<RelNode> inputs) {
+  @Override public SetOp copy(RelTraitSet traitSet, List<RelNode> inputs) {
     return copy(traitSet, inputs, all);
   }
 
-  @Override
-  public void replaceInput(int ordinalInParent, RelNode p) {
+  @Override public void replaceInput(int ordinalInParent, RelNode p) {
     final List<RelNode> newInputs = new ArrayList<RelNode>(inputs);
     newInputs.set(ordinalInParent, p);
     inputs = ImmutableList.copyOf(newInputs);
     recomputeDigest();
   }
 
-  @Override
-  public boolean isKey(BitSet columns) {
+  @Override public boolean isKey(BitSet columns) {
     // If not ALL then the rows are distinct.
     // Therefore the set of all columns is a key.
     return !all && columns.nextClearBit(0) >= getRowType().getFieldCount();
   }
 
-  @Override
-  public List<RelNode> getInputs() {
+  @Override public List<RelNode> getInputs() {
     return inputs;
   }
 
-  @Override
-  public RelWriter explainTerms(RelWriter pw) {
+  @Override public RelWriter explainTerms(RelWriter pw) {
     super.explainTerms(pw);
     for (Ord<RelNode> ord : Ord.zip(inputs)) {
       pw.input("input#" + ord.i, ord.e);
@@ -109,17 +106,14 @@ public abstract class SetOpRel extends AbstractRelNode {
     return pw.item("all", all);
   }
 
-  @Override
-  protected RelDataType deriveRowType() {
+  @Override protected RelDataType deriveRowType() {
     return getCluster().getTypeFactory().leastRestrictive(
         new AbstractList<RelDataType>() {
-          @Override
-          public RelDataType get(int index) {
+          @Override public RelDataType get(int index) {
             return inputs.get(index).getRowType();
           }
 
-          @Override
-          public int size() {
+          @Override public int size() {
             return inputs.size();
           }
         });
@@ -129,7 +123,7 @@ public abstract class SetOpRel extends AbstractRelNode {
    * Returns whether all the inputs of this set operator have the same row
    * type as its output row.
    *
-   * @param compareNames whether or not column names are important in the
+   * @param compareNames Whether column names are important in the
    *                     homogeneity comparison
    */
   public boolean isHomogeneous(boolean compareNames) {
@@ -142,15 +136,6 @@ public abstract class SetOpRel extends AbstractRelNode {
     }
     return true;
   }
-
-  /**
-   * Returns whether all the inputs of this set operator have the same row
-   * type as its output row. Equivalent to {@link #isHomogeneous(boolean)
-   * isHomogeneous(true)}.
-   */
-  public boolean isHomogeneous() {
-    return isHomogeneous(true);
-  }
 }
 
-// End SetOpRel.java
+// End SetOp.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Sort.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Sort.java b/core/src/main/java/org/apache/calcite/rel/core/Sort.java
index 11ab22b..5c91666 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Sort.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Sort.java
@@ -14,25 +14,36 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationTraitDef;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelShuttle;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.Util;
+
+import com.google.common.collect.ImmutableList;
 
 import java.util.Collections;
 import java.util.List;
 
-import org.eigenbase.rel.metadata.RelMetadataQuery;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.util.Util;
-
-import net.hydromatic.linq4j.Ord;
-
-import com.google.common.collect.ImmutableList;
-
 /**
- * Relational expression which imposes a particular sort order on its input
+ * Relational expression that imposes a particular sort order on its input
  * without otherwise changing its content.
  */
-public class SortRel extends SingleRel {
+public class Sort extends SingleRel {
   //~ Instance fields --------------------------------------------------------
 
   protected final RelCollation collation;
@@ -43,14 +54,14 @@ public class SortRel extends SingleRel {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a sorter.
+   * Creates a Sort.
    *
    * @param cluster   Cluster this relational expression belongs to
    * @param traits    Traits
    * @param child     input relational expression
    * @param collation array of sort specifications
    */
-  public SortRel(
+  public Sort(
       RelOptCluster cluster,
       RelTraitSet traits,
       RelNode child,
@@ -59,7 +70,7 @@ public class SortRel extends SingleRel {
   }
 
   /**
-   * Creates a sorter.
+   * Creates a Sort.
    *
    * @param cluster   Cluster this relational expression belongs to
    * @param traits    Traits
@@ -69,7 +80,7 @@ public class SortRel extends SingleRel {
    *                  first row
    * @param fetch     Expression for number of rows to fetch
    */
-  public SortRel(
+  public Sort(
       RelOptCluster cluster,
       RelTraitSet traits,
       RelNode child,
@@ -96,11 +107,10 @@ public class SortRel extends SingleRel {
   }
 
   /**
-   * Creates a SortRel by parsing serialized output.
+   * Creates a Sort by parsing serialized output.
    */
-  public SortRel(RelInput input) {
-    this(
-        input.getCluster(), input.getTraitSet().plus(input.getCollation()),
+  public Sort(RelInput input) {
+    this(input.getCluster(), input.getTraitSet().plus(input.getCollation()),
         input.getInput(),
         RelCollationTraitDef.INSTANCE.canonize(input.getCollation()),
         input.getExpression("offset"), input.getExpression("fetch"));
@@ -108,26 +118,25 @@ public class SortRel extends SingleRel {
 
   //~ Methods ----------------------------------------------------------------
 
-  @Override
-  public SortRel copy(RelTraitSet traitSet, List<RelNode> inputs) {
+  @Override public Sort copy(RelTraitSet traitSet, List<RelNode> inputs) {
     return copy(traitSet, sole(inputs), collation);
   }
 
-  public SortRel copy(
+  public Sort copy(
       RelTraitSet traitSet,
       RelNode newInput,
       RelCollation newCollation) {
     return copy(traitSet, newInput, newCollation, offset, fetch);
   }
 
-  public SortRel copy(
+  public Sort copy(
       RelTraitSet traitSet,
       RelNode newInput,
       RelCollation newCollation,
       RexNode offset,
       RexNode fetch) {
     assert traitSet.containsIfApplicable(Convention.NONE);
-    return new SortRel(
+    return new Sort(
         getCluster(),
         traitSet,
         newInput,
@@ -136,8 +145,7 @@ public class SortRel extends SingleRel {
         fetch);
   }
 
-  @Override
-  public RelOptCost computeSelfCost(RelOptPlanner planner) {
+  @Override public RelOptCost computeSelfCost(RelOptPlanner planner) {
     // Higher cost if rows are wider discourages pushing a project through a
     // sort.
     double rowCount = RelMetadataQuery.getRowCount(this);
@@ -146,13 +154,11 @@ public class SortRel extends SingleRel {
         Util.nLogN(rowCount) * bytesPerRow, rowCount, 0);
   }
 
-  @Override
-  public RelNode accept(RelShuttle shuttle) {
+  @Override public RelNode accept(RelShuttle shuttle) {
     return shuttle.visit(this);
   }
 
-  @Override
-  public List<RexNode> getChildExps() {
+  @Override public List<RexNode> getChildExps() {
     return fieldExps;
   }
 
@@ -172,8 +178,7 @@ public class SortRel extends SingleRel {
     return collation;
   }
 
-  @Override
-  public List<RelCollation> getCollationList() {
+  @Override public List<RelCollation> getCollationList() {
     // TODO: include each prefix of the collation, e.g [[x, y], [x], []]
     return Collections.singletonList(getCollation());
   }
@@ -198,4 +203,4 @@ public class SortRel extends SingleRel {
   }
 }
 
-// End SortRel.java
+// End Sort.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/TableFunctionScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/TableFunctionScan.java b/core/src/main/java/org/apache/calcite/rel/core/TableFunctionScan.java
index 9a31fc4..282b1f3 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/TableFunctionScan.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/TableFunctionScan.java
@@ -14,26 +14,38 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.lang.reflect.Type;
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-
-import net.hydromatic.linq4j.Ord;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.metadata.RelColumnMapping;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 /**
- * <code>TableFunctionRelBase</code> is an abstract base class for
- * implementations of {@link TableFunctionRel}.
+ * Relational expression that calls a table-valued function.
+ *
+ * <p>The function returns a result set.
+ * It can appear as a leaf in a query tree,
+ * or can be applied to relational inputs.
+ *
+ * @see org.apache.calcite.rel.logical.LogicalTableFunctionScan
  */
-public abstract class TableFunctionRelBase extends AbstractRelNode {
+public abstract class TableFunctionScan extends AbstractRelNode {
   //~ Instance fields --------------------------------------------------------
 
   private final RexNode rexCall;
@@ -47,7 +59,7 @@ public abstract class TableFunctionRelBase extends AbstractRelNode {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a <code>TableFunctionRelBase</code>.
+   * Creates a <code>TableFunctionScan</code>.
    *
    * @param cluster        Cluster that this relational expression belongs to
    * @param inputs         0 or more relational inputs
@@ -57,7 +69,7 @@ public abstract class TableFunctionRelBase extends AbstractRelNode {
    * @param rowType        row type produced by function
    * @param columnMappings column mappings associated with this function
    */
-  protected TableFunctionRelBase(
+  protected TableFunctionScan(
       RelOptCluster cluster,
       RelTraitSet traits,
       List<RelNode> inputs,
@@ -74,9 +86,9 @@ public abstract class TableFunctionRelBase extends AbstractRelNode {
   }
 
   /**
-   * Creates a TableFunctionRelBase by parsing serialized output.
+   * Creates a TableFunctionScan by parsing serialized output.
    */
-  protected TableFunctionRelBase(RelInput input) {
+  protected TableFunctionScan(RelInput input) {
     this(
         input.getCluster(), input.getTraitSet(), input.getInputs(),
         input.getExpression("invocation"), (Type) input.get("elementType"),
@@ -86,26 +98,22 @@ public abstract class TableFunctionRelBase extends AbstractRelNode {
 
   //~ Methods ----------------------------------------------------------------
 
-  @Override
-  public List<RelNode> getInputs() {
+  @Override public List<RelNode> getInputs() {
     return inputs;
   }
 
-  @Override
-  public List<RexNode> getChildExps() {
+  @Override public List<RexNode> getChildExps() {
     return ImmutableList.of(rexCall);
   }
 
-  @Override
-  public void replaceInput(int ordinalInParent, RelNode p) {
+  @Override public void replaceInput(int ordinalInParent, RelNode p) {
     final List<RelNode> newInputs = new ArrayList<RelNode>(inputs);
     newInputs.set(ordinalInParent, p);
     inputs = ImmutableList.copyOf(newInputs);
     recomputeDigest();
   }
 
-  @Override
-  public double getRows() {
+  @Override public double getRows() {
     // Calculate result as the sum of the input rowcount estimates,
     // assuming there are any, otherwise use the superclass default.  So
     // for a no-input UDX, behave like an AbstractRelNode; for a one-input
@@ -161,4 +169,4 @@ public abstract class TableFunctionRelBase extends AbstractRelNode {
   }
 }
 
-// End TableFunctionRelBase.java
+// End TableFunctionScan.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/TableModify.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/TableModify.java b/core/src/main/java/org/apache/calcite/rel/core/TableModify.java
index 0f6dc26..fea3a5e 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/TableModify.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/TableModify.java
@@ -14,23 +14,40 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.SqlKind;
-import org.eigenbase.sql.type.*;
-
-import net.hydromatic.optiq.prepare.Prepare;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.prepare.Prepare;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.type.SqlTypeUtil;
+
+import java.util.Collections;
+import java.util.List;
 
 /**
- * <code>TableModificationRelBase</code> is an abstract base class for
- * implementations of {@link TableModificationRel}.
+ * Relational expression that modifies a table.
+ *
+ * It is similar to {@link org.apache.calcite.rel.core.TableScan},
+ * but represents a request to modify a table rather than read from it.
+ * It takes one child which produces the modified rows. Those rows are:
+ *
+ * <ul>
+ * <li>For {@code INSERT}, those rows are the new values;
+ * <li>for {@code DELETE}, the old values;
+ * <li>for {@code UPDATE}, all old values plus updated new values.
+ * </ul>
  */
-public abstract class TableModificationRelBase extends SingleRel {
+public abstract class TableModify extends SingleRel {
   //~ Enums ------------------------------------------------------------------
 
   /**
@@ -58,7 +75,7 @@ public abstract class TableModificationRelBase extends SingleRel {
 
   //~ Constructors -----------------------------------------------------------
 
-  protected TableModificationRelBase(
+  protected TableModify(
       RelOptCluster cluster,
       RelTraitSet traits,
       RelOptTable table,
@@ -181,4 +198,4 @@ public abstract class TableModificationRelBase extends SingleRel {
   }
 }
 
-// End TableModificationRelBase.java
+// End TableModify.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/TableScan.java b/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
index 7532080..9eaa931 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/TableScan.java
@@ -14,22 +14,34 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.RexBuilder;
-import org.eigenbase.rex.RexNode;
-
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelShuttle;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BitSets;
+
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
+import java.util.Set;
 
 /**
- * <code>TableAccessRelBase</code> is an abstract base class for implementations
- * of {@link TableAccessRel}.
+ * Relational operator that returns the contents of a table.
  */
-public abstract class TableAccessRelBase extends AbstractRelNode {
+public abstract class TableScan extends AbstractRelNode {
   //~ Instance fields --------------------------------------------------------
 
   /**
@@ -39,7 +51,7 @@ public abstract class TableAccessRelBase extends AbstractRelNode {
 
   //~ Constructors -----------------------------------------------------------
 
-  protected TableAccessRelBase(
+  protected TableScan(
       RelOptCluster cluster,
       RelTraitSet traits,
       RelOptTable table) {
@@ -51,9 +63,9 @@ public abstract class TableAccessRelBase extends AbstractRelNode {
   }
 
   /**
-   * Creates a TableAccessRelBase by parsing serialized output.
+   * Creates a TableScan by parsing serialized output.
    */
-  protected TableAccessRelBase(RelInput input) {
+  protected TableScan(RelInput input) {
     this(input.getCluster(), input.getTraitSet(), input.getTable("table"));
   }
 
@@ -96,7 +108,8 @@ public abstract class TableAccessRelBase extends AbstractRelNode {
    * fields that were not included in the table's official type.
    *
    * <p>The default implementation assumes that tables cannot do either of
-   * these operations, therefore it adds a {@link ProjectRel}, projecting
+   * these operations, therefore it adds a
+   * {@link org.apache.calcite.rel.logical.LogicalProject}, projecting
    * {@code NULL} values for the extra fields.</p>
    *
    * <p>Sub-classes, representing table types that have these capabilities,
@@ -140,10 +153,9 @@ public abstract class TableAccessRelBase extends AbstractRelNode {
     return projectFactory.createProject(this, exprList, nameList);
   }
 
-  @Override
-  public RelNode accept(RelShuttle shuttle) {
+  @Override public RelNode accept(RelShuttle shuttle) {
     return shuttle.visit(this);
   }
 }
 
-// End TableAccessRelBase.java
+// End TableScan.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Uncollect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Uncollect.java b/core/src/main/java/org/apache/calcite/rel/core/Uncollect.java
index 3f8c61c..b31700b 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Uncollect.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Uncollect.java
@@ -14,26 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
-import java.util.List;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.sql.SqlUtil;
 
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.*;
+import java.util.List;
 
 /**
- * A relational expression which unnests its input's sole column into a
+ * Relational expression that unnests its input's sole column into a
  * relation.
  *
- * <p>Like its inverse operation {@link CollectRel}, UncollectRel is generally
- * invoked in a nested loop, driven by {@link CorrelatorRel} or similar.
+ * <p>Like its inverse operation {@link Collect}, Uncollect is generally
+ * invoked in a nested loop, driven by {@link Correlator} or similar.
  */
-public class UncollectRel extends SingleRel {
+public class Uncollect extends SingleRel {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates an UncollectRel.
+   * Creates an Uncollect.
    *
    * <p>The row type of the child relational expression must contain precisely
    * one column, that column must be a multiset of records.
@@ -42,16 +48,16 @@ public class UncollectRel extends SingleRel {
    * @param traitSet Traits
    * @param child   Child relational expression
    */
-  public UncollectRel(RelOptCluster cluster, RelTraitSet traitSet,
+  public Uncollect(RelOptCluster cluster, RelTraitSet traitSet,
       RelNode child) {
     super(cluster, traitSet, child);
     assert deriveRowType() != null : "invalid child rowtype";
   }
 
   /**
-   * Creates an UncollectRel by parsing serialized output.
+   * Creates an Uncollect by parsing serialized output.
    */
-  public UncollectRel(RelInput input) {
+  public Uncollect(RelInput input) {
     this(input.getCluster(), input.getTraitSet(), input.getInput());
   }
 
@@ -64,11 +70,11 @@ public class UncollectRel extends SingleRel {
 
   public RelNode copy(RelTraitSet traitSet, RelNode input) {
     assert traitSet.containsIfApplicable(Convention.NONE);
-    return new UncollectRel(getCluster(), traitSet, input);
+    return new Uncollect(getCluster(), traitSet, input);
   }
 
   protected RelDataType deriveRowType() {
-    return deriveUncollectRowType(getChild());
+    return deriveUncollectRowType(getInput());
   }
 
   /**
@@ -96,4 +102,4 @@ public class UncollectRel extends SingleRel {
   }
 }
 
-// End UncollectRel.java
+// End Uncollect.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Union.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Union.java b/core/src/main/java/org/apache/calcite/rel/core/Union.java
index 4d31b71..1907199 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Union.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Union.java
@@ -14,22 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
-import java.util.List;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.sql.SqlKind;
 
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.sql.SqlKind;
+import java.util.List;
 
 /**
- * <code>UnionRelBase</code> is an abstract base class for implementations of
- * {@link UnionRel}.
+ * Relational expression that returns the union of the rows of its inputs,
+ * optionally eliminating duplicates.
+ *
+ * <p>Corresponds to SQL {@code UNION} and {@code UNION ALL}.
  */
-public abstract class UnionRelBase extends SetOpRel {
+public abstract class Union extends SetOp {
   //~ Constructors -----------------------------------------------------------
 
-  protected UnionRelBase(
+  protected Union(
       RelOptCluster cluster,
       RelTraitSet traits,
       List<RelNode> inputs,
@@ -38,9 +43,9 @@ public abstract class UnionRelBase extends SetOpRel {
   }
 
   /**
-   * Creates a UnionRelBase by parsing serialized output.
+   * Creates a Union by parsing serialized output.
    */
-  protected UnionRelBase(RelInput input) {
+  protected Union(RelInput input) {
     super(input);
   }
 
@@ -70,4 +75,4 @@ public abstract class UnionRelBase extends SetOpRel {
   }
 }
 
-// End UnionRelBase.java
+// End Union.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Values.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Values.java b/core/src/main/java/org/apache/calcite/rel/core/Values.java
index 4312bab..6f1458e 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Values.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Values.java
@@ -14,26 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.sql.type.*;
-import org.eigenbase.util.Pair;
-
-import net.hydromatic.linq4j.function.Function1;
-import net.hydromatic.linq4j.function.Functions;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.function.Function1;
+import org.apache.calcite.linq4j.function.Functions;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.AbstractRelNode;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.sql.type.SqlTypeUtil;
+import org.apache.calcite.util.Pair;
+
+import java.util.List;
 
 /**
- * <code>ValuesRelBase</code> is an abstract base class for implementations of
- * {@link ValuesRel}.
+ * Relational expression whose value is a sequence of zero or more literal row
+ * values.
  */
-public abstract class ValuesRelBase extends AbstractRelNode {
+public abstract class Values extends AbstractRelNode {
   /**
    * Lambda that helps render tuples as strings.
    */
@@ -54,17 +60,19 @@ public abstract class ValuesRelBase extends AbstractRelNode {
   //~ Constructors -----------------------------------------------------------
 
   /**
-   * Creates a new ValuesRelBase. Note that tuples passed in become owned by
+   * Creates a new Values.
+   *
+   * <p>Note that tuples passed in become owned by
    * this rel (without a deep copy), so caller must not modify them after this
    * call, otherwise bad things will happen.
    *
-   * @param cluster .
-   * @param rowType row type for tuples produced by this rel
+   * @param cluster Cluster that this relational expression belongs to
+   * @param rowType Row type for tuples produced by this rel
    * @param tuples  2-dimensional array of tuple values to be produced; outer
    *                list contains tuples; each inner list is one tuple; all
    *                tuples must be of same length, conforming to rowType
    */
-  protected ValuesRelBase(
+  protected Values(
       RelOptCluster cluster,
       RelDataType rowType,
       List<List<RexLiteral>> tuples,
@@ -76,11 +84,10 @@ public abstract class ValuesRelBase extends AbstractRelNode {
   }
 
   /**
-   * Creates a ValuesRelBase by parsing serialized output.
+   * Creates a Values by parsing serialized output.
    */
-  public ValuesRelBase(RelInput input) {
-    this(
-        input.getCluster(), input.getRowType("type"),
+  public Values(RelInput input) {
+    this(input.getCluster(), input.getRowType("type"),
         input.getTuples("tuples"), input.getTraitSet());
   }
 
@@ -159,4 +166,4 @@ public abstract class ValuesRelBase extends AbstractRelNode {
   }
 }
 
-// End ValuesRelBase.java
+// End Values.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Window.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Window.java b/core/src/main/java/org/apache/calcite/rel/core/Window.java
index e696749..043da29 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Window.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Window.java
@@ -14,37 +14,52 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel.core;
 
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.RelDataType;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.SqlAggFunction;
-import org.eigenbase.util.ImmutableIntList;
-import org.eigenbase.util.Util;
-
-import net.hydromatic.linq4j.Ord;
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationImpl;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexChecker;
+import org.apache.calcite.rex.RexFieldCollation;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexLocalRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexSlot;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.util.ImmutableIntList;
+import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 
+import java.util.AbstractList;
+import java.util.BitSet;
+import java.util.List;
+
 /**
  * A relational expression representing a set of window aggregates.
  *
- * <p>A window rel can handle several window aggregate functions, over several
+ * <p>A Window can handle several window aggregate functions, over several
  * partitions, with pre- and post-expressions, and an optional post-filter.
  * Each of the partitions is defined by a partition key (zero or more columns)
  * and a range (logical or physical). The partitions expect the data to be
  * sorted correctly on input to the relational expression.
  *
- * <p>Each {@link org.eigenbase.rel.WindowRelBase.Window} has a set of
- * {@link org.eigenbase.rex.RexOver} objects.
+ * <p>Each {@link Window.Group} has a set of
+ * {@link org.apache.calcite.rex.RexOver} objects.
  *
- * <p>Created by {@link org.eigenbase.rel.rules.WindowedAggSplitterRule}.
+ * <p>Created by {@link org.apache.calcite.rel.rules.ProjectToWindowRule}.
  */
-public abstract class WindowRelBase extends SingleRel {
-  public final ImmutableList<Window> windows;
+public abstract class Window extends SingleRel {
+  public final ImmutableList<Group> groups;
   public final List<RexLiteral> constants;
 
   /**
@@ -54,38 +69,35 @@ public abstract class WindowRelBase extends SingleRel {
    * @param child   Input relational expression
    * @param constants List of constants that are additional inputs
    * @param rowType Output row type
-   * @param windows Windows
+   * @param groups Windows
    */
-  public WindowRelBase(
+  public Window(
       RelOptCluster cluster, RelTraitSet traits, RelNode child,
-      List<RexLiteral> constants, RelDataType rowType, List<Window> windows) {
+      List<RexLiteral> constants, RelDataType rowType, List<Group> groups) {
     super(cluster, traits, child);
     this.constants = ImmutableList.copyOf(constants);
     assert rowType != null;
     this.rowType = rowType;
-    this.windows = ImmutableList.copyOf(windows);
+    this.groups = ImmutableList.copyOf(groups);
   }
 
-  @Override
-  public boolean isValid(boolean fail) {
+  @Override public boolean isValid(boolean fail) {
     // In the window specifications, an aggregate call such as
     // 'SUM(RexInputRef #10)' refers to expression #10 of inputProgram.
     // (Not its projections.)
-    final RelDataType childRowType = getChild().getRowType();
+    final RelDataType childRowType = getInput().getRowType();
 
     final int childFieldCount = childRowType.getFieldCount();
     final int inputSize = childFieldCount + constants.size();
     final List<RelDataType> inputTypes =
         new AbstractList<RelDataType>() {
-          @Override
-          public RelDataType get(int index) {
+          @Override public RelDataType get(int index) {
             return index < childFieldCount
                 ? childRowType.getFieldList().get(index).getType()
                 : constants.get(index - childFieldCount).getType();
           }
 
-          @Override
-          public int size() {
+          @Override public int size() {
             return inputSize;
           }
         };
@@ -93,8 +105,8 @@ public abstract class WindowRelBase extends SingleRel {
     final RexChecker checker =
         new RexChecker(inputTypes, fail);
     int count = 0;
-    for (Window window : windows) {
-      for (RexWinAggCall over : window.aggCalls) {
+    for (Group group : groups) {
+      for (RexWinAggCall over : group.aggCalls) {
         ++count;
         if (!checker.isValid(over)) {
           return false;
@@ -110,13 +122,13 @@ public abstract class WindowRelBase extends SingleRel {
 
   public RelWriter explainTerms(RelWriter pw) {
     super.explainTerms(pw);
-    for (Ord<Window> window : Ord.zip(windows)) {
+    for (Ord<Group> window : Ord.zip(groups)) {
       pw.item("window#" + window.i, window.e.toString());
     }
     return pw;
   }
 
-  static ImmutableIntList getProjectOrdinals(final List<RexNode> exprs) {
+  public static ImmutableIntList getProjectOrdinals(final List<RexNode> exprs) {
     return ImmutableIntList.copyOf(
         new AbstractList<Integer>() {
           public Integer get(int index) {
@@ -129,7 +141,8 @@ public abstract class WindowRelBase extends SingleRel {
         });
   }
 
-  static RelCollation getCollation(final List<RexFieldCollation> collations) {
+  public static RelCollation getCollation(
+      final List<RexFieldCollation> collations) {
     return RelCollationImpl.of(
         new AbstractList<RelFieldCollation>() {
           public RelFieldCollation get(int index) {
@@ -155,8 +168,10 @@ public abstract class WindowRelBase extends SingleRel {
   }
 
   /**
-   * A Window is a range of input rows, defined by an upper and lower bound.
-   * It also has zero or more partitioning columns.
+   * Group of windowed aggregate calls that have the same window specification.
+   *
+   * <p>The specification is defined by an upper and lower bound, and
+   * also has zero or more partitioning columns.
    *
    * <p>A window is either logical or physical. A physical window is measured
    * in terms of row count. A logical window is measured in terms of rows
@@ -174,8 +189,8 @@ public abstract class WindowRelBase extends SingleRel {
    * CURRENT ROW</code>) is a logical window with an upper and lower bound.
    * </ul>
    */
-  public static class Window {
-    public final BitSet groupSet;
+  public static class Group {
+    public final BitSet keys;
     public final boolean isRows;
     public final RexWindowBound lowerBound;
     public final RexWindowBound upperBound;
@@ -183,22 +198,22 @@ public abstract class WindowRelBase extends SingleRel {
     private final String digest;
 
     /**
-     * List of {@link org.eigenbase.rel.WindowRelBase.RexWinAggCall}
+     * List of {@link Window.RexWinAggCall}
      * objects, each of which is a call to a
-     * {@link org.eigenbase.sql.SqlAggFunction}.
+     * {@link org.apache.calcite.sql.SqlAggFunction}.
      */
     public final ImmutableList<RexWinAggCall> aggCalls;
 
-    public Window(
-        BitSet groupSet,
+    public Group(
+        BitSet keys,
         boolean isRows,
         RexWindowBound lowerBound,
         RexWindowBound upperBound,
         RelCollation orderKeys,
         List<RexWinAggCall> aggCalls) {
       assert orderKeys != null : "precondition: ordinals != null";
-      assert groupSet != null;
-      this.groupSet = groupSet;
+      assert keys != null;
+      this.keys = keys;
       this.isRows = isRows;
       this.lowerBound = lowerBound;
       this.upperBound = upperBound;
@@ -214,7 +229,7 @@ public abstract class WindowRelBase extends SingleRel {
     private String computeString() {
       final StringBuilder buf = new StringBuilder();
       buf.append("window(partition ");
-      buf.append(groupSet);
+      buf.append(keys);
       buf.append(" order by ");
       buf.append(orderKeys);
       buf.append(isRows ? " rows " : " range ");
@@ -236,15 +251,13 @@ public abstract class WindowRelBase extends SingleRel {
       return buf.toString();
     }
 
-    @Override
-    public boolean equals(Object obj) {
+    @Override public boolean equals(Object obj) {
       return this == obj
-          || obj instanceof Window
-          && this.digest.equals(((Window) obj).digest);
+          || obj instanceof Group
+          && this.digest.equals(((Group) obj).digest);
     }
 
-    @Override
-    public int hashCode() {
+    @Override public int hashCode() {
       return digest.hashCode();
     }
 
@@ -257,9 +270,9 @@ public abstract class WindowRelBase extends SingleRel {
      * This is useful to refine data type of window aggregates.
      * For instance sum(non-nullable) over (empty window) is NULL.
      * @return true when the window is non-empty
-     * @see org.eigenbase.sql.SqlWindow#isAlwaysNonEmpty()
-     * @see org.eigenbase.sql.SqlOperatorBinding#getGroupCount()
-     * @see org.eigenbase.sql.validate.SqlValidatorImpl#resolveWindow(org.eigenbase.sql.SqlNode, org.eigenbase.sql.validate.SqlValidatorScope, boolean)
+     * @see org.apache.calcite.sql.SqlWindow#isAlwaysNonEmpty()
+     * @see org.apache.calcite.sql.SqlOperatorBinding#getGroupCount()
+     * @see org.apache.calcite.sql.validate.SqlValidatorImpl#resolveWindow(org.apache.calcite.sql.SqlNode, org.apache.calcite.sql.validate.SqlValidatorScope, boolean)
      */
     public boolean isAlwaysNonEmpty() {
       int lowerKey = lowerBound.getOrderKey();
@@ -271,10 +284,10 @@ public abstract class WindowRelBase extends SingleRel {
      * Presents a view of the {@link RexWinAggCall} list as a list of
      * {@link AggregateCall}.
      */
-    public List<AggregateCall> getAggregateCalls(WindowRelBase windowRel) {
+    public List<AggregateCall> getAggregateCalls(Window windowRel) {
       final List<String> fieldNames =
           Util.skip(windowRel.getRowType().getFieldNames(),
-              windowRel.getChild().getRowType().getFieldCount());
+              windowRel.getInput().getRowType().getFieldCount());
       return new AbstractList<AggregateCall>() {
         public int size() {
           return aggCalls.size();
@@ -283,7 +296,7 @@ public abstract class WindowRelBase extends SingleRel {
         public AggregateCall get(int index) {
           final RexWinAggCall aggCall = aggCalls.get(index);
           return new AggregateCall(
-              (Aggregation) aggCall.getOperator(),
+              (SqlAggFunction) aggCall.getOperator(),
               false,
               getProjectOrdinals(aggCall.getOperands()),
               aggCall.getType(),
@@ -296,10 +309,10 @@ public abstract class WindowRelBase extends SingleRel {
   /**
    * A call to a windowed aggregate function.
    *
-   * <p>Belongs to a {@link org.eigenbase.rel.WindowRelBase.Window}.
+   * <p>Belongs to a {@link Window.Group}.
    *
-   * <p>It's a bastard son of a {@link org.eigenbase.rex.RexCall}; similar
-   * enough that it gets visited by a {@link org.eigenbase.rex.RexVisitor},
+   * <p>It's a bastard son of a {@link org.apache.calcite.rex.RexCall}; similar
+   * enough that it gets visited by a {@link org.apache.calcite.rex.RexVisitor},
    * but it also has some extra data members.
    */
   public static class RexWinAggCall extends RexCall {
@@ -325,11 +338,10 @@ public abstract class WindowRelBase extends SingleRel {
       this.ordinal = ordinal;
     }
 
-    @Override
-    public RexCall clone(RelDataType type, List<RexNode> operands) {
+    @Override public RexCall clone(RelDataType type, List<RexNode> operands) {
       throw new UnsupportedOperationException();
     }
   }
 }
 
-// End WindowRelBase.java
+// End Window.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/package-info.java b/core/src/main/java/org/apache/calcite/rel/core/package-info.java
new file mode 100644
index 0000000..2e547fb
--- /dev/null
+++ b/core/src/main/java/org/apache/calcite/rel/core/package-info.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Defines core relational expressions.
+ *
+ * <h2>Related packages and classes</h2>
+ * <ul>
+ *
+ * <li>Package <code>
+ * <a href="../logical/package-summary.html">org.apache.calcite.rel.logical</a></code>
+ * contains logical relational expressions
+ *
+ * <li>Package <code>
+ * <a href="../package-summary.html">org.apache.calcite.rex</a></code>
+ * defines the relational expression API
+ *
+ * </ul>
+ */
+package org.apache.calcite.rel.core;
+
+// End package-info.java