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:46 UTC
[38/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/AbstractRelNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java b/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
index 6cd21f2..4a60299 100644
--- a/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
+++ b/core/src/main/java/org/apache/calcite/rel/AbstractRelNode.java
@@ -14,24 +14,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
-
-import java.io.*;
-import java.util.*;
-import java.util.logging.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.trace.*;
-import org.eigenbase.util.*;
-
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel;
+
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.ConventionTraitDef;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptQuery;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTrait;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.externalize.RelWriterImpl;
+import org.apache.calcite.rel.metadata.Metadata;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
+import org.apache.calcite.util.trace.CalciteTrace;
import com.google.common.collect.ImmutableList;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
/**
* Base class for every relational expression ({@link RelNode}).
*/
@@ -44,7 +61,7 @@ public abstract class AbstractRelNode implements RelNode {
/** Generator for {@link #id} values. */
static int nextId = 0;
- private static final Logger LOGGER = EigenbaseTrace.getPlannerTracer();
+ private static final Logger LOGGER = CalciteTrace.getPlannerTracer();
//~ Instance fields --------------------------------------------------------
@@ -61,9 +78,9 @@ public abstract class AbstractRelNode implements RelNode {
/**
* A short description of this relational expression's type, inputs, and
* other properties. The string uniquely identifies the node; another node
- * is equivalent if and only if it has the same value. Computed by {@link
- * #computeDigest}, assigned by {@link #onRegister}, returned by {@link
- * #getDigest()}.
+ * is equivalent if and only if it has the same value. Computed by
+ * {@link #computeDigest}, assigned by {@link #onRegister}, returned by
+ * {@link #getDigest()}.
*
* @see #desc
*/
@@ -115,9 +132,10 @@ public abstract class AbstractRelNode implements RelNode {
&& traitSet == getTraitSet()) {
return this;
}
- throw new AssertionError(
- "Relational expression should override copy. Class=[" + getClass()
- + "]; traits=[" + getTraitSet() + "]; desired traits=[" + traitSet
+ throw new AssertionError("Relational expression should override copy. "
+ + "Class=[" + getClass()
+ + "]; traits=[" + getTraitSet()
+ + "]; desired traits=[" + traitSet
+ "]");
}
@@ -252,8 +270,8 @@ public abstract class AbstractRelNode implements RelNode {
}
public RelNode accept(RelShuttle shuttle) {
- // Call fall-back method. Specific logical types (such as ProjectRel
- // and JoinRel) have their own RelShuttle.visit methods.
+ // Call fall-back method. Specific logical types (such as LogicalProject
+ // and LogicalJoin) have their own RelShuttle.visit methods.
return shuttle.visit(this);
}
@@ -283,9 +301,10 @@ public abstract class AbstractRelNode implements RelNode {
/**
* Describes the inputs and attributes of this relational expression.
* Each node should call {@code super.explainTerms}, then call the
- * {@link RelWriterImpl#input(String, RelNode)}
- * and {@link RelWriterImpl#item(String, Object)} methods for each input
- * and attribute.
+ * {@link org.apache.calcite.rel.externalize.RelWriterImpl#input(String, RelNode)}
+ * and
+ * {@link org.apache.calcite.rel.externalize.RelWriterImpl#item(String, Object)}
+ * methods for each input and attribute.
*
* @param pw Plan writer
*/
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/Aggregation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/Aggregation.java b/core/src/main/java/org/apache/calcite/rel/Aggregation.java
deleted file mode 100644
index 2af9369..0000000
--- a/core/src/main/java/org/apache/calcite/rel/Aggregation.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.
- */
-package org.eigenbase.rel;
-
-import java.util.List;
-
-import org.eigenbase.reltype.*;
-
-/**
- * An <code>Aggregation</code> aggregates a set of values into one value.
- *
- * <p>It is used, via a {@link AggregateCall}, in an {@link AggregateRel}
- * relational operator.</p>
- *
- * @deprecated Use {@link org.eigenbase.sql.SqlAggFunction};
- * after {@link org.eigenbase.util.Bug#upgrade calcite-0.9.1},
- * {@link org.eigenbase.rel.AggregateCall} will require a {@code SqlAggFunction}
- * and after {@link org.eigenbase.util.Bug#upgrade calcite-0.9.2}
- * this interface will be removed.
- */
-public interface Aggregation {
- //~ Methods ----------------------------------------------------------------
-
- /**
- * Returns the parameter types accepted by this Aggregation.
- *
- * @param typeFactory Type factory to create the types
- * @return Array of parameter types
- *
- * @deprecated Use
- * {@link org.eigenbase.sql.SqlAggFunction#getOperandTypeInference()}; will
- * be removed after {@link org.eigenbase.util.Bug#upgrade calcite-0.9.2}.
- */
- List<RelDataType> getParameterTypes(RelDataTypeFactory typeFactory);
-
- /**
- * Returns the type of the result yielded by this Aggregation.
- *
- * @param typeFactory Type factory to create the type
- * @return Result type
- *
- * @deprecated Use
- * {@link org.eigenbase.sql.SqlAggFunction#getReturnTypeInference()}; will
- * be removed after {@link org.eigenbase.util.Bug#upgrade calcite-0.9.2}.
- */
- RelDataType getReturnType(RelDataTypeFactory typeFactory);
-
- /**
- * Returns the name of this Aggregation
- *
- * @return name of this aggregation
- */
- String getName();
-}
-
-// End Aggregation.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/InvalidRelException.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/InvalidRelException.java b/core/src/main/java/org/apache/calcite/rel/InvalidRelException.java
index e29b093..0852967 100644
--- a/core/src/main/java/org/apache/calcite/rel/InvalidRelException.java
+++ b/core/src/main/java/org/apache/calcite/rel/InvalidRelException.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;
/**
* Exception that indicates that a relational expression would be invalid
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelCollation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelCollation.java b/core/src/main/java/org/apache/calcite/rel/RelCollation.java
index 5b80ac9..3aed2e9 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelCollation.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelCollation.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
-import java.util.*;
+import org.apache.calcite.plan.RelTrait;
-import org.eigenbase.relopt.RelTrait;
+import java.util.List;
/**
* Description of the physical ordering of a relational expression.
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelCollationImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelCollationImpl.java b/core/src/main/java/org/apache/calcite/rel/RelCollationImpl.java
index 218529e..363c190 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelCollationImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelCollationImpl.java
@@ -14,20 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
-import java.util.*;
-
-import org.eigenbase.relopt.RelOptPlanner;
-import org.eigenbase.relopt.RelTrait;
-import org.eigenbase.relopt.RelTraitDef;
-import org.eigenbase.reltype.*;
-import org.eigenbase.util.Util;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTrait;
+import org.apache.calcite.plan.RelTraitDef;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.util.Util;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import java.util.Iterator;
+import java.util.List;
+
/**
* Simple implementation of {@link RelCollation}.
*/
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java b/core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java
index 9c918a8..dc935fd 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelCollationTraitDef.java
@@ -14,20 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
-import org.eigenbase.relopt.*;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitDef;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.core.Sort;
/**
* Definition of the ordering trait.
*
* <p>Ordering is a physical property (i.e. a trait) because it can be changed
- * without loss of information. The converter to do this is the {@link SortRel}
- * operator.</p>
+ * without loss of information. The converter to do this is the
+ * {@link org.apache.calcite.rel.core.Sort} operator.
*
* <p>Unlike other current traits, a {@link RelNode} can have more than one
* value of this trait simultaneously. For example,
- * <code>TableAccessRel(table=TIME_BY_DAY)</code> might be sorted by
+ * <code>LogicalTableScan(table=TIME_BY_DAY)</code> might be sorted by
* <code>{the_year, the_month, the_date}</code> and also by
* <code>{time_id}</code>. We have to allow a RelNode to belong to more than
* one RelSubset (these RelSubsets are always in the same set).</p>
@@ -47,8 +51,7 @@ public class RelCollationTraitDef extends RelTraitDef<RelCollation> {
return "sort";
}
- @Override
- public boolean multiple() {
+ @Override public boolean multiple() {
return true;
}
@@ -73,8 +76,8 @@ public class RelCollationTraitDef extends RelTraitDef<RelCollation> {
// Create a logical sort, then ask the planner to convert its remaining
// traits (e.g. convert it to an EnumerableSortRel if rel is enumerable
// convention)
- final SortRel sort =
- new SortRel(
+ final Sort sort =
+ new Sort(
rel.getCluster(),
rel.getCluster().traitSetOf(Convention.NONE, toCollation),
rel,
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelFieldCollation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelFieldCollation.java b/core/src/main/java/org/apache/calcite/rel/RelFieldCollation.java
index 0e3593f..dba73f8 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelFieldCollation.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelFieldCollation.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;
/**
* Definition of the ordering of one field of a {@link RelNode} whose
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelImplementorImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelImplementorImpl.java b/core/src/main/java/org/apache/calcite/rel/RelImplementorImpl.java
index e871f00..8e42bed 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelImplementorImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelImplementorImpl.java
@@ -14,7 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
+
+import org.apache.calcite.plan.RelImplementor;
+import org.apache.calcite.rel.core.Join;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.util.trace.CalciteTrace;
import java.util.ArrayList;
import java.util.HashMap;
@@ -22,17 +28,12 @@ import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
-import org.eigenbase.relopt.RelImplementor;
-import org.eigenbase.reltype.RelDataTypeFactory;
-import org.eigenbase.rex.RexBuilder;
-import org.eigenbase.trace.EigenbaseTrace;
-
/**
* Implementation of {@link RelImplementor}.
*/
public class RelImplementorImpl implements RelImplementor {
protected static final Logger LOGGER =
- EigenbaseTrace.getRelImplementorTracer();
+ CalciteTrace.getRelImplementorTracer();
/**
* Maps a {@link String} to the {@link RelImplementorImpl.Frame} whose
@@ -42,7 +43,7 @@ public class RelImplementorImpl implements RelImplementor {
new HashMap<String, Frame>();
/**
- * Maps a {@link org.eigenbase.rel.RelNode} to the unique frame whose
+ * Maps a {@link RelNode} to the unique frame whose
* {@link RelImplementorImpl.Frame#rel} is
* that relational expression.
*/
@@ -105,7 +106,7 @@ public class RelImplementorImpl implements RelImplementor {
RelNode rel,
int offset,
int[] offsets) {
- if (rel instanceof JoinRelBase) {
+ if (rel instanceof Join) {
// no variable here -- go deeper
List<RelNode> inputs = rel.getInputs();
for (RelNode input : inputs) {
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelInput.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelInput.java b/core/src/main/java/org/apache/calcite/rel/RelInput.java
index 963a0eb..0eff922 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelInput.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelInput.java
@@ -14,16 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexNode;
import java.util.BitSet;
import java.util.List;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.RelDataType;
-import org.eigenbase.rex.RexLiteral;
-import org.eigenbase.rex.RexNode;
-
/**
* Context from which a relational expression can initialize itself,
* reading from a serialized form of the relational expression.
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelNode.java b/core/src/main/java/org/apache/calcite/rel/RelNode.java
index b896790..50da558 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelNode.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelNode.java
@@ -14,27 +14,39 @@
* 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.*;
+package org.apache.calcite.rel;
+
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptNode;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptQuery;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.metadata.Metadata;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
+
+import java.util.BitSet;
+import java.util.List;
+import java.util.Set;
/**
* A <code>RelNode</code> is a relational expression.
*
+ * <p>Relational expressions process data, so their names are typically verbs:
+ * Sort, Join, Project, Filter, Scan, Sample.
+ *
* <p>A relational expression is not a scalar expression; see
- * {@link org.eigenbase.sql.SqlNode} and {@link RexNode}.</p>
+ * {@link org.apache.calcite.sql.SqlNode} and {@link RexNode}.</p>
*
* <p>If this type of relational expression has some particular planner rules,
* it should implement the <em>public static</em> method
* {@link AbstractRelNode#register}.</p>
*
* <p>When a relational expression comes to be implemented, the system allocates
- * a {@link org.eigenbase.relopt.RelImplementor} to manage the process. Every
+ * a {@link org.apache.calcite.plan.RelImplementor} to manage the process. Every
* implementable relational expression has a {@link RelTraitSet} describing its
* physical attributes. The RelTraitSet always contains a {@link Convention}
* describing how the expression passes data to its consuming
@@ -44,9 +56,10 @@ import org.eigenbase.rex.*;
* those traits configured by the RelNode itself).</p>
*
* <p>For each calling-convention, there is a corresponding sub-interface of
- * RelNode. For example, {@code net.hydromatic.optiq.rules.java.EnumerableRel}
+ * RelNode. For example,
+ * {@code org.apache.calcite.adapter.enumerable.EnumerableRel}
* has operations to manage the conversion to a graph of
- * {@code net.hydromatic.optiq.rules.java.EnumerableConvention}
+ * {@code org.apache.calcite.adapter.enumerable.EnumerableConvention}
* calling-convention, and it interacts with a
* {@code EnumerableRelImplementor}.</p>
*
@@ -75,8 +88,8 @@ public interface RelNode extends RelOptNode, Cloneable {
List<RexNode> getChildExps();
/**
- * Return the CallingConvention trait from this RelNode's {@link
- * #getTraitSet() trait set}.
+ * Return the CallingConvention trait from this RelNode's
+ * {@link #getTraitSet() trait set}.
*
* @return this RelNode's CallingConvention
*/
@@ -122,8 +135,8 @@ public interface RelNode extends RelOptNode, Cloneable {
/**
* Returns the sub-query this relational expression belongs to. A sub-query
- * determines the scope for correlating variables (see {@link
- * #setCorrelVariable(String)}).
+ * determines the scope for correlating variables (see
+ * {@link #setCorrelVariable(String)}).
*
* @return Sub-query
*/
@@ -135,8 +148,8 @@ public interface RelNode extends RelOptNode, Cloneable {
RelDataType getRowType();
/**
- * Returns the type of the rows expected for an input. Defaults to {@link
- * #getRowType}.
+ * Returns the type of the rows expected for an input. Defaults to
+ * {@link #getRowType}.
*
* @param ordinalInParent input's 0-based ordinal with respect to this
* parent rel
@@ -188,9 +201,9 @@ public interface RelNode extends RelOptNode, Cloneable {
void collectVariablesSet(Set<String> variableSet);
/**
- * Interacts with the {@link RelVisitor} in a {@link
- * org.eigenbase.util.Glossary#VISITOR_PATTERN visitor pattern} to traverse
- * the tree of relational expressions.
+ * Interacts with the {@link RelVisitor} in a
+ * {@link org.apache.calcite.util.Glossary#VISITOR_PATTERN visitor pattern} to
+ * traverse the tree of relational expressions.
*/
void childrenAccept(RelVisitor visitor);
@@ -218,9 +231,10 @@ public interface RelNode extends RelOptNode, Cloneable {
/**
* Describes the inputs and attributes of this relational expression.
* Each node should call {@code super.explain}, then call the
- * {@link RelWriterImpl#input(String, RelNode)}
- * and {@link RelWriterImpl#item(String, Object)} methods for each input
- * and attribute.
+ * {@link org.apache.calcite.rel.externalize.RelWriterImpl#input(String, RelNode)}
+ * and
+ * {@link org.apache.calcite.rel.externalize.RelWriterImpl#item(String, Object)}
+ * methods for each input and attribute.
*
* @param pw Plan writer
*/
@@ -262,7 +276,7 @@ public interface RelNode extends RelOptNode, Cloneable {
/**
* Returns the name of this relational expression's class, sans package
* name, for use in explain. For example, for a <code>
- * org.eigenbase.rel.ArrayRel.ArrayReader</code>, this method returns
+ * org.apache.calcite.rel.ArrayRel.ArrayReader</code>, this method returns
* "ArrayReader".
*/
String getRelTypeName();
@@ -314,9 +328,9 @@ public interface RelNode extends RelOptNode, Cloneable {
* expression.
*
* <p>The planner calls this method this first time that it sees a
- * relational expression of this class. The derived class should call {@link
- * org.eigenbase.relopt.RelOptPlanner#addRule} for each rule, and then call
- * {@code super.register}.</p>
+ * relational expression of this class. The derived class should call
+ * {@link org.apache.calcite.plan.RelOptPlanner#addRule} for each rule, and
+ * then call {@code super.register}.</p>
*/
void register(RelOptPlanner planner);
@@ -324,7 +338,7 @@ public interface RelNode extends RelOptNode, Cloneable {
* Returns whether the result of this relational expression is uniquely
* identified by this columns with the given ordinals.
*
- * <p>For example, if this relational expression is a TableAccessRel to
+ * <p>For example, if this relational expression is a LogicalTableScan to
* T(A, B, C, D) whose key is (A, B), then isKey([0, 1]) yields true,
* and isKey([0]) and isKey([0, 2]) yields false.</p>
*
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelShuttle.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelShuttle.java b/core/src/main/java/org/apache/calcite/rel/RelShuttle.java
index c103879..c1e1915 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelShuttle.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelShuttle.java
@@ -14,35 +14,48 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
+
+import org.apache.calcite.rel.core.Correlator;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableFunctionScan;
+import org.apache.calcite.rel.core.TableScan;
+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.LogicalProject;
+import org.apache.calcite.rel.logical.LogicalUnion;
+import org.apache.calcite.rel.logical.LogicalValues;
/**
* Visitor that has methods for the common logical relational expressions.
*/
public interface RelShuttle {
- RelNode visit(TableAccessRelBase scan);
+ RelNode visit(TableScan scan);
- RelNode visit(TableFunctionRelBase scan);
+ RelNode visit(TableFunctionScan scan);
- RelNode visit(ValuesRel values);
+ RelNode visit(LogicalValues values);
- RelNode visit(FilterRel filter);
+ RelNode visit(LogicalFilter filter);
- RelNode visit(ProjectRel project);
+ RelNode visit(LogicalProject project);
- RelNode visit(JoinRel join);
+ RelNode visit(LogicalJoin join);
- RelNode visit(CorrelatorRel correlator);
+ RelNode visit(Correlator correlator);
- RelNode visit(UnionRel union);
+ RelNode visit(LogicalUnion union);
- RelNode visit(IntersectRel intersect);
+ RelNode visit(LogicalIntersect intersect);
- RelNode visit(MinusRel minus);
+ RelNode visit(LogicalMinus minus);
- RelNode visit(AggregateRel aggregate);
+ RelNode visit(LogicalAggregate aggregate);
- RelNode visit(SortRel sort);
+ RelNode visit(Sort sort);
RelNode visit(RelNode other);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelShuttleImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelShuttleImpl.java b/core/src/main/java/org/apache/calcite/rel/RelShuttleImpl.java
index b3d3502..6b7cb96 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelShuttleImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelShuttleImpl.java
@@ -14,19 +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;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.rel.core.Correlator;
+import org.apache.calcite.rel.core.Sort;
+import org.apache.calcite.rel.core.TableFunctionScan;
+import org.apache.calcite.rel.core.TableScan;
+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.LogicalProject;
+import org.apache.calcite.rel.logical.LogicalUnion;
+import org.apache.calcite.rel.logical.LogicalValues;
+import org.apache.calcite.util.Stacks;
import java.util.ArrayList;
import java.util.List;
-import org.eigenbase.util.Stacks;
-
-import net.hydromatic.linq4j.Ord;
-
/**
* Basic implementation of {@link RelShuttle} that calls
* {@link RelNode#accept(RelShuttle)} on each child, and
- * {@link RelNode#copy(org.eigenbase.relopt.RelTraitSet, java.util.List)} if
+ * {@link RelNode#copy(org.apache.calcite.plan.RelTraitSet, java.util.List)} if
* any children change.
*/
public class RelShuttleImpl implements RelShuttle {
@@ -58,51 +69,51 @@ public class RelShuttleImpl implements RelShuttle {
return rel;
}
- public RelNode visit(AggregateRel aggregate) {
- return visitChild(aggregate, 0, aggregate.getChild());
+ public RelNode visit(LogicalAggregate aggregate) {
+ return visitChild(aggregate, 0, aggregate.getInput());
}
- public RelNode visit(TableAccessRelBase scan) {
+ public RelNode visit(TableScan scan) {
return scan;
}
- public RelNode visit(TableFunctionRelBase scan) {
+ public RelNode visit(TableFunctionScan scan) {
return visitChildren(scan);
}
- public RelNode visit(ValuesRel values) {
+ public RelNode visit(LogicalValues values) {
return values;
}
- public RelNode visit(FilterRel filter) {
- return visitChild(filter, 0, filter.getChild());
+ public RelNode visit(LogicalFilter filter) {
+ return visitChild(filter, 0, filter.getInput());
}
- public RelNode visit(ProjectRel project) {
- return visitChild(project, 0, project.getChild());
+ public RelNode visit(LogicalProject project) {
+ return visitChild(project, 0, project.getInput());
}
- public RelNode visit(JoinRel join) {
+ public RelNode visit(LogicalJoin join) {
return visitChildren(join);
}
- public RelNode visit(CorrelatorRel correlator) {
+ public RelNode visit(Correlator correlator) {
return visitChildren(correlator);
}
- public RelNode visit(UnionRel union) {
+ public RelNode visit(LogicalUnion union) {
return visitChildren(union);
}
- public RelNode visit(IntersectRel intersect) {
+ public RelNode visit(LogicalIntersect intersect) {
return visitChildren(intersect);
}
- public RelNode visit(MinusRel minus) {
+ public RelNode visit(LogicalMinus minus) {
return visitChildren(minus);
}
- public RelNode visit(SortRel sort) {
+ public RelNode visit(Sort sort) {
return visitChildren(sort);
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelVisitor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelVisitor.java b/core/src/main/java/org/apache/calcite/rel/RelVisitor.java
index 82186db..1a77690 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelVisitor.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelVisitor.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
/**
- * A <code>RelVisitor</code> is a Visitor role in the {@link
- * org.eigenbase.util.Glossary#VISITOR_PATTERN visitor pattern} and visits {@link
- * RelNode} objects as the role of Element. Other components in the pattern:
- * {@link RelNode#childrenAccept(RelVisitor)}.
+ * A <code>RelVisitor</code> is a Visitor role in the
+ * {@link org.apache.calcite.util.Glossary#VISITOR_PATTERN visitor pattern} and
+ * visits {@link RelNode} objects as the role of Element. Other components in
+ * the pattern: {@link RelNode#childrenAccept(RelVisitor)}.
*/
public abstract class RelVisitor {
//~ Instance fields --------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/RelWriter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/RelWriter.java b/core/src/main/java/org/apache/calcite/rel/RelWriter.java
index bde35d6..fa63bc2 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelWriter.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelWriter.java
@@ -14,12 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
-import java.util.List;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.Pair;
-import org.eigenbase.sql.SqlExplainLevel;
-import org.eigenbase.util.Pair;
+import java.util.List;
/**
* Callback for an expression to dump itself to.
@@ -32,8 +32,9 @@ public interface RelWriter {
* Prints an explanation of a node, with a list of (term, value) pairs.
*
* <p>The term-value pairs are generally gathered by calling
- * {@link RelNode#explain(RelWriter)}. Each sub-class of
- * {@link RelNode} calls {@link #input(String, org.eigenbase.rel.RelNode)}
+ * {@link org.apache.calcite.rel.RelNode#explain(RelWriter)}.
+ * Each sub-class of {@link org.apache.calcite.rel.RelNode}
+ * calls {@link #input(String, org.apache.calcite.rel.RelNode)}
* and {@link #item(String, Object)} to declare term-value pairs.</p>
*
* @param rel Relational expression
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/SingleRel.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/SingleRel.java b/core/src/main/java/org/apache/calcite/rel/SingleRel.java
index c7d6f53..27e0bf6 100644
--- a/core/src/main/java/org/apache/calcite/rel/SingleRel.java
+++ b/core/src/main/java/org/apache/calcite/rel/SingleRel.java
@@ -14,75 +14,78 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel;
-import java.util.Collections;
-import java.util.List;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+
+import com.google.common.collect.ImmutableList;
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
+import java.util.List;
/**
- * A <code>SingleRel</code> is a base class single-input relational expressions.
+ * Abstract base class for relational expressions with a single input.
+ *
+ * <p>It is not required that single-input relational expressions use this
+ * class as a base class. However, default implementations of methods make life
+ * easier.
*/
public abstract class SingleRel extends AbstractRelNode {
//~ Instance fields --------------------------------------------------------
- private RelNode child;
+ private RelNode input;
//~ Constructors -----------------------------------------------------------
/**
* Creates a <code>SingleRel</code>.
*
- * @param cluster {@link RelOptCluster} this relational expression belongs
- * to
- * @param child input relational expression
+ * @param cluster Cluster this relational expression belongs to
+ * @param input Input relational expression
*/
protected SingleRel(
RelOptCluster cluster,
RelTraitSet traits,
- RelNode child) {
+ RelNode input) {
super(cluster, traits);
- this.child = child;
+ this.input = input;
}
//~ Methods ----------------------------------------------------------------
- public RelNode getChild() {
- return child;
+ public RelNode getInput() {
+ return input;
}
- // implement RelNode
- public List<RelNode> getInputs() {
- return Collections.singletonList(child);
+ @Override public List<RelNode> getInputs() {
+ return ImmutableList.of(input);
}
- public double getRows() {
- // Not necessarily correct, but a better default than Rel's 1.0
- return RelMetadataQuery.getRowCount(child);
+ @Override public double getRows() {
+ // Not necessarily correct, but a better default than AbstractRelNode's 1.0
+ return RelMetadataQuery.getRowCount(input);
}
- public void childrenAccept(RelVisitor visitor) {
- visitor.visit(child, 0, this);
+ @Override public void childrenAccept(RelVisitor visitor) {
+ visitor.visit(input, 0, this);
}
public RelWriter explainTerms(RelWriter pw) {
return super.explainTerms(pw)
- .input("child", getChild());
+ .input("input", getInput());
}
- // override Rel
- public void replaceInput(
+ @Override public void replaceInput(
int ordinalInParent,
RelNode rel) {
assert ordinalInParent == 0;
- this.child = rel;
+ this.input = rel;
}
protected RelDataType deriveRowType() {
- return child.getRowType();
+ return input.getRowType();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/Converter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/Converter.java b/core/src/main/java/org/apache/calcite/rel/convert/Converter.java
index ec078de..b84c30a 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/Converter.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/Converter.java
@@ -14,16 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
+import org.apache.calcite.plan.RelTraitDef;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelNode;
/**
- * A relational expression implements the interface <code>ConverterRel</code> to
- * indicate that it converts a physical attribute, or {@link
- * org.eigenbase.relopt.RelTrait trait}, of a relational expression from one
- * value to another.
+ * A relational expression implements the interface <code>Converter</code> to
+ * indicate that it converts a physical attribute, or
+ * {@link org.apache.calcite.plan.RelTrait trait}, of a relational expression
+ * from one value to another.
*
* <p>Sometimes this conversion is expensive; for example, to convert a
* non-distinct to a distinct object stream, we have to clone every object in
@@ -39,11 +40,11 @@ import org.eigenbase.relopt.*;
* <p>In principle one could devise converters which change multiple traits
* simultaneously (say change the sort-order and the physical location of a
* relational expression). In which case, the method {@link #getInputTraits()}
- * would return a {@link org.eigenbase.relopt.RelTraitSet}. But for simplicity,
- * this class only allows one trait to be converted at a time; all other traits
- * are assumed to be preserved.</p>
+ * would return a {@link org.apache.calcite.plan.RelTraitSet}. But for
+ * simplicity, this class only allows one trait to be converted at a
+ * time; all other traits are assumed to be preserved.</p>
*/
-public interface ConverterRel extends RelNode {
+public interface Converter extends RelNode {
//~ Methods ----------------------------------------------------------------
/**
@@ -70,7 +71,7 @@ public interface ConverterRel extends RelNode {
*
* @return child relational expression
*/
- RelNode getChild();
+ RelNode getInput();
}
-// End ConverterRel.java
+// End Converter.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/ConverterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/ConverterImpl.java b/core/src/main/java/org/apache/calcite/rel/convert/ConverterImpl.java
index 6859cc2..15d1375 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/ConverterImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/ConverterImpl.java
@@ -14,18 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
-import org.eigenbase.rel.*;
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.util.*;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitDef;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.util.Util;
/**
- * Abstract implementation of {@link org.eigenbase.rel.convert.ConverterRel}.
+ * Abstract implementation of {@link Converter}.
*/
-public abstract class ConverterRelImpl extends SingleRel
- implements ConverterRel {
+public abstract class ConverterImpl extends SingleRel
+ implements Converter {
//~ Instance fields --------------------------------------------------------
protected RelTraitSet inTraits;
@@ -34,14 +39,14 @@ public abstract class ConverterRelImpl extends SingleRel
//~ Constructors -----------------------------------------------------------
/**
- * Creates a ConverterRelImpl.
+ * Creates a ConverterImpl.
*
* @param cluster planner's cluster
* @param traitDef the RelTraitDef this converter converts
* @param traits the output traits of this converter
* @param child child rel (provides input traits)
*/
- protected ConverterRelImpl(
+ protected ConverterImpl(
RelOptCluster cluster,
RelTraitDef traitDef,
RelTraitSet traits,
@@ -55,7 +60,7 @@ public abstract class ConverterRelImpl extends SingleRel
// implement RelNode
public RelOptCost computeSelfCost(RelOptPlanner planner) {
- double dRows = RelMetadataQuery.getRowCount(getChild());
+ double dRows = RelMetadataQuery.getRowCount(getInput());
double dCpu = dRows;
double dIo = 0;
return planner.getCostFactory().makeCost(dRows, dCpu, dIo);
@@ -68,7 +73,7 @@ public abstract class ConverterRelImpl extends SingleRel
}
public boolean isDistinct() {
- return getChild().isDistinct();
+ return getInput().isDistinct();
}
public RelTraitSet getInputTraits() {
@@ -81,4 +86,4 @@ public abstract class ConverterRelImpl extends SingleRel
}
-// End ConverterRelImpl.java
+// End ConverterImpl.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/ConverterRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/ConverterRule.java b/core/src/main/java/org/apache/calcite/rel/convert/ConverterRule.java
index 2724c52..55e243e 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/ConverterRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/ConverterRule.java
@@ -14,10 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelOptRuleOperand;
+import org.apache.calcite.plan.RelTrait;
+import org.apache.calcite.plan.RelTraitDef;
+import org.apache.calcite.rel.RelNode;
import com.google.common.base.Predicates;
@@ -117,9 +122,9 @@ public abstract class ConverterRule extends RelOptRule {
// Don't apply converters to converters that operate
// on the same RelTraitDef -- otherwise we get
// an n^2 effect.
- if (rel instanceof ConverterRel) {
+ if (rel instanceof Converter) {
if (((ConverterRule) getRule()).getTraitDef()
- == ((ConverterRel) rel).getTraitDef()) {
+ == ((Converter) rel).getTraitDef()) {
return false;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/NoneConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/NoneConverter.java b/core/src/main/java/org/apache/calcite/rel/convert/NoneConverter.java
index 102d68d..dc1fa08 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/NoneConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/NoneConverter.java
@@ -14,22 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
-import java.util.List;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.ConventionTraitDef;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.util.Util;
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.util.*;
+import java.util.List;
/**
* <code>NoneConverter</code> converts a plan from <code>inConvention</code> to
- * {@link org.eigenbase.relopt.Convention#NONE}.
+ * {@link org.apache.calcite.plan.Convention#NONE}.
*/
-public class NoneConverterRel extends ConverterRelImpl {
+public class NoneConverter extends ConverterImpl {
//~ Constructors -----------------------------------------------------------
- public NoneConverterRel(
+ public NoneConverter(
RelOptCluster cluster,
RelNode child) {
super(
@@ -44,7 +48,7 @@ public class NoneConverterRel extends ConverterRelImpl {
public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
assert traitSet.comprises(Convention.NONE);
- return new NoneConverterRel(
+ return new NoneConverter(
getCluster(),
sole(inputs));
}
@@ -55,4 +59,4 @@ public class NoneConverterRel extends ConverterRelImpl {
}
}
-// End NoneConverterRel.java
+// End NoneConverter.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/TraitMatchingRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/TraitMatchingRule.java b/core/src/main/java/org/apache/calcite/rel/convert/TraitMatchingRule.java
index 12a6efc..63f621c 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/TraitMatchingRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/TraitMatchingRule.java
@@ -14,15 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.*;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelOptRuleOperandChildPolicy;
+import org.apache.calcite.rel.RelNode;
/**
* TraitMatchingRule adapts a converter rule, restricting it to fire only when
* its input already matches the expected output trait. This can be used with
- * {@link org.eigenbase.relopt.hep.HepPlanner} in cases where alternate
+ * {@link org.apache.calcite.plan.hep.HepPlanner} in cases where alternate
* implementations are available and it is desirable to minimize converters.
*/
public class TraitMatchingRule extends RelOptRule {
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/convert/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/convert/package-info.java b/core/src/main/java/org/apache/calcite/rel/convert/package-info.java
index 5b813a2..cf1032c 100644
--- a/core/src/main/java/org/apache/calcite/rel/convert/package-info.java
+++ b/core/src/main/java/org/apache/calcite/rel/convert/package-info.java
@@ -19,6 +19,6 @@
* Defines relational expressions and rules for converting between calling
* conventions.
*/
-package org.eigenbase.rel.convert;
+package org.apache.calcite.rel.convert;
// End package-info.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java b/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
index 6de37b3..920ef46 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
@@ -14,30 +14,58 @@
* 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.resource.Resources;
-import org.eigenbase.sql.*;
-import org.eigenbase.sql.parser.*;
-import org.eigenbase.sql.validate.*;
-import org.eigenbase.util.*;
-
-import net.hydromatic.linq4j.Ord;
-
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.core;
+
+import org.apache.calcite.linq4j.Ord;
+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.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.RelDataTypeFactory;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rel.type.RelDataTypeFieldImpl;
+import org.apache.calcite.runtime.CalciteException;
+import org.apache.calcite.runtime.Resources;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.sql.SqlOperatorBinding;
+import org.apache.calcite.sql.SqlUtil;
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.sql.validate.SqlValidatorException;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.CompositeList;
+import org.apache.calcite.util.IntList;
+import org.apache.calcite.util.Util;
import com.google.common.collect.ImmutableList;
+import java.util.AbstractList;
+import java.util.BitSet;
+import java.util.List;
+
/**
- * <code>AggregateRelBase</code> is an abstract base class for implementations
- * of {@link AggregateRel}.
+ * Relational operator that eliminates
+ * duplicates and computes totals.
+ *
+ * <p>It corresponds to the {@code GROUP BY} operator in a SQL query
+ * statement, together with the aggregate functions in the {@code SELECT}
+ * clause.
+ *
+ * <p>Rules:
+ *
+ * <ul>
+ * <li>{@link org.apache.calcite.rel.rules.AggregateProjectPullUpConstantsRule}
+ * <li>{@link org.apache.calcite.rel.rules.AggregateExpandDistinctAggregatesRule}
+ * <li>{@link org.apache.calcite.rel.rules.AggregateReduceFunctionsRule}.
+ * </ul>
*/
-public abstract class AggregateRelBase extends SingleRel {
+public abstract class Aggregate extends SingleRel {
//~ Instance fields --------------------------------------------------------
protected final List<AggregateCall> aggCalls;
@@ -46,7 +74,7 @@ public abstract class AggregateRelBase extends SingleRel {
//~ Constructors -----------------------------------------------------------
/**
- * Creates an AggregateRelBase.
+ * Creates an Aggregate.
*
* @param cluster Cluster
* @param traits Traits
@@ -54,7 +82,7 @@ public abstract class AggregateRelBase extends SingleRel {
* @param groupSet Bit set of grouping fields
* @param aggCalls Collection of calls to aggregate functions
*/
- protected AggregateRelBase(
+ protected Aggregate(
RelOptCluster cluster,
RelTraitSet traits,
RelNode child,
@@ -75,9 +103,9 @@ public abstract class AggregateRelBase extends SingleRel {
}
/**
- * Creates an AggregateRelBase by parsing serialized output.
+ * Creates an Aggregate by parsing serialized output.
*/
- protected AggregateRelBase(RelInput input) {
+ protected Aggregate(RelInput input) {
this(input.getCluster(), input.getTraitSet(), input.getInput(),
input.getBitSet("group"), input.getAggregateCalls("aggs"));
}
@@ -91,9 +119,9 @@ public abstract class AggregateRelBase extends SingleRel {
/** Creates a copy of this aggregate.
*
- * @see #copy(org.eigenbase.relopt.RelTraitSet, java.util.List)
+ * @see #copy(org.apache.calcite.plan.RelTraitSet, java.util.List)
*/
- public abstract AggregateRelBase copy(RelTraitSet traitSet, RelNode input,
+ public abstract Aggregate copy(RelTraitSet traitSet, RelNode input,
BitSet groupSet, List<AggregateCall> aggCalls);
// implement RelNode
@@ -166,7 +194,7 @@ public abstract class AggregateRelBase extends SingleRel {
public RelOptCost computeSelfCost(RelOptPlanner planner) {
// REVIEW jvs 24-Aug-2008: This is bogus, but no more bogus
- // than what's currently in JoinRelBase.
+ // than what's currently in Join.
double rowCount = RelMetadataQuery.getRowCount(this);
return planner.getCostFactory().makeCost(rowCount, 0, 0);
}
@@ -174,12 +202,12 @@ public abstract class AggregateRelBase extends SingleRel {
protected RelDataType deriveRowType() {
return deriveRowType(
getCluster().getTypeFactory(),
- getChild().getRowType(),
+ getInput().getRowType(),
groupSet,
aggCalls);
}
- /** Computes the row type of an {@code AggregateRelBase} before it exists. */
+ /** Computes the row type of an {@code Aggregate} before it exists. */
public static RelDataType deriveRowType(RelDataTypeFactory typeFactory,
final RelDataType inputRowType, BitSet groupSet,
final List<AggregateCall> aggCalls) {
@@ -256,9 +284,9 @@ public abstract class AggregateRelBase extends SingleRel {
//~ Inner Classes ----------------------------------------------------------
/**
- * Implementation of the {@link SqlOperatorBinding} interface for an {@link
- * AggregateCall aggregate call} applied to a set of operands in the context
- * of a {@link AggregateRel}.
+ * Implementation of the {@link SqlOperatorBinding} interface for an
+ * {@link AggregateCall aggregate call} applied to a set of operands in the
+ * context of a {@link org.apache.calcite.rel.logical.LogicalAggregate}.
*/
public static class AggCallBinding extends SqlOperatorBinding {
private final List<RelDataType> operands;
@@ -268,7 +296,7 @@ public abstract class AggregateRelBase extends SingleRel {
* Creates an AggCallBinding
*
* @param typeFactory Type factory
- * @param aggFunction Aggregation function
+ * @param aggFunction Aggregate function
* @param operands Data types of operands
* @param groupCount Number of columns in the GROUP BY clause
*/
@@ -284,7 +312,7 @@ public abstract class AggregateRelBase extends SingleRel {
: "operands of aggregate call should not be null";
assert groupCount >= 0
: "number of group by columns should be greater than zero in "
- + "aggregate call. Got " + groupCount;
+ + "aggregate call. Got " + groupCount;
}
@Override public int getGroupCount() {
@@ -299,11 +327,11 @@ public abstract class AggregateRelBase extends SingleRel {
return operands.get(ordinal);
}
- public EigenbaseException newError(
+ public CalciteException newError(
Resources.ExInst<SqlValidatorException> e) {
return SqlUtil.newContextException(SqlParserPos.ZERO, e);
}
}
}
-// End AggregateRelBase.java
+// End Aggregate.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/AggregateCall.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/AggregateCall.java b/core/src/main/java/org/apache/calcite/rel/core/AggregateCall.java
index 651c2f3..fa1620c 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/AggregateCall.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/AggregateCall.java
@@ -14,24 +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.*;
-
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.sql.type.SqlTypeUtil;
-import org.eigenbase.util.mapping.Mappings;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.sql.type.SqlTypeUtil;
+import org.apache.calcite.util.mapping.Mappings;
import com.google.common.collect.ImmutableList;
+import java.util.List;
+
/**
- * Call to an aggregation function within an {@link AggregateRel}.
+ * Call to an aggFunction function within an
+ * {@link org.apache.calcite.rel.logical.LogicalAggregate}.
*/
public class AggregateCall {
//~ Instance fields --------------------------------------------------------
- private final Aggregation aggregation;
+ private final SqlAggFunction aggFunction;
private final boolean distinct;
public final RelDataType type;
@@ -46,24 +49,24 @@ public class AggregateCall {
/**
* Creates an AggregateCall.
*
- * @param aggregation Aggregation
+ * @param aggFunction Aggregate function
* @param distinct Whether distinct
* @param argList List of ordinals of arguments
* @param type Result type
* @param name Name (may be null)
*/
public AggregateCall(
- Aggregation aggregation,
+ SqlAggFunction aggFunction,
boolean distinct,
List<Integer> argList,
RelDataType type,
String name) {
this.type = type;
this.name = name;
- assert aggregation != null;
+ assert aggFunction != null;
assert argList != null;
assert type != null;
- this.aggregation = aggregation;
+ this.aggFunction = aggFunction;
this.argList = ImmutableList.copyOf(argList);
this.distinct = distinct;
@@ -80,8 +83,8 @@ public class AggregateCall {
input.getCluster().getTypeFactory();
final List<RelDataType> types =
SqlTypeUtil.projectTypes(input.getRowType(), argList);
- final AggregateRelBase.AggCallBinding callBinding =
- new AggregateRelBase.AggCallBinding(typeFactory, aggFunction, types,
+ final Aggregate.AggCallBinding callBinding =
+ new Aggregate.AggCallBinding(typeFactory, aggFunction, types,
groupCount);
type = aggFunction.inferReturnType(callBinding);
}
@@ -99,12 +102,12 @@ public class AggregateCall {
}
/**
- * Returns the Aggregation.
+ * Returns the aggregate function.
*
- * @return aggregation
+ * @return aggregate function
*/
- public final Aggregation getAggregation() {
- return aggregation;
+ public final SqlAggFunction getAggregation() {
+ return aggFunction;
}
/**
@@ -143,11 +146,11 @@ public class AggregateCall {
*/
public AggregateCall rename(String name) {
// no need to copy argList - already immutable
- return new AggregateCall(aggregation, distinct, argList, type, name);
+ return new AggregateCall(aggFunction, distinct, argList, type, name);
}
public String toString() {
- StringBuilder buf = new StringBuilder(aggregation.getName());
+ StringBuilder buf = new StringBuilder(aggFunction.getName());
buf.append("(");
if (distinct) {
buf.append((argList.size() == 0) ? "DISTINCT" : "DISTINCT ");
@@ -170,27 +173,28 @@ public class AggregateCall {
return false;
}
AggregateCall other = (AggregateCall) o;
- return aggregation.equals(other.aggregation)
+ return aggFunction.equals(other.aggFunction)
&& (distinct == other.distinct)
&& argList.equals(other.argList);
}
// override Object
public int hashCode() {
- return aggregation.hashCode() + argList.hashCode();
+ return aggFunction.hashCode() + argList.hashCode();
}
/**
- * Creates a binding of this call in the context of an {@link AggregateRel},
+ * Creates a binding of this call in the context of an
+ * {@link org.apache.calcite.rel.logical.LogicalAggregate},
* which can then be used to infer the return type.
*/
- public AggregateRelBase.AggCallBinding createBinding(
- AggregateRelBase aggregateRelBase) {
- final RelDataType rowType = aggregateRelBase.getChild().getRowType();
+ public Aggregate.AggCallBinding createBinding(
+ Aggregate aggregateRelBase) {
+ final RelDataType rowType = aggregateRelBase.getInput().getRowType();
- return new AggregateRelBase.AggCallBinding(
+ return new Aggregate.AggCallBinding(
aggregateRelBase.getCluster().getTypeFactory(),
- (SqlAggFunction) aggregation,
+ (SqlAggFunction) aggFunction,
SqlTypeUtil.projectTypes(rowType, argList),
aggregateRelBase.getGroupCount());
}
@@ -202,22 +206,22 @@ public class AggregateCall {
* @return AggregateCall that suits new inputs and GROUP BY columns
*/
public AggregateCall copy(List<Integer> args) {
- return new AggregateCall(aggregation, distinct, args, type, name);
+ return new AggregateCall(aggFunction, distinct, args, type, name);
}
/**
* Creates equivalent AggregateCall that is adapted to a new input types
* and/or number of columns in GROUP BY.
*
- * @param input relation that will be used as a child of AggregateRel
+ * @param input relation that will be used as a child of aggregate
* @param aggArgs argument indices of the new call in the input
- * @param oldGroupKeyCount number of columns in GROUP BY of old AggregateRel
- * @param newGroupKeyCount number of columns in GROUP BY of new AggregateRel
+ * @param oldGroupKeyCount number of columns in GROUP BY of old aggregate
+ * @param newGroupKeyCount number of columns in GROUP BY of new aggregate
* @return AggregateCall that suits new inputs and GROUP BY columns
*/
public AggregateCall adaptTo(RelNode input, List<Integer> aggArgs,
int oldGroupKeyCount, int newGroupKeyCount) {
- final SqlAggFunction sqlAgg = (SqlAggFunction) aggregation;
+ final SqlAggFunction sqlAgg = (SqlAggFunction) aggFunction;
// The return type of aggregate call need to be recomputed.
// Since it might depend on the number of columns in GROUP BY.
final RelDataType newType =
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Calc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Calc.java b/core/src/main/java/org/apache/calcite/rel/core/Calc.java
index cfa1e3d..803c783 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Calc.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Calc.java
@@ -14,22 +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.*;
+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.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationImpl;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.logical.LogicalFilter;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexProgram;
import com.google.common.collect.ImmutableList;
+import java.util.List;
+
/**
- * <code>CalcRelBase</code> is an abstract base class for implementations of
- * {@link CalcRel}.
+ * <code>Calc</code> is an abstract base class for implementations of
+ * {@link org.apache.calcite.rel.logical.LogicalCalc}.
*/
-public abstract class CalcRelBase extends SingleRel {
+public abstract class Calc extends SingleRel {
//~ Instance fields --------------------------------------------------------
protected final RexProgram program;
@@ -37,7 +47,7 @@ public abstract class CalcRelBase extends SingleRel {
//~ Constructors -----------------------------------------------------------
- protected CalcRelBase(
+ protected Calc(
RelOptCluster cluster,
RelTraitSet traits,
RelNode child,
@@ -53,15 +63,12 @@ public abstract class CalcRelBase extends SingleRel {
//~ Methods ----------------------------------------------------------------
- @Override
- public final CalcRelBase copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public final Calc copy(RelTraitSet traitSet, List<RelNode> inputs) {
return copy(traitSet, sole(inputs), program, collationList);
}
- /**
- * Creates a copy of this {@code CalcRelBase}.
- */
- public abstract CalcRelBase copy(
+ /** Creates a copy of this {@code Calc}. */
+ public abstract Calc copy(
RelTraitSet traitSet,
RelNode child,
RexProgram program,
@@ -72,7 +79,7 @@ public abstract class CalcRelBase extends SingleRel {
"program's input type",
program.getInputRowType(),
"child's output type",
- getChild().getRowType(),
+ getInput().getRowType(),
fail)) {
return false;
}
@@ -104,8 +111,8 @@ public abstract class CalcRelBase extends SingleRel {
}
public double getRows() {
- return FilterRel.estimateFilteredRows(
- getChild(),
+ return LogicalFilter.estimateFilteredRows(
+ getInput(),
program);
}
@@ -116,7 +123,7 @@ public abstract class CalcRelBase extends SingleRel {
public RelOptCost computeSelfCost(RelOptPlanner planner) {
double dRows = RelMetadataQuery.getRowCount(this);
double dCpu =
- RelMetadataQuery.getRowCount(getChild())
+ RelMetadataQuery.getRowCount(getInput())
* program.getExprCount();
double dIo = 0;
return planner.getCostFactory().makeCost(dRows, dCpu, dIo);
@@ -127,4 +134,4 @@ public abstract class CalcRelBase extends SingleRel {
}
}
-// End CalcRelBase.java
+// End Calc.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Collect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Collect.java b/core/src/main/java/org/apache/calcite/rel/core/Collect.java
index 0dc9f80..522672a 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Collect.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Collect.java
@@ -14,13 +14,20 @@
* 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.RelWriter;
+import org.apache.calcite.rel.SingleRel;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.sql.type.SqlTypeUtil;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.type.*;
+import java.util.List;
/**
* A relational expression that collapses multiple rows into one.
@@ -29,12 +36,12 @@ import org.eigenbase.sql.type.*;
*
* <ul>
* <li>{@code net.sf.farrago.fennel.rel.FarragoMultisetSplitterRule}
- * creates a CollectRel from a call to
- * {@link org.eigenbase.sql.fun.SqlMultisetValueConstructor} or to
- * {@link org.eigenbase.sql.fun.SqlMultisetQueryConstructor}.</li>
+ * creates a Collect from a call to
+ * {@link org.apache.calcite.sql.fun.SqlMultisetValueConstructor} or to
+ * {@link org.apache.calcite.sql.fun.SqlMultisetQueryConstructor}.</li>
* </ul>
*/
-public class CollectRel extends SingleRel {
+public class Collect extends SingleRel {
//~ Instance fields --------------------------------------------------------
protected final String fieldName;
@@ -42,13 +49,13 @@ public class CollectRel extends SingleRel {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a CollectRel.
+ * Creates a Collect.
*
* @param cluster Cluster
* @param child Child relational expression
* @param fieldName Name of the sole output field
*/
- public CollectRel(
+ public Collect(
RelOptCluster cluster,
RelTraitSet traitSet,
RelNode child,
@@ -58,27 +65,26 @@ public class CollectRel extends SingleRel {
}
/**
- * Creates a CollectRel by parsing serialized output.
+ * Creates a Collect by parsing serialized output.
*/
- public CollectRel(RelInput input) {
+ public Collect(RelInput input) {
this(input.getCluster(), input.getTraitSet(), input.getInput(),
input.getString("field"));
}
//~ Methods ----------------------------------------------------------------
- @Override
- public final RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public final RelNode copy(RelTraitSet traitSet,
+ List<RelNode> inputs) {
return copy(traitSet, sole(inputs));
}
public RelNode copy(RelTraitSet traitSet, RelNode input) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new CollectRel(getCluster(), traitSet, input, fieldName);
+ return new Collect(getCluster(), traitSet, input, fieldName);
}
- @Override
- public RelWriter explainTerms(RelWriter pw) {
+ @Override public RelWriter explainTerms(RelWriter pw) {
return super.explainTerms(pw)
.item("field", fieldName);
}
@@ -92,8 +98,7 @@ public class CollectRel extends SingleRel {
return fieldName;
}
- @Override
- protected RelDataType deriveRowType() {
+ @Override protected RelDataType deriveRowType() {
return deriveCollectRowType(this, fieldName);
}
@@ -107,7 +112,7 @@ public class CollectRel extends SingleRel {
public static RelDataType deriveCollectRowType(
SingleRel rel,
String fieldName) {
- RelDataType childType = rel.getChild().getRowType();
+ RelDataType childType = rel.getInput().getRowType();
assert childType.isStruct();
final RelDataTypeFactory typeFactory = rel.getCluster().getTypeFactory();
RelDataType ret =
@@ -120,4 +125,4 @@ public class CollectRel extends SingleRel {
}
}
-// End CollectRel.java
+// End Collect.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Correlation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Correlation.java b/core/src/main/java/org/apache/calcite/rel/core/Correlation.java
index cd0de34..7aed265 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Correlation.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Correlation.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;
/**
* Describes the necessary parameters for an implementation in order to
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Correlator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Correlator.java b/core/src/main/java/org/apache/calcite/rel/core/Correlator.java
index eff6c38..a80d324 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Correlator.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Correlator.java
@@ -14,25 +14,37 @@
* 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.rex.*;
+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.RelShuttle;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rex.RexNode;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
/**
- * A <code>CorrelatorRel</code> behaves like a kind of {@link JoinRel}, but
- * works by setting variables in its environment and restarting its right-hand
- * input.
+ * A relational operator that performs nested-loop joins.
+ *
+ * <p>It behaves like a kind of {@link Join},
+ * but works by setting variables in its environment and restarting its
+ * right-hand input.
*
- * <p>A CorrelatorRel is used to represent a correlated query. One
+ * <p>A Correlator is used to represent a correlated query. One
* implementation strategy is to de-correlate the expression.
+ *
+ * @see Correlation
*/
-public final class CorrelatorRel extends JoinRelBase {
+public final class Correlator extends Join {
//~ Instance fields --------------------------------------------------------
protected final ImmutableList<Correlation> correlations;
@@ -40,7 +52,7 @@ public final class CorrelatorRel extends JoinRelBase {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a CorrelatorRel.
+ * Creates a Correlator.
*
* @param cluster cluster this relational expression belongs to
* @param left left input relational expression
@@ -50,7 +62,7 @@ public final class CorrelatorRel extends JoinRelBase {
* row arrives from the left input
* @param joinType join type
*/
- public CorrelatorRel(
+ public Correlator(
RelOptCluster cluster,
RelNode left,
RelNode right,
@@ -71,16 +83,16 @@ public final class CorrelatorRel extends JoinRelBase {
}
/**
- * Creates a CorrelatorRel with no join condition.
+ * Creates a Correlator with no join condition.
*
- * @param cluster cluster this relational expression belongs to
+ * @param cluster Cluster that this relational expression belongs to
* @param left left input relational expression
* @param right right input relational expression
* @param correlations set of expressions to set as variables each time a
* row arrives from the left input
* @param joinType join type
*/
- public CorrelatorRel(
+ public Correlator(
RelOptCluster cluster,
RelNode left,
RelNode right,
@@ -96,9 +108,9 @@ public final class CorrelatorRel extends JoinRelBase {
}
/**
- * Creates a CorrelatorRel by parsing serialized output.
+ * Creates a Correlator by parsing serialized output.
*/
- public CorrelatorRel(RelInput input) {
+ public Correlator(RelInput input) {
this(
input.getCluster(), input.getInputs().get(0),
input.getInputs().get(1), getCorrelations(input),
@@ -121,11 +133,10 @@ public final class CorrelatorRel extends JoinRelBase {
//~ Methods ----------------------------------------------------------------
- @Override
- public CorrelatorRel copy(RelTraitSet traitSet, RexNode conditionExpr,
+ @Override public Correlator copy(RelTraitSet traitSet, RexNode conditionExpr,
RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new CorrelatorRel(
+ return new Correlator(
getCluster(),
left,
right,
@@ -152,4 +163,4 @@ public final class CorrelatorRel extends JoinRelBase {
}
}
-// End CorrelatorRel.java
+// End Correlator.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Empty.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Empty.java b/core/src/main/java/org/apache/calcite/rel/core/Empty.java
index cb14057..772b946 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Empty.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Empty.java
@@ -14,46 +14,50 @@
* 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.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.RelWriter;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.sql.SqlExplainLevel;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.sql.*;
+import java.util.List;
/**
- * <code>EmptyRel</code> represents a relational expression with zero rows.
+ * Relational expression with zero rows.
*
- * <p>EmptyRel can not be implemented, but serves as a token for rules to match
+ * <p>Empty can not be implemented, but serves as a token for rules to match
* so that empty sections of queries can be eliminated.
*
* <p>Rules:
*
* <ul>
* <li>Created by {@code net.sf.farrago.query.FarragoReduceValuesRule}</li>
- * <li>Triggers {@link org.eigenbase.rel.rules.RemoveEmptyRules}</li>
+ * <li>Triggers {@link org.apache.calcite.rel.rules.EmptyPruneRules}</li>
* </ul>
*
- * @see org.eigenbase.rel.ValuesRel
+ * @see org.apache.calcite.rel.logical.LogicalValues
+ * @see OneRow
*/
-public class EmptyRel extends AbstractRelNode {
+public class Empty extends AbstractRelNode {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a new EmptyRel.
+ * Creates a new Empty.
*
* @param cluster Cluster
* @param rowType row type for tuples which would be produced by this rel if
* it actually produced any, but it doesn't (see, philosophy is
* good for something after all!)
*/
- public EmptyRel(
- RelOptCluster cluster,
- RelDataType rowType) {
- super(
- cluster,
- cluster.traitSetOf(Convention.NONE));
+ public Empty(RelOptCluster cluster, RelDataType rowType) {
+ super(cluster, cluster.traitSetOf(Convention.NONE));
this.rowType = rowType;
}
@@ -66,23 +70,19 @@ public class EmptyRel extends AbstractRelNode {
return this;
}
- // implement RelNode
- protected RelDataType deriveRowType() {
+ @Override protected RelDataType deriveRowType() {
return rowType;
}
- // implement RelNode
- public RelOptCost computeSelfCost(RelOptPlanner planner) {
+ @Override public RelOptCost computeSelfCost(RelOptPlanner planner) {
return planner.getCostFactory().makeZeroCost();
}
- // implement RelNode
- public double getRows() {
+ @Override public double getRows() {
return 0.0;
}
- // implement RelNode
- public RelWriter explainTerms(RelWriter pw) {
+ @Override public RelWriter explainTerms(RelWriter pw) {
return super.explainTerms(pw)
// For rel digest, include the row type to discriminate
// this from other empties with different row types.
@@ -94,4 +94,4 @@ public class EmptyRel extends AbstractRelNode {
}
}
-// End EmptyRel.java
+// End Empty.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/core/Filter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Filter.java b/core/src/main/java/org/apache/calcite/rel/core/Filter.java
index 7468a7e..8fbdb0e 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Filter.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Filter.java
@@ -14,21 +14,38 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
-
-import java.util.List;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.rex.*;
+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.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.rex.RexChecker;
+import org.apache.calcite.rex.RexLocalRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexProgram;
+import org.apache.calcite.rex.RexUtil;
import com.google.common.collect.ImmutableList;
+import java.util.List;
+
/**
- * <code>FilterRelBase</code> is an abstract base class for implementations of
- * {@link FilterRel}.
+ * Relational expression that iterates over its input
+ * and returns elements for which <code>condition</code> evaluates to
+ * <code>true</code>.
+ *
+ * <p>If the condition allows nulls, then a null value is treated the same as
+ * false.</p>
+ *
+ * @see org.apache.calcite.rel.logical.LogicalFilter
*/
-public abstract class FilterRelBase extends SingleRel {
+public abstract class Filter extends SingleRel {
//~ Instance fields --------------------------------------------------------
protected final RexNode condition;
@@ -38,14 +55,13 @@ public abstract class FilterRelBase extends SingleRel {
/**
* Creates a filter.
*
- * @param cluster {@link RelOptCluster} this relational expression belongs
- * to
+ * @param cluster Cluster that this relational expression belongs to
* @param traits the traits of this rel
* @param child input relational expression
* @param condition boolean expression which determines whether a row is
* allowed to pass
*/
- protected FilterRelBase(
+ protected Filter(
RelOptCluster cluster,
RelTraitSet traits,
RelNode child,
@@ -59,25 +75,24 @@ public abstract class FilterRelBase extends SingleRel {
}
/**
- * Creates a FilterRelBase by parsing serialized output.
+ * Creates a Filter by parsing serialized output.
*/
- protected FilterRelBase(RelInput input) {
+ protected Filter(RelInput input) {
this(input.getCluster(), input.getTraitSet(), input.getInput(),
input.getExpression("condition"));
}
//~ Methods ----------------------------------------------------------------
- @Override
- public final RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public final RelNode copy(RelTraitSet traitSet,
+ List<RelNode> inputs) {
return copy(traitSet, sole(inputs), getCondition());
}
- public abstract FilterRelBase copy(RelTraitSet traitSet, RelNode input,
+ public abstract Filter copy(RelTraitSet traitSet, RelNode input,
RexNode condition);
- @Override
- public List<RexNode> getChildExps() {
+ @Override public List<RexNode> getChildExps() {
return ImmutableList.of(condition);
}
@@ -86,7 +101,7 @@ public abstract class FilterRelBase extends SingleRel {
}
@Override public boolean isValid(boolean fail) {
- final RexChecker checker = new RexChecker(getChild().getRowType(), fail);
+ final RexChecker checker = new RexChecker(getInput().getRowType(), fail);
condition.accept(checker);
if (checker.getFailureCount() > 0) {
assert !fail;
@@ -97,7 +112,7 @@ public abstract class FilterRelBase extends SingleRel {
public RelOptCost computeSelfCost(RelOptPlanner planner) {
double dRows = RelMetadataQuery.getRowCount(this);
- double dCpu = RelMetadataQuery.getRowCount(getChild());
+ double dCpu = RelMetadataQuery.getRowCount(getInput());
double dIo = 0;
return planner.getCostFactory().makeCost(dRows, dCpu, dIo);
}
@@ -105,7 +120,7 @@ public abstract class FilterRelBase extends SingleRel {
// override RelNode
public double getRows() {
return estimateFilteredRows(
- getChild(),
+ getInput(),
condition);
}
@@ -134,4 +149,4 @@ public abstract class FilterRelBase extends SingleRel {
}
}
-// End FilterRelBase.java
+// End Filter.java