You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by da...@apache.org on 2019/05/31 05:25:05 UTC
[calcite] branch master updated: [CALCITE-3102] Remove deprecation
warnings following CALCITE-2969
This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 682dd8f [CALCITE-3102] Remove deprecation warnings following CALCITE-2969
682dd8f is described below
commit 682dd8f6c25e421355e83e113e98d4b27bee89bc
Author: yuzhao.cyz <yu...@alibaba-inc.com>
AuthorDate: Fri May 31 10:38:09 2019 +0800
[CALCITE-3102] Remove deprecation warnings following CALCITE-2969
---
.../enumerable/EnumerableMergeJoinRule.java | 2 -
.../adapter/enumerable/EnumerableSemiJoin.java | 86 +++-------------------
.../adapter/enumerable/EnumerableSemiJoinRule.java | 13 +++-
.../org/apache/calcite/rel/core/Correlate.java | 11 ---
.../calcite/rel/logical/LogicalCorrelate.java | 16 ----
.../calcite/rel/metadata/RelMdCollation.java | 7 --
.../rel/metadata/RelMdColumnUniqueness.java | 8 --
.../rel/metadata/RelMdDistinctRowCount.java | 7 --
.../calcite/rel/metadata/RelMdNodeTypes.java | 6 --
.../calcite/rel/metadata/RelMdPopulationSize.java | 6 --
.../apache/calcite/rel/metadata/RelMdRowCount.java | 13 ----
.../org/apache/calcite/rel/metadata/RelMdSize.java | 5 --
.../calcite/rel/metadata/RelMdUniqueKeys.java | 8 --
.../org/apache/calcite/rel/metadata/RelMdUtil.java | 18 +----
.../apache/calcite/rel/mutable/MutableRels.java | 10 ---
.../calcite/rel/rules/JoinToCorrelateRule.java | 5 +-
.../java/org/apache/calcite/tools/Programs.java | 1 -
site/_docs/history.md | 1 -
18 files changed, 22 insertions(+), 201 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
index 3b37535..2b04efd 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
@@ -95,8 +95,6 @@ class EnumerableMergeJoinRule extends ConverterRule {
left,
right,
info.getEquiCondition(left, right, cluster.getRexBuilder()),
- info.leftKeys,
- info.rightKeys,
join.getVariablesSet(),
join.getJoinType());
} catch (InvalidRelException e) {
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
index f053dfe..691e79a 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
@@ -16,25 +16,18 @@
*/
package org.apache.calcite.adapter.enumerable;
-import org.apache.calcite.linq4j.tree.BlockBuilder;
-import org.apache.calcite.linq4j.tree.Expression;
-import org.apache.calcite.linq4j.tree.Expressions;
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.InvalidRelException;
import org.apache.calcite.rel.RelCollationTraitDef;
import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.JoinRelType;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.metadata.RelMdCollation;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.ImmutableIntList;
-import org.apache.calcite.util.Util;
+
+import com.google.common.collect.ImmutableSet;
/** Implementation of {@link org.apache.calcite.rel.core.SemiJoin} in
* {@link org.apache.calcite.adapter.enumerable.EnumerableConvention enumerable calling convention}.
@@ -43,7 +36,7 @@ import org.apache.calcite.util.Util;
* see {@link EnumerableJoinRule} for details.
*/
@Deprecated // to be removed before 2.0
-public class EnumerableSemiJoin extends SemiJoin implements EnumerableRel {
+public class EnumerableSemiJoin extends EnumerableHashJoin implements EnumerableRel {
/** Creates an EnumerableSemiJoin.
*
* <p>Use {@link #create} unless you know what you're doing. */
@@ -56,11 +49,12 @@ public class EnumerableSemiJoin extends SemiJoin implements EnumerableRel {
ImmutableIntList leftKeys,
ImmutableIntList rightKeys)
throws InvalidRelException {
- super(cluster, traits, left, right, condition, leftKeys, rightKeys);
+ super(cluster, traits, left, right, condition,
+ ImmutableSet.of(), JoinRelType.SEMI);
}
/** Creates an EnumerableSemiJoin. */
- public static EnumerableSemiJoin create(RelNode left, RelNode right, RexNode condition,
+ public static EnumerableHashJoin create(RelNode left, RelNode right, RexNode condition,
ImmutableIntList leftKeys, ImmutableIntList rightKeys) {
final RelOptCluster cluster = left.getCluster();
final RelMetadataQuery mq = cluster.getMetadataQuery();
@@ -69,82 +63,20 @@ public class EnumerableSemiJoin extends SemiJoin implements EnumerableRel {
.replaceIfs(RelCollationTraitDef.INSTANCE,
() -> RelMdCollation.enumerableSemiJoin(mq, left, right));
try {
- return new EnumerableSemiJoin(
+ return new EnumerableHashJoin(
cluster,
traitSet,
left,
right,
condition,
- leftKeys,
- rightKeys);
- } catch (InvalidRelException e) {
- // Semantic error not possible. Must be a bug. Convert to
- // internal error.
- throw new AssertionError(e);
- }
- }
-
- @Override public SemiJoin copy(RelTraitSet traitSet, RexNode condition,
- RelNode left, RelNode right, JoinRelType joinType,
- boolean semiJoinDone) {
- assert joinType == JoinRelType.INNER;
- final JoinInfo joinInfo = JoinInfo.of(left, right, condition);
- assert joinInfo.isEqui();
- try {
- return new EnumerableSemiJoin(getCluster(), traitSet, left, right,
- condition, joinInfo.leftKeys, joinInfo.rightKeys);
+ ImmutableSet.of(),
+ JoinRelType.SEMI);
} catch (InvalidRelException e) {
// Semantic error not possible. Must be a bug. Convert to
// internal error.
throw new AssertionError(e);
}
}
-
- @Override public RelOptCost computeSelfCost(RelOptPlanner planner,
- RelMetadataQuery mq) {
- double rowCount = mq.getRowCount(this);
-
- // Right-hand input is the "build", and hopefully small, input.
- final double rightRowCount = right.estimateRowCount(mq);
- final double leftRowCount = left.estimateRowCount(mq);
- if (Double.isInfinite(leftRowCount)) {
- rowCount = leftRowCount;
- } else {
- rowCount += Util.nLogN(leftRowCount);
- }
- if (Double.isInfinite(rightRowCount)) {
- rowCount = rightRowCount;
- } else {
- rowCount += rightRowCount;
- }
- return planner.getCostFactory().makeCost(rowCount, 0, 0).multiplyBy(.01d);
- }
-
- public Result implement(EnumerableRelImplementor implementor, Prefer pref) {
- BlockBuilder builder = new BlockBuilder();
- final Result leftResult =
- implementor.visitChild(this, 0, (EnumerableRel) left, pref);
- Expression leftExpression =
- builder.append(
- "left", leftResult.block);
- final Result rightResult =
- implementor.visitChild(this, 1, (EnumerableRel) right, pref);
- Expression rightExpression =
- builder.append(
- "right", rightResult.block);
- final PhysType physType = leftResult.physType;
- return implementor.result(
- physType,
- builder.append(
- Expressions.call(
- BuiltInMethod.SEMI_JOIN.method,
- Expressions.list(
- leftExpression,
- rightExpression,
- leftResult.physType.generateAccessor(leftKeys),
- rightResult.physType.generateAccessor(rightKeys))))
- .toBlock());
- }
}
// End EnumerableSemiJoin.java
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoinRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoinRule.java
index 40a0ee9..631ea1e 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoinRule.java
@@ -17,10 +17,14 @@
package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
+import org.apache.calcite.rel.InvalidRelException;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.SemiJoin;
+import com.google.common.collect.ImmutableSet;
+
import java.util.ArrayList;
import java.util.List;
@@ -48,8 +52,13 @@ class EnumerableSemiJoinRule extends ConverterRule {
}
newInputs.add(input);
}
- return EnumerableSemiJoin.create(newInputs.get(0), newInputs.get(1),
- semiJoin.getCondition(), semiJoin.leftKeys, semiJoin.rightKeys);
+ try {
+ return EnumerableHashJoin.create(newInputs.get(0), newInputs.get(1),
+ semiJoin.getCondition(), ImmutableSet.of(), JoinRelType.SEMI);
+ } catch (InvalidRelException e) {
+ // Convert to internal error.
+ throw new AssertionError(e);
+ }
}
}
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Correlate.java b/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
index ccd9523..44a8534 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
@@ -27,7 +27,6 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.RelWriter;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.sql.SemiJoinType;
import org.apache.calcite.sql.validate.SqlValidatorUtil;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Litmus;
@@ -99,16 +98,6 @@ public abstract class Correlate extends BiRel {
this.requiredColumns = requiredColumns;
}
- @Deprecated // To be removed before 2.0
- protected Correlate(RelOptCluster cluster, RelTraitSet traits, RelNode left,
- RelNode right, CorrelationId correlationId, ImmutableBitSet
- requiredColumns, SemiJoinType joinType) {
- super(cluster, traits, left, right);
- this.joinType = joinType.toJoinType();
- this.correlationId = correlationId;
- this.requiredColumns = requiredColumns;
- }
-
/**
* Creates a Correlate by parsing serialized output.
*
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCorrelate.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCorrelate.java
index 6c1ebb5..137ca78 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCorrelate.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCorrelate.java
@@ -26,7 +26,6 @@ import org.apache.calcite.rel.RelShuttle;
import org.apache.calcite.rel.core.Correlate;
import org.apache.calcite.rel.core.CorrelationId;
import org.apache.calcite.rel.core.JoinRelType;
-import org.apache.calcite.sql.SemiJoinType;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Litmus;
@@ -75,14 +74,6 @@ public final class LogicalCorrelate extends Correlate {
assert !CalciteSystemProperty.DEBUG.value() || isValid(Litmus.THROW, null);
}
- @Deprecated // To be removed before 2.0
- public LogicalCorrelate(RelOptCluster cluster, RelTraitSet traitSet, RelNode left,
- RelNode right, CorrelationId correlationId, ImmutableBitSet requiredColumns,
- SemiJoinType joinType) {
- this(cluster, traitSet, left, right, correlationId, requiredColumns,
- joinType.toJoinType());
- }
-
/**
* Creates a LogicalCorrelate by parsing serialized output.
*/
@@ -104,13 +95,6 @@ public final class LogicalCorrelate extends Correlate {
requiredColumns, joinType);
}
- @Deprecated // To be removed before 2.0
- public static LogicalCorrelate create(RelNode left, RelNode right,
- CorrelationId correlationId, ImmutableBitSet requiredColumns,
- SemiJoinType joinType) {
- return create(left, right, correlationId, requiredColumns, joinType.toJoinType());
- }
-
//~ Methods ----------------------------------------------------------------
@Override public LogicalCorrelate copy(RelTraitSet traitSet,
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
index 1541099..e1edf51 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
@@ -20,7 +20,6 @@ import org.apache.calcite.adapter.enumerable.EnumerableCorrelate;
import org.apache.calcite.adapter.enumerable.EnumerableHashJoin;
import org.apache.calcite.adapter.enumerable.EnumerableMergeJoin;
import org.apache.calcite.adapter.enumerable.EnumerableNestedLoopJoin;
-import org.apache.calcite.adapter.enumerable.EnumerableSemiJoin;
import org.apache.calcite.linq4j.Ord;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.plan.hep.HepRelVertex;
@@ -156,12 +155,6 @@ public class RelMdCollation
join.getJoinType()));
}
- public ImmutableList<RelCollation> collations(EnumerableSemiJoin join,
- RelMetadataQuery mq) {
- return ImmutableList.copyOf(
- RelMdCollation.enumerableSemiJoin(mq, join.getLeft(), join.getRight()));
- }
-
public ImmutableList<RelCollation> collations(Sort sort,
RelMetadataQuery mq) {
return ImmutableList.copyOf(
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
index cc5e77e..dce0564 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
@@ -30,7 +30,6 @@ import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.SetOp;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
@@ -313,13 +312,6 @@ public class RelMdColumnUniqueness
throw new AssertionError();
}
- public Boolean areColumnsUnique(SemiJoin rel, RelMetadataQuery mq,
- ImmutableBitSet columns, boolean ignoreNulls) {
- // only return the unique keys from the LHS since a semijoin only
- // returns the LHS
- return mq.areColumnsUnique(rel.getLeft(), columns, ignoreNulls);
- }
-
public Boolean areColumnsUnique(Aggregate rel, RelMetadataQuery mq,
ImmutableBitSet columns, boolean ignoreNulls) {
// group by keys form a unique key
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
index e207135..0cca9a4 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java
@@ -24,7 +24,6 @@ import org.apache.calcite.rel.core.Exchange;
import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rel.core.Values;
@@ -143,12 +142,6 @@ public class RelMdDistinctRowCount
groupKey, predicate, false);
}
- @Deprecated // to be removed before 2.0
- public Double getDistinctRowCount(SemiJoin rel, RelMetadataQuery mq,
- ImmutableBitSet groupKey, RexNode predicate) {
- return RelMdUtil.getSemiJoinDistinctRowCount(rel, mq, groupKey, predicate);
- }
-
public Double getDistinctRowCount(Aggregate rel, RelMetadataQuery mq,
ImmutableBitSet groupKey, RexNode predicate) {
if (predicate == null || predicate.isAlwaysTrue()) {
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java
index 31e223d..22737b6 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java
@@ -26,7 +26,6 @@ import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.core.Union;
@@ -114,11 +113,6 @@ public class RelMdNodeTypes
return getNodeTypes(rel, Join.class, mq);
}
- public Multimap<Class<? extends RelNode>, RelNode> getNodeTypes(SemiJoin rel,
- RelMetadataQuery mq) {
- return getNodeTypes(rel, SemiJoin.class, mq);
- }
-
public Multimap<Class<? extends RelNode>, RelNode> getNodeTypes(Aggregate rel,
RelMetadataQuery mq) {
return getNodeTypes(rel, Aggregate.class, mq);
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
index a0d17bb..8e21963 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java
@@ -22,7 +22,6 @@ import org.apache.calcite.rel.core.Exchange;
import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rel.core.Values;
@@ -85,11 +84,6 @@ public class RelMdPopulationSize
return RelMdUtil.getJoinPopulationSize(mq, rel, groupKey);
}
- public Double getPopulationSize(SemiJoin rel, RelMetadataQuery mq,
- ImmutableBitSet groupKey) {
- return mq.getPopulationSize(rel.getLeft(), groupKey);
- }
-
public Double getPopulationSize(Aggregate rel, RelMetadataQuery mq,
ImmutableBitSet groupKey) {
ImmutableBitSet.Builder childKey = ImmutableBitSet.builder();
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
index b5f035b..27db782 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
@@ -27,14 +27,12 @@ import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rel.core.Values;
import org.apache.calcite.rex.RexDynamicParam;
import org.apache.calcite.rex.RexLiteral;
-import org.apache.calcite.rex.RexNode;
import org.apache.calcite.util.Bug;
import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.ImmutableBitSet;
@@ -188,17 +186,6 @@ public class RelMdRowCount
return RelMdUtil.getJoinRowCount(mq, rel, rel.getCondition());
}
- public Double getRowCount(SemiJoin rel, RelMetadataQuery mq) {
- // create a RexNode representing the selectivity of the
- // semijoin filter and pass it to getSelectivity
- RexNode semiJoinSelectivity =
- RelMdUtil.makeSemiJoinSelectivityRexNode(mq, rel);
-
- return NumberUtil.multiply(
- mq.getSelectivity(rel.getLeft(), semiJoinSelectivity),
- mq.getRowCount(rel.getLeft()));
- }
-
public Double getRowCount(Aggregate rel, RelMetadataQuery mq) {
ImmutableBitSet groupKey = rel.getGroupSet(); // .range(rel.getGroupCount());
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
index 1f386c0..c12c462 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
@@ -26,7 +26,6 @@ import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.core.Union;
@@ -177,10 +176,6 @@ public class RelMdSize implements MetadataHandler<BuiltInMetadata.Size> {
return list.build();
}
- public List<Double> averageColumnSizes(SemiJoin rel, RelMetadataQuery mq) {
- return averageJoinColumnSizes(rel, mq);
- }
-
public List<Double> averageColumnSizes(Join rel, RelMetadataQuery mq) {
return averageJoinColumnSizes(rel, mq);
}
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
index 4bf414e..d33873e 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
@@ -23,7 +23,6 @@ import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.SetOp;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rex.RexInputRef;
@@ -206,13 +205,6 @@ public class RelMdUniqueKeys
return retSet;
}
- public Set<ImmutableBitSet> getUniqueKeys(SemiJoin rel, RelMetadataQuery mq,
- boolean ignoreNulls) {
- // only return the unique keys from the LHS since a semijoin only
- // returns the LHS
- return mq.getUniqueKeys(rel.getLeft(), ignoreNulls);
- }
-
public Set<ImmutableBitSet> getUniqueKeys(Aggregate rel, RelMetadataQuery mq,
boolean ignoreNulls) {
// group by keys form a unique key
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
index cb603b0..e9123c6 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
@@ -25,7 +25,6 @@ import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rex.RexBuilder;
import org.apache.calcite.rex.RexCall;
@@ -111,21 +110,6 @@ public class RelMdUtil {
* table/columns and the number of distinct values in the fact table
* columns.
*
- * @param rel semijoin rel
- * @return calculated selectivity
- */
- public static double computeSemiJoinSelectivity(RelMetadataQuery mq,
- SemiJoin rel) {
- return computeSemiJoinSelectivity(mq, rel.getLeft(), rel.getRight(),
- rel.getLeftKeys(), rel.getRightKeys());
- }
-
- /**
- * Computes the selectivity of a semijoin filter if it is applied on a fact
- * table. The computation is based on the selectivity of the dimension
- * table/columns and the number of distinct values in the fact table
- * columns.
- *
* @param factRel fact table participating in the semijoin
* @param dimRel dimension table participating in the semijoin
* @param rel semijoin rel
@@ -740,7 +724,7 @@ public class RelMdUtil {
}
/** Returns an estimate of the number of rows returned by a
- * {@link SemiJoin}. */
+ * join with type {@link JoinRelType#SEMI}. */
public static Double getSemiJoinRowCount(RelMetadataQuery mq, RelNode left,
RelNode right, JoinRelType joinType, RexNode condition) {
final Double leftCount = mq.getRowCount(left);
diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
index 31510ca..2428279 100644
--- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
+++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
@@ -32,7 +32,6 @@ import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.core.RelFactories;
import org.apache.calcite.rel.core.Sample;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableFunctionScan;
import org.apache.calcite.rel.core.TableModify;
@@ -361,15 +360,6 @@ public abstract class MutableRels {
tableFunctionScan.getRowType(), inputs, tableFunctionScan.getCall(),
tableFunctionScan.getElementType(), tableFunctionScan.getColumnMappings());
}
- // It is necessary that SemiJoin is placed in front of Join here, since SemiJoin
- // is a sub-class of Join.
- if (rel instanceof SemiJoin) {
- final SemiJoin semiJoin = (SemiJoin) rel;
- final MutableRel left = toMutable(semiJoin.getLeft());
- final MutableRel right = toMutable(semiJoin.getRight());
- return MutableSemiJoin.of(semiJoin.getRowType(), left, right,
- semiJoin.getCondition(), semiJoin.getLeftKeys(), semiJoin.getRightKeys());
- }
if (rel instanceof Join) {
final Join join = (Join) rel;
final MutableRel left = toMutable(join.getLeft());
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinToCorrelateRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinToCorrelateRule.java
index c166d89..d1476dd 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinToCorrelateRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinToCorrelateRule.java
@@ -24,7 +24,6 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.CorrelationId;
import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.RelFactories;
-import org.apache.calcite.rel.core.SemiJoin;
import org.apache.calcite.rel.logical.LogicalCorrelate;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rex.RexBuilder;
@@ -77,9 +76,7 @@ public class JoinToCorrelateRule extends RelOptRule {
* into a {@link org.apache.calcite.rel.logical.LogicalCorrelate}
*/
@Deprecated // To be removed before 2.0, should use INSTANCE instead.
- public static final JoinToCorrelateRule SEMI =
- new JoinToCorrelateRule(SemiJoin.class, RelFactories.LOGICAL_BUILDER,
- "SemiJoinToCorrelateRule");
+ public static final JoinToCorrelateRule SEMI = INSTANCE;
//~ Constructors -----------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/tools/Programs.java b/core/src/main/java/org/apache/calcite/tools/Programs.java
index c46fd36..819aee4 100644
--- a/core/src/main/java/org/apache/calcite/tools/Programs.java
+++ b/core/src/main/java/org/apache/calcite/tools/Programs.java
@@ -86,7 +86,6 @@ public class Programs {
ImmutableSet.of(
EnumerableRules.ENUMERABLE_JOIN_RULE,
EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE,
- EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE,
EnumerableRules.ENUMERABLE_CORRELATE_RULE,
EnumerableRules.ENUMERABLE_PROJECT_RULE,
EnumerableRules.ENUMERABLE_FILTER_RULE,
diff --git a/site/_docs/history.md b/site/_docs/history.md
index a5d575e..8b82946 100644
--- a/site/_docs/history.md
+++ b/site/_docs/history.md
@@ -41,7 +41,6 @@ other software versions as specified in `pom.xml`.
#### Breaking Changes
-* Make `EnumerableMergeJoin` extend `Join` instead of `EquiJoin`
* `Correlate` use `JoinRelType` instead of `SemiJoinType`
* Rename `EnumerableThetaJoin` to `EnumerableNestedLoopJoin`
* Rename `EnumerableJoin` to `EnumerableHashJoin`