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:44 UTC
[36/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/externalize/RelJson.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
index 1b4d76f..4c77805 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
@@ -14,29 +14,49 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.externalize;
+
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollationImpl;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Correlation;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexCorrelVariable;
+import org.apache.calcite.rex.RexFieldAccess;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.sql.SqlFunction;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.JsonBuilder;
+import org.apache.calcite.util.Util;
+
+import com.google.common.collect.ImmutableList;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
-import java.util.*;
-
-import org.eigenbase.relopt.RelOptCluster;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.SqlFunction;
-import org.eigenbase.sql.SqlOperator;
-import org.eigenbase.sql.fun.SqlStdOperatorTable;
-import org.eigenbase.sql.type.SqlTypeName;
-import org.eigenbase.util.JsonBuilder;
-import org.eigenbase.util.Util;
-
-import net.hydromatic.optiq.util.BitSets;
-
-import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
- * Utilities for converting {@link RelNode} into JSON format.
+ * Utilities for converting {@link org.apache.calcite.rel.RelNode}
+ * into JSON format.
*/
public class RelJson {
private final Map<String, Constructor> constructorMap =
@@ -45,9 +65,11 @@ public class RelJson {
public static final List<String> PACKAGES =
ImmutableList.of(
- "org.eigenbase.rel.",
- "net.hydromatic.optiq.impl.jdbc.",
- "net.hydromatic.optiq.impl.jdbc.JdbcRules$");
+ "org.apache.calcite.rel.",
+ "org.apache.calcite.rel.core.",
+ "org.apache.calcite.rel.logical.",
+ "org.apache.calcite.adapter.jdbc.",
+ "org.apache.calcite.adapter.jdbc.JdbcRules$");
public RelJson(JsonBuilder jsonBuilder) {
this.jsonBuilder = jsonBuilder;
@@ -81,9 +103,8 @@ public class RelJson {
//noinspection unchecked
constructor = clazz.getConstructor(RelInput.class);
} catch (NoSuchMethodException e) {
- throw new RuntimeException(
- "class does not have required constructor, " + clazz
- + "(RelInput)");
+ throw new RuntimeException("class does not have required constructor, "
+ + clazz + "(RelInput)");
}
constructorMap.put(type, constructor);
}
@@ -91,8 +112,8 @@ public class RelJson {
}
/**
- * Converts a type name to a class. E.g. {@code getClass("ProjectRel")}
- * returns {@link org.eigenbase.rel.ProjectRel}.class.
+ * Converts a type name to a class. E.g. {@code getClass("LogicalProject")}
+ * returns {@link org.apache.calcite.rel.logical.LogicalProject}.class.
*/
public Class typeNameToClass(String type) {
if (!type.contains(".")) {
@@ -436,8 +457,8 @@ public class RelJson {
return null;
}
- Aggregation toAggregation(String agg, Map<String, Object> map) {
- return (Aggregation) toOp(agg, map);
+ SqlAggFunction toAggregation(String agg, Map<String, Object> map) {
+ return (SqlAggFunction) toOp(agg, map);
}
private String toJson(SqlOperator operator) {
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
index b99dd1f..8e20b7f 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
@@ -14,32 +14,45 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.util.Pair;
-import org.eigenbase.util.Util;
-
-import net.hydromatic.optiq.Schema;
-import net.hydromatic.optiq.util.BitSets;
+package org.apache.calcite.rel.externalize;
+
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptSchema;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+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 org.apache.calcite.schema.Schema;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
-
import com.google.common.collect.ImmutableList;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Reads a JSON plan and converts it back to a tree of relational expressions.
*
- * @see org.eigenbase.rel.RelInput
+ * @see org.apache.calcite.rel.RelInput
*/
public class RelJsonReader {
private static final TypeReference<LinkedHashMap<String, Object>> TYPE_REF =
@@ -175,14 +188,12 @@ public class RelJsonReader {
(List<String>) get(fieldsTag);
return cluster.getTypeFactory().createStructType(
new AbstractList<Map.Entry<String, RelDataType>>() {
- @Override
- public Map.Entry<String, RelDataType> get(int index) {
+ @Override public Map.Entry<String, RelDataType> get(int index) {
return Pair.of(names.get(index),
expressionList.get(index).getType());
}
- @Override
- public int size() {
+ @Override public int size() {
return names.size();
}
});
@@ -228,7 +239,8 @@ public class RelJsonReader {
private AggregateCall toAggCall(Map<String, Object> jsonAggCall) {
final String aggName = (String) jsonAggCall.get("agg");
- final Aggregation aggregation = relJson.toAggregation(aggName, jsonAggCall);
+ final SqlAggFunction aggregation =
+ relJson.toAggregation(aggName, jsonAggCall);
final Boolean distinct = (Boolean) jsonAggCall.get("distinct");
final List<Integer> operands = (List<Integer>) jsonAggCall.get("operands");
final RelDataType type =
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonWriter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonWriter.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonWriter.java
index 4bef2ef..28981c8 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonWriter.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonWriter.java
@@ -14,19 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.externalize;
-import java.util.*;
-
-import org.eigenbase.sql.SqlExplainLevel;
-import org.eigenbase.util.*;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.JsonBuilder;
+import org.apache.calcite.util.Pair;
import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Callback for a relational expression to dump itself as JSON.
*
- * @see org.eigenbase.rel.RelJsonReader
+ * @see RelJsonReader
*/
public class RelJsonWriter implements RelWriter {
//~ Instance fields ----------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/externalize/RelWriterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelWriterImpl.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelWriterImpl.java
index 7262d56..0bf5ffb 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelWriterImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelWriterImpl.java
@@ -14,24 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.externalize;
-import java.io.PrintWriter;
-import java.util.*;
-
-import org.eigenbase.rel.metadata.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.sql.*;
-import org.eigenbase.util.*;
-
-import net.hydromatic.linq4j.Ord;
-
-import net.hydromatic.optiq.runtime.Spacer;
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.runtime.Spacer;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.Pair;
import com.google.common.collect.ImmutableList;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
/**
- * Implementation of {@link org.eigenbase.rel.RelWriter}.
+ * Implementation of {@link org.apache.calcite.rel.RelWriter}.
*/
public class RelWriterImpl implements RelWriter {
//~ Instance fields --------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
index 2108f6b..50e5381 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
@@ -14,14 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.externalize;
-import java.io.*;
-import java.util.*;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.sql.SqlExplainLevel;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.XmlOutput;
-import org.eigenbase.sql.*;
-import org.eigenbase.util.Pair;
-import org.eigenbase.util.XmlOutput;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
/**
* Callback for a relational expression to dump in XML format.
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/externalize/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/package-info.java b/core/src/main/java/org/apache/calcite/rel/externalize/package-info.java
new file mode 100644
index 0000000..d5897ff
--- /dev/null
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/package-info.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+/**
+ * Facilities to externalize {@link org.apache.calcite.rel.RelNode}s to and from
+ * XML and JSON format.
+ */
+package org.apache.calcite.rel.externalize;
+
+// End package-info.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/jdbc/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/jdbc/package-info.java b/core/src/main/java/org/apache/calcite/rel/jdbc/package-info.java
index c851a88..877c848 100644
--- a/core/src/main/java/org/apache/calcite/rel/jdbc/package-info.java
+++ b/core/src/main/java/org/apache/calcite/rel/jdbc/package-info.java
@@ -19,6 +19,6 @@
* Contains query transformation rules relating to generating SQL for
* foreign JDBC databases.
*/
-package org.eigenbase.rel.jdbc;
+package org.apache.calcite.rel.jdbc;
// End package-info.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
index 0e9c959..198f242 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
@@ -14,36 +14,44 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-import java.util.*;
+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.core.Aggregate;
+import org.apache.calcite.rel.core.AggregateCall;
-import org.eigenbase.relopt.*;
+import java.util.BitSet;
+import java.util.List;
/**
- * <code>AggregateRel</code> is a relational operator which eliminates
+ * <code>LogicalAggregate</code> is a relational operator which eliminates
* duplicates and computes totals.
*
* <p>Rules:
*
* <ul>
- * <li>{@link org.eigenbase.rel.rules.PullConstantsThroughAggregatesRule}
- * <li>{@link org.eigenbase.rel.rules.RemoveDistinctAggregateRule}
- * <li>{@link org.eigenbase.rel.rules.ReduceAggregatesRule}.
+ * <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 final class AggregateRel extends AggregateRelBase {
+public final class LogicalAggregate extends Aggregate {
//~ Constructors -----------------------------------------------------------
/**
- * Creates an AggregateRel.
+ * Creates a LogicalAggregate.
*
* @param cluster Cluster that this relational expression belongs to
* @param child input relational expression
* @param groupSet Bit set of grouping fields
* @param aggCalls Array of aggregates to compute, not null
*/
- public AggregateRel(
+ public LogicalAggregate(
RelOptCluster cluster,
RelNode child,
BitSet groupSet,
@@ -57,18 +65,18 @@ public final class AggregateRel extends AggregateRelBase {
}
/**
- * Creates an AggregateRel by parsing serialized output.
+ * Creates a LogicalAggregate by parsing serialized output.
*/
- public AggregateRel(RelInput input) {
+ public LogicalAggregate(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- @Override public AggregateRel copy(RelTraitSet traitSet, RelNode input,
+ @Override public LogicalAggregate copy(RelTraitSet traitSet, RelNode input,
BitSet groupSet, List<AggregateCall> aggCalls) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new AggregateRel(getCluster(), input, groupSet, aggCalls);
+ return new LogicalAggregate(getCluster(), input, groupSet, aggCalls);
}
@Override public RelNode accept(RelShuttle shuttle) {
@@ -76,4 +84,4 @@ public final class AggregateRel extends AggregateRelBase {
}
}
-// End AggregateRel.java
+// End LogicalAggregate.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
index ba0b650..3d74fab 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
@@ -14,41 +14,52 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-import java.util.*;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Calc;
+import org.apache.calcite.rel.rules.FilterToCalcRule;
+import org.apache.calcite.rel.rules.ProjectToCalcRule;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexProgram;
-import org.eigenbase.rel.rules.*;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
+import java.util.List;
+import java.util.Set;
/**
* A relational expression which computes project expressions and also filters.
*
* <p>This relational expression combines the functionality of
- * {@link ProjectRel} and {@link FilterRel}. It should be created in the later
- * stages of optimization, by merging consecutive {@link ProjectRel} and
- * {@link FilterRel} nodes together.
+ * {@link LogicalProject} and {@link LogicalFilter}.
+ * It should be created in the later
+ * stages of optimization, by merging consecutive {@link LogicalProject} and
+ * {@link LogicalFilter} nodes together.
*
- * <p>The following rules relate to <code>CalcRel</code>:</p>
+ * <p>The following rules relate to <code>LogicalCalc</code>:</p>
*
* <ul>
- * <li>{@link FilterToCalcRule} creates this from a {@link FilterRel}</li>
- * <li>{@link ProjectToCalcRule} creates this from a {@link FilterRel}</li>
- * <li>{@link MergeFilterOntoCalcRule} merges this with a {@link FilterRel}</li>
- * <li>{@link MergeProjectOntoCalcRule} merges this with a
- * {@link ProjectRel}</li>
- * <li>{@link MergeCalcRule} merges two CalcRels</li>
+ * <li>{@link FilterToCalcRule} creates this from a {@link LogicalFilter}
+ * <li>{@link ProjectToCalcRule} creates this from a {@link LogicalFilter}
+ * <li>{@link org.apache.calcite.rel.rules.FilterCalcMergeRule}
+ * merges this with a {@link LogicalFilter}
+ * <li>{@link org.apache.calcite.rel.rules.ProjectCalcMergeRule}
+ * merges this with a {@link LogicalProject}
+ * <li>{@link org.apache.calcite.rel.rules.CalcMergeRule}
+ * merges two {@code LogicalCalc}s
* </ul>
*/
-public final class CalcRel extends CalcRelBase {
+public final class LogicalCalc extends Calc {
//~ Static fields/initializers ---------------------------------------------
//~ Constructors -----------------------------------------------------------
- /** Creates a CalcRel. */
- public CalcRel(
+ /** Creates a LogicalCalc. */
+ public LogicalCalc(
RelOptCluster cluster,
RelTraitSet traits,
RelNode child,
@@ -60,9 +71,9 @@ public final class CalcRel extends CalcRelBase {
//~ Methods ----------------------------------------------------------------
- @Override public CalcRelBase copy(RelTraitSet traitSet, RelNode child,
+ @Override public LogicalCalc copy(RelTraitSet traitSet, RelNode child,
RexProgram program, List<RelCollation> collationList) {
- return new CalcRel(getCluster(), traitSet, child,
+ return new LogicalCalc(getCluster(), traitSet, child,
program.getOutputRowType(), program, collationList);
}
@@ -76,4 +87,4 @@ public final class CalcRel extends CalcRelBase {
}
}
-// End CalcRel.java
+// End LogicalCalc.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
index 2252e71..6766a78 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalFilter.java
@@ -14,32 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-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.core.Filter;
+import org.apache.calcite.rex.RexNode;
/**
- * 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>
+ * Sub-class of {@link org.apache.calcite.rel.core.Filter}
+ * not targeted at any particular engine or calling convention.
*/
-public final class FilterRel extends FilterRelBase {
+public final class LogicalFilter extends Filter {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a filter.
+ * Creates a LogicalFilter.
*
- * @param cluster {@link RelOptCluster} this relational expression belongs
- * to
- * @param child input relational expression
- * @param condition boolean expression which determines whether a row is
+ * @param cluster Cluster that this relational expression belongs to
+ * @param child Input relational expression
+ * @param condition Boolean expression which determines whether a row is
* allowed to pass
*/
- public FilterRel(
+ public LogicalFilter(
RelOptCluster cluster,
RelNode child,
RexNode condition) {
@@ -51,24 +52,23 @@ public final class FilterRel extends FilterRelBase {
}
/**
- * Creates a FilterRel by parsing serialized output.
+ * Creates a LogicalFilter by parsing serialized output.
*/
- public FilterRel(RelInput input) {
+ public LogicalFilter(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- public FilterRel copy(RelTraitSet traitSet, RelNode input,
+ public LogicalFilter copy(RelTraitSet traitSet, RelNode input,
RexNode condition) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new FilterRel(getCluster(), input, condition);
+ return new LogicalFilter(getCluster(), input, condition);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End FilterRel.java
+// End LogicalFilter.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalIntersect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalIntersect.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalIntersect.java
index 8bc3f67..5147b73 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalIntersect.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalIntersect.java
@@ -14,21 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-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.RelShuttle;
+import org.apache.calcite.rel.core.Intersect;
-import org.eigenbase.relopt.*;
+import java.util.List;
/**
- * <code>IntersectRel</code> returns the intersection of the rows of its inputs.
- * If "all" is true, then multiset intersection is performed; otherwise, set
- * intersection is performed (implying no duplicates in the results).
+ * Sub-class of {@link org.apache.calcite.rel.core.Intersect}
+ * not targeted at any particular engine or calling convention.
*/
-public final class IntersectRel extends IntersectRelBase {
+public final class LogicalIntersect extends Intersect {
//~ Constructors -----------------------------------------------------------
- public IntersectRel(
+ public LogicalIntersect(
RelOptCluster cluster,
List<RelNode> inputs,
boolean all) {
@@ -39,29 +44,22 @@ public final class IntersectRel extends IntersectRelBase {
all);
}
- /**
- * Creates an IntersectRel by parsing serialized output.
- */
- public IntersectRel(RelInput input) {
+ /** Creates a LogicalIntersect by parsing serialized output. */
+ public LogicalIntersect(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- @Override
- public IntersectRel copy(
- RelTraitSet traitSet, List<RelNode> inputs, boolean all) {
+ @Override public LogicalIntersect copy(RelTraitSet traitSet,
+ List<RelNode> inputs, boolean all) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new IntersectRel(
- getCluster(),
- inputs,
- all);
+ return new LogicalIntersect(getCluster(), inputs, all);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End IntersectRel.java
+// End LogicalIntersect.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalJoin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalJoin.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalJoin.java
index 8d06304..1dcea6f 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalJoin.java
@@ -14,30 +14,43 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.RelDataTypeField;
-import org.eigenbase.rex.*;
+package org.apache.calcite.rel.logical;
+
+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.rel.core.Join;
+import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexNode;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import java.util.List;
+import java.util.Set;
+
/**
- * A JoinRel represents two relational expressions joined according to some
- * condition.
+ * Sub-class of {@link org.apache.calcite.rel.core.Join}
+ * not targeted at any particular engine or calling convention.
*
* <p>Some rules:
*
- * <ul> <li>{@link org.eigenbase.rel.rules.ExtractJoinFilterRule} converts an
- * {@link JoinRel inner join} to a {@link FilterRel filter} on top of a {@link
- * JoinRel cartesian inner join}. <li>{@code
- * net.sf.farrago.fennel.rel.FennelCartesianJoinRule} implements a JoinRel as a
- * cartesian product. </ul>
+ * <ul>
+ * <li>{@link org.apache.calcite.rel.rules.JoinExtractFilterRule} converts an
+ * {@link LogicalJoin inner join} to a {@link LogicalFilter filter} on top of a
+ * {@link LogicalJoin cartesian inner join}.
+ *
+ * <li>{@code net.sf.farrago.fennel.rel.FennelCartesianJoinRule}
+ * implements a LogicalJoin as a cartesian product.
+ *
+ * </ul>
*/
-public final class JoinRel extends JoinRelBase {
+public final class LogicalJoin extends Join {
//~ Instance fields --------------------------------------------------------
// NOTE jvs 14-Mar-2006: Normally we don't use state like this
@@ -50,7 +63,7 @@ public final class JoinRel extends JoinRelBase {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a JoinRel.
+ * Creates a LogicalJoin.
*
* @param cluster Cluster
* @param left Left input
@@ -59,9 +72,9 @@ public final class JoinRel extends JoinRelBase {
* @param joinType Join type
* @param variablesStopped Set of names of variables which are set by the
* LHS and used by the RHS and are not available to
- * nodes above this JoinRel in the tree
+ * nodes above this LogicalJoin in the tree
*/
- public JoinRel(
+ public LogicalJoin(
RelOptCluster cluster,
RelNode left,
RelNode right,
@@ -80,7 +93,7 @@ public final class JoinRel extends JoinRelBase {
}
/**
- * Creates a JoinRel, flagged with whether it has been translated to a
+ * Creates a LogicalJoin, flagged with whether it has been translated to a
* semi-join.
*
* @param cluster Cluster
@@ -90,7 +103,7 @@ public final class JoinRel extends JoinRelBase {
* @param joinType Join type
* @param variablesStopped Set of names of variables which are set by the
* LHS and used by the RHS and are not available to
- * nodes above this JoinRel in the tree
+ * nodes above this LogicalJoin in the tree
* @param semiJoinDone Whether this join has been translated to a
* semi-join
* @param systemFieldList List of system fields that will be prefixed to
@@ -98,7 +111,7 @@ public final class JoinRel extends JoinRelBase {
* null
* @see #isSemiJoinDone()
*/
- public JoinRel(
+ public LogicalJoin(
RelOptCluster cluster,
RelNode left,
RelNode right,
@@ -121,9 +134,9 @@ public final class JoinRel extends JoinRelBase {
}
/**
- * Creates a JoinRel by parsing serialized output.
+ * Creates a LogicalJoin by parsing serialized output.
*/
- public JoinRel(RelInput input) {
+ public LogicalJoin(RelInput input) {
this(
input.getCluster(), input.getInputs().get(0),
input.getInputs().get(1), input.getExpression("condition"),
@@ -134,11 +147,10 @@ public final class JoinRel extends JoinRelBase {
//~ Methods ----------------------------------------------------------------
- @Override
- public JoinRel copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left,
- RelNode right, JoinRelType joinType, boolean semiJoinDone) {
+ @Override public LogicalJoin copy(RelTraitSet traitSet, RexNode conditionExpr,
+ RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new JoinRel(
+ return new LogicalJoin(
getCluster(),
left,
right,
@@ -149,8 +161,7 @@ public final class JoinRel extends JoinRelBase {
this.systemFieldList);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
@@ -170,4 +181,4 @@ public final class JoinRel extends JoinRelBase {
}
}
-// End JoinRel.java
+// End LogicalJoin.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalMinus.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalMinus.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalMinus.java
index 83411a9..9db2a1b 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalMinus.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalMinus.java
@@ -14,22 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-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.RelShuttle;
+import org.apache.calcite.rel.core.Minus;
-import org.eigenbase.relopt.*;
+import java.util.List;
/**
- * <code>MinusRel</code> returns the rows of its first input minus any matching
- * rows from its other inputs. If "all" is true, then multiset subtraction is
- * performed; otherwise, set subtraction is performed (implying no duplicates in
- * the results).
+ * Sub-class of {@link org.apache.calcite.rel.core.Minus}
+ * not targeted at any particular engine or calling convention.
*/
-public final class MinusRel extends MinusRelBase {
+public final class LogicalMinus extends Minus {
//~ Constructors -----------------------------------------------------------
- public MinusRel(
+ public LogicalMinus(
RelOptCluster cluster,
List<RelNode> inputs,
boolean all) {
@@ -41,28 +45,26 @@ public final class MinusRel extends MinusRelBase {
}
/**
- * Creates a MinusRel by parsing serialized output.
+ * Creates a LogicalMinus by parsing serialized output.
*/
- public MinusRel(RelInput input) {
+ public LogicalMinus(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- @Override
- public MinusRel copy(
+ @Override public LogicalMinus copy(
RelTraitSet traitSet, List<RelNode> inputs, boolean all) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new MinusRel(
+ return new LogicalMinus(
getCluster(),
inputs,
all);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End MinusRel.java
+// End LogicalMinus.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalOneRow.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalOneRow.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalOneRow.java
index 3e56391..4a44459 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalOneRow.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalOneRow.java
@@ -14,44 +14,47 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-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.core.OneRow;
-import org.eigenbase.relopt.*;
+import java.util.List;
/**
- * <code>OneRowRel</code> always returns one row, one column (containing the
- * value 0).
+ * Sub-class of {@link org.apache.calcite.rel.core.OneRow}
+ * not targeted at any particular engine or calling convention.
*/
-public final class OneRowRel extends OneRowRelBase {
+public final class LogicalOneRow extends OneRow {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a <code>OneRowRel</code>.
+ * Creates a <code>LogicalOneRow</code>.
*
- * @param cluster {@link RelOptCluster} this relational expression belongs
- * to
+ * @param cluster Cluster that this relational expression belongs to
*/
- public OneRowRel(RelOptCluster cluster) {
+ public LogicalOneRow(RelOptCluster cluster) {
super(
cluster,
cluster.traitSetOf(Convention.NONE));
}
/**
- * Creates a OneRowRel by parsing serialized output.
+ * Creates a LogicalOneRow by parsing serialized output.
*/
- public OneRowRel(RelInput input) {
+ public LogicalOneRow(RelInput input) {
super(input.getCluster(), input.getTraitSet());
}
- @Override
- public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
assert traitSet.containsIfApplicable(Convention.NONE);
assert inputs.isEmpty();
return this;
}
}
-// End OneRowRel.java
+// End LogicalOneRow.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalProject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalProject.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalProject.java
index faec719..8cc81a5 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalProject.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalProject.java
@@ -14,35 +14,40 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-import java.util.*;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollationImpl;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelShuttle;
+import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
+import java.util.List;
/**
- * <code>ProjectRel</code> is a relational expression which computes a set of
- * 'select expressions' from its input relational expression.
- *
- * <p>The result is usually 'boxed' as a record with one named field for each
- * column; if there is precisely one expression, the result may be 'unboxed',
- * and consist of the raw value type.</p>
+ * Sub-class of {@link org.apache.calcite.rel.core.Project} not
+ * targeted at any particular engine or calling convention.
*/
-public final class ProjectRel extends ProjectRelBase {
+public final class LogicalProject extends Project {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a ProjectRel with no sort keys.
+ * Creates a LogicalProject with no sort keys.
*
* @param cluster Cluster this relational expression belongs to
* @param child input relational expression
* @param exps set of expressions for the input columns
* @param fieldNames aliases of the expressions
- * @param flags values as in {@link ProjectRelBase.Flags}
+ * @param flags Flags; values as in {@link Project.Flags},
+ * usually {@link Project.Flags#BOXED}
*/
- public ProjectRel(
+ public LogicalProject(
RelOptCluster cluster,
RelNode child,
List<RexNode> exps,
@@ -61,16 +66,17 @@ public final class ProjectRel extends ProjectRelBase {
}
/**
- * Creates a ProjectRel.
+ * Creates a LogicalProject.
*
* @param cluster Cluster this relational expression belongs to
* @param traitSet traits of this rel
* @param child input relational expression
* @param exps List of expressions for the input columns
* @param rowType output row type
- * @param flags values as in {@link ProjectRelBase.Flags}
+ * @param flags Flags; values as in {@link Project.Flags},
+ * usually {@link Project.Flags#BOXED}
*/
- public ProjectRel(
+ public LogicalProject(
RelOptCluster cluster,
RelTraitSet traitSet,
RelNode child,
@@ -82,23 +88,23 @@ public final class ProjectRel extends ProjectRelBase {
}
/**
- * Creates a ProjectRel by parsing serialized output.
+ * Creates a LogicalProject by parsing serialized output.
*/
- public ProjectRel(RelInput input) {
+ public LogicalProject(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- @Override public ProjectRel copy(RelTraitSet traitSet, RelNode input,
+ @Override public LogicalProject copy(RelTraitSet traitSet, RelNode input,
List<RexNode> exps, RelDataType rowType) {
- return new ProjectRel(getCluster(), traitSet, input, exps, rowType, flags);
+ return new LogicalProject(getCluster(), traitSet, input, exps, rowType,
+ flags);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End ProjectRel.java
+// End LogicalProject.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableFunctionScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableFunctionScan.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableFunctionScan.java
index d2ec6a8..de0d1fa 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableFunctionScan.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableFunctionScan.java
@@ -14,27 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
+
+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.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.TableFunctionScan;
+import org.apache.calcite.rel.metadata.RelColumnMapping;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexNode;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Set;
-import org.eigenbase.rel.metadata.RelColumnMapping;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-
/**
- * <code>TableFunctionRel</code> represents a call to a function which returns a
- * result set. Currently, it can only appear as a leaf in a query tree, but
- * eventually we will extend it to take relational inputs.
+ * Sub-class of {@link org.apache.calcite.rel.core.TableFunctionScan}
+ * not targeted at any particular engine or calling convention.
*/
-public class TableFunctionRel extends TableFunctionRelBase {
+public class LogicalTableFunctionScan extends TableFunctionScan {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a <code>TableFunctionRel</code>.
+ * Creates a <code>LogicalTableFunctionScan</code>.
*
* @param cluster Cluster that this relational expression belongs to
* @param inputs 0 or more relational inputs
@@ -44,7 +50,7 @@ public class TableFunctionRel extends TableFunctionRelBase {
* @param rowType row type produced by function
* @param columnMappings column mappings associated with this function
*/
- public TableFunctionRel(
+ public LogicalTableFunctionScan(
RelOptCluster cluster,
List<RelNode> inputs,
RexNode rexCall,
@@ -61,18 +67,18 @@ public class TableFunctionRel extends TableFunctionRelBase {
}
/**
- * Creates a TableFunctionRel by parsing serialized output.
+ * Creates a LogicalTableFunctionScan by parsing serialized output.
*/
- public TableFunctionRel(RelInput input) {
+ public LogicalTableFunctionScan(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- @Override
- public TableFunctionRel copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public LogicalTableFunctionScan copy(RelTraitSet traitSet,
+ List<RelNode> inputs) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new TableFunctionRel(
+ return new LogicalTableFunctionScan(
getCluster(),
inputs,
getCall(),
@@ -87,4 +93,4 @@ public class TableFunctionRel extends TableFunctionRelBase {
}
}
-// End TableFunctionRel.java
+// End LogicalTableFunctionScan.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableModify.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableModify.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableModify.java
index b2b1246..c1835ff 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableModify.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableModify.java
@@ -14,24 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-import java.util.*;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.prepare.Prepare;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.TableModify;
-import org.eigenbase.relopt.*;
-
-import net.hydromatic.optiq.prepare.Prepare;
+import java.util.List;
/**
- * TableModificationRel is like TableAccessRel, but represents a request to
- * modify a table rather than read from it. It takes one child which produces
- * the modified rows. (For INSERT, the new values; for DELETE, the old values;
- * for UPDATE, all old values plus updated new values.)
+ * Sub-class of {@link org.apache.calcite.rel.core.TableModify}
+ * not targeted at any particular engine or calling convention.
*/
-public final class TableModificationRel extends TableModificationRelBase {
+public final class LogicalTableModify extends TableModify {
//~ Constructors -----------------------------------------------------------
- public TableModificationRel(
+ public LogicalTableModify(
RelOptCluster cluster,
RelOptTable table,
Prepare.CatalogReader schema,
@@ -52,10 +54,10 @@ public final class TableModificationRel extends TableModificationRelBase {
//~ Methods ----------------------------------------------------------------
- @Override
- public TableModificationRel copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public LogicalTableModify copy(RelTraitSet traitSet,
+ List<RelNode> inputs) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new TableModificationRel(
+ return new LogicalTableModify(
getCluster(),
table,
catalogReader,
@@ -66,4 +68,4 @@ public final class TableModificationRel extends TableModificationRelBase {
}
}
-// End TableModificationRel.java
+// End LogicalTableModify.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableScan.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableScan.java
index 5341fc2..5340fd0 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableScan.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalTableScan.java
@@ -14,14 +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.logical;
-import java.util.List;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.TableScan;
-import org.eigenbase.relopt.*;
+import java.util.List;
/**
- * A <code>TableAccessRel</code> reads all the rows from a {@link RelOptTable}.
+ * A <code>LogicalTableScan</code> reads all the rows from a
+ * {@link RelOptTable}.
*
* <p>If the table is a <code>net.sf.saffron.ext.JdbcTable</code>, then this is
* literally possible. But for other kinds of tables, there may be many ways to
@@ -45,16 +52,16 @@ import org.eigenbase.relopt.*;
* <p>can. It is the optimizer's responsibility to find these ways, by applying
* transformation rules.</p>
*/
-public final class TableAccessRel extends TableAccessRelBase {
+public final class LogicalTableScan extends TableScan {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a TableAccessRel.
+ * Creates a LogicalTableScan.
*
* @param cluster Cluster
* @param table Table
*/
- public TableAccessRel(
+ public LogicalTableScan(
RelOptCluster cluster,
RelOptTable table) {
super(
@@ -64,18 +71,17 @@ public final class TableAccessRel extends TableAccessRelBase {
}
/**
- * Creates a TableAccessRel by parsing serialized output.
+ * Creates a LogicalTableScan by parsing serialized output.
*/
- public TableAccessRel(RelInput input) {
+ public LogicalTableScan(RelInput input) {
super(input);
}
- @Override
- public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
assert traitSet.containsIfApplicable(Convention.NONE);
assert inputs.isEmpty();
return this;
}
}
-// End TableAccessRel.java
+// End LogicalTableScan.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalUnion.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalUnion.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalUnion.java
index 4e24846..49dde4d 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalUnion.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalUnion.java
@@ -14,20 +14,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-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.RelShuttle;
+import org.apache.calcite.rel.core.Union;
-import org.eigenbase.relopt.*;
+import java.util.List;
/**
- * <code>UnionRel</code> returns the union of the rows of its inputs, optionally
- * eliminating duplicates.
+ * Sub-class of {@link org.apache.calcite.rel.core.Union}
+ * not targeted at any particular engine or calling convention.
*/
-public final class UnionRel extends UnionRelBase {
+public final class LogicalUnion extends Union {
//~ Constructors -----------------------------------------------------------
- public UnionRel(
+ public LogicalUnion(
RelOptCluster cluster,
List<RelNode> inputs,
boolean all) {
@@ -39,27 +45,26 @@ public final class UnionRel extends UnionRelBase {
}
/**
- * Creates a UnionRel by parsing serialized output.
+ * Creates a LogicalUnion by parsing serialized output.
*/
- public UnionRel(RelInput input) {
+ public LogicalUnion(RelInput input) {
super(input);
}
//~ Methods ----------------------------------------------------------------
- public UnionRel copy(
+ public LogicalUnion copy(
RelTraitSet traitSet, List<RelNode> inputs, boolean all) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new UnionRel(
+ return new LogicalUnion(
getCluster(),
inputs,
all);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End UnionRel.java
+// End LogicalUnion.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java
index 5b28d8e..fc3beed 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java
@@ -14,63 +14,66 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
+package org.apache.calcite.rel.logical;
-import java.util.*;
+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.core.Values;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexLiteral;
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
+import java.util.List;
/**
- * <code>ValuesRel</code> represents a sequence of zero or more literal row
- * values.
+ * Sub-class of {@link org.apache.calcite.rel.core.Values}
+ * not targeted at any particular engine or calling convention.
*/
-public class ValuesRel extends ValuesRelBase {
+public class LogicalValues extends Values {
//~ Constructors -----------------------------------------------------------
/**
- * Creates a new ValuesRel. Note that tuples passed in become owned by this
+ * Creates a new LogicalValues.
+ *
+ * <p>Note that tuples passed in become owned by this
* rel (without a deep copy), so caller must not modify them after this
* call, otherwise bad things will happen.
*
- * @param cluster .
- * @param rowType row type for tuples produced by this rel
+ * @param cluster Cluster that this relational expression belongs to
+ * @param rowType Row type for tuples produced by this rel
* @param tuples 2-dimensional array of tuple values to be produced; outer
* list contains tuples; each inner list is one tuple; all
* tuples must be of same length, conforming to rowType
*/
- public ValuesRel(
+ public LogicalValues(
RelOptCluster cluster,
RelDataType rowType,
List<List<RexLiteral>> tuples) {
- super(
- cluster,
- rowType,
- tuples,
- cluster.traitSetOf(Convention.NONE));
+ super(cluster, rowType, tuples, cluster.traitSetOf(Convention.NONE));
}
/**
- * Creates a ValuesRel by parsing serialized output.
+ * Creates a LogicalValues by parsing serialized output.
*/
- public ValuesRel(RelInput input) {
+ public LogicalValues(RelInput input) {
super(input);
}
- public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
assert traitSet.containsIfApplicable(Convention.NONE);
assert inputs.isEmpty();
- return new ValuesRel(
+ return new LogicalValues(
getCluster(),
rowType,
tuples);
}
- @Override
- public RelNode accept(RelShuttle shuttle) {
+ @Override public RelNode accept(RelShuttle shuttle) {
return shuttle.visit(this);
}
}
-// End ValuesRel.java
+// End LogicalValues.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
index d278a38..e75d340 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
@@ -14,61 +14,70 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.eigenbase.rel;
-
-import java.util.*;
-
-import org.eigenbase.relopt.*;
-import org.eigenbase.reltype.*;
-import org.eigenbase.rex.*;
-import org.eigenbase.util.Pair;
-import org.eigenbase.util.Util;
-
-import net.hydromatic.linq4j.Ord;
-
-import net.hydromatic.optiq.util.BitSets;
-
+package org.apache.calcite.rel.logical;
+
+import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexFieldCollation;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexLocalRef;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexOver;
+import org.apache.calcite.rex.RexProgram;
+import org.apache.calcite.rex.RexShuttle;
+import org.apache.calcite.rex.RexWindow;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.util.BitSets;
+import org.apache.calcite.util.Pair;
+
+import com.google.common.base.Objects;
import com.google.common.base.Predicate;
-import com.google.common.collect.*;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.LinkedListMultimap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
- * A relational expression representing a set of window aggregates.
- *
- * <p>A window rel can handle several window aggregate functions, over several
- * partitions, with pre- and post-expressions, and an optional post-filter.
- * Each of the partitions is defined by a partition key (zero or more columns)
- * and a range (logical or physical). The partitions expect the data to be
- * sorted correctly on input to the relational expression.
- *
- * <p>Each {@link org.eigenbase.rel.WindowRelBase.Window} has a set of
- * {@link org.eigenbase.rex.RexOver} objects.
- *
- * <p>Created by {@link org.eigenbase.rel.rules.WindowedAggSplitterRule}.
*/
-public final class WindowRel extends WindowRelBase {
+public final class LogicalWindow extends Window {
/**
- * Creates a WindowRel.
+ * Creates a LogicalWindow.
*
* @param cluster Cluster
* @param child Input relational expression
* @param constants List of constants that are additional inputs
* @param rowType Output row type
- * @param windows Windows
+ * @param groups Windows
*/
- public WindowRel(
+ public LogicalWindow(
RelOptCluster cluster, RelTraitSet traits, RelNode child,
- List<RexLiteral> constants, RelDataType rowType, List<Window> windows) {
- super(cluster, traits, child, constants, rowType, windows);
+ List<RexLiteral> constants, RelDataType rowType, List<Group> groups) {
+ super(cluster, traits, child, constants, rowType, groups);
}
- @Override
- public WindowRel copy(RelTraitSet traitSet, List<RelNode> inputs) {
- return new WindowRel(
- getCluster(), traitSet, sole(inputs), constants, rowType, windows);
+ @Override public LogicalWindow copy(RelTraitSet traitSet,
+ List<RelNode> inputs) {
+ return new LogicalWindow(getCluster(), traitSet, sole(inputs), constants,
+ rowType, groups);
}
/**
- * Creates a WindowRel.
+ * Creates a LogicalWindow.
*/
public static RelNode create(
RelOptCluster cluster,
@@ -76,7 +85,7 @@ public final class WindowRel extends WindowRelBase {
RelNode child,
final RexProgram program,
RelDataType outRowType) {
- // Build a list of distinct windows, partitions and aggregate
+ // Build a list of distinct groups, partitions and aggregate
// functions.
final Multimap<WindowKey, RexOver> windowMap =
LinkedListMultimap.create();
@@ -90,8 +99,7 @@ public final class WindowRel extends WindowRelBase {
// Identify constants in the expression tree and replace them with
// references to newly generated constant pool.
RexShuttle replaceConstants = new RexShuttle() {
- @Override
- public RexNode visitLiteral(RexLiteral literal) {
+ @Override public RexNode visitLiteral(RexLiteral literal) {
RexInputRef ref = constantPool.get(literal);
if (ref != null) {
return ref;
@@ -104,7 +112,7 @@ public final class WindowRel extends WindowRelBase {
}
};
- // Build a list of windows, partitions, and aggregate functions. Each
+ // Build a list of groups, partitions, and aggregate functions. Each
// aggregate function will add its arguments as outputs of the input
// program.
for (RexNode agg : program.getExprList()) {
@@ -115,9 +123,9 @@ public final class WindowRel extends WindowRelBase {
}
}
- final Map<RexOver, WindowRelBase.RexWinAggCall> aggMap =
- new HashMap<RexOver, WindowRelBase.RexWinAggCall>();
- List<Window> windowList = new ArrayList<Window>();
+ final Map<RexOver, Window.RexWinAggCall> aggMap =
+ new HashMap<RexOver, Window.RexWinAggCall>();
+ List<Group> groups = new ArrayList<Group>();
for (Map.Entry<WindowKey, Collection<RexOver>> entry
: windowMap.asMap().entrySet()) {
final WindowKey windowKey = entry.getKey();
@@ -134,13 +142,12 @@ public final class WindowRel extends WindowRelBase {
aggMap.put(over, aggCall);
}
RexShuttle toInputRefs = new RexShuttle() {
- @Override
- public RexNode visitLocalRef(RexLocalRef localRef) {
+ @Override public RexNode visitLocalRef(RexLocalRef localRef) {
return new RexInputRef(localRef.getIndex(), localRef.getType());
}
};
- windowList.add(
- new Window(
+ groups.add(
+ new Group(
windowKey.groupSet,
windowKey.isRows,
windowKey.lowerBound.accept(toInputRefs),
@@ -152,8 +159,8 @@ public final class WindowRel extends WindowRelBase {
// Figure out the type of the inputs to the output program.
// They are: the inputs to this rel, followed by the outputs of
// each window.
- final List<WindowRelBase.RexWinAggCall> flattenedAggCallList =
- new ArrayList<WindowRelBase.RexWinAggCall>();
+ final List<Window.RexWinAggCall> flattenedAggCallList =
+ new ArrayList<Window.RexWinAggCall>();
List<Map.Entry<String, RelDataType>> fieldList =
new ArrayList<Map.Entry<String, RelDataType>>(
child.getRowType().getFieldList());
@@ -169,7 +176,7 @@ public final class WindowRel extends WindowRelBase {
}
}
- for (Ord<Window> window : Ord.zip(windowList)) {
+ for (Ord<Group> window : Ord.zip(groups)) {
for (Ord<RexWinAggCall> over : Ord.zip(window.e.aggCalls)) {
// Add the k-th over expression of
// the i-th window to the output of the program.
@@ -190,7 +197,7 @@ public final class WindowRel extends WindowRelBase {
new RexShuttle() {
public RexNode visitOver(RexOver over) {
// Look up the aggCall which this expr was translated to.
- final WindowRelBase.RexWinAggCall aggCall =
+ final Window.RexWinAggCall aggCall =
aggMap.get(over);
assert aggCall != null;
assert RelOptUtil.eq(
@@ -201,7 +208,7 @@ public final class WindowRel extends WindowRelBase {
true);
// Find the index of the aggCall among all partitions of all
- // windows.
+ // groups.
final int aggCallIndex =
flattenedAggCallList.indexOf(aggCall);
assert aggCallIndex >= 0;
@@ -230,14 +237,14 @@ public final class WindowRel extends WindowRelBase {
localRef.getType());
}
};
- // TODO: The order that the "over" calls occur in the windows and
+ // TODO: The order that the "over" calls occur in the groups and
// partitions may not match the order in which they occurred in the
// original expression. We should add a project to permute them.
- WindowRel window =
- new WindowRel(
+ LogicalWindow window =
+ new LogicalWindow(
cluster, traitSet, child, constants, intermediateRowType,
- windowList);
+ groups);
return RelOptUtil.createProject(
window,
@@ -264,7 +271,7 @@ public final class WindowRel extends WindowRelBase {
};
}
- /** Window specification. All windowed aggregates over the same window
+ /** Group specification. All windowed aggregates over the same window
* (regardless of how it is specified, in terms of a named window or specified
* attribute by attribute) will end up with the same window key. */
private static class WindowKey {
@@ -287,20 +294,21 @@ public final class WindowRel extends WindowRelBase {
this.upperBound = upperBound;
}
- @Override
- public int hashCode() {
- return Util.hashV(
- groupSet, orderKeys, isRows, lowerBound, upperBound);
+ @Override public int hashCode() {
+ return com.google.common.base.Objects.hashCode(groupSet,
+ orderKeys,
+ isRows,
+ lowerBound,
+ upperBound);
}
- @Override
- public boolean equals(Object obj) {
+ @Override public boolean equals(Object obj) {
return obj == this
|| obj instanceof WindowKey
&& groupSet.equals(((WindowKey) obj).groupSet)
&& orderKeys.equals(((WindowKey) obj).orderKeys)
- && Util.equal(lowerBound, ((WindowKey) obj).lowerBound)
- && Util.equal(upperBound, ((WindowKey) obj).upperBound)
+ && Objects.equal(lowerBound, ((WindowKey) obj).lowerBound)
+ && Objects.equal(upperBound, ((WindowKey) obj).upperBound)
&& isRows == ((WindowKey) obj).isRows;
}
}
@@ -338,4 +346,4 @@ public final class WindowRel extends WindowRelBase {
}
}
-// End WindowRel.java
+// End LogicalWindow.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/logical/package-info.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/package-info.java b/core/src/main/java/org/apache/calcite/rel/logical/package-info.java
new file mode 100644
index 0000000..3317ac1
--- /dev/null
+++ b/core/src/main/java/org/apache/calcite/rel/logical/package-info.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Defines logical relational expressions.
+ *
+ * <h2>Related packages and classes</h2>
+ * <ul>
+ *
+ * <li>Package <code>
+ * <a href="../logical/package-summary.html">org.apache.calcite.rel.core</a></code>
+ * contains core relational expressions
+ *
+ * <li>Package <code>
+ * <a href="../package-summary.html">org.apache.calcite.rex</a></code>
+ * defines the relational expression API
+ *
+ * </ul>
+ */
+package org.apache.calcite.rel.logical;
+
+// End package-info.java
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java b/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
index 7bb40ec..4d890b6 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
@@ -14,15 +14,16 @@
* 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.RelOptCost;
+import org.apache.calcite.plan.RelOptPredicateList;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlExplainLevel;
-import org.eigenbase.rel.*;
-import org.eigenbase.relopt.RelOptCost;
-import org.eigenbase.relopt.RelOptPredicateList;
-import org.eigenbase.rex.RexNode;
-import org.eigenbase.sql.SqlExplainLevel;
+import java.util.BitSet;
+import java.util.Set;
/**
* Contains the interfaces for several common forms of metadata.
@@ -137,7 +138,7 @@ public abstract class BuiltInMetadata {
* Estimates the distinct row count in the original source for the given
* {@code groupKey}, ignoring any filtering being applied by the expression.
* Typically, "original source" means base table, but for derived columns,
- * the estimate may come from a non-leaf rel such as a ProjectRel.
+ * the estimate may come from a non-leaf rel such as a LogicalProject.
*
* @param groupKey column mask representing the subset of columns for which
* the row count will be determined
@@ -152,8 +153,8 @@ public abstract class BuiltInMetadata {
/**
* For a given output column of an expression, determines all columns of
* underlying tables which contribute to result values. An output column may
- * have more than one origin due to expressions such as UnionRel and
- * ProjectRel. The optimizer may use this information for catalog access
+ * have more than one origin due to expressions such as Union and
+ * LogicalProject. The optimizer may use this information for catalog access
* (e.g. index availability).
*
* @param outputColumn 0-based ordinal for output column of interest
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
index fe825c0..a45501b 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
@@ -14,17 +14,21 @@
* 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.relopt.*;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.rel.RelNode;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Implementation of the {@link RelMetadataProvider}
* interface that caches results from an underlying provider.
@@ -39,8 +43,7 @@ public class CachingRelMetadataProvider implements RelMetadataProvider {
private final RelOptPlanner planner;
private static final Object NULL_SENTINEL = new Object() {
- @Override
- public String toString() {
+ @Override public String toString() {
return "{null}";
}
};
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/ChainedRelMetadataProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/ChainedRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/ChainedRelMetadataProvider.java
index 3cef5b3..445cce4 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/ChainedRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/ChainedRelMetadataProvider.java
@@ -14,21 +14,23 @@
* 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.apache.calcite.rel.RelNode;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.List;
+
/**
* Implementation of the {@link RelMetadataProvider}
* interface via the
- * {@link org.eigenbase.util.Glossary#CHAIN_OF_RESPONSIBILITY_PATTERN}.
+ * {@link org.apache.calcite.util.Glossary#CHAIN_OF_RESPONSIBILITY_PATTERN}.
*
* <p>When a consumer calls the {@link #apply} method to ask for a provider
* for a particular type of {@link RelNode} and {@link Metadata}, scans the list
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/DefaultRelMetadataProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/DefaultRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/DefaultRelMetadataProvider.java
index 5958476..33ad92f 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/DefaultRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/DefaultRelMetadataProvider.java
@@ -14,15 +14,15 @@
* 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 com.google.common.collect.ImmutableList;
/**
- * DefaultRelMetadataProvider supplies a default implementation of the {@link
- * RelMetadataProvider} interface. It provides generic formulas and derivation
- * rules for the standard logical algebra; coverage corresponds to the methods
- * declared in {@link RelMetadataQuery}.
+ * DefaultRelMetadataProvider supplies a default implementation of the
+ * {@link RelMetadataProvider} interface. It provides generic formulas and
+ * derivation rules for the standard logical algebra; coverage corresponds to
+ * the methods declared in {@link RelMetadataQuery}.
*/
public class DefaultRelMetadataProvider extends ChainedRelMetadataProvider {
//~ Constructors -----------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/Metadata.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/Metadata.java b/core/src/main/java/org/apache/calcite/rel/metadata/Metadata.java
index be97533..34e456f 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/Metadata.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/Metadata.java
@@ -14,20 +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 org.eigenbase.rel.RelNode;
+import org.apache.calcite.rel.RelNode;
/**
* Metadata about a relational expression.
*
* <p>For particular types of metadata, a sub-class defines one of more methods
* to query that metadata. Then a {@link RelMetadataProvider} can offer those
- * kinds of metadata for particular sub-classes of {@link RelNode}.</p>
+ * kinds of metadata for particular sub-classes of {@link RelNode}.
*
* <p>User code (typically in a planner rule or an implementation of
- * {@link RelNode#computeSelfCost(org.eigenbase.relopt.RelOptPlanner)}) acquires
- * a {@code Metadata} instance by calling {@link RelNode#metadata}.</p>
+ * {@link RelNode#computeSelfCost(org.apache.calcite.plan.RelOptPlanner)})
+ * acquires a {@code Metadata} instance by calling {@link RelNode#metadata}.
*
* <p>A {@code Metadata} instance already knows which particular {@code RelNode}
* it is describing, so the methods do not pass in the {@code RelNode}. In fact,
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactory.java b/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactory.java
index 428d533..7651ecd 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactory.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactory.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.RelNode;
+import org.apache.calcite.rel.RelNode;
/**
* Source of metadata about relational expressions.
http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/a0ba73cd/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactoryImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactoryImpl.java b/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactoryImpl.java
index 9512597..e20d6ce 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactoryImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/MetadataFactoryImpl.java
@@ -14,12 +14,10 @@
* 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.concurrent.ExecutionException;
-
-import org.eigenbase.rel.RelNode;
-import org.eigenbase.util.Pair;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.util.Pair;
import com.google.common.base.Function;
import com.google.common.base.Functions;
@@ -27,6 +25,8 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
+import java.util.concurrent.ExecutionException;
+
/** Implementation of {@link MetadataFactory} that gets providers from a
* {@link RelMetadataProvider} and stores them in a cache.
*
@@ -51,8 +51,7 @@ public class MetadataFactoryImpl implements MetadataFactory {
Function<RelNode, Metadata>> loader(final RelMetadataProvider provider) {
return new CacheLoader<Pair<Class<RelNode>, Class<Metadata>>,
Function<RelNode, Metadata>>() {
- @Override
- public Function<RelNode, Metadata> load(
+ @Override public Function<RelNode, Metadata> load(
Pair<Class<RelNode>, Class<Metadata>> key) throws Exception {
final Function<RelNode, Metadata> function =
provider.apply(key.left, key.right);