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:43 UTC

[35/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/metadata/ReflectiveRelMetadataProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/ReflectiveRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/ReflectiveRelMetadataProvider.java
index 8e85e28..8cf2996 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/ReflectiveRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/ReflectiveRelMetadataProvider.java
@@ -14,18 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.util.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.ReflectiveVisitor;
+import org.apache.calcite.util.Util;
 
 import com.google.common.base.Function;
-import com.google.common.collect.*;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Map;
 
 /**
  * Implementation of the {@link RelMetadataProvider} interface that dispatches
@@ -74,17 +80,18 @@ public class ReflectiveRelMetadataProvider
    * methods with a preceding argument.
    *
    * <p>For example, {@link BuiltInMetadata.Selectivity} has a method
-   * {@link BuiltInMetadata.Selectivity#getSelectivity(org.eigenbase.rex.RexNode)}.
+   * {@link BuiltInMetadata.Selectivity#getSelectivity(org.apache.calcite.rex.RexNode)}.
    * A class</p>
    *
    * <blockquote><pre><code>
    * class RelMdSelectivity {
-   *   public Double getSelectivity(UnionRel rel, RexNode predicate) { ... }
-   *   public Double getSelectivity(FilterRel rel, RexNode predicate) { ... }
+   *   public Double getSelectivity(Union rel, RexNode predicate) { }
+   *   public Double getSelectivity(LogicalFilter rel, RexNode predicate) { }
    * </code></pre></blockquote>
    *
    * <p>provides implementations of selectivity for relational expressions
-   * that extend {@link UnionRel} or {@link FilterRel}.</p>
+   * that extend {@link org.apache.calcite.rel.logical.LogicalUnion}
+   * or {@link org.apache.calcite.rel.logical.LogicalFilter}.</p>
    */
   public static RelMetadataProvider reflectiveSource(Method method,
       final Object target) {
@@ -115,16 +122,17 @@ public class ReflectiveRelMetadataProvider
                         public Object invoke(Object proxy, Method method,
                             Object[] args) throws Throwable {
                           // Suppose we are an implementation of Selectivity
-                          // that wraps "filter", a FilterRel, Then we implement
+                          // that wraps "filter", a LogicalFilter. Then we
+                          // implement
                           //   Selectivity.selectivity(rex)
                           // by calling method
                           //   new SelectivityImpl().selectivity(filter, rex)
                           if (method.equals(
-                              BuiltinMethod.METADATA_REL.method)) {
+                              BuiltInMethod.METADATA_REL.method)) {
                             return rel;
                           }
                           if (method.equals(
-                              BuiltinMethod.OBJECT_TO_STRING.method)) {
+                              BuiltInMethod.OBJECT_TO_STRING.method)) {
                             return metadataClass0.getSimpleName() + "(" + rel
                                 + ")";
                           }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnMapping.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnMapping.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnMapping.java
index 44df143..4511f74 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnMapping.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnMapping.java
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
 /**
- * Mapping from an input column of a {@link org.eigenbase.rel.RelNode} to one
- * of its output columns.
+ * Mapping from an input column of a {@link org.apache.calcite.rel.RelNode} to
+ * one of its output columns.
  */
 public class RelColumnMapping {
   public RelColumnMapping(

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnOrigin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnOrigin.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnOrigin.java
index 139d534..92cd7fe 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnOrigin.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelColumnOrigin.java
@@ -14,11 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
-
-import org.eigenbase.relopt.*;
+import org.apache.calcite.plan.RelOptTable;
 
 /**
  * RelColumnOrigin is a data structure describing one of the origins of an

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
index 72c11a6..d821744 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
@@ -14,24 +14,35 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SetOp;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableFunctionScan;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexVisitor;
+import org.apache.calcite.rex.RexVisitorImpl;
+import org.apache.calcite.util.BuiltInMethod;
 
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
- * RelMdColumnOrigins supplies a default implementation of {@link
- * RelMetadataQuery#getColumnOrigins} for the standard logical algebra.
+ * RelMdColumnOrigins supplies a default implementation of
+ * {@link RelMetadataQuery#getColumnOrigins} for the standard logical algebra.
  */
 public class RelMdColumnOrigins {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.COLUMN_ORIGIN.method, new RelMdColumnOrigins());
+          BuiltInMethod.COLUMN_ORIGIN.method, new RelMdColumnOrigins());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -40,12 +51,12 @@ public class RelMdColumnOrigins {
   //~ Methods ----------------------------------------------------------------
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      AggregateRelBase rel,
+      Aggregate rel,
       int iOutputColumn) {
     if (iOutputColumn < rel.getGroupCount()) {
       // Group columns pass through directly.
       return invokeGetColumnOrigins(
-          rel.getChild(),
+          rel.getInput(),
           iOutputColumn);
     }
 
@@ -57,7 +68,7 @@ public class RelMdColumnOrigins {
     for (Integer iInput : call.getArgList()) {
       Set<RelColumnOrigin> inputSet =
           invokeGetColumnOrigins(
-              rel.getChild(), iInput);
+              rel.getInput(), iInput);
       inputSet = createDerivedColumnOrigins(inputSet);
       if (inputSet != null) {
         set.addAll(inputSet);
@@ -67,7 +78,7 @@ public class RelMdColumnOrigins {
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      JoinRelBase rel,
+      Join rel,
       int iOutputColumn) {
     int nLeftColumns = rel.getLeft().getRowType().getFieldList().size();
     Set<RelColumnOrigin> set;
@@ -98,7 +109,7 @@ public class RelMdColumnOrigins {
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      SetOpRel rel,
+      SetOp rel,
       int iOutputColumn) {
     Set<RelColumnOrigin> set = new HashSet<RelColumnOrigin>();
     for (RelNode input : rel.getInputs()) {
@@ -115,9 +126,9 @@ public class RelMdColumnOrigins {
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      ProjectRelBase rel,
+      Project rel,
       int iOutputColumn) {
-    final RelNode child = rel.getChild();
+    final RelNode child = rel.getInput();
     RexNode rexNode = rel.getProjects().get(iOutputColumn);
 
     if (rexNode instanceof RexInputRef) {
@@ -150,23 +161,23 @@ public class RelMdColumnOrigins {
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      FilterRelBase rel,
+      Filter rel,
       int iOutputColumn) {
     return invokeGetColumnOrigins(
-        rel.getChild(),
+        rel.getInput(),
         iOutputColumn);
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      SortRel rel,
+      Sort rel,
       int iOutputColumn) {
     return invokeGetColumnOrigins(
-        rel.getChild(),
+        rel.getInput(),
         iOutputColumn);
   }
 
   public Set<RelColumnOrigin> getColumnOrigins(
-      TableFunctionRelBase rel,
+      TableFunctionScan rel,
       int iOutputColumn) {
     Set<RelColumnOrigin> set = new HashSet<RelColumnOrigin>();
     Set<RelColumnMapping> mappings = rel.getColumnMappings();

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
index e47addf..262d9e5 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
@@ -14,27 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Correlator;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.JoinInfo;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
 
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.fun.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
+import java.util.BitSet;
+import java.util.List;
 
 /**
- * RelMdColumnUniqueness supplies a default implementation of {@link
- * RelMetadataQuery#areColumnsUnique} for the standard logical algebra.
+ * RelMdColumnUniqueness supplies a default implementation of
+ * {@link RelMetadataQuery#areColumnsUnique} for the standard logical algebra.
  */
 public class RelMdColumnUniqueness {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.COLUMN_UNIQUENESS.method, new RelMdColumnUniqueness());
+          BuiltInMethod.COLUMN_UNIQUENESS.method, new RelMdColumnUniqueness());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -43,27 +53,27 @@ public class RelMdColumnUniqueness {
   //~ Methods ----------------------------------------------------------------
 
   public Boolean areColumnsUnique(
-      FilterRelBase rel,
+      Filter rel,
       BitSet columns,
       boolean ignoreNulls) {
     return RelMetadataQuery.areColumnsUnique(
-        rel.getChild(),
+        rel.getInput(),
         columns,
         ignoreNulls);
   }
 
   public Boolean areColumnsUnique(
-      SortRel rel,
+      Sort rel,
       BitSet columns,
       boolean ignoreNulls) {
     return RelMetadataQuery.areColumnsUnique(
-        rel.getChild(),
+        rel.getInput(),
         columns,
         ignoreNulls);
   }
 
   public Boolean areColumnsUnique(
-      CorrelatorRel rel,
+      Correlator rel,
       BitSet columns,
       boolean ignoreNulls) {
     return RelMetadataQuery.areColumnsUnique(
@@ -73,10 +83,10 @@ public class RelMdColumnUniqueness {
   }
 
   public Boolean areColumnsUnique(
-      ProjectRelBase rel,
+      Project rel,
       BitSet columns,
       boolean ignoreNulls) {
-    // ProjectRel maps a set of rows to a different set;
+    // LogicalProject maps a set of rows to a different set;
     // Without knowledge of the mapping function(whether it
     // preserves uniqueness), it is only safe to derive uniqueness
     // info from the child of a project when the mapping is f(a) => a.
@@ -128,13 +138,13 @@ public class RelMdColumnUniqueness {
     }
 
     return RelMetadataQuery.areColumnsUnique(
-        rel.getChild(),
+        rel.getInput(),
         childColumns,
         ignoreNulls);
   }
 
   public Boolean areColumnsUnique(
-      JoinRelBase rel,
+      Join rel,
       BitSet columns, boolean
       ignoreNulls) {
     if (columns.cardinality() == 0) {
@@ -208,7 +218,7 @@ public class RelMdColumnUniqueness {
   }
 
   public Boolean areColumnsUnique(
-      SemiJoinRel rel,
+      SemiJoin rel,
       BitSet columns,
       boolean ignoreNulls) {
     // only return the unique keys from the LHS since a semijoin only
@@ -220,7 +230,7 @@ public class RelMdColumnUniqueness {
   }
 
   public Boolean areColumnsUnique(
-      AggregateRelBase rel,
+      Aggregate rel,
       BitSet columns,
       boolean ignoreNulls) {
     // group by keys form a unique key

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
index b7637d8..e4d847d 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
@@ -14,28 +14,39 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.rel.core.Values;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.NumberUtil;
 
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.fun.*;
-import org.eigenbase.util14.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.List;
 
 /**
- * RelMdDistinctRowCount supplies a default implementation of {@link
- * RelMetadataQuery#getDistinctRowCount} for the standard logical algebra.
+ * RelMdDistinctRowCount supplies a default implementation of
+ * {@link RelMetadataQuery#getDistinctRowCount} for the standard logical
+ * algebra.
  */
 public class RelMdDistinctRowCount {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.DISTINCT_ROW_COUNT.method, new RelMdDistinctRowCount());
+          BuiltInMethod.DISTINCT_ROW_COUNT.method, new RelMdDistinctRowCount());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -44,7 +55,7 @@ public class RelMdDistinctRowCount {
   //~ Methods ----------------------------------------------------------------
 
   public Double getDistinctRowCount(
-      UnionRelBase rel,
+      Union rel,
       BitSet groupKey,
       RexNode predicate) {
     Double rowCount = 0.0;
@@ -78,17 +89,17 @@ public class RelMdDistinctRowCount {
   }
 
   public Double getDistinctRowCount(
-      SortRel rel,
+      Sort rel,
       BitSet groupKey,
       RexNode predicate) {
     return RelMetadataQuery.getDistinctRowCount(
-        rel.getChild(),
+        rel.getInput(),
         groupKey,
         predicate);
   }
 
   public Double getDistinctRowCount(
-      FilterRelBase rel,
+      Filter rel,
       BitSet groupKey,
       RexNode predicate) {
     // REVIEW zfong 4/18/06 - In the Broadbase code, duplicates are not
@@ -101,13 +112,13 @@ public class RelMdDistinctRowCount {
             rel.getCondition());
 
     return RelMetadataQuery.getDistinctRowCount(
-        rel.getChild(),
+        rel.getInput(),
         groupKey,
         unionPreds);
   }
 
   public Double getDistinctRowCount(
-      JoinRelBase rel,
+      Join rel,
       BitSet groupKey,
       RexNode predicate) {
     return RelMdUtil.getJoinDistinctRowCount(
@@ -119,7 +130,7 @@ public class RelMdDistinctRowCount {
   }
 
   public Double getDistinctRowCount(
-      SemiJoinRel rel,
+      SemiJoin rel,
       BitSet groupKey,
       RexNode predicate) {
     // create a RexNode representing the selectivity of the
@@ -141,7 +152,7 @@ public class RelMdDistinctRowCount {
   }
 
   public Double getDistinctRowCount(
-      AggregateRelBase rel,
+      Aggregate rel,
       BitSet groupKey,
       RexNode predicate) {
     // determine which predicates can be applied on the child of the
@@ -163,7 +174,7 @@ public class RelMdDistinctRowCount {
 
     Double distinctRowCount =
         RelMetadataQuery.getDistinctRowCount(
-            rel.getChild(),
+            rel.getInput(),
             childKey,
             childPreds);
     if (distinctRowCount == null) {
@@ -178,7 +189,7 @@ public class RelMdDistinctRowCount {
   }
 
   public Double getDistinctRowCount(
-      ValuesRelBase rel,
+      Values rel,
       BitSet groupKey,
       RexNode predicate) {
     Double selectivity = RelMdUtil.guessSelectivity(predicate);
@@ -189,7 +200,7 @@ public class RelMdDistinctRowCount {
   }
 
   public Double getDistinctRowCount(
-      ProjectRelBase rel,
+      Project rel,
       BitSet groupKey,
       RexNode predicate) {
     BitSet baseCols = new BitSet();
@@ -219,7 +230,7 @@ public class RelMdDistinctRowCount {
     }
     Double distinctRowCount =
         RelMetadataQuery.getDistinctRowCount(
-            rel.getChild(),
+            rel.getInput(),
             baseCols,
             modifiedPred);
 

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExplainVisibility.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExplainVisibility.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExplainVisibility.java
index 68573b5..b0d926e 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExplainVisibility.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExplainVisibility.java
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import org.eigenbase.rel.*;
-import org.eigenbase.sql.SqlExplainLevel;
-
-import net.hydromatic.optiq.BuiltinMethod;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.BuiltInMethod;
 
 /**
  * RelMdExplainVisibility supplies a default implementation of
@@ -28,7 +27,7 @@ import net.hydromatic.optiq.BuiltinMethod;
 public class RelMdExplainVisibility {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.EXPLAIN_VISIBILITY.method,
+          BuiltInMethod.EXPLAIN_VISIBILITY.method,
           new RelMdExplainVisibility());
 
   //~ Constructors -----------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
index 7b4a677..991a488 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
@@ -14,18 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.rules.java.JavaRules;
+import org.apache.calcite.adapter.enumerable.EnumerableInterpreter;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.util.BuiltInMethod;
 
 import com.google.common.collect.ImmutableList;
 
+import java.util.List;
+
 /**
  * RelMdPercentageOriginalRows supplies a default implementation of
  * {@link RelMetadataQuery#getPercentageOriginalRows} for the standard logical
@@ -39,28 +41,28 @@ public class RelMdPercentageOriginalRows {
       ChainedRelMetadataProvider.of(
           ImmutableList.of(
               ReflectiveRelMetadataProvider.reflectiveSource(
-                  BuiltinMethod.PERCENTAGE_ORIGINAL_ROWS.method, INSTANCE),
+                  BuiltInMethod.PERCENTAGE_ORIGINAL_ROWS.method, INSTANCE),
 
               ReflectiveRelMetadataProvider.reflectiveSource(
-                  BuiltinMethod.CUMULATIVE_COST.method, INSTANCE),
+                  BuiltInMethod.CUMULATIVE_COST.method, INSTANCE),
 
               ReflectiveRelMetadataProvider.reflectiveSource(
-                  BuiltinMethod.NON_CUMULATIVE_COST.method, INSTANCE)));
+                  BuiltInMethod.NON_CUMULATIVE_COST.method, INSTANCE)));
 
   //~ Methods ----------------------------------------------------------------
 
   private RelMdPercentageOriginalRows() {}
 
-  public Double getPercentageOriginalRows(AggregateRelBase rel) {
+  public Double getPercentageOriginalRows(Aggregate rel) {
     // REVIEW jvs 28-Mar-2006: The assumption here seems to be that
     // aggregation does not apply any filtering, so it does not modify the
     // percentage.  That's very much oversimplified.
 
     return RelMetadataQuery.getPercentageOriginalRows(
-        rel.getChild());
+        rel.getInput());
   }
 
-  public Double getPercentageOriginalRows(UnionRelBase rel) {
+  public Double getPercentageOriginalRows(Union rel) {
     double numerator = 0.0;
     double denominator = 0.0;
 
@@ -87,14 +89,14 @@ public class RelMdPercentageOriginalRows {
     return quotientForPercentage(numerator, denominator);
   }
 
-  public Double getPercentageOriginalRows(JoinRelBase rel) {
+  public Double getPercentageOriginalRows(Join rel) {
     // Assume any single-table filter conditions have already
     // been pushed down.
 
     // REVIEW jvs 28-Mar-2006: As with aggregation, this is
     // oversimplified.
 
-    // REVIEW jvs 28-Mar-2006:  need any special casing for SemiJoinRel?
+    // REVIEW jvs 28-Mar-2006:  need any special casing for SemiJoin?
 
     double left = RelMetadataQuery.getPercentageOriginalRows(rel.getLeft());
 
@@ -154,7 +156,7 @@ public class RelMdPercentageOriginalRows {
     return cost;
   }
 
-  public RelOptCost getCumulativeCost(JavaRules.EnumerableInterpreterRel rel) {
+  public RelOptCost getCumulativeCost(EnumerableInterpreter rel) {
     return RelMetadataQuery.getNonCumulativeCost(rel);
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
index 1755589..2afbc80 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
@@ -14,25 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
-
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.rex.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.metadata;
+
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.rel.core.Values;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
+
+import java.util.BitSet;
+import java.util.List;
 
 /**
- * RelMdPopulationSize supplies a default implementation of {@link
- * RelMetadataQuery#getPopulationSize} for the standard logical algebra.
+ * RelMdPopulationSize supplies a default implementation of
+ * {@link RelMetadataQuery#getPopulationSize} for the standard logical algebra.
  */
 public class RelMdPopulationSize {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.POPULATION_SIZE.method, new RelMdPopulationSize());
+          BuiltInMethod.POPULATION_SIZE.method, new RelMdPopulationSize());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -40,19 +47,19 @@ public class RelMdPopulationSize {
 
   //~ Methods ----------------------------------------------------------------
 
-  public Double getPopulationSize(FilterRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Filter rel, BitSet groupKey) {
     return RelMetadataQuery.getPopulationSize(
-        rel.getChild(),
+        rel.getInput(),
         groupKey);
   }
 
-  public Double getPopulationSize(SortRel rel, BitSet groupKey) {
+  public Double getPopulationSize(Sort rel, BitSet groupKey) {
     return RelMetadataQuery.getPopulationSize(
-        rel.getChild(),
+        rel.getInput(),
         groupKey);
   }
 
-  public Double getPopulationSize(UnionRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Union rel, BitSet groupKey) {
     Double population = 0.0;
     for (RelNode input : rel.getInputs()) {
       Double subPop = RelMetadataQuery.getPopulationSize(input, groupKey);
@@ -64,30 +71,30 @@ public class RelMdPopulationSize {
     return population;
   }
 
-  public Double getPopulationSize(JoinRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Join rel, BitSet groupKey) {
     return RelMdUtil.getJoinPopulationSize(rel, groupKey);
   }
 
-  public Double getPopulationSize(SemiJoinRel rel, BitSet groupKey) {
+  public Double getPopulationSize(SemiJoin rel, BitSet groupKey) {
     return RelMetadataQuery.getPopulationSize(
         rel.getLeft(),
         groupKey);
   }
 
-  public Double getPopulationSize(AggregateRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Aggregate rel, BitSet groupKey) {
     BitSet childKey = new BitSet();
     RelMdUtil.setAggChildKeys(groupKey, rel, childKey);
     return RelMetadataQuery.getPopulationSize(
-        rel.getChild(),
+        rel.getInput(),
         childKey);
   }
 
-  public Double getPopulationSize(ValuesRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Values rel, BitSet groupKey) {
     // assume half the rows are duplicates
     return rel.getRows() / 2;
   }
 
-  public Double getPopulationSize(ProjectRelBase rel, BitSet groupKey) {
+  public Double getPopulationSize(Project rel, BitSet groupKey) {
     BitSet baseCols = new BitSet();
     BitSet projCols = new BitSet();
     List<RexNode> projExprs = rel.getProjects();
@@ -95,7 +102,7 @@ public class RelMdPopulationSize {
 
     Double population =
         RelMetadataQuery.getPopulationSize(
-            rel.getChild(),
+            rel.getInput(),
             baseCols);
     if (population == null) {
       return null;

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
index eec7dd8..e15f074 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
@@ -14,7 +14,42 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
+
+import org.apache.calcite.linq4j.Linq4j;
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.linq4j.function.Predicate1;
+import org.apache.calcite.plan.RelOptPredicateList;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableScan;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexPermuteInputsShuttle;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.rex.RexVisitorImpl;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.mapping.Mapping;
+import org.apache.calcite.util.mapping.MappingType;
+import org.apache.calcite.util.mapping.Mappings;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
 import java.util.BitSet;
@@ -27,48 +62,11 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.eigenbase.rel.AggregateRelBase;
-import org.eigenbase.rel.FilterRelBase;
-import org.eigenbase.rel.JoinRelBase;
-import org.eigenbase.rel.JoinRelType;
-import org.eigenbase.rel.ProjectRelBase;
-import org.eigenbase.rel.RelNode;
-import org.eigenbase.rel.SortRel;
-import org.eigenbase.rel.TableAccessRelBase;
-import org.eigenbase.rel.UnionRelBase;
-import org.eigenbase.rel.rules.SemiJoinRel;
-import org.eigenbase.relopt.RelOptPredicateList;
-import org.eigenbase.relopt.RelOptUtil;
-import org.eigenbase.rex.RexBuilder;
-import org.eigenbase.rex.RexCall;
-import org.eigenbase.rex.RexInputRef;
-import org.eigenbase.rex.RexNode;
-import org.eigenbase.rex.RexPermuteInputsShuttle;
-import org.eigenbase.rex.RexUtil;
-import org.eigenbase.rex.RexVisitorImpl;
-import org.eigenbase.sql.SqlKind;
-import org.eigenbase.util.mapping.Mapping;
-import org.eigenbase.util.mapping.MappingType;
-import org.eigenbase.util.mapping.Mappings;
-
-import net.hydromatic.linq4j.Linq4j;
-import net.hydromatic.linq4j.Ord;
-import net.hydromatic.linq4j.function.Predicate1;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Lists;
-
 /**
  * Utility to infer Predicates that are applicable above a RelNode.
  *
  * <p>This is currently used by
- * {@link org.eigenbase.rel.rules.TransitivePredicatesOnJoinRule} to
+ * {@link org.apache.calcite.rel.rules.JoinPushTransitivePredicatesRule} to
  * infer <em>Predicates</em> that can be inferred from one side of a Join
  * to the other.
  *
@@ -111,7 +109,7 @@ import com.google.common.collect.Lists;
  */
 public class RelMdPredicates {
   public static final RelMetadataProvider SOURCE = ReflectiveRelMetadataProvider
-      .reflectiveSource(BuiltinMethod.PREDICATES.method, new RelMdPredicates());
+      .reflectiveSource(BuiltInMethod.PREDICATES.method, new RelMdPredicates());
 
   private static final List<RexNode> EMPTY_LIST = ImmutableList.of();
 
@@ -123,7 +121,7 @@ public class RelMdPredicates {
   /**
    * Infers predicates for a table scan.
    */
-  public RelOptPredicateList getPredicates(TableAccessRelBase table) {
+  public RelOptPredicateList getPredicates(TableScan table) {
     return RelOptPredicateList.EMPTY;
   }
 
@@ -146,8 +144,8 @@ public class RelMdPredicates {
    *
    * </ol>
    */
-  public RelOptPredicateList getPredicates(ProjectRelBase project) {
-    RelNode child = project.getChild();
+  public RelOptPredicateList getPredicates(Project project) {
+    RelNode child = project.getInput();
     RelOptPredicateList childInfo =
         RelMetadataQuery.getPulledUpPredicates(child);
 
@@ -181,8 +179,8 @@ public class RelMdPredicates {
   /**
    * Add the Filter condition to the pulledPredicates list from the child.
    */
-  public RelOptPredicateList getPredicates(FilterRelBase filter) {
-    RelNode child = filter.getChild();
+  public RelOptPredicateList getPredicates(Filter filter) {
+    RelNode child = filter.getInput();
     RelOptPredicateList childInfo =
         RelMetadataQuery.getPulledUpPredicates(child);
 
@@ -191,15 +189,15 @@ public class RelMdPredicates {
             RelOptUtil.conjunctions(filter.getCondition())));
   }
 
-  /** Infers predicates for a {@link SemiJoinRel}. */
-  public RelOptPredicateList getPredicates(SemiJoinRel semiJoin) {
+  /** Infers predicates for a {@link org.apache.calcite.rel.core.SemiJoin}. */
+  public RelOptPredicateList getPredicates(SemiJoin semiJoin) {
     // Workaround, pending [CALCITE-390] "Transitive inference (RelMdPredicate)
     // doesn't handle semi-join"
     return RelOptPredicateList.EMPTY;
   }
 
-  /** Infers predicates for a {@link JoinRelBase}. */
-  public RelOptPredicateList getPredicates(JoinRelBase join) {
+  /** Infers predicates for a {@link org.apache.calcite.rel.core.Join}. */
+  public RelOptPredicateList getPredicates(Join join) {
     RexBuilder rB = join.getCluster().getRexBuilder();
     RelNode left = join.getInput(0);
     RelNode right = join.getInput(1);
@@ -219,7 +217,7 @@ public class RelMdPredicates {
   }
 
   /**
-   * Infers predicates for an AggregateRel.
+   * Infers predicates for an Aggregate.
    *
    * <p>Pulls up predicates that only contains references to columns in the
    * GroupSet. For e.g.
@@ -230,8 +228,8 @@ public class RelMdPredicates {
    * pulledUpExprs    : { a &gt; 7}
    * </pre>
    */
-  public RelOptPredicateList getPredicates(AggregateRelBase agg) {
-    RelNode child = agg.getChild();
+  public RelOptPredicateList getPredicates(Aggregate agg) {
+    RelNode child = agg.getInput();
     RelOptPredicateList childInfo =
         RelMetadataQuery.getPulledUpPredicates(child);
 
@@ -257,11 +255,11 @@ public class RelMdPredicates {
   }
 
   /**
-   * Infers predicates for a UnionRelBase.
+   * Infers predicates for a Union.
    *
    * <p>The pulled up expression is a disjunction of its children's predicates.
    */
-  public RelOptPredicateList getPredicates(UnionRelBase union) {
+  public RelOptPredicateList getPredicates(Union union) {
     RexBuilder rB = union.getCluster().getRexBuilder();
     List<RexNode> orList = Lists.newArrayList();
     for (RelNode input : union.getInputs()) {
@@ -282,20 +280,28 @@ public class RelMdPredicates {
   }
 
   /**
-   * Infers predicates for a SortRel.
+   * Infers predicates for a Sort.
    */
-  public RelOptPredicateList getPredicates(SortRel sort) {
+  public RelOptPredicateList getPredicates(Sort sort) {
     RelNode child = sort.getInput(0);
     return RelMetadataQuery.getPulledUpPredicates(child);
   }
 
   /**
    * Utility to infer predicates from one side of the join that apply on the
-   * other side. Contract is: - initialize with a {@link JoinRelBase} and
-   * optional predicates applicable on its left and right subtrees. - you can
+   * other side.
+   *
+   * <p>Contract is:<ul>
+   *
+   * <li>initialize with a {@link org.apache.calcite.rel.core.Join} and
+   * optional predicates applicable on its left and right subtrees.
+   *
+   * <li>you can
    * then ask it for equivalentPredicate(s) given a predicate.
-   * <p>
-   * So for:
+   *
+   * </ul>
+   *
+   * <p>So for:
    * <ol>
    * <li>'<code>R1(x) join R2(y) on x = y</code>' a call for
    * equivalentPredicates on '<code>x > 7</code>' will return '
@@ -306,7 +312,7 @@ public class RelMdPredicates {
    * </ol>
    */
   static class JoinConditionBasedPredicateInference {
-    final JoinRelBase joinRel;
+    final Join joinRel;
     final int nSysFields;
     final int nFieldsLeft;
     final int nFieldsRight;
@@ -320,7 +326,7 @@ public class RelMdPredicates {
     final RexNode leftChildPredicates;
     final RexNode rightChildPredicates;
 
-    public JoinConditionBasedPredicateInference(JoinRelBase joinRel,
+    public JoinConditionBasedPredicateInference(Join joinRel,
         RexNode lPreds, RexNode rPreds) {
       super();
       this.joinRel = joinRel;
@@ -535,8 +541,7 @@ public class RelMdPredicates {
         super(true);
       }
 
-      @Override
-      public Void visitCall(RexCall call) {
+      @Override public Void visitCall(RexCall call) {
         if (call.getOperator().getKind() == SqlKind.EQUALS) {
           int lPos = pos(call.getOperands().get(0));
           int rPos = pos(call.getOperands().get(1));

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
index 01df90e..2549570 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
@@ -14,29 +14,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.NumberUtil;
 
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.util14.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
+import java.util.BitSet;
 
 /**
- * RelMdRowCount supplies a default implementation of {@link
- * RelMetadataQuery#getRowCount} for the standard logical algebra.
+ * RelMdRowCount supplies a default implementation of
+ * {@link RelMetadataQuery#getRowCount} for the standard logical algebra.
  */
 public class RelMdRowCount {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.ROW_COUNT.method, new RelMdRowCount());
+          BuiltInMethod.ROW_COUNT.method, new RelMdRowCount());
 
   //~ Methods ----------------------------------------------------------------
 
-  public Double getRowCount(UnionRelBase rel) {
+  public Double getRowCount(Union rel) {
     double nRows = 0.0;
 
     for (RelNode input : rel.getInputs()) {
@@ -49,23 +53,23 @@ public class RelMdRowCount {
     return nRows;
   }
 
-  public Double getRowCount(FilterRelBase rel) {
+  public Double getRowCount(Filter rel) {
     return NumberUtil.multiply(
         RelMetadataQuery.getSelectivity(
-            rel.getChild(),
+            rel.getInput(),
             rel.getCondition()),
-        RelMetadataQuery.getRowCount(rel.getChild()));
+        RelMetadataQuery.getRowCount(rel.getInput()));
   }
 
-  public Double getRowCount(ProjectRelBase rel) {
-    return RelMetadataQuery.getRowCount(rel.getChild());
+  public Double getRowCount(Project rel) {
+    return RelMetadataQuery.getRowCount(rel.getInput());
   }
 
-  public Double getRowCount(SortRel rel) {
-    return RelMetadataQuery.getRowCount(rel.getChild());
+  public Double getRowCount(Sort rel) {
+    return RelMetadataQuery.getRowCount(rel.getInput());
   }
 
-  public Double getRowCount(SemiJoinRel rel) {
+  public Double getRowCount(SemiJoin rel) {
     // create a RexNode representing the selectivity of the
     // semijoin filter and pass it to getSelectivity
     RexNode semiJoinSelectivity =
@@ -78,7 +82,7 @@ public class RelMdRowCount {
         RelMetadataQuery.getRowCount(rel.getLeft()));
   }
 
-  public Double getRowCount(AggregateRelBase rel) {
+  public Double getRowCount(Aggregate rel) {
     BitSet groupKey = new BitSet();
     for (int i = 0; i < rel.getGroupCount(); i++) {
       groupKey.set(i);
@@ -87,11 +91,11 @@ public class RelMdRowCount {
     // rowcount is the cardinality of the group by columns
     Double distinctRowCount =
         RelMetadataQuery.getDistinctRowCount(
-            rel.getChild(),
+            rel.getInput(),
             groupKey,
             null);
     if (distinctRowCount == null) {
-      return RelMetadataQuery.getRowCount(rel.getChild()) / 10;
+      return RelMetadataQuery.getRowCount(rel.getInput()) / 10;
     } else {
       return distinctRowCount;
     }

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSelectivity.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSelectivity.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSelectivity.java
index 9cfbf1b..1706e13 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSelectivity.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSelectivity.java
@@ -14,27 +14,34 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
-
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.fun.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.metadata;
+
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.Union;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
- * RelMdSelectivity supplies a default implementation of {@link
- * RelMetadataQuery#getSelectivity} for the standard logical algebra.
+ * RelMdSelectivity supplies a default implementation of
+ * {@link RelMetadataQuery#getSelectivity} for the standard logical algebra.
  */
 public class RelMdSelectivity {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.SELECTIVITY.method, new RelMdSelectivity());
+          BuiltInMethod.SELECTIVITY.method, new RelMdSelectivity());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -43,7 +50,7 @@ public class RelMdSelectivity {
 
   //~ Methods ----------------------------------------------------------------
 
-  public Double getSelectivity(UnionRelBase rel, RexNode predicate) {
+  public Double getSelectivity(Union rel, RexNode predicate) {
     if ((rel.getInputs().size() == 0) || (predicate == null)) {
       return 1.0;
     }
@@ -78,32 +85,32 @@ public class RelMdSelectivity {
     return sumSelectedRows / sumRows;
   }
 
-  public Double getSelectivity(SortRel rel, RexNode predicate) {
+  public Double getSelectivity(Sort rel, RexNode predicate) {
     return RelMetadataQuery.getSelectivity(
-        rel.getChild(),
+        rel.getInput(),
         predicate);
   }
 
-  public Double getSelectivity(FilterRelBase rel, RexNode predicate) {
+  public Double getSelectivity(Filter rel, RexNode predicate) {
     // Take the difference between the predicate passed in and the
     // predicate in the filter's condition, so we don't apply the
     // selectivity of the filter twice.  If no predicate is passed in,
     // use the filter's condition.
     if (predicate != null) {
       return RelMetadataQuery.getSelectivity(
-          rel.getChild(),
+          rel.getInput(),
           RelMdUtil.minusPreds(
               rel.getCluster().getRexBuilder(),
               predicate,
               rel.getCondition()));
     } else {
       return RelMetadataQuery.getSelectivity(
-          rel.getChild(),
+          rel.getInput(),
           rel.getCondition());
     }
   }
 
-  public Double getSelectivity(SemiJoinRel rel, RexNode predicate) {
+  public Double getSelectivity(SemiJoin rel, RexNode predicate) {
     // create a RexNode representing the selectivity of the
     // semijoin filter and pass it to getSelectivity
     RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
@@ -121,7 +128,7 @@ public class RelMdSelectivity {
         newPred);
   }
 
-  public Double getSelectivity(AggregateRelBase rel, RexNode predicate) {
+  public Double getSelectivity(Aggregate rel, RexNode predicate) {
     List<RexNode> notPushable = new ArrayList<RexNode>();
     List<RexNode> pushable = new ArrayList<RexNode>();
     RelOptUtil.splitFilters(
@@ -135,7 +142,7 @@ public class RelMdSelectivity {
 
     Double selectivity =
         RelMetadataQuery.getSelectivity(
-            rel.getChild(),
+            rel.getInput(),
             childPred);
     if (selectivity == null) {
       return null;
@@ -146,7 +153,7 @@ public class RelMdSelectivity {
     }
   }
 
-  public Double getSelectivity(ProjectRelBase rel, RexNode predicate) {
+  public Double getSelectivity(Project rel, RexNode predicate) {
     List<RexNode> notPushable = new ArrayList<RexNode>();
     List<RexNode> pushable = new ArrayList<RexNode>();
     RelOptUtil.splitFilters(
@@ -166,7 +173,7 @@ public class RelMdSelectivity {
     }
     Double selectivity =
         RelMetadataQuery.getSelectivity(
-            rel.getChild(),
+            rel.getInput(),
             modifiedPred);
     if (selectivity == null) {
       return null;

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
index cdebe60..55083d8 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
@@ -14,25 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
-
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.rex.*;
-
-import net.hydromatic.optiq.BuiltinMethod;
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.metadata;
+
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Correlator;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.core.JoinInfo;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.BuiltInMethod;
+
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
- * RelMdUniqueKeys supplies a default implementation of {@link
- * RelMetadataQuery#getUniqueKeys} for the standard logical algebra.
+ * RelMdUniqueKeys supplies a default implementation of
+ * {@link RelMetadataQuery#getUniqueKeys} for the standard logical algebra.
  */
 public class RelMdUniqueKeys {
   public static final RelMetadataProvider SOURCE =
       ReflectiveRelMetadataProvider.reflectiveSource(
-          BuiltinMethod.UNIQUE_KEYS.method, new RelMdUniqueKeys());
+          BuiltInMethod.UNIQUE_KEYS.method, new RelMdUniqueKeys());
 
   //~ Constructors -----------------------------------------------------------
 
@@ -40,20 +52,20 @@ public class RelMdUniqueKeys {
 
   //~ Methods ----------------------------------------------------------------
 
-  public Set<BitSet> getUniqueKeys(FilterRelBase rel, boolean ignoreNulls) {
-    return RelMetadataQuery.getUniqueKeys(rel.getChild(), ignoreNulls);
+  public Set<BitSet> getUniqueKeys(Filter rel, boolean ignoreNulls) {
+    return RelMetadataQuery.getUniqueKeys(rel.getInput(), ignoreNulls);
   }
 
-  public Set<BitSet> getUniqueKeys(SortRel rel, boolean ignoreNulls) {
-    return RelMetadataQuery.getUniqueKeys(rel.getChild(), ignoreNulls);
+  public Set<BitSet> getUniqueKeys(Sort rel, boolean ignoreNulls) {
+    return RelMetadataQuery.getUniqueKeys(rel.getInput(), ignoreNulls);
   }
 
-  public Set<BitSet> getUniqueKeys(CorrelatorRel rel, boolean ignoreNulls) {
+  public Set<BitSet> getUniqueKeys(Correlator rel, boolean ignoreNulls) {
     return RelMetadataQuery.getUniqueKeys(rel.getLeft(), ignoreNulls);
   }
 
-  public Set<BitSet> getUniqueKeys(ProjectRelBase rel, boolean ignoreNulls) {
-    // ProjectRel maps a set of rows to a different set;
+  public Set<BitSet> getUniqueKeys(Project rel, boolean ignoreNulls) {
+    // LogicalProject maps a set of rows to a different set;
     // Without knowledge of the mapping function(whether it
     // preserves uniqueness), it is only safe to derive uniqueness
     // info from the child of a project when the mapping is f(a) => a.
@@ -81,7 +93,7 @@ public class RelMdUniqueKeys {
     }
 
     Set<BitSet> childUniqueKeySet =
-        RelMetadataQuery.getUniqueKeys(rel.getChild(), ignoreNulls);
+        RelMetadataQuery.getUniqueKeys(rel.getInput(), ignoreNulls);
 
     if (childUniqueKeySet != null) {
       // Now add to the projUniqueKeySet the child keys that are fully
@@ -108,7 +120,7 @@ public class RelMdUniqueKeys {
     return projUniqueKeySet;
   }
 
-  public Set<BitSet> getUniqueKeys(JoinRelBase rel, boolean ignoreNulls) {
+  public Set<BitSet> getUniqueKeys(Join rel, boolean ignoreNulls) {
     final RelNode left = rel.getLeft();
     final RelNode right = rel.getRight();
 
@@ -184,13 +196,13 @@ public class RelMdUniqueKeys {
     return retSet;
   }
 
-  public Set<BitSet> getUniqueKeys(SemiJoinRel rel, boolean ignoreNulls) {
+  public Set<BitSet> getUniqueKeys(SemiJoin rel, boolean ignoreNulls) {
     // only return the unique keys from the LHS since a semijoin only
     // returns the LHS
     return RelMetadataQuery.getUniqueKeys(rel.getLeft(), ignoreNulls);
   }
 
-  public Set<BitSet> getUniqueKeys(AggregateRelBase rel, boolean ignoreNulls) {
+  public Set<BitSet> getUniqueKeys(Aggregate rel, boolean ignoreNulls) {
     Set<BitSet> retSet = new HashSet<BitSet>();
 
     // group by keys form a unique key

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
index 043c293..e3128fb 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
@@ -14,24 +14,41 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
-
-import java.math.*;
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.sql.type.*;
-import org.eigenbase.util.Bug;
-import org.eigenbase.util14.*;
-
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.metadata;
+
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.JoinInfo;
+import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.SemiJoin;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.rex.RexVisitorImpl;
+import org.apache.calcite.sql.SqlFunction;
+import org.apache.calcite.sql.SqlFunctionCategory;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.type.OperandTypes;
+import org.apache.calcite.sql.type.ReturnTypes;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.Bug;
+import org.apache.calcite.util.NumberUtil;
 
 import com.google.common.collect.ImmutableList;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 /**
  * RelMdUtil provides utility methods used by the metadata provider methods.
  */
@@ -60,7 +77,7 @@ public class RelMdUtil {
    * @param rel the semijoin of interest
    * @return constructed rexnode
    */
-  public static RexNode makeSemiJoinSelectivityRexNode(SemiJoinRel rel) {
+  public static RexNode makeSemiJoinSelectivityRexNode(SemiJoin rel) {
     RexBuilder rexBuilder = rel.getCluster().getRexBuilder();
     double selectivity =
         computeSemiJoinSelectivity(
@@ -96,7 +113,7 @@ public class RelMdUtil {
    * @param rel semijoin rel
    * @return calculated selectivity
    */
-  public static double computeSemiJoinSelectivity(SemiJoinRel rel) {
+  public static double computeSemiJoinSelectivity(SemiJoin rel) {
     return computeSemiJoinSelectivity(
         rel.getLeft(),
         rel.getRight(),
@@ -118,7 +135,7 @@ public class RelMdUtil {
   public static double computeSemiJoinSelectivity(
       RelNode factRel,
       RelNode dimRel,
-      SemiJoinRel rel) {
+      SemiJoin rel) {
     return computeSemiJoinSelectivity(
         factRel,
         dimRel,
@@ -518,7 +535,7 @@ public class RelMdUtil {
    */
   public static void setAggChildKeys(
       BitSet groupKey,
-      AggregateRelBase aggRel,
+      Aggregate aggRel,
       BitSet childKey) {
     List<AggregateCall> aggCalls = aggRel.getAggCallList();
     for (int bit : BitSets.toIter(groupKey)) {
@@ -568,7 +585,7 @@ public class RelMdUtil {
    * @param expr projection expression
    * @return cardinality
    */
-  public static Double cardOfProjExpr(ProjectRelBase rel, RexNode expr) {
+  public static Double cardOfProjExpr(Project rel, RexNode expr) {
     return expr.accept(new CardOfProjExpr(rel));
   }
 
@@ -697,9 +714,9 @@ public class RelMdUtil {
   /** Visitor that walks over a scalar expression and computes the
    * cardinality of its result. */
   private static class CardOfProjExpr extends RexVisitorImpl<Double> {
-    private ProjectRelBase rel;
+    private Project rel;
 
-    public CardOfProjExpr(ProjectRelBase rel) {
+    public CardOfProjExpr(Project rel) {
       super(true);
       this.rel = rel;
     }
@@ -710,7 +727,7 @@ public class RelMdUtil {
       col.set(index);
       Double distinctRowCount =
           RelMetadataQuery.getDistinctRowCount(
-              rel.getChild(),
+              rel.getInput(),
               col,
               null);
       if (distinctRowCount == null) {

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataProvider.java
index fd363da..0e1bf4f 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataProvider.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import org.eigenbase.rel.*;
+import org.apache.calcite.rel.RelNode;
 
 import com.google.common.base.Function;
 
@@ -43,10 +43,10 @@ public interface RelMetadataProvider {
    *
    * <blockquote><pre>
    * RelMetadataProvider provider;
-   * FilterRel filter;
+   * LogicalFilter filter;
    * RexNode predicate;
    * Function&lt;RelNode, Metadata&gt; function =
-   *   provider.apply(FilterRel.class, Selectivity.class};
+   *   provider.apply(LogicalFilter.class, Selectivity.class};
    * Selectivity selectivity = function.apply(filter);
    * Double d = selectivity.selectivity(predicate);
    * </pre></blockquote>

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
index ed5ed48..4d86f79 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
@@ -14,30 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.stat.*;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPredicateList;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlExplainLevel;
 
 import com.google.common.collect.Iterables;
 
+import java.util.BitSet;
+import java.util.Set;
+
 /**
- * RelMetadataQuery provides a strongly-typed facade on top of {@link
- * RelMetadataProvider} for the set of relational expression metadata queries
- * defined as standard within Eigenbase. The Javadoc on these methods serves as
- * their primary specification.
+ * RelMetadataQuery provides a strongly-typed facade on top of
+ * {@link RelMetadataProvider} for the set of relational expression metadata
+ * queries defined as standard within Calcite. The Javadoc on these methods
+ * serves as their primary specification.
  *
  * <p>To add a new standard query <code>Xyz</code> to this interface, follow
  * these steps:
  *
  * <ol>
  * <li>Add a static method <code>getXyz</code> specification to this class.
- * <li>Add unit tests to {@code org.eigenbase.test.RelMetadataTest}.
+ * <li>Add unit tests to {@code org.apache.calcite.test.RelMetadataTest}.
  * <li>Write a new provider class <code>RelMdXyz</code> in this package. Follow
  * the pattern from an existing class such as {@link RelMdColumnOrigins},
  * overloading on all of the logical relational expressions to which the query
@@ -65,22 +67,6 @@ public abstract class RelMetadataQuery {
   //~ Methods ----------------------------------------------------------------
 
   /**
-   * Returns statistics for a relational expression. These statistics include
-   * features such as row counts, or column distributions. Stats are typically
-   * collected by sampling a table. They might also be inferred from a rel's
-   * history. Certain rels, such as filters, might generate stats from their
-   * inputs.
-   *
-   * @param rel the relational expression.
-   * @return a statistics object, if statistics are available, or null
-   * otherwise
-   */
-  @Deprecated
-  public static RelStatSource getStatistics(RelNode rel) {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
    * Returns the
    * {@link BuiltInMetadata.RowCount#getRowCount()}
    * statistic.
@@ -162,7 +148,7 @@ public abstract class RelMetadataQuery {
    * Determines the origin of a column, provided the column maps to a single
    * column that isn't derived.
    *
-   * @see #getColumnOrigins(org.eigenbase.rel.RelNode, int)
+   * @see #getColumnOrigins(org.apache.calcite.rel.RelNode, int)
    *
    * @param rel the RelNode of the column
    * @param column the offset of the column whose origin we are trying to
@@ -329,7 +315,7 @@ public abstract class RelMetadataQuery {
 
   /**
    * Returns the
-   * {@link org.eigenbase.rel.metadata.BuiltInMetadata.Predicates#getPredicates()}
+   * {@link org.apache.calcite.rel.metadata.BuiltInMetadata.Predicates#getPredicates()}
    * statistic.
    *
    * @param rel the relational expression

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/package-info.java b/core/src/main/java/org/apache/calcite/rel/metadata/package-info.java
index 6d865ff..ed98035 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/package-info.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/package-info.java
@@ -19,6 +19,6 @@
  * Defines metadata interfaces and utilities for relational
  * expressions.
  */
-package org.eigenbase.rel.metadata;
+package org.apache.calcite.rel.metadata;
 
 // End package-info.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/package-info.java b/core/src/main/java/org/apache/calcite/rel/package-info.java
index da6776e..fdbfd3b 100644
--- a/core/src/main/java/org/apache/calcite/rel/package-info.java
+++ b/core/src/main/java/org/apache/calcite/rel/package-info.java
@@ -20,20 +20,21 @@
  *
  * <h2>Related packages and classes</h2>
  * <ul>
- *     <li>Package<code> <a
- *             href="../sql/package-summary.html">org.eigenbase.sql</a></code>
- *         is an object model for SQL expressions
- *     </li>
- *     <li>Package<code> <a
- *             href="../sql/package-summary.html">org.eigenbase.rex</a></code>
- *         is an object model for relational row expressions
- *     </li>
- *     <li>Package<code> <a href="../relopt/package-summary.html">
- *         org.eigenbase.relopt</a></code>
- *         provides an optimizer interface.
- *     </li>
+ *
+ * <li>Package <code>
+ * <a href="../sql/package-summary.html">org.apache.calcite.sql</a></code>
+ * is an object model for SQL expressions
+ *
+ * <li>Package <code>
+ * <a href="../sql/package-summary.html">org.apache.calcite.rex</a></code>
+ * is an object model for relational row expressions
+ *
+ * <li>Package <code>
+ * <a href="../plan/package-summary.html">org.apache.calcite.plan</a></code>
+ * provides an optimizer interface.
+ *
  * </ul>
  */
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
 
 // End package-info.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
index 39928cd..915ae87 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
@@ -14,39 +14,69 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.rules;
-
-import java.util.*;
-
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.fun.*;
-import org.eigenbase.util.*;
-
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.rules;
+
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.core.RelFactories;
+import org.apache.calcite.rel.logical.LogicalAggregate;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
- * Rule to remove distinct aggregates from a {@link AggregateRel}.
+ * Planner rule that expands distinct aggregates
+ * (such as {@code COUNT(DISTINCT x)}) from a
+ * {@link org.apache.calcite.rel.logical.LogicalAggregate}.
+ *
+ * <p>How this is done depends upon the arguments to the function. If all
+ * functions have the same argument
+ * (e.g. {@code COUNT(DISTINCT x), SUM(DISTINCT x)} both have the argument
+ * {@code x}) then one extra {@link org.apache.calcite.rel.core.Aggregate} is
+ * sufficient.
+ *
+ * <p>If there are multiple arguments
+ * (e.g. {@code COUNT(DISTINCT x), COUNT(DISTINCT y)})
+ * the rule creates separate {@code Aggregate}s and combines using a
+ * {@link org.apache.calcite.rel.core.Join}.
  */
-public final class RemoveDistinctAggregateRule extends RelOptRule {
+public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
   //~ Static fields/initializers ---------------------------------------------
 
   /** The default instance of the rule; operates only on logical expressions. */
-  public static final RemoveDistinctAggregateRule INSTANCE =
-      new RemoveDistinctAggregateRule(AggregateRel.class,
+  public static final AggregateExpandDistinctAggregatesRule INSTANCE =
+      new AggregateExpandDistinctAggregatesRule(LogicalAggregate.class,
           RelFactories.DEFAULT_JOIN_FACTORY);
 
   private final RelFactories.JoinFactory joinFactory;
 
   //~ Constructors -----------------------------------------------------------
 
-  public RemoveDistinctAggregateRule(Class<? extends AggregateRel> clazz,
+  public AggregateExpandDistinctAggregatesRule(
+      Class<? extends LogicalAggregate> clazz,
       RelFactories.JoinFactory joinFactory) {
     super(operand(clazz, any()));
     this.joinFactory = joinFactory;
@@ -55,7 +85,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
   //~ Methods ----------------------------------------------------------------
 
   public void onMatch(RelOptRuleCall call) {
-    final AggregateRelBase aggregate = call.rel(0);
+    final Aggregate aggregate = call.rel(0);
     if (!aggregate.containsDistinctCall()) {
       return;
     }
@@ -125,9 +155,9 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
       rel = null;
     } else {
       rel =
-          new AggregateRel(
+          new LogicalAggregate(
               aggregate.getCluster(),
-              aggregate.getChild(),
+              aggregate.getInput(),
               groupSet,
               newAggCallList);
     }
@@ -149,7 +179,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
    * and no non-distinct aggregate functions.
    */
   private RelNode convertMonopole(
-      AggregateRelBase aggregate,
+      Aggregate aggregate,
       List<Integer> argList) {
     // For example,
     //    SELECT deptno, COUNT(DISTINCT sal), SUM(DISTINCT sal)
@@ -167,7 +197,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
     // Project the columns of the GROUP BY plus the arguments
     // to the agg function.
     Map<Integer, Integer> sourceOf = new HashMap<Integer, Integer>();
-    final AggregateRelBase distinct =
+    final Aggregate distinct =
         createSelectDistinct(aggregate, argList, sourceOf);
 
     // Create an aggregate on top, with the new aggregate list.
@@ -201,7 +231,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
    * @return Relational expression
    */
   private RelNode doRewrite(
-      AggregateRelBase aggregate,
+      Aggregate aggregate,
       RelNode left,
       List<Integer> argList,
       List<RexInputRef> refs) {
@@ -213,16 +243,16 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
       leftFields = left.getRowType().getFieldList();
     }
 
-    // AggregateRel(
+    // LogicalAggregate(
     //     child,
     //     {COUNT(DISTINCT 1), SUM(DISTINCT 1), SUM(2)})
     //
     // becomes
     //
-    // AggregateRel(
-    //     JoinRel(
+    // LogicalAggregate(
+    //     LogicalJoin(
     //         child,
-    //         AggregateRel(child, < all columns > {}),
+    //         LogicalAggregate(child, < all columns > {}),
     //         INNER,
     //         <f2 = f5>))
     //
@@ -257,7 +287,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
     // Project the columns of the GROUP BY plus the arguments
     // to the agg function.
     Map<Integer, Integer> sourceOf = new HashMap<Integer, Integer>();
-    final AggregateRelBase distinct =
+    final Aggregate distinct =
         createSelectDistinct(aggregate, argList, sourceOf);
 
     // Now compute the aggregate functions on top of the distinct dataset.
@@ -312,7 +342,7 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
       aggCallList.add(newAggCall);
     }
 
-    AggregateRelBase distinctAgg =
+    Aggregate distinctAgg =
         aggregate.copy(
             aggregate.getTraitSet(),
             distinct,
@@ -390,7 +420,8 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
   }
 
   /**
-   * Given an {@link AggregateRel} and the ordinals of the arguments to a
+   * Given an {@link org.apache.calcite.rel.logical.LogicalAggregate}
+   * and the ordinals of the arguments to a
    * particular call to an aggregate function, creates a 'select distinct'
    * relational expression which projects the group columns and those
    * arguments but nothing else.
@@ -424,13 +455,13 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
    * @return Aggregate relational expression which projects the required
    * columns
    */
-  private static AggregateRelBase createSelectDistinct(
-      AggregateRelBase aggregate,
+  private static Aggregate createSelectDistinct(
+      Aggregate aggregate,
       List<Integer> argList,
       Map<Integer, Integer> sourceOf) {
     final List<Pair<RexNode, String>> projects =
         new ArrayList<Pair<RexNode, String>>();
-    final RelNode child = aggregate.getChild();
+    final RelNode child = aggregate.getInput();
     final List<RelDataTypeField> childFields =
         child.getRowType().getFieldList();
     for (int i : BitSets.toIter(aggregate.getGroupSet())) {
@@ -457,4 +488,4 @@ public final class RemoveDistinctAggregateRule extends RelOptRule {
   }
 }
 
-// End RemoveDistinctAggregateRule.java
+// End AggregateExpandDistinctAggregatesRule.java

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
index c7b4f73..4b909cc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
@@ -14,34 +14,33 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.rules;
+package org.apache.calcite.rel.rules;
 
-import java.util.BitSet;
-import java.util.List;
-
-import org.eigenbase.rel.AggregateCall;
-import org.eigenbase.rel.AggregateRelBase;
-import org.eigenbase.rel.Aggregation;
-import org.eigenbase.rel.FilterRelBase;
-import org.eigenbase.rel.RelNode;
-import org.eigenbase.rel.metadata.RelMetadataQuery;
-import org.eigenbase.relopt.RelOptRule;
-import org.eigenbase.relopt.RelOptRuleCall;
-import org.eigenbase.relopt.RelOptUtil;
-import org.eigenbase.relopt.SubstitutionVisitor;
-import org.eigenbase.rex.RexNode;
-import org.eigenbase.rex.RexUtil;
-import org.eigenbase.util.mapping.Mappings;
-
-import net.hydromatic.optiq.util.BitSets;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.SubstitutionVisitor;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Filter;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.mapping.Mappings;
 
 import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
+import java.util.BitSet;
+import java.util.List;
+
 /**
- * Planner rule that matches an {@link org.eigenbase.rel.AggregateRelBase}
- * on a {@link org.eigenbase.rel.FilterRelBase} and transposes them,
+ * Planner rule that matches an {@link org.apache.calcite.rel.core.Aggregate}
+ * on a {@link org.apache.calcite.rel.core.Filter} and transposes them,
  * pushing the aggregate below the filter.
  *
  * <p>In some cases, it is necessary to split the aggregate.
@@ -52,7 +51,7 @@ import com.google.common.collect.Lists;
  * evaluate. The main use of the rule is to match a query that has a filter
  * under an aggregate to an existing aggregate table.
  *
- * @see org.eigenbase.rel.rules.FilterAggregateTransposeRule
+ * @see org.apache.calcite.rel.rules.FilterAggregateTransposeRule
  */
 public class AggregateFilterTransposeRule extends RelOptRule {
   public static final AggregateFilterTransposeRule INSTANCE =
@@ -60,20 +59,20 @@ public class AggregateFilterTransposeRule extends RelOptRule {
 
   private AggregateFilterTransposeRule() {
     super(
-        operand(AggregateRelBase.class,
-            operand(FilterRelBase.class, any())));
+        operand(Aggregate.class,
+            operand(Filter.class, any())));
   }
 
   public void onMatch(RelOptRuleCall call) {
-    final AggregateRelBase aggregate = call.rel(0);
-    final FilterRelBase filter = call.rel(1);
+    final Aggregate aggregate = call.rel(0);
+    final Filter filter = call.rel(1);
 
     // Do the columns used by the filter appear in the output of the aggregate?
     final BitSet filterColumns =
         RelOptUtil.InputFinder.bits(filter.getCondition());
     final BitSet newGroupSet =
         BitSets.union(aggregate.getGroupSet(), filterColumns);
-    final RelNode input = filter.getChild();
+    final RelNode input = filter.getInput();
     final Boolean unique =
         RelMetadataQuery.areColumnsUnique(input, newGroupSet);
     if (unique != null && unique) {
@@ -82,7 +81,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
       // the rule fires forever: A-F => A-F-A => A-A-F-A => A-A-A-F-A => ...
       return;
     }
-    final AggregateRelBase newAggregate =
+    final Aggregate newAggregate =
         aggregate.copy(aggregate.getTraitSet(), input, newGroupSet,
             aggregate.getAggCallList());
     final Mappings.TargetMapping mapping = Mappings.target(
@@ -95,7 +94,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
         newGroupSet.cardinality());
     final RexNode newCondition =
         RexUtil.apply(mapping, filter.getCondition());
-    final FilterRelBase newFilter = filter.copy(filter.getTraitSet(),
+    final Filter newFilter = filter.copy(filter.getTraitSet(),
         newAggregate, newCondition);
     if (BitSets.contains(aggregate.getGroupSet(), filterColumns)) {
       // Everything needed by the filter is returned by the aggregate.
@@ -111,7 +110,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
       final List<AggregateCall> topAggCallList = Lists.newArrayList();
       int i = newGroupSet.cardinality();
       for (AggregateCall aggregateCall : aggregate.getAggCallList()) {
-        final Aggregation rollup =
+        final SqlAggFunction rollup =
             SubstitutionVisitor.getRollup(aggregateCall.getAggregation());
         if (rollup == null) {
           // This aggregate cannot be rolled up.
@@ -125,7 +124,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
             new AggregateCall(rollup, aggregateCall.isDistinct(),
                 ImmutableList.of(i++), aggregateCall.type, aggregateCall.name));
       }
-      final AggregateRelBase topAggregate =
+      final Aggregate topAggregate =
           aggregate.copy(aggregate.getTraitSet(), newFilter, topGroupSet,
               topAggCallList);
       call.transformTo(topAggregate);

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
index c97a8c9..8b1dafc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
@@ -14,30 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.eigenbase.rel.rules;
+package org.apache.calcite.rel.rules;
 
-import java.util.BitSet;
-import java.util.List;
-
-import org.eigenbase.rel.AggregateCall;
-import org.eigenbase.rel.AggregateRelBase;
-import org.eigenbase.rel.ProjectRelBase;
-import org.eigenbase.rel.RelFactories;
-import org.eigenbase.rel.RelNode;
-import org.eigenbase.relopt.RelOptRule;
-import org.eigenbase.relopt.RelOptRuleCall;
-import org.eigenbase.relopt.RelOptUtil;
-import org.eigenbase.rex.RexInputRef;
-import org.eigenbase.rex.RexNode;
-
-import net.hydromatic.optiq.util.BitSets;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.RelFactories;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.BitSets;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
+import java.util.BitSet;
+import java.util.List;
+
 /**
- * Planner rule that recognizes a {@link org.eigenbase.rel.AggregateRelBase}
- * on top of a {@link org.eigenbase.rel.ProjectRelBase} and if possible
+ * Planner rule that recognizes a {@link org.apache.calcite.rel.core.Aggregate}
+ * on top of a {@link org.apache.calcite.rel.core.Project} and if possible
  * aggregate through the project or removes the project.
  *
  * <p>This is only possible when the grouping expressions and arguments to
@@ -53,21 +52,21 @@ public class AggregateProjectMergeRule extends RelOptRule {
   /** Private constructor. */
   private AggregateProjectMergeRule() {
     super(
-        operand(AggregateRelBase.class,
-            operand(ProjectRelBase.class, any())));
+        operand(Aggregate.class,
+            operand(Project.class, any())));
   }
 
   public void onMatch(RelOptRuleCall call) {
-    final AggregateRelBase aggregate = call.rel(0);
-    final ProjectRelBase project = call.rel(1);
+    final Aggregate aggregate = call.rel(0);
+    final Project project = call.rel(1);
     RelNode x = apply(aggregate, project);
     if (x != null) {
       call.transformTo(x);
     }
   }
 
-  public static RelNode apply(AggregateRelBase aggregate,
-      ProjectRelBase project) {
+  public static RelNode apply(Aggregate aggregate,
+      Project project) {
     final List<Integer> newKeys = Lists.newArrayList();
     for (int key : BitSets.toIter(aggregate.getGroupSet())) {
       final RexNode rex = project.getProjects().get(key);
@@ -96,8 +95,8 @@ public class AggregateProjectMergeRule extends RelOptRule {
     }
 
     final BitSet newGroupSet = BitSets.of(newKeys);
-    final AggregateRelBase newAggregate =
-        aggregate.copy(aggregate.getTraitSet(), project.getChild(), newGroupSet,
+    final Aggregate newAggregate =
+        aggregate.copy(aggregate.getTraitSet(), project.getInput(), newGroupSet,
             aggCalls.build());
 
     // Add a project if the group set is not in the same order or