You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by mm...@apache.org on 2018/07/20 17:41:30 UTC
[17/53] [abbrv] calcite git commit: [CALCITE-2259] Allow Java 8 syntax
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
index 4430db4..6101846 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
@@ -41,7 +41,6 @@ import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Util;
-import com.google.common.base.Function;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -195,14 +194,9 @@ public class RelMdAllPredicates
RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber()));
}
final List<RexNode> updatedPreds = Lists.newArrayList(
- Iterables.transform(
- inputPreds.pulledUpPredicates,
- new Function<RexNode, RexNode>() {
- @Override public RexNode apply(RexNode e) {
- return RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping);
- }
- }
- ));
+ Iterables.transform(inputPreds.pulledUpPredicates,
+ e -> RexUtil.swapTableReferences(rexBuilder, e,
+ currentTablesMapping)));
newPreds = newPreds.union(rexBuilder,
RelOptPredicateList.of(rexBuilder, updatedPreds));
}
@@ -283,14 +277,9 @@ public class RelMdAllPredicates
}
// Update preds
final List<RexNode> updatedPreds = Lists.newArrayList(
- Iterables.transform(
- inputPreds.pulledUpPredicates,
- new Function<RexNode, RexNode>() {
- @Override public RexNode apply(RexNode e) {
- return RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping);
- }
- }
- ));
+ Iterables.transform(inputPreds.pulledUpPredicates,
+ e -> RexUtil.swapTableReferences(rexBuilder, e,
+ currentTablesMapping)));
newPreds = newPreds.union(rexBuilder,
RelOptPredicateList.of(rexBuilder, updatedPreds));
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdCollation.java
----------------------------------------------------------------------
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 8fed9bb..aa42f42 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
@@ -48,10 +48,8 @@ import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Pair;
import org.apache.calcite.util.Util;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.collect.Ordering;
@@ -60,6 +58,7 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -169,7 +168,7 @@ public class RelMdCollation
public ImmutableList<RelCollation> collations(RelSubset rel,
RelMetadataQuery mq) {
return ImmutableList.copyOf(
- Preconditions.checkNotNull(
+ Objects.requireNonNull(
rel.getTraitSet().getTraits(RelCollationTraitDef.INSTANCE)));
}
@@ -302,10 +301,10 @@ public class RelMdCollation
public static List<RelCollation> values(RelMetadataQuery mq,
RelDataType rowType, ImmutableList<ImmutableList<RexLiteral>> tuples) {
Util.discard(mq); // for future use
- final List<RelCollation> list = Lists.newArrayList();
+ final List<RelCollation> list = new ArrayList<>();
final int n = rowType.getFieldCount();
final List<Pair<RelFieldCollation, Ordering<List<RexLiteral>>>> pairs =
- Lists.newArrayList();
+ new ArrayList<>();
outer:
for (int i = 0; i < n; i++) {
pairs.clear();
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
index ead85fa..e9625fa 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
@@ -40,13 +40,11 @@ import org.apache.calcite.rex.RexCall;
import org.apache.calcite.rex.RexInputRef;
import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.runtime.PredicateImpl;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Pair;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
@@ -64,14 +62,6 @@ public class RelMdColumnUniqueness
ReflectiveRelMetadataProvider.reflectiveSource(
BuiltInMethod.COLUMN_UNIQUENESS.method, new RelMdColumnUniqueness());
- /** Aggregate and Calc are "safe" children of a RelSubset to delve into. */
- private static final Predicate<RelNode> SAFE_REL =
- new PredicateImpl<RelNode>() {
- public boolean test(RelNode r) {
- return r instanceof Aggregate || r instanceof Project;
- }
- };
-
//~ Constructors -----------------------------------------------------------
private RelMdColumnUniqueness() {}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
index e7c82fd..1afadc3 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
@@ -41,12 +41,11 @@ import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Util;
-import com.google.common.base.Function;
import com.google.common.collect.HashMultimap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Collection;
@@ -57,6 +56,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
/**
* Default implementation of
@@ -127,9 +127,8 @@ public class RelMdExpressionLineage
final RexNode inputRef = RexTableInputRef.of(
RelTableRef.of(rel.getTable(), 0),
RexInputRef.of(idx, rel.getRowType().getFieldList()));
- final Set<RexNode> originalExprs = Sets.newHashSet(inputRef);
final RexInputRef ref = RexInputRef.of(idx, rel.getRowType().getFieldList());
- mapping.put(ref, originalExprs);
+ mapping.put(ref, ImmutableSet.of(inputRef));
}
// Return result
@@ -237,15 +236,10 @@ public class RelMdExpressionLineage
currentTablesMapping.put(rightRef,
RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber()));
}
- final Set<RexNode> updatedExprs = Sets.newHashSet(
- Iterables.transform(
- originalExprs,
- new Function<RexNode, RexNode>() {
- @Override public RexNode apply(RexNode e) {
- return RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping);
- }
- }
- ));
+ final Set<RexNode> updatedExprs = ImmutableSet.copyOf(
+ Iterables.transform(originalExprs, e ->
+ RexUtil.swapTableReferences(rexBuilder, e,
+ currentTablesMapping)));
mapping.put(RexInputRef.of(idx, rel.getRowType().getFieldList()), updatedExprs);
}
}
@@ -292,15 +286,12 @@ public class RelMdExpressionLineage
currentTablesMapping.put(tableRef,
RelTableRef.of(tableRef.getTable(), shift + tableRef.getEntityNumber()));
}
- final Set<RexNode> updatedExprs = Sets.newHashSet(
- Iterables.transform(
- originalExprs,
- new Function<RexNode, RexNode>() {
- @Override public RexNode apply(RexNode e) {
- return RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping);
- }
- }
- ));
+ final Set<RexNode> updatedExprs =
+ originalExprs.stream()
+ .map(e ->
+ RexUtil.swapTableReferences(rexBuilder, e,
+ currentTablesMapping))
+ .collect(Collectors.toSet());
final Set<RexNode> set = mapping.get(ref);
if (set != null) {
set.addAll(updatedExprs);
@@ -393,7 +384,7 @@ public class RelMdExpressionLineage
if (predFieldsUsed.isEmpty()) {
// The unique expression is the input expression
- return Sets.newHashSet(expr);
+ return ImmutableSet.of(expr);
}
return createAllPossibleExpressions(rexBuilder, expr, predFieldsUsed, mapping,
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
index 02f6bda..6e30189 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
@@ -18,7 +18,6 @@ package org.apache.calcite.rel.metadata;
import org.apache.calcite.linq4j.Linq4j;
import org.apache.calcite.linq4j.Ord;
-import org.apache.calcite.linq4j.function.Predicate1;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptPredicateList;
import org.apache.calcite.plan.RelOptUtil;
@@ -58,11 +57,9 @@ import org.apache.calcite.util.mapping.Mapping;
import org.apache.calcite.util.mapping.MappingType;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.BitSet;
@@ -73,8 +70,10 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Set;
import java.util.SortedMap;
+import java.util.TreeMap;
/**
* Utility to infer Predicates that are applicable above a RelNode.
@@ -511,7 +510,7 @@ public class RelMdPredicates
allFieldsBitSet = ImmutableBitSet.range(0,
nSysFields + nFieldsLeft + nFieldsRight);
- exprFields = Maps.newHashMap();
+ exprFields = new HashMap<>();
allExprDigests = new HashSet<>();
if (lPreds == null) {
@@ -544,7 +543,7 @@ public class RelMdPredicates
}
}
- equivalence = Maps.newTreeMap();
+ equivalence = new TreeMap<>();
equalityPredicates = new HashSet<>();
for (int i = 0; i < nSysFields + nFieldsLeft + nFieldsRight; i++) {
equivalence.put(i, BitSets.of(i));
@@ -560,12 +559,7 @@ public class RelMdPredicates
final EquivalenceFinder eF = new EquivalenceFinder();
new ArrayList<>(
- Lists.transform(exprs,
- new Function<RexNode, Void>() {
- public Void apply(RexNode input) {
- return input.accept(eF);
- }
- }));
+ Lists.transform(exprs, input -> input.accept(eF)));
equivalence = BitSets.closure(equivalence);
}
@@ -695,14 +689,12 @@ public class RelMdPredicates
}
Iterable<Mapping> mappings(final RexNode predicate) {
- return new Iterable<Mapping>() {
- public Iterator<Mapping> iterator() {
- ImmutableBitSet fields = exprFields.get(predicate.toString());
- if (fields.cardinality() == 0) {
- return Collections.emptyIterator();
- }
- return new ExprsItr(fields);
+ return () -> {
+ ImmutableBitSet fields = exprFields.get(predicate.toString());
+ if (fields.cardinality() == 0) {
+ return Collections.emptyIterator();
}
+ return new ExprsItr(fields);
};
}
@@ -722,11 +714,7 @@ public class RelMdPredicates
}
RexNode compose(RexBuilder rexBuilder, Iterable<RexNode> exprs) {
- exprs = Linq4j.asEnumerable(exprs).where(new Predicate1<RexNode>() {
- public boolean apply(RexNode expr) {
- return expr != null;
- }
- });
+ exprs = Linq4j.asEnumerable(exprs).where(Objects::nonNull);
return RexUtil.composeConjunction(rexBuilder, exprs, false);
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdSize.java
----------------------------------------------------------------------
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 63c27b1..998b7aa 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
@@ -43,8 +43,8 @@ import org.apache.calcite.util.NlsString;
import org.apache.calcite.util.Pair;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -219,7 +219,7 @@ public class RelMdSize implements MetadataHandler<BuiltInMetadata.Size> {
public List<Double> averageColumnSizes(Union rel, RelMetadataQuery mq) {
final int fieldCount = rel.getRowType().getFieldCount();
- List<List<Double>> inputColumnSizeList = Lists.newArrayList();
+ List<List<Double>> inputColumnSizeList = new ArrayList<>();
for (RelNode input : rel.getInputs()) {
final List<Double> inputSizes = mq.getAverageColumnSizes(input);
if (inputSizes != null) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
index d84e911..38b1ca2 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
@@ -32,8 +32,8 @@ import org.apache.calcite.util.BuiltInMethod;
import org.apache.calcite.util.Util;
import com.google.common.collect.HashMultimap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
-import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.HashMap;
@@ -88,7 +88,7 @@ public class RelMdTableReferences
* TableScan table reference.
*/
public Set<RelTableRef> getTableReferences(TableScan rel, RelMetadataQuery mq) {
- return Sets.newHashSet(RelTableRef.of(rel.getTable(), 0));
+ return ImmutableSet.of(RelTableRef.of(rel.getTable(), 0));
}
/**
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
index 06c4fb0..d8f3dd2 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
@@ -27,18 +27,16 @@ import org.apache.calcite.rex.RexTableInputRef.RelTableRef;
import org.apache.calcite.sql.SqlExplainLevel;
import org.apache.calcite.util.ImmutableBitSet;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
/**
@@ -109,15 +107,11 @@ public class RelMetadataQuery {
private BuiltInMetadata.UniqueKeys.Handler uniqueKeysHandler;
public static final ThreadLocal<JaninoRelMetadataProvider> THREAD_PROVIDERS =
- new ThreadLocal<JaninoRelMetadataProvider>() {
- protected JaninoRelMetadataProvider initialValue() {
- return JaninoRelMetadataProvider.DEFAULT;
- }
- };
+ ThreadLocal.withInitial(() -> JaninoRelMetadataProvider.DEFAULT);
protected RelMetadataQuery(JaninoRelMetadataProvider metadataProvider,
RelMetadataQuery prototype) {
- this.metadataProvider = Preconditions.checkNotNull(metadataProvider);
+ this.metadataProvider = Objects.requireNonNull(metadataProvider);
this.collationHandler = prototype.collationHandler;
this.columnOriginHandler = prototype.columnOriginHandler;
this.expressionLineageHandler = prototype.expressionLineageHandler;
@@ -146,13 +140,9 @@ public class RelMetadataQuery {
protected static <H> H initialHandler(Class<H> handlerClass) {
return handlerClass.cast(
Proxy.newProxyInstance(RelMetadataQuery.class.getClassLoader(),
- new Class[] {handlerClass},
- new InvocationHandler() {
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- final RelNode r = (RelNode) args[0];
- throw new JaninoRelMetadataProvider.NoHandler(r.getClass());
- }
+ new Class[] {handlerClass}, (proxy, method, args) -> {
+ final RelNode r = (RelNode) args[0];
+ throw new JaninoRelMetadataProvider.NoHandler(r.getClass());
}));
}
@@ -656,7 +646,7 @@ public class RelMetadataQuery {
public List<Double> getAverageColumnSizesNotNull(RelNode rel) {
final List<Double> averageColumnSizes = getAverageColumnSizes(rel);
return averageColumnSizes == null
- ? Collections.<Double>nCopies(rel.getRowType().getFieldCount(), null)
+ ? Collections.nCopies(rel.getRowType().getFieldCount(), null)
: averageColumnSizes;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/metadata/UnboundMetadata.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/UnboundMetadata.java b/core/src/main/java/org/apache/calcite/rel/metadata/UnboundMetadata.java
index ef8dc4a..85a6c76 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/UnboundMetadata.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/UnboundMetadata.java
@@ -24,6 +24,7 @@ import org.apache.calcite.rel.RelNode;
*
* @param <M> Metadata type
*/
+@FunctionalInterface
public interface UnboundMetadata<M extends Metadata> {
M bind(RelNode rel, RelMetadataQuery mq);
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/mutable/MutableMultiRel.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableMultiRel.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableMultiRel.java
index 531f3e5..05ba762 100644
--- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableMultiRel.java
+++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableMultiRel.java
@@ -20,7 +20,6 @@ import org.apache.calcite.linq4j.Ord;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.rel.type.RelDataType;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
@@ -59,12 +58,7 @@ abstract class MutableMultiRel extends MutableRel {
}
protected List<MutableRel> cloneChildren() {
- return Lists.transform(inputs,
- new Function<MutableRel, MutableRel>() {
- public MutableRel apply(MutableRel mutableRel) {
- return mutableRel.clone();
- }
- });
+ return Lists.transform(inputs, MutableRel::clone);
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/mutable/MutableRel.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRel.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRel.java
index 385ea44..fb0d72b 100644
--- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRel.java
+++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRel.java
@@ -22,10 +22,10 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.type.RelDataType;
import com.google.common.base.Equivalence;
-import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import java.util.List;
+import java.util.Objects;
/** Mutable equivalent of {@link RelNode}.
*
@@ -69,9 +69,9 @@ public abstract class MutableRel {
protected MutableRel(RelOptCluster cluster,
RelDataType rowType, MutableRelType type) {
- this.cluster = Preconditions.checkNotNull(cluster);
- this.rowType = Preconditions.checkNotNull(rowType);
- this.type = Preconditions.checkNotNull(type);
+ this.cluster = Objects.requireNonNull(cluster);
+ this.rowType = Objects.requireNonNull(rowType);
+ this.type = Objects.requireNonNull(type);
}
public MutableRel getParent() {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
----------------------------------------------------------------------
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 8470dc6..31510ca 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
@@ -56,7 +56,6 @@ import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.util.Util;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
import com.google.common.collect.Lists;
import java.util.AbstractList;
@@ -275,13 +274,10 @@ public abstract class MutableRels {
}
}
- private static List<RelNode> fromMutables(List<MutableRel> nodes, final RelBuilder relBuilder) {
+ private static List<RelNode> fromMutables(List<MutableRel> nodes,
+ final RelBuilder relBuilder) {
return Lists.transform(nodes,
- new Function<MutableRel, RelNode>() {
- public RelNode apply(MutableRel mutableRel) {
- return fromMutable(mutableRel, relBuilder);
- }
- });
+ mutableRel -> fromMutable(mutableRel, relBuilder));
}
public static MutableRel toMutable(RelNode rel) {
@@ -408,12 +404,7 @@ public abstract class MutableRels {
}
private static List<MutableRel> toMutables(List<RelNode> nodes) {
- return Lists.transform(nodes,
- new Function<RelNode, MutableRel>() {
- public MutableRel apply(RelNode relNode) {
- return toMutable(relNode);
- }
- });
+ return Lists.transform(nodes, MutableRels::toMutable);
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
index 2afda14..4ee45fd 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
@@ -65,7 +65,6 @@ import org.apache.calcite.util.Pair;
import org.apache.calcite.util.ReflectUtil;
import org.apache.calcite.util.ReflectiveVisitor;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
@@ -381,7 +380,7 @@ public class RelToSqlConverter extends SqlImplementor
new SqlInsert(POS, SqlNodeList.EMPTY, sqlTargetTable, sqlSource,
identifierList(modify.getInput().getRowType().getFieldNames()));
- return result(sqlInsert, ImmutableList.<Clause>of(), modify, null);
+ return result(sqlInsert, ImmutableList.of(), modify, null);
}
case UPDATE: {
final Result input = visitChild(0, modify.getInput());
@@ -415,24 +414,14 @@ public class RelToSqlConverter extends SqlImplementor
private SqlNodeList exprList(final Context context,
List<? extends RexNode> exprs) {
return new SqlNodeList(
- Lists.transform(exprs,
- new Function<RexNode, SqlNode>() {
- public SqlNode apply(RexNode e) {
- return context.toSql(null, e);
- }
- }), POS);
+ Lists.transform(exprs, e -> context.toSql(null, e)), POS);
}
/** Converts a list of names expressions to a list of single-part
* {@link SqlIdentifier}s. */
private SqlNodeList identifierList(List<String> names) {
return new SqlNodeList(
- Lists.transform(names,
- new Function<String, SqlNode>() {
- public SqlNode apply(String name) {
- return new SqlIdentifier(name, POS);
- }
- }), POS);
+ Lists.transform(names, name -> new SqlIdentifier(name, POS)), POS);
}
/** @see #dispatch */
@@ -500,7 +489,7 @@ public class RelToSqlConverter extends SqlImplementor
final SqlNodeList subsetList = new SqlNodeList(POS);
for (Map.Entry<String, SortedSet<String>> entry : e.getSubsets().entrySet()) {
SqlNode left = new SqlIdentifier(entry.getKey(), POS);
- List<SqlNode> rhl = Lists.newArrayList();
+ List<SqlNode> rhl = new ArrayList<>();
for (String right : entry.getValue()) {
rhl.add(new SqlIdentifier(right, POS));
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
index 594cd3c..6508525 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
@@ -72,7 +72,6 @@ import org.apache.calcite.util.TimeString;
import org.apache.calcite.util.TimestampString;
import org.apache.calcite.util.Util;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -90,6 +89,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
/**
@@ -106,7 +106,7 @@ public abstract class SqlImplementor {
protected final Map<CorrelationId, Context> correlTableMap = new HashMap<>();
protected SqlImplementor(SqlDialect dialect) {
- this.dialect = Preconditions.checkNotNull(dialect);
+ this.dialect = Objects.requireNonNull(dialect);
}
public abstract Result visitChild(int i, RelNode e);
@@ -730,7 +730,7 @@ public abstract class SqlImplementor {
}
return op.createCall(
aggCall.isDistinct() ? SqlSelectKeyword.DISTINCT.symbol(POS) : null,
- POS, operands.toArray(new SqlNode[operands.size()]));
+ POS, operands.toArray(new SqlNode[0]));
}
/** Converts a collation to an ORDER BY item. */
@@ -1067,7 +1067,7 @@ public abstract class SqlImplementor {
return this;
} else {
return new Result(node, clauses, neededAlias, neededType,
- ImmutableMap.<String, RelDataType>of(neededAlias, neededType));
+ ImmutableMap.of(neededAlias, neededType));
}
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
index f9dd2f4..2753c44 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
@@ -214,7 +214,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
final List<RelOptMaterialization> materializations =
(planner instanceof VolcanoPlanner)
? ((VolcanoPlanner) planner).getMaterializations()
- : ImmutableList.<RelOptMaterialization>of();
+ : ImmutableList.of();
if (!materializations.isEmpty()) {
// 1. Explore query plan to recognize whether preconditions to
@@ -1365,7 +1365,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
// if not present
if (topViewProject == null) {
topViewProject = (Project) relBuilder.push(viewNode)
- .project(relBuilder.fields(), ImmutableList.<String>of(), true).build();
+ .project(relBuilder.fields(), ImmutableList.of(), true).build();
}
// Generate result rewriting
@@ -1836,8 +1836,8 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
return ImmutableList.of();
}
List<BiMap<RelTableRef, RelTableRef>> result =
- ImmutableList.<BiMap<RelTableRef, RelTableRef>>of(
- HashBiMap.<RelTableRef, RelTableRef>create());
+ ImmutableList.of(
+ HashBiMap.create());
for (Entry<RelTableRef, Collection<RelTableRef>> e : multiMapTables.asMap().entrySet()) {
if (e.getValue().size() == 1) {
// Only one reference, we can just add it to every map
@@ -1854,7 +1854,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
for (BiMap<RelTableRef, RelTableRef> m : result) {
if (!m.containsValue(target)) {
final BiMap<RelTableRef, RelTableRef> newM =
- HashBiMap.<RelTableRef, RelTableRef>create(m);
+ HashBiMap.create(m);
newM.put(e.getKey(), target);
newResult.add(newM);
}
@@ -1937,7 +1937,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
residualPreds.add(e);
}
}
- return ImmutableTriple.<RexNode, RexNode, RexNode>of(
+ return ImmutableTriple.of(
RexUtil.composeConjunction(rexBuilder, equiColumnsPreds, false),
RexUtil.composeConjunction(rexBuilder, rangePreds, false),
RexUtil.composeConjunction(rexBuilder, residualPreds, false));
@@ -1968,7 +1968,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
Multimap<RexTableInputRef, RexTableInputRef> compensationEquiColumns) {
// Create UK-FK graph with view tables
final DirectedGraph<RelTableRef, Edge> graph =
- DefaultDirectedGraph.create(Edge.FACTORY);
+ DefaultDirectedGraph.create(Edge::new);
final Multimap<List<String>, RelTableRef> tableVNameToTableRefs =
ArrayListMultimap.create();
final Set<RelTableRef> extraTableRefs = new HashSet<>();
@@ -2117,8 +2117,8 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
return null;
}
- return ImmutableTriple.<RexNode, RexNode, RexNode>of(
- compensationColumnsEquiPred, compensationRangePred, compensationResidualPred);
+ return ImmutableTriple.of(compensationColumnsEquiPred,
+ compensationRangePred, compensationResidualPred);
}
/**
@@ -2625,12 +2625,6 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
/** Edge for graph */
private static class Edge extends DefaultEdge {
- public static final DirectedGraph.EdgeFactory<RelTableRef, Edge> FACTORY =
- new DirectedGraph.EdgeFactory<RelTableRef, Edge>() {
- public Edge createEdge(RelTableRef source, RelTableRef target) {
- return new Edge(source, target);
- }
- };
final Multimap<RexTableInputRef, RexTableInputRef> equiColumns =
ArrayListMultimap.create();
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
index 918a4db..d150989 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
@@ -308,7 +308,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
// Add aggregate A (see the reference example above), the top aggregate
// to handle the rest of the aggregation that the bottom aggregate hasn't handled
- final List<AggregateCall> topAggregateCalls = Lists.newArrayList();
+ final List<AggregateCall> topAggregateCalls = new ArrayList<>();
// Use the remapped arguments for the (non)distinct aggregate calls
int nonDistinctAggCallProcessedSoFar = 0;
for (AggregateCall aggCall : originalAggCalls) {
@@ -707,7 +707,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
// where {f0, f1, ...} are the GROUP BY fields.
final List<RelDataTypeField> distinctFields =
relBuilder.peek().getRowType().getFieldList();
- final List<RexNode> conditions = Lists.newArrayList();
+ final List<RexNode> conditions = new ArrayList<>();
for (i = 0; i < groupAndIndicatorCount; ++i) {
// null values form its own group
// use "is not distinct from" so that the join condition
@@ -845,7 +845,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
relBuilder.push(
aggregate.copy(aggregate.getTraitSet(), relBuilder.build(), false,
ImmutableBitSet.range(projects.size()),
- null, ImmutableList.<AggregateCall>of()));
+ null, ImmutableList.of()));
return relBuilder;
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateExtractProjectRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExtractProjectRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExtractProjectRule.java
index 0e4f76d..23e1425 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExtractProjectRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExtractProjectRule.java
@@ -24,7 +24,6 @@ import org.apache.calcite.rel.core.Aggregate;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.runtime.PredicateImpl;
import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.ImmutableBitSet;
@@ -32,16 +31,12 @@ import org.apache.calcite.util.mapping.Mapping;
import org.apache.calcite.util.mapping.MappingType;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.List;
-import javax.annotation.Nullable;
-
/**
* Rule to extract a {@link org.apache.calcite.rel.core.Project}
* from an {@link org.apache.calcite.rel.core.Aggregate}
@@ -55,16 +50,6 @@ import javax.annotation.Nullable;
*/
public class AggregateExtractProjectRule extends RelOptRule {
- /** Predicate that prevents matching against an {@code Aggregate} whose input
- * is already a {@code Project}. This will prevent this rule firing
- * repeatedly. */
- private static final Predicate<RelNode> PREDICATE =
- new PredicateImpl<RelNode>() {
- public boolean test(@Nullable RelNode relNode) {
- return !(relNode instanceof Project);
- }
- };
-
/**
* Creates an AggregateExtractProjectRule.
*
@@ -74,7 +59,11 @@ public class AggregateExtractProjectRule extends RelOptRule {
Class<? extends Aggregate> aggregateClass,
Class<? extends RelNode> inputClass,
RelBuilderFactory relBuilderFactory) {
- this(operand(aggregateClass, operand(inputClass, null, PREDICATE, any())),
+ // Predicate prevents matching against an Aggregate whose input
+ // is already a Project. Prevents this rule firing repeatedly.
+ this(
+ operand(aggregateClass,
+ operandJ(inputClass, null, r -> !(r instanceof Project), any())),
relBuilderFactory);
}
@@ -119,11 +108,7 @@ public class AggregateExtractProjectRule extends RelOptRule {
final ImmutableList<ImmutableBitSet> newGroupSets =
ImmutableList.copyOf(
Iterables.transform(aggregate.getGroupSets(),
- new Function<ImmutableBitSet, ImmutableBitSet>() {
- public ImmutableBitSet apply(ImmutableBitSet input) {
- return Mappings.apply(mapping, input);
- }
- }));
+ bitSet -> Mappings.apply(mapping, bitSet)));
final List<RelBuilder.AggCall> newAggCallList = new ArrayList<>();
for (AggregateCall aggCall : aggregate.getAggCallList()) {
final ImmutableList<RexNode> args =
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
index 6e9e508..5c0e531 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
@@ -35,10 +35,9 @@ import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -97,11 +96,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
aggregate.copy(aggregate.getTraitSet(), input,
false, newGroupSet, null, aggregate.getAggCallList());
final Mappings.TargetMapping mapping = Mappings.target(
- new Function<Integer, Integer>() {
- public Integer apply(Integer a0) {
- return newGroupSet.indexOf(a0);
- }
- },
+ newGroupSet::indexOf,
input.getRowType().getFieldCount(),
newGroupSet.cardinality());
final RexNode newCondition =
@@ -134,7 +129,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
}
newGroupingSets = newGroupingSetsBuilder.build();
}
- final List<AggregateCall> topAggCallList = Lists.newArrayList();
+ final List<AggregateCall> topAggCallList = new ArrayList<>();
int i = newGroupSet.cardinality();
for (AggregateCall aggregateCall : aggregate.getAggCallList()) {
final SqlAggFunction rollup =
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
index 28c58f3..e841952 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
@@ -45,16 +45,14 @@ import org.apache.calcite.util.Util;
import org.apache.calcite.util.mapping.Mapping;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.SortedMap;
import java.util.TreeMap;
@@ -80,8 +78,10 @@ public class AggregateJoinTransposeRule extends RelOptRule {
Class<? extends Join> joinClass, RelBuilderFactory relBuilderFactory,
boolean allowFunctions) {
super(
- operand(aggregateClass, null, Aggregate.IS_SIMPLE,
- operand(joinClass, any())), relBuilderFactory, null);
+ operandJ(aggregateClass, null,
+ aggregate -> aggregate.getGroupType() == Aggregate.Group.SIMPLE,
+ operand(joinClass, any())),
+ relBuilderFactory, null);
this.allowFunctions = allowFunctions;
}
@@ -167,9 +167,9 @@ public class AggregateJoinTransposeRule extends RelOptRule {
aggregateColumns.union(joinColumns);
// Split join condition
- final List<Integer> leftKeys = Lists.newArrayList();
- final List<Integer> rightKeys = Lists.newArrayList();
- final List<Boolean> filterNulls = Lists.newArrayList();
+ final List<Integer> leftKeys = new ArrayList<>();
+ final List<Integer> rightKeys = new ArrayList<>();
+ final List<Boolean> filterNulls = new ArrayList<>();
RexNode nonEquiConj =
RelOptUtil.splitJoinCondition(join.getLeft(), join.getRight(),
join.getCondition(), leftKeys, rightKeys, filterNulls);
@@ -237,7 +237,7 @@ public class AggregateJoinTransposeRule extends RelOptRule {
for (Ord<AggregateCall> aggCall : Ord.zip(aggregate.getAggCallList())) {
final SqlAggFunction aggregation = aggCall.e.getAggregation();
final SqlSplittableAggFunction splitter =
- Preconditions.checkNotNull(
+ Objects.requireNonNull(
aggregation.unwrap(SqlSplittableAggFunction.class));
if (!aggCall.e.getArgList().isEmpty()
&& fieldSet.contains(ImmutableBitSet.of(aggCall.e.getArgList()))) {
@@ -268,7 +268,7 @@ public class AggregateJoinTransposeRule extends RelOptRule {
for (Ord<AggregateCall> aggCall : Ord.zip(aggregate.getAggCallList())) {
final SqlAggFunction aggregation = aggCall.e.getAggregation();
final SqlSplittableAggFunction splitter =
- Preconditions.checkNotNull(
+ Objects.requireNonNull(
aggregation.unwrap(SqlSplittableAggFunction.class));
final AggregateCall call1;
if (fieldSet.contains(ImmutableBitSet.of(aggCall.e.getArgList()))) {
@@ -303,11 +303,7 @@ public class AggregateJoinTransposeRule extends RelOptRule {
// Update condition
final Mapping mapping = (Mapping) Mappings.target(
- new Function<Integer, Integer>() {
- public Integer apply(Integer a0) {
- return map.get(a0);
- }
- },
+ map::get,
join.getRowType().getFieldCount(),
belowOffset);
final RexNode newCondition =
@@ -329,7 +325,7 @@ public class AggregateJoinTransposeRule extends RelOptRule {
for (Ord<AggregateCall> aggCall : Ord.zip(aggregate.getAggCallList())) {
final SqlAggFunction aggregation = aggCall.e.getAggregation();
final SqlSplittableAggFunction splitter =
- Preconditions.checkNotNull(
+ Objects.requireNonNull(
aggregation.unwrap(SqlSplittableAggFunction.class));
final Integer leftSubTotal = sides.get(0).split.get(aggCall.i);
final Integer rightSubTotal = sides.get(1).split.get(aggCall.i);
@@ -425,15 +421,13 @@ public class AggregateJoinTransposeRule extends RelOptRule {
* that is a view of a list. */
private static <E> SqlSplittableAggFunction.Registry<E> registry(
final List<E> list) {
- return new SqlSplittableAggFunction.Registry<E>() {
- public int register(E e) {
- int i = list.indexOf(e);
- if (i < 0) {
- i = list.size();
- list.add(e);
- }
- return i;
+ return e -> {
+ int i = list.indexOf(e);
+ if (i < 0) {
+ i = list.size();
+ list.add(e);
}
+ return i;
};
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
index e7ddd58..c5ec515 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
@@ -31,8 +31,8 @@ import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.ImmutableBitSet;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -73,7 +73,7 @@ public class AggregateProjectMergeRule extends RelOptRule {
public static RelNode apply(RelOptRuleCall call, Aggregate aggregate,
Project project) {
- final List<Integer> newKeys = Lists.newArrayList();
+ final List<Integer> newKeys = new ArrayList<>();
final Map<Integer, Integer> map = new HashMap<>();
for (int key : aggregate.getGroupSet()) {
final RexNode rex = project.getProjects().get(key);
@@ -131,7 +131,7 @@ public class AggregateProjectMergeRule extends RelOptRule {
final RelBuilder relBuilder = call.builder();
relBuilder.push(newAggregate);
if (!newKeys.equals(newGroupSet.asList())) {
- final List<Integer> posList = Lists.newArrayList();
+ final List<Integer> posList = new ArrayList<>();
for (int newKey : newKeys) {
posList.add(newGroupSet.indexOf(newKey));
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.java
index eda2b20..8686db2 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectPullUpConstantsRule.java
@@ -87,7 +87,7 @@ public class AggregateProjectPullUpConstantsRule extends RelOptRule {
Class<? extends RelNode> inputClass,
RelBuilderFactory relBuilderFactory, String description) {
super(
- operand(aggregateClass, null, Aggregate.IS_SIMPLE,
+ operandJ(aggregateClass, null, Aggregate::isSimple,
operand(inputClass, any())),
relBuilderFactory, description);
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
index e65b6a1..8bdd6c1 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
@@ -42,12 +42,11 @@ import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Util;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -154,10 +153,10 @@ public class AggregateReduceFunctionsRule extends RelOptRule {
final int groupCount = oldAggRel.getGroupCount();
final int indicatorCount = oldAggRel.getIndicatorCount();
- final List<AggregateCall> newCalls = Lists.newArrayList();
- final Map<AggregateCall, RexNode> aggCallMapping = Maps.newHashMap();
+ final List<AggregateCall> newCalls = new ArrayList<>();
+ final Map<AggregateCall, RexNode> aggCallMapping = new HashMap<>();
- final List<RexNode> projList = Lists.newArrayList();
+ final List<RexNode> projList = new ArrayList<>();
// pass through group key (+ indicators if present)
for (int i = 0; i < groupCount + indicatorCount; ++i) {
@@ -187,7 +186,7 @@ public class AggregateReduceFunctionsRule extends RelOptRule {
relBuilder.project(inputExprs,
CompositeList.of(
relBuilder.peek().getRowType().getFieldNames(),
- Collections.<String>nCopies(extraArgCount, null)));
+ Collections.nCopies(extraArgCount, null)));
}
newAggregateRel(relBuilder, oldAggRel, newCalls);
newCalcRel(relBuilder, oldAggRel.getRowType(), projList);
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
index f000d39..f1b6d6e 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
@@ -48,8 +48,8 @@ import org.apache.calcite.util.Pair;
import org.apache.calcite.util.mapping.AbstractSourceMapping;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -62,14 +62,14 @@ import java.util.List;
public class AggregateStarTableRule extends RelOptRule {
public static final AggregateStarTableRule INSTANCE =
new AggregateStarTableRule(
- operand(Aggregate.class, null, Aggregate.IS_SIMPLE,
+ operandJ(Aggregate.class, null, Aggregate::isSimple,
some(operand(StarTable.StarTableScan.class, none()))),
RelFactories.LOGICAL_BUILDER,
"AggregateStarTableRule");
public static final AggregateStarTableRule INSTANCE2 =
new AggregateStarTableRule(
- operand(Aggregate.class, null, Aggregate.IS_SIMPLE,
+ operandJ(Aggregate.class, null, Aggregate::isSimple,
operand(Project.class,
operand(StarTable.StarTableScan.class, none()))),
RelFactories.LOGICAL_BUILDER,
@@ -164,7 +164,7 @@ public class AggregateStarTableRule extends RelOptRule {
+ aggregate.getGroupSet());
}
assert tileKey.dimensions.contains(aggregate.getGroupSet());
- final List<AggregateCall> aggCalls = Lists.newArrayList();
+ final List<AggregateCall> aggCalls = new ArrayList<>();
ImmutableBitSet.Builder groupSet = ImmutableBitSet.builder();
for (int key : aggregate.getGroupSet()) {
groupSet.set(tileKey.dimensions.indexOf(key));
@@ -242,7 +242,7 @@ public class AggregateStarTableRule extends RelOptRule {
// Second, try to satisfy the aggregation based on group set columns.
tryGroup:
{
- List<Integer> newArgs = Lists.newArrayList();
+ List<Integer> newArgs = new ArrayList<>();
for (Integer arg : aggregateCall.getArgList()) {
int z = tileKey.dimensions.indexOf(arg);
if (z < 0) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionAggregateRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionAggregateRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionAggregateRule.java
index a15d74a..f65bb7f 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionAggregateRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionAggregateRule.java
@@ -77,7 +77,7 @@ public class AggregateUnionAggregateRule extends RelOptRule {
RelBuilderFactory relBuilderFactory,
String desc) {
super(
- operand(aggregateClass, null, Aggregate.IS_SIMPLE,
+ operandJ(aggregateClass, null, Aggregate::isSimple,
operand(unionClass,
operand(firstUnionInputClass, any()),
operand(secondUnionInputClass, any()))),
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
index abc5fbe..2372205 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
@@ -39,8 +39,8 @@ import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.tools.RelBuilderFactory;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
@@ -147,7 +147,7 @@ public class AggregateUnionTransposeRule extends RelOptRule {
private List<AggregateCall> transformAggCalls(RelNode input, int groupCount,
List<AggregateCall> origCalls) {
- final List<AggregateCall> newCalls = Lists.newArrayList();
+ final List<AggregateCall> newCalls = new ArrayList<>();
for (Ord<AggregateCall> ord : Ord.zip(origCalls)) {
final AggregateCall origCall = ord.e;
if (origCall.isDistinct()
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/AggregateValuesRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateValuesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateValuesRule.java
index db31937..d61cb95 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateValuesRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateValuesRule.java
@@ -28,7 +28,6 @@ import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.Util;
-import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
import java.math.BigDecimal;
@@ -64,8 +63,10 @@ public class AggregateValuesRule extends RelOptRule {
*/
public AggregateValuesRule(RelBuilderFactory relBuilderFactory) {
super(
- operand(Aggregate.class, null, Predicates.not(Aggregate.IS_NOT_GRAND_TOTAL),
- operand(Values.class, null, Values.IS_EMPTY, none())),
+ operandJ(Aggregate.class, null,
+ aggregate -> aggregate.getGroupCount() == 0,
+ operandJ(Values.class, null,
+ values -> values.getTuples().isEmpty(), none())),
relBuilderFactory, null);
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java b/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
index f3b03a9..51826bf 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/CalcRelSplitter.java
@@ -126,7 +126,7 @@ public abstract class CalcRelSplitter {
// expressions to the left.
assert program.isValid(Litmus.THROW, null);
final List<RexNode> exprList = program.getExprList();
- final RexNode[] exprs = exprList.toArray(new RexNode[exprList.size()]);
+ final RexNode[] exprs = exprList.toArray(new RexNode[0]);
assert !RexUtil.containComplexExprs(exprList);
// Figure out what level each expression belongs to.
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java b/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
index fac9f02..ae51560 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
@@ -30,7 +30,6 @@ import org.apache.calcite.rex.RexNode;
import org.apache.calcite.rex.RexShuttle;
import org.apache.calcite.rex.RexUtil;
import org.apache.calcite.rex.RexVisitorImpl;
-import org.apache.calcite.runtime.PredicateImpl;
import org.apache.calcite.runtime.SqlFunctions;
import org.apache.calcite.sql.SqlBinaryOperator;
import org.apache.calcite.sql.SqlKind;
@@ -44,8 +43,6 @@ import org.apache.calcite.util.TimestampWithTimeZoneString;
import org.apache.calcite.util.Util;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
import com.google.common.collect.BoundType;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -64,8 +61,10 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.TimeZone;
+import java.util.function.Predicate;
/**
* Collection of planner rules that convert
@@ -92,17 +91,15 @@ public abstract class DateRangeRules {
private DateRangeRules() {}
private static final Predicate<Filter> FILTER_PREDICATE =
- new PredicateImpl<Filter>() {
- @Override public boolean test(Filter filter) {
- try (ExtractFinder finder = ExtractFinder.THREAD_INSTANCES.get()) {
- assert finder.timeUnits.isEmpty() && finder.opKinds.isEmpty()
- : "previous user did not clean up";
- filter.getCondition().accept(finder);
- // bail out if there is no EXTRACT of YEAR, or call to FLOOR or CEIL
- return finder.timeUnits.contains(TimeUnitRange.YEAR)
- || finder.opKinds.contains(SqlKind.FLOOR)
- || finder.opKinds.contains(SqlKind.CEIL);
- }
+ filter -> {
+ try (ExtractFinder finder = ExtractFinder.THREAD_INSTANCES.get()) {
+ assert finder.timeUnits.isEmpty() && finder.opKinds.isEmpty()
+ : "previous user did not clean up";
+ filter.getCondition().accept(finder);
+ // bail out if there is no EXTRACT of YEAR, or call to FLOOR or CEIL
+ return finder.timeUnits.contains(TimeUnitRange.YEAR)
+ || finder.opKinds.contains(SqlKind.FLOOR)
+ || finder.opKinds.contains(SqlKind.CEIL);
}
};
@@ -174,7 +171,7 @@ public abstract class DateRangeRules {
@SuppressWarnings("WeakerAccess")
public static class FilterDateRangeRule extends RelOptRule {
public FilterDateRangeRule(RelBuilderFactory relBuilderFactory) {
- super(operand(Filter.class, null, FILTER_PREDICATE, any()),
+ super(operandJ(Filter.class, null, FILTER_PREDICATE, any()),
relBuilderFactory, "FilterDateRangeRule");
}
@@ -205,11 +202,7 @@ public abstract class DateRangeRules {
private final Set<SqlKind> opKinds = EnumSet.noneOf(SqlKind.class);
private static final ThreadLocal<ExtractFinder> THREAD_INSTANCES =
- new ThreadLocal<ExtractFinder>() {
- @Override protected ExtractFinder initialValue() {
- return new ExtractFinder();
- }
- };
+ ThreadLocal.withInitial(ExtractFinder::new);
private ExtractFinder() {
super(true);
@@ -253,12 +246,12 @@ public abstract class DateRangeRules {
ExtractShuttle(RexBuilder rexBuilder, TimeUnitRange timeUnit,
Map<String, RangeSet<Calendar>> operandRanges,
ImmutableSortedSet<TimeUnitRange> timeUnitRanges, String timeZone) {
- this.rexBuilder = Preconditions.checkNotNull(rexBuilder);
- this.timeUnit = Preconditions.checkNotNull(timeUnit);
+ this.rexBuilder = Objects.requireNonNull(rexBuilder);
+ this.timeUnit = Objects.requireNonNull(timeUnit);
Bug.upgrade("Change type to Map<RexNode, RangeSet<Calendar>> when"
+ " [CALCITE-1367] is fixed");
- this.operandRanges = Preconditions.checkNotNull(operandRanges);
- this.timeUnitRanges = Preconditions.checkNotNull(timeUnitRanges);
+ this.operandRanges = Objects.requireNonNull(operandRanges);
+ this.timeUnitRanges = Objects.requireNonNull(timeUnitRanges);
this.timeZone = timeZone;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
index f65d874..9501e74 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
@@ -34,8 +34,8 @@ import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.ImmutableBitSet;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -103,8 +103,8 @@ public class FilterAggregateTransposeRule extends RelOptRule {
adjustments[j] = i - j;
j++;
}
- final List<RexNode> pushedConditions = Lists.newArrayList();
- final List<RexNode> remainingConditions = Lists.newArrayList();
+ final List<RexNode> pushedConditions = new ArrayList<>();
+ final List<RexNode> remainingConditions = new ArrayList<>();
for (RexNode condition : conditions) {
ImmutableBitSet rCols = RelOptUtil.InputFinder.bits(condition);
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java
index 0bb3830..9d06e50 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java
@@ -33,14 +33,15 @@ import org.apache.calcite.rex.RexUtil;
import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.tools.RelBuilderFactory;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
+
+import static org.apache.calcite.plan.RelOptUtil.conjunctions;
/**
* Planner rule that pushes filters above and
@@ -49,12 +50,7 @@ import java.util.List;
public abstract class FilterJoinRule extends RelOptRule {
/** Predicate that always returns true. With this predicate, every filter
* will be pushed into the ON clause. */
- public static final Predicate TRUE_PREDICATE =
- new Predicate() {
- public boolean apply(Join join, JoinRelType joinType, RexNode exp) {
- return true;
- }
- };
+ public static final Predicate TRUE_PREDICATE = (join, joinType, exp) -> true;
/** Rule that pushes predicates from a Filter into the Join below them. */
public static final FilterJoinRule FILTER_ON_JOIN =
@@ -90,7 +86,7 @@ public abstract class FilterJoinRule extends RelOptRule {
boolean smart, RelBuilderFactory relBuilderFactory, Predicate predicate) {
super(operand, relBuilderFactory, "FilterJoinRule:" + id);
this.smart = smart;
- this.predicate = Preconditions.checkNotNull(predicate);
+ this.predicate = Objects.requireNonNull(predicate);
}
/**
@@ -136,8 +132,8 @@ public abstract class FilterJoinRule extends RelOptRule {
final List<RexNode> aboveFilters =
filter != null
- ? RelOptUtil.conjunctions(filter.getCondition())
- : Lists.<RexNode>newArrayList();
+ ? conjunctions(filter.getCondition())
+ : new ArrayList<>();
final ImmutableList<RexNode> origAboveFilters =
ImmutableList.copyOf(aboveFilters);
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
index 1a52eec..7e597b0 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
@@ -27,7 +27,6 @@ import org.apache.calcite.rel.core.RelFactories;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rex.RexNode;
import org.apache.calcite.rex.RexUtil;
-import org.apache.calcite.runtime.PredicateImpl;
import org.apache.calcite.schema.FilterableTable;
import org.apache.calcite.schema.ProjectableFilterableTable;
import org.apache.calcite.tools.RelBuilderFactory;
@@ -35,7 +34,6 @@ import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.mapping.Mapping;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
/**
@@ -52,22 +50,17 @@ import com.google.common.collect.ImmutableList;
* @see org.apache.calcite.rel.rules.ProjectTableScanRule
*/
public abstract class FilterTableScanRule extends RelOptRule {
- public static final Predicate<TableScan> PREDICATE =
- new PredicateImpl<TableScan>() {
- public boolean test(TableScan scan) {
- // We can only push filters into a FilterableTable or
- // ProjectableFilterableTable.
- final RelOptTable table = scan.getTable();
- return table.unwrap(FilterableTable.class) != null
- || table.unwrap(ProjectableFilterableTable.class) != null;
- }
- };
+ @SuppressWarnings("Guava")
+ @Deprecated // to be removed before 2.0
+ public static final com.google.common.base.Predicate<TableScan> PREDICATE =
+ FilterTableScanRule::test;
/** Rule that matches Filter on TableScan. */
public static final FilterTableScanRule INSTANCE =
new FilterTableScanRule(
operand(Filter.class,
- operand(TableScan.class, null, PREDICATE, none())),
+ operandJ(TableScan.class, null, FilterTableScanRule::test,
+ none())),
RelFactories.LOGICAL_BUILDER,
"FilterTableScanRule") {
public void onMatch(RelOptRuleCall call) {
@@ -82,7 +75,8 @@ public abstract class FilterTableScanRule extends RelOptRule {
new FilterTableScanRule(
operand(Filter.class,
operand(EnumerableInterpreter.class,
- operand(TableScan.class, null, PREDICATE, none()))),
+ operandJ(TableScan.class, null, FilterTableScanRule::test,
+ none()))),
RelFactories.LOGICAL_BUILDER,
"FilterTableScanRule:interpreter") {
public void onMatch(RelOptRuleCall call) {
@@ -107,6 +101,14 @@ public abstract class FilterTableScanRule extends RelOptRule {
//~ Methods ----------------------------------------------------------------
+ public static boolean test(TableScan scan) {
+ // We can only push filters into a FilterableTable or
+ // ProjectableFilterableTable.
+ final RelOptTable table = scan.getTable();
+ return table.unwrap(FilterableTable.class) != null
+ || table.unwrap(ProjectableFilterableTable.class) != null;
+ }
+
protected void apply(RelOptRuleCall call, Filter filter, TableScan scan) {
final ImmutableIntList projects;
final ImmutableList.Builder<RexNode> filters = ImmutableList.builder();
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/JoinAssociateRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinAssociateRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinAssociateRule.java
index ad6b3c6..b3e9f99 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinAssociateRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinAssociateRule.java
@@ -32,8 +32,7 @@ import org.apache.calcite.tools.RelBuilderFactory;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.collect.Lists;
-
+import java.util.ArrayList;
import java.util.List;
/**
@@ -119,8 +118,8 @@ public class JoinAssociateRule extends RelOptRule {
// Split the condition of topJoin and bottomJoin into a conjunctions. A
// condition can be pushed down if it does not use columns from A.
- final List<RexNode> top = Lists.newArrayList();
- final List<RexNode> bottom = Lists.newArrayList();
+ final List<RexNode> top = new ArrayList<>();
+ final List<RexNode> bottom = new ArrayList<>();
JoinPushThroughJoinRule.split(topJoin.getCondition(), aBitSet, top, bottom);
JoinPushThroughJoinRule.split(bottomJoin.getCondition(), aBitSet, top,
bottom);
@@ -134,7 +133,7 @@ public class JoinAssociateRule extends RelOptRule {
aCount + bCount + cCount,
0, aCount, bCount,
bCount, aCount + bCount, cCount);
- final List<RexNode> newBottomList = Lists.newArrayList();
+ final List<RexNode> newBottomList = new ArrayList<>();
new RexPermuteInputsShuttle(bottomMapping, relB, relC)
.visitList(bottom, newBottomList);
RexNode newBottomCondition =
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
index 39b4ef6..6e53ec2 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
@@ -187,7 +187,7 @@ public class JoinProjectTransposeRule extends RelOptRule {
JoinRelType.INNER,
joinRel.getCluster().getTypeFactory(),
null,
- Collections.<RelDataTypeField>emptyList());
+ Collections.emptyList());
// Create projection expressions, combining the projection expressions
// from the projects that feed into the join. For the RHS projection
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
index 90a98bf..52e5ed0 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
@@ -36,9 +36,9 @@ import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Pair;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -134,8 +134,8 @@ public class JoinToMultiJoinRule extends RelOptRule {
// combine the children MultiJoin inputs into an array of inputs
// for the new MultiJoin
- final List<ImmutableBitSet> projFieldsList = Lists.newArrayList();
- final List<int[]> joinFieldRefCountsList = Lists.newArrayList();
+ final List<ImmutableBitSet> projFieldsList = new ArrayList<>();
+ final List<int[]> joinFieldRefCountsList = new ArrayList<>();
final List<RelNode> newInputs =
combineInputs(
origJoin,
@@ -147,7 +147,7 @@ public class JoinToMultiJoinRule extends RelOptRule {
// combine the outer join information from the left and right
// inputs, and include the outer join information from the current
// join, if it's a left/right outer join
- final List<Pair<JoinRelType, RexNode>> joinSpecs = Lists.newArrayList();
+ final List<Pair<JoinRelType, RexNode>> joinSpecs = new ArrayList<>();
combineOuterJoins(
origJoin,
newInputs,
@@ -206,7 +206,7 @@ public class JoinToMultiJoinRule extends RelOptRule {
RelNode right,
List<ImmutableBitSet> projFieldsList,
List<int[]> joinFieldRefCountsList) {
- final List<RelNode> newInputs = Lists.newArrayList();
+ final List<RelNode> newInputs = new ArrayList<>();
// leave the null generating sides of an outer join intact; don't
// pull up those children inputs into the array we're constructing
@@ -390,7 +390,7 @@ public class JoinToMultiJoinRule extends RelOptRule {
// AND the join condition if this isn't a left or right outer join;
// in those cases, the outer join condition is already tracked
// separately
- final List<RexNode> filters = Lists.newArrayList();
+ final List<RexNode> filters = new ArrayList<>();
if ((joinType != JoinRelType.LEFT) && (joinType != JoinRelType.RIGHT)) {
filters.add(joinRel.getCondition());
}
@@ -481,7 +481,7 @@ public class JoinToMultiJoinRule extends RelOptRule {
joinCondition.accept(new InputReferenceCounter(joinCondRefCounts));
// first, make a copy of the ref counters
- final Map<Integer, int[]> refCountsMap = Maps.newHashMap();
+ final Map<Integer, int[]> refCountsMap = new HashMap<>();
int nInputs = multiJoinInputs.size();
int currInput = 0;
for (int[] origRefCounts : origJoinFieldRefCounts) {
@@ -532,7 +532,7 @@ public class JoinToMultiJoinRule extends RelOptRule {
Join joinRel,
RelNode left,
RelNode right) {
- final List<RexNode> filters = Lists.newArrayList();
+ final List<RexNode> filters = new ArrayList<>();
if (right instanceof MultiJoin) {
final MultiJoin multiRight = (MultiJoin) right;
filters.add(
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/LoptJoinTree.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptJoinTree.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptJoinTree.java
index 126659b..5765d69 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptJoinTree.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptJoinTree.java
@@ -19,10 +19,9 @@ package org.apache.calcite.rel.rules;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Join;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
/**
* Utility class used to store a {@link org.apache.calcite.rel.core.Join} tree
@@ -134,7 +133,7 @@ public class LoptJoinTree {
}
public List<Integer> getTreeOrder() {
- List<Integer> treeOrder = Lists.newArrayList();
+ List<Integer> treeOrder = new ArrayList<>();
getTreeOrder(treeOrder);
return treeOrder;
}
@@ -157,7 +156,7 @@ public class LoptJoinTree {
private final LoptJoinTree parent;
protected BinaryTree(LoptJoinTree parent) {
- this.parent = Preconditions.checkNotNull(parent);
+ this.parent = Objects.requireNonNull(parent);
}
public LoptJoinTree getParent() {
@@ -195,8 +194,8 @@ public class LoptJoinTree {
public Node(BinaryTree left, BinaryTree right, LoptJoinTree parent) {
super(parent);
- this.left = Preconditions.checkNotNull(left);
- this.right = Preconditions.checkNotNull(right);
+ this.left = Objects.requireNonNull(left);
+ this.right = Objects.requireNonNull(right);
}
public BinaryTree getLeft() {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
index 7d865bf..ba86639 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
@@ -34,7 +34,6 @@ import org.apache.calcite.util.ImmutableIntList;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.BitSet;
@@ -462,8 +461,8 @@ public class LoptMultiJoin {
* references
*/
private void setJoinFilterRefs() {
- fieldsRefByJoinFilter = Maps.newHashMap();
- factorsRefByJoinFilter = Maps.newHashMap();
+ fieldsRefByJoinFilter = new HashMap<>();
+ factorsRefByJoinFilter = new HashMap<>();
ListIterator<RexNode> filterIter = allJoinFilters.listIterator();
while (filterIter.hasNext()) {
RexNode joinFilter = filterIter.next();
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
index e17ac1e..5a25d63 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
@@ -47,8 +47,6 @@ import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Pair;
import org.apache.calcite.util.mapping.IntPair;
-import com.google.common.collect.Lists;
-
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
@@ -298,7 +296,7 @@ public class LoptOptimizeJoinRule extends RelOptRule {
sortedFactors.addAll(simpleFactors.keySet());
final Map<Integer, Integer> selfJoinPairs = new HashMap<>();
Integer [] factors =
- sortedFactors.toArray(new Integer[sortedFactors.size()]);
+ sortedFactors.toArray(new Integer[0]);
for (int i = 0; i < factors.length; i++) {
if (repeatedTables.contains(simpleFactors.get(factors[i]))) {
continue;
@@ -493,7 +491,7 @@ public class LoptOptimizeJoinRule extends RelOptRule {
LoptMultiJoin multiJoin,
LoptJoinTree joinTree,
List<String> fieldNames) {
- List<RexNode> newProjExprs = Lists.newArrayList();
+ List<RexNode> newProjExprs = new ArrayList<>();
RexBuilder rexBuilder =
multiJoin.getMultiJoinRel().getCluster().getRexBuilder();
@@ -1633,7 +1631,7 @@ public class LoptOptimizeJoinRule extends RelOptRule {
List<RelDataTypeField> newFields =
multiJoin.getJoinFactor(factorToAdd).getRowType().getFieldList();
final int nNewFields = newFields.size();
- List<Pair<RexNode, String>> projects = Lists.newArrayList();
+ List<Pair<RexNode, String>> projects = new ArrayList<>();
RexBuilder rexBuilder = currJoinRel.getCluster().getRexBuilder();
RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory();
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
index b382f52..88e752b 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
@@ -74,7 +74,7 @@ public class MaterializedViewFilterScanRule extends RelOptRule {
List<RelOptMaterialization> materializations =
(planner instanceof VolcanoPlanner)
? ((VolcanoPlanner) planner).getMaterializations()
- : ImmutableList.<RelOptMaterialization>of();
+ : ImmutableList.of();
if (!materializations.isEmpty()) {
RelNode root = filter.copy(filter.getTraitSet(),
Collections.singletonList((RelNode) scan));
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.java b/core/src/main/java/org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.java
index a482904..bdaeb05 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/MultiJoinOptimizeBushyRule.java
@@ -36,14 +36,17 @@ import org.apache.calcite.util.Pair;
import org.apache.calcite.util.Util;
import org.apache.calcite.util.mapping.Mappings;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
+
+import static org.apache.calcite.rel.rules.LoptMultiJoin.Edge;
+import static org.apache.calcite.util.mapping.Mappings.TargetMapping;
/**
* Planner rule that finds an approximately optimal ordering for join operators
@@ -92,7 +95,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
final LoptMultiJoin multiJoin = new LoptMultiJoin(multiJoinRel);
- final List<Vertex> vertexes = Lists.newArrayList();
+ final List<Vertex> vertexes = new ArrayList<>();
int x = 0;
for (int i = 0; i < multiJoin.getNumJoinFactors(); i++) {
final RelNode rel = multiJoin.getJoinFactor(i);
@@ -102,7 +105,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
}
assert x == multiJoin.getNumTotalFields();
- final List<LoptMultiJoin.Edge> unusedEdges = Lists.newArrayList();
+ final List<Edge> unusedEdges = new ArrayList<>();
for (RexNode node : multiJoin.getJoinFilters()) {
unusedEdges.add(multiJoin.createEdge(node));
}
@@ -124,7 +127,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
}
};
- final List<LoptMultiJoin.Edge> usedEdges = Lists.newArrayList();
+ final List<Edge> usedEdges = new ArrayList<>();
for (;;) {
final int edgeOrdinal = chooseBestEdge(unusedEdges, edgeComparator);
if (pw != null) {
@@ -174,7 +177,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
.set(v)
.build();
- final List<RexNode> conditions = Lists.newArrayList();
+ final List<RexNode> conditions = new ArrayList<>();
final Iterator<LoptMultiJoin.Edge> edgeIterator = unusedEdges.iterator();
while (edgeIterator.hasNext()) {
LoptMultiJoin.Edge edge = edgeIterator.next();
@@ -223,7 +226,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
}
// We have a winner!
- List<Pair<RelNode, Mappings.TargetMapping>> relNodes = Lists.newArrayList();
+ List<Pair<RelNode, TargetMapping>> relNodes = new ArrayList<>();
for (Vertex vertex : vertexes) {
if (vertex instanceof LeafVertex) {
LeafVertex leafVertex = (LeafVertex) vertex;
@@ -372,7 +375,7 @@ public class MultiJoinOptimizeBushyRule extends RelOptRule {
super(id, factors, cost);
this.leftFactor = leftFactor;
this.rightFactor = rightFactor;
- this.conditions = Preconditions.checkNotNull(conditions);
+ this.conditions = Objects.requireNonNull(conditions);
}
@Override public String toString() {
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
index 67d9402..adeac9e 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
@@ -46,8 +46,7 @@ import java.util.Map;
public class ProjectCorrelateTransposeRule extends RelOptRule {
public static final ProjectCorrelateTransposeRule INSTANCE =
- new ProjectCorrelateTransposeRule(
- PushProjector.ExprCondition.TRUE,
+ new ProjectCorrelateTransposeRule(expr -> true,
RelFactories.LOGICAL_BUILDER);
//~ Instance fields --------------------------------------------------------