This is an automated email from the ASF dual-hosted git repository. vladimirsitnikov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit a79dde6383325bc34bc3d92ee32176c59579221a Author: Vladimir Sitnikov <[email protected]> AuthorDate: Sat Sep 26 17:54:58 2020 +0300 [CALCITE-4280] Replace Guava's Lists.transform and Iterables.transform with Util.transform --- .../cassandra/CassandraToEnumerableConverter.java | 5 +- .../apache/calcite/adapter/clone/ColumnLoader.java | 9 +- .../calcite/adapter/enumerable/EnumerableCalc.java | 5 +- .../adapter/enumerable/EnumerableUnionRule.java | 5 +- .../org/apache/calcite/adapter/jdbc/JdbcTable.java | 4 +- .../org/apache/calcite/interpreter/SortNode.java | 4 +- .../org/apache/calcite/materialize/Lattice.java | 9 +- .../apache/calcite/materialize/LatticeSpace.java | 3 +- .../calcite/materialize/LatticeSuggester.java | 3 +- .../materialize/MaterializationService.java | 3 +- .../calcite/plan/RelOptMaterializations.java | 4 +- .../java/org/apache/calcite/plan/RelOptRule.java | 3 +- .../java/org/apache/calcite/plan/RelOptUtil.java | 4 +- .../org/apache/calcite/profile/ProfilerImpl.java | 2 +- .../org/apache/calcite/profile/SimpleProfiler.java | 4 +- .../java/org/apache/calcite/rel/RelCollations.java | 3 +- .../java/org/apache/calcite/rel/core/Project.java | 3 +- .../org/apache/calcite/rel/core/RepeatUnion.java | 4 +- .../java/org/apache/calcite/rel/core/SetOp.java | 3 +- .../java/org/apache/calcite/rel/core/Sort.java | 4 +- .../calcite/rel/metadata/RelMdAllPredicates.java | 14 +-- .../rel/metadata/RelMdColumnUniqueness.java | 4 +- .../rel/metadata/RelMdExpressionLineage.java | 3 +- .../calcite/rel/metadata/RelMdUniqueKeys.java | 11 +- .../calcite/rel/mutable/MutableMultiRel.java | 5 +- .../apache/calcite/rel/mutable/MutableRels.java | 4 +- .../calcite/rel/rel2sql/RelToSqlConverter.java | 6 +- .../rel/rules/AggregateExtractProjectRule.java | 4 +- .../rel/rules/AggregateProjectMergeRule.java | 4 +- .../calcite/rel/rules/ProjectToWindowRule.java | 5 +- .../java/org/apache/calcite/rex/RexAnalyzer.java | 4 +- .../java/org/apache/calcite/rex/RexBuilder.java | 3 +- .../main/java/org/apache/calcite/rex/RexUtil.java | 16 +-- .../java/org/apache/calcite/schema/Schemas.java | 5 +- .../java/org/apache/calcite/sql/SqlIdentifier.java | 5 +- .../apache/calcite/sql/parser/SqlParserPos.java | 14 +-- .../org/apache/calcite/sql/validate/ListScope.java | 5 +- .../sql/validate/SqlUserDefinedFunction.java | 5 +- .../sql/validate/SqlUserDefinedTableMacro.java | 5 +- .../calcite/sql/validate/SqlValidatorScope.java | 4 +- .../calcite/sql/validate/SqlValidatorUtil.java | 7 +- .../apache/calcite/sql2rel/RelDecorrelator.java | 2 +- .../apache/calcite/sql2rel/RelFieldTrimmer.java | 8 +- .../apache/calcite/sql2rel/SqlToRelConverter.java | 2 +- .../java/org/apache/calcite/tools/Programs.java | 4 +- .../org/apache/calcite/util/ImmutableBitSet.java | 5 +- .../apache/calcite/util/ImmutableNullableSet.java | 2 +- .../main/java/org/apache/calcite/util/Util.java | 123 +++++++++++++++------ .../org/apache/calcite/util/mapping/IntPair.java | 9 +- .../org/apache/calcite/util/mapping/Mappings.java | 3 +- .../java/org/apache/calcite/test/QuidemTest.java | 3 +- .../calcite/adapter/druid/DruidDateTimeUtils.java | 3 +- .../apache/calcite/adapter/druid/DruidQuery.java | 3 +- .../geode/rel/GeodeToEnumerableConverter.java | 5 +- .../linq4j/tree/ConstructorDeclaration.java | 7 +- .../calcite/linq4j/tree/MethodDeclaration.java | 5 +- .../mongodb/MongoToEnumerableConverter.java | 5 +- src/main/config/forbidden-apis/signatures.txt | 8 +- 58 files changed, 213 insertions(+), 201 deletions(-) diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverter.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverter.java index 45f6f07..111d48e 100644 --- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverter.java +++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverter.java @@ -38,8 +38,7 @@ import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.runtime.Hook; import org.apache.calcite.util.BuiltInMethod; import org.apache.calcite.util.Pair; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.util.AbstractList; import java.util.ArrayList; @@ -143,6 +142,6 @@ public class CassandraToEnumerableConverter /** E.g. {@code constantList("x", "y")} returns * {@code {ConstantExpression("x"), ConstantExpression("y")}}. */ private static <T> List<Expression> constantList(List<T> values) { - return Lists.transform(values, Expressions::constant); + return Util.transform(values, Expressions::constant); } } diff --git a/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java b/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java index a276722..3128b0d 100644 --- a/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java +++ b/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java @@ -25,8 +25,7 @@ import org.apache.calcite.linq4j.tree.Primitive; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rel.type.RelDataTypeField; import org.apache.calcite.rel.type.RelProtoDataType; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.lang.reflect.Type; import java.sql.Date; @@ -238,7 +237,7 @@ class ColumnLoader<T> { switch (rep) { case OBJECT: case JAVA_SQL_TIMESTAMP: - return Lists.transform(list, + return Util.transform(list, (Timestamp t) -> t == null ? null : t.getTime()); } break; @@ -246,7 +245,7 @@ class ColumnLoader<T> { switch (rep) { case OBJECT: case JAVA_SQL_TIME: - return Lists.transform(list, (Time t) -> t == null + return Util.transform(list, (Time t) -> t == null ? null : (int) (t.getTime() % DateTimeUtils.MILLIS_PER_DAY)); } @@ -255,7 +254,7 @@ class ColumnLoader<T> { switch (rep) { case OBJECT: case JAVA_SQL_DATE: - return Lists.transform(list, (Date d) -> d == null + return Util.transform(list, (Date d) -> d == null ? null : (int) (d.getTime() / DateTimeUtils.MILLIS_PER_DAY)); } diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java index f987cbf..a09d9fa 100644 --- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java +++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java @@ -50,7 +50,6 @@ import org.apache.calcite.util.Pair; import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.lang.reflect.Modifier; import java.lang.reflect.Type; @@ -269,7 +268,7 @@ public class EnumerableCalc extends Calc implements EnumerableRel { @Override public Pair<RelTraitSet, List<RelTraitSet>> passThroughTraits( final RelTraitSet required) { - final List<RexNode> exps = Lists.transform(program.getProjectList(), + final List<RexNode> exps = Util.transform(program.getProjectList(), program::expandLocalRef); return EnumerableTraitsUtils.passThroughTraitsForProject(required, exps, @@ -278,7 +277,7 @@ public class EnumerableCalc extends Calc implements EnumerableRel { @Override public Pair<RelTraitSet, List<RelTraitSet>> deriveTraits( final RelTraitSet childTraits, final int childId) { - final List<RexNode> exps = Lists.transform(program.getProjectList(), + final List<RexNode> exps = Util.transform(program.getProjectList(), program::expandLocalRef); return EnumerableTraitsUtils.deriveTraitsForProject(childTraits, childId, exps, diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java index 08fc857..fc69eab 100644 --- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java +++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java @@ -21,8 +21,7 @@ import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.convert.ConverterRule; import org.apache.calcite.rel.logical.LogicalUnion; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.util.List; @@ -48,7 +47,7 @@ class EnumerableUnionRule extends ConverterRule { final LogicalUnion union = (LogicalUnion) rel; final EnumerableConvention out = EnumerableConvention.INSTANCE; final RelTraitSet traitSet = rel.getCluster().traitSet().replace(out); - final List<RelNode> newInputs = Lists.transform( + final List<RelNode> newInputs = Util.transform( union.getInputs(), n -> convert(n, traitSet)); return new EnumerableUnion(rel.getCluster(), traitSet, newInputs, union.all); diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcTable.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcTable.java index 3a8eff5..7e85d5b 100644 --- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcTable.java +++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcTable.java @@ -54,8 +54,6 @@ import org.apache.calcite.sql.util.SqlString; import org.apache.calcite.util.Pair; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; - import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; @@ -130,7 +128,7 @@ public class JdbcTable extends AbstractQueryableTable private List<Pair<ColumnMetaData.Rep, Integer>> fieldClasses( final JavaTypeFactory typeFactory) { final RelDataType rowType = protoRowType.apply(typeFactory); - return Lists.transform(rowType.getFieldList(), f -> { + return Util.transform(rowType.getFieldList(), f -> { final RelDataType type = f.getType(); final Class clazz = (Class) typeFactory.getJavaClass(type); final ColumnMetaData.Rep rep = diff --git a/core/src/main/java/org/apache/calcite/interpreter/SortNode.java b/core/src/main/java/org/apache/calcite/interpreter/SortNode.java index 4b7d1b6..ae71482 100644 --- a/core/src/main/java/org/apache/calcite/interpreter/SortNode.java +++ b/core/src/main/java/org/apache/calcite/interpreter/SortNode.java @@ -19,8 +19,8 @@ package org.apache.calcite.interpreter; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.core.Sort; import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.util.Util; -import com.google.common.collect.Iterables; import com.google.common.collect.Ordering; import java.util.ArrayList; @@ -86,7 +86,7 @@ public class SortNode extends AbstractSingleNode<Sort> { return comparator(rel.getCollation().getFieldCollations().get(0)); } return Ordering.compound( - Iterables.transform(rel.getCollation().getFieldCollations(), + Util.transform(rel.getCollation().getFieldCollations(), this::comparator)); } diff --git a/core/src/main/java/org/apache/calcite/materialize/Lattice.java b/core/src/main/java/org/apache/calcite/materialize/Lattice.java index db03cde..3f16f8c 100644 --- a/core/src/main/java/org/apache/calcite/materialize/Lattice.java +++ b/core/src/main/java/org/apache/calcite/materialize/Lattice.java @@ -62,7 +62,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.common.collect.Ordering; @@ -391,12 +390,12 @@ public class Lattice { } public List<Measure> toMeasures(List<AggregateCall> aggCallList) { - return Lists.transform(aggCallList, this::toMeasure); + return Util.transform(aggCallList, this::toMeasure); } private Measure toMeasure(AggregateCall aggCall) { return new Measure(aggCall.getAggregation(), aggCall.isDistinct(), - aggCall.name, Lists.transform(aggCall.getArgList(), columns::get)); + aggCall.name, Util.transform(aggCall.getArgList(), columns::get)); } public Iterable<? extends Tile> computeTiles() { @@ -451,7 +450,7 @@ public class Lattice { } public List<String> uniqueColumnNames() { - return Lists.transform(columns, column -> column.alias); + return Util.transform(columns, column -> column.alias); } Pair<Path, Integer> columnToPathOffset(BaseColumn c) { @@ -610,7 +609,7 @@ public class Lattice { /** Returns a list of argument ordinals. */ public List<Integer> argOrdinals() { - return Lists.transform(args, column -> column.ordinal); + return Util.transform(args, column -> column.ordinal); } private static int compare(List<Column> list0, List<Column> list1) { diff --git a/core/src/main/java/org/apache/calcite/materialize/LatticeSpace.java b/core/src/main/java/org/apache/calcite/materialize/LatticeSpace.java index c4cb0d8..e586410 100644 --- a/core/src/main/java/org/apache/calcite/materialize/LatticeSpace.java +++ b/core/src/main/java/org/apache/calcite/materialize/LatticeSpace.java @@ -24,7 +24,6 @@ import org.apache.calcite.util.graph.AttributedDirectedGraph; import org.apache.calcite.util.mapping.IntPair; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.HashMap; @@ -120,7 +119,7 @@ class LatticeSpace { /** Returns a list of {@link IntPair}, transposing source and target fields, * and ensuring the result is sorted and unique. */ static List<IntPair> swap(List<IntPair> keys) { - return sortUnique(Lists.transform(keys, IntPair.SWAP)); + return sortUnique(Util.transform(keys, x -> IntPair.of(x.target, x.source))); } Path addPath(List<Step> steps) { diff --git a/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java b/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java index 7176cb3..06f0804 100644 --- a/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java +++ b/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java @@ -51,7 +51,6 @@ import org.apache.calcite.util.mapping.IntPair; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.LinkedListMultimap; -import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import java.util.ArrayList; @@ -231,7 +230,7 @@ public class LatticeSuggester { latticeBuilder.addMeasure( new Lattice.Measure(measure.aggregate, measure.distinct, measure.name, - Lists.transform(measure.arguments, colRef -> { + Util.transform(measure.arguments, colRef -> { final Lattice.Column column; if (colRef instanceof BaseColRef) { final BaseColRef baseColRef = (BaseColRef) colRef; diff --git a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java index 0dedb82..90c5791 100644 --- a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java +++ b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java @@ -39,7 +39,6 @@ import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; import java.lang.reflect.Type; import java.util.ArrayList; @@ -371,7 +370,7 @@ public class MaterializationService { return CloneSchema.createCloneTable(connection.getTypeFactory(), RelDataTypeImpl.proto(calciteSignature.rowType), calciteSignature.getCollationList(), - Lists.transform(calciteSignature.columns, column -> column.type.rep), + Util.transform(calciteSignature.columns, column -> column.type.rep), new AbstractQueryable<Object>() { public Enumerator<Object> enumerator() { final DataContext dataContext = diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java b/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java index dc953d3..9e3dd13 100644 --- a/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java +++ b/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java @@ -26,6 +26,7 @@ import org.apache.calcite.rel.rules.CoreRules; import org.apache.calcite.sql2rel.RelFieldTrimmer; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.util.Pair; +import org.apache.calcite.util.Util; import org.apache.calcite.util.graph.DefaultDirectedGraph; import org.apache.calcite.util.graph.DefaultEdge; import org.apache.calcite.util.graph.DirectedGraph; @@ -34,7 +35,6 @@ import org.apache.calcite.util.graph.TopologicalOrderIterator; import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import java.util.ArrayList; @@ -102,7 +102,7 @@ public abstract class RelOptMaterializations { final List<Pair<RelNode, RelOptLattice>> latticeUses = new ArrayList<>(); final Set<List<String>> queryTableNames = Sets.newHashSet( - Iterables.transform(queryTables, RelOptTable::getQualifiedName)); + Util.transform(queryTables, RelOptTable::getQualifiedName)); // Remember leaf-join form of root so we convert at most once. final Supplier<RelNode> leafJoinRoot = Suppliers.memoize(() -> RelOptMaterialization.toLeafJoinForm(rel))::get; diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptRule.java b/core/src/main/java/org/apache/calcite/plan/RelOptRule.java index cfd478b..b06f0f4 100644 --- a/core/src/main/java/org/apache/calcite/plan/RelOptRule.java +++ b/core/src/main/java/org/apache/calcite/plan/RelOptRule.java @@ -21,6 +21,7 @@ import org.apache.calcite.rel.convert.Converter; import org.apache.calcite.rel.convert.ConverterRule; import org.apache.calcite.rel.core.RelFactories; import org.apache.calcite.tools.RelBuilderFactory; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -630,7 +631,7 @@ public abstract class RelOptRule { */ protected static List<RelNode> convertList(List<RelNode> rels, final RelTrait trait) { - return Lists.transform(rels, + return Util.transform(rels, rel -> convert(rel, rel.getTraitSet().replace(trait))); } diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java index 6398e08..6080302 100644 --- a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java +++ b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java @@ -318,7 +318,7 @@ public abstract class RelOptUtil { * @see org.apache.calcite.rel.type.RelDataType#getFieldNames() */ public static List<RelDataType> getFieldTypeList(final RelDataType type) { - return Lists.transform(type.getFieldList(), RelDataTypeField::getType); + return Util.transform(type.getFieldList(), RelDataTypeField::getType); } public static boolean areRowTypesEqual( @@ -3052,7 +3052,7 @@ public abstract class RelOptUtil { multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(), - Lists.transform(newProjFields, ImmutableBitSet::fromBitSet), + Util.transform(newProjFields, ImmutableBitSet::fromBitSet), multiJoin.getJoinFieldRefCountsMap(), multiJoin.getPostJoinFilter()); } diff --git a/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java b/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java index e3afb29..e276e62 100644 --- a/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java +++ b/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java @@ -433,7 +433,7 @@ public class ProfilerImpl implements Profiler { private ImmutableSortedSet<Column> toColumns(Iterable<Integer> ordinals) { return ImmutableSortedSet.copyOf( - Iterables.transform(ordinals, columns::get)); + Util.transform(ordinals, columns::get)); } } diff --git a/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java b/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java index 932d3b6..a251714 100644 --- a/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java +++ b/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java @@ -200,7 +200,7 @@ public class SimpleProfiler implements Profiler { if (space.columns.size() == 1) { nullCount = space.nullCount; valueSet = ImmutableSortedSet.copyOf( - Iterables.transform(space.values, Iterables::getOnlyElement)); + Util.transform(space.values, Iterables::getOnlyElement)); } else { nullCount = -1; valueSet = null; @@ -279,7 +279,7 @@ public class SimpleProfiler implements Profiler { private ImmutableSortedSet<Column> toColumns(Iterable<Integer> ordinals) { return ImmutableSortedSet.copyOf( - Iterables.transform(ordinals, columns::get)); + Util.transform(ordinals, columns::get)); } } diff --git a/core/src/main/java/org/apache/calcite/rel/RelCollations.java b/core/src/main/java/org/apache/calcite/rel/RelCollations.java index 8633279..ed52278 100644 --- a/core/src/main/java/org/apache/calcite/rel/RelCollations.java +++ b/core/src/main/java/org/apache/calcite/rel/RelCollations.java @@ -23,7 +23,6 @@ import org.apache.calcite.util.Util; import org.apache.calcite.util.mapping.Mappings; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.HashSet; import java.util.Iterator; @@ -147,7 +146,7 @@ public class RelCollations { /** Returns the indexes of the fields in a list of field collations. */ public static List<Integer> ordinals( List<RelFieldCollation> fieldCollations) { - return Lists.transform(fieldCollations, RelFieldCollation::getFieldIndex); + return Util.transform(fieldCollations, RelFieldCollation::getFieldIndex); } /** Returns whether a collation indicates that the collection is sorted on diff --git a/core/src/main/java/org/apache/calcite/rel/core/Project.java b/core/src/main/java/org/apache/calcite/rel/core/Project.java index 47ca1c4..51e8271 100644 --- a/core/src/main/java/org/apache/calcite/rel/core/Project.java +++ b/core/src/main/java/org/apache/calcite/rel/core/Project.java @@ -45,7 +45,6 @@ import org.apache.calcite.util.mapping.MappingType; import org.apache.calcite.util.mapping.Mappings; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import org.apiguardian.api.API; @@ -222,7 +221,7 @@ public abstract class Project extends SingleRel implements Hintable { return litmus.fail("field names not distinct: {}", rowType); } //CHECKSTYLE: IGNORE 1 - if (false && !Util.isDistinct(Lists.transform(exps, RexNode::toString))) { + if (false && !Util.isDistinct(Util.transform(exps, RexNode::toString))) { // Projecting the same expression twice is usually a bad idea, // because it may create expressions downstream which are equivalent // but which look different. We can't ban duplicate projects, diff --git a/core/src/main/java/org/apache/calcite/rel/core/RepeatUnion.java b/core/src/main/java/org/apache/calcite/rel/core/RepeatUnion.java index 94d3865..f1419d7 100644 --- a/core/src/main/java/org/apache/calcite/rel/core/RepeatUnion.java +++ b/core/src/main/java/org/apache/calcite/rel/core/RepeatUnion.java @@ -26,8 +26,6 @@ import org.apache.calcite.rel.metadata.RelMetadataQuery; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; - import java.util.List; /** @@ -99,7 +97,7 @@ public abstract class RepeatUnion extends BiRel { @Override protected RelDataType deriveRowType() { final List<RelDataType> inputRowTypes = - Lists.transform(getInputs(), RelNode::getRowType); + Util.transform(getInputs(), RelNode::getRowType); final RelDataType rowType = getCluster().getTypeFactory().leastRestrictive(inputRowTypes); if (rowType == null) { diff --git a/core/src/main/java/org/apache/calcite/rel/core/SetOp.java b/core/src/main/java/org/apache/calcite/rel/core/SetOp.java index 3883716..381277c 100644 --- a/core/src/main/java/org/apache/calcite/rel/core/SetOp.java +++ b/core/src/main/java/org/apache/calcite/rel/core/SetOp.java @@ -30,7 +30,6 @@ import org.apache.calcite.util.Util; 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.List; @@ -102,7 +101,7 @@ public abstract class SetOp extends AbstractRelNode { @Override protected RelDataType deriveRowType() { final List<RelDataType> inputRowTypes = - Lists.transform(inputs, RelNode::getRowType); + Util.transform(inputs, RelNode::getRowType); final RelDataType rowType = getCluster().getTypeFactory().leastRestrictive(inputRowTypes); if (rowType == null) { diff --git a/core/src/main/java/org/apache/calcite/rel/core/Sort.java b/core/src/main/java/org/apache/calcite/rel/core/Sort.java index de12dd7..4de0291 100644 --- a/core/src/main/java/org/apache/calcite/rel/core/Sort.java +++ b/core/src/main/java/org/apache/calcite/rel/core/Sort.java @@ -33,8 +33,6 @@ import org.apache.calcite.rex.RexNode; import org.apache.calcite.rex.RexShuttle; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; - import java.util.List; import java.util.Objects; @@ -171,7 +169,7 @@ public abstract class Sort extends SingleRel { /** Returns the sort expressions. */ public List<RexNode> getSortExps() { //noinspection StaticPseudoFunctionalStyleMethod - return Lists.transform(collation.getFieldCollations(), field -> + return Util.transform(collation.getFieldCollations(), field -> getCluster().getRexBuilder().makeInputRef(input, Objects.requireNonNull(field).getFieldIndex())); } 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 b3d88df..2ae4571 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 @@ -45,8 +45,6 @@ import org.apache.calcite.util.Util; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import java.util.Collection; @@ -204,10 +202,10 @@ public class RelMdAllPredicates currentTablesMapping.put(rightRef, RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber())); } - final List<RexNode> updatedPreds = Lists.newArrayList( - Iterables.transform(inputPreds.pulledUpPredicates, + final List<RexNode> updatedPreds = + Util.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, - currentTablesMapping))); + currentTablesMapping)); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } @@ -303,10 +301,10 @@ public class RelMdAllPredicates qualifiedNamesToRefs.put(newRef.getQualifiedName(), newRef); } // Update preds - final List<RexNode> updatedPreds = Lists.newArrayList( - Iterables.transform(inputPreds.pulledUpPredicates, + final List<RexNode> updatedPreds = + Util.transform(inputPreds.pulledUpPredicates, e -> RexUtil.swapTableReferences(rexBuilder, e, - currentTablesMapping))); + currentTablesMapping)); newPreds = newPreds.union(rexBuilder, RelOptPredicateList.of(rexBuilder, updatedPreds)); } 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 c75925b..5815cfc 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 @@ -49,9 +49,9 @@ 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 org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.HashSet; @@ -219,7 +219,7 @@ public class RelMdColumnUniqueness RexProgram program = rel.getProgram(); return areProjectColumnsUnique(rel, mq, columns, ignoreNulls, - Lists.transform(program.getProjectList(), program::expandLocalRef)); + Util.transform(program.getProjectList(), program::expandLocalRef)); } private Boolean areProjectColumnsUnique( 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 6aba8b3..f560cbd 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 @@ -47,7 +47,6 @@ import org.apache.calcite.util.Util; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Multimap; import java.util.ArrayList; @@ -269,7 +268,7 @@ public class RelMdExpressionLineage null, ImmutableList.of()); final Set<RexNode> updatedExprs = ImmutableSet.copyOf( - Iterables.transform(originalExprs, e -> + Util.transform(originalExprs, e -> RexUtil.swapTableReferences(rexBuilder, e, currentTablesMapping))); mapping.put(RexInputRef.of(idx, fullRowType), updatedExprs); 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 c0ea749..9ce8597 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 @@ -38,11 +38,10 @@ import org.apache.calcite.rex.RexProgram; import org.apache.calcite.util.BuiltInMethod; import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.Permutation; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import java.util.HashSet; @@ -101,7 +100,7 @@ public class RelMdUniqueKeys RexProgram program = rel.getProgram(); Permutation permutation = program.getPermutation(); return getProjectUniqueKeys(rel, mq, ignoreNulls, - Lists.transform(program.getProjectList(), program::expandLocalRef)); + Util.transform(program.getProjectList(), program::expandLocalRef)); } private Set<ImmutableBitSet> getProjectUniqueKeys(SingleRel rel, RelMetadataQuery mq, @@ -159,10 +158,10 @@ public class RelMdUniqueKeys // the resulting unique keys would be {{0},{3}}, {{0},{4}}, {{0},{1},{4}}, ... Iterable<List<ImmutableBitSet>> product = Linq4j.product( - Iterables.transform(colMask, - in -> Iterables.filter(mapInToOutPos.get(in).powerSet(), bs -> !bs.isEmpty()))); + Util.transform(colMask, + in -> Util.filter(mapInToOutPos.get(in).powerSet(), bs -> !bs.isEmpty()))); - resultBuilder.addAll(Iterables.transform(product, ImmutableBitSet::union)); + resultBuilder.addAll(Util.transform(product, ImmutableBitSet::union)); } return resultBuilder.build(); } 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 00af4cf..417b21b 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 @@ -19,8 +19,7 @@ package org.apache.calcite.rel.mutable; import org.apache.calcite.linq4j.Ord; import org.apache.calcite.plan.RelOptCluster; import org.apache.calcite.rel.type.RelDataType; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.util.ArrayList; import java.util.List; @@ -58,6 +57,6 @@ abstract class MutableMultiRel extends MutableRel { } protected List<MutableRel> cloneChildren() { - return Lists.transform(inputs, MutableRel::clone); + return Util.transform(inputs, MutableRel::clone); } } 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 75a843d..bb64684 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 @@ -60,8 +60,6 @@ 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.collect.Lists; - import java.util.AbstractList; import java.util.ArrayList; import java.util.Collections; @@ -319,7 +317,7 @@ public abstract class MutableRels { private static List<RelNode> fromMutables(List<MutableRel> nodes, final RelBuilder relBuilder) { - return Lists.transform(nodes, + return Util.transform(nodes, mutableRel -> fromMutable(mutableRel, relBuilder)); } 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 d7ee35e..e3e4231 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 @@ -84,12 +84,12 @@ import org.apache.calcite.util.Pair; import org.apache.calcite.util.Permutation; import org.apache.calcite.util.ReflectUtil; import org.apache.calcite.util.ReflectiveVisitor; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import java.util.ArrayDeque; @@ -848,14 +848,14 @@ public class RelToSqlConverter extends SqlImplementor private SqlNodeList exprList(final Context context, List<? extends RexNode> exprs) { return new SqlNodeList( - Lists.transform(exprs, e -> context.toSql(null, e)), POS); + Util.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, name -> new SqlIdentifier(name, POS)), POS); + Util.transform(names, name -> new SqlIdentifier(name, POS)), POS); } /** Visits a Match; called by {@link #dispatch} via reflection. */ 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 0452e73..af96822 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 @@ -28,12 +28,12 @@ import org.apache.calcite.rex.RexNode; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableBitSet; +import org.apache.calcite.util.Util; 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.collect.ImmutableList; -import com.google.common.collect.Iterables; import java.util.ArrayList; import java.util.List; @@ -114,7 +114,7 @@ public class AggregateExtractProjectRule Mappings.apply(mapping, aggregate.getGroupSet()); final Iterable<ImmutableBitSet> newGroupSets = - Iterables.transform(aggregate.getGroupSets(), + Util.transform(aggregate.getGroupSets(), bitSet -> Mappings.apply(mapping, bitSet)); final List<RelBuilder.AggCall> newAggCallList = new ArrayList<>(); for (AggregateCall aggCall : aggregate.getAggCallList()) { 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 49d56e5..cca5867 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 @@ -29,10 +29,10 @@ import org.apache.calcite.rex.RexNode; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableBitSet; +import org.apache.calcite.util.Util; import org.apache.calcite.util.mapping.Mappings; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.HashMap; @@ -125,7 +125,7 @@ public class AggregateProjectMergeRule final RelBuilder relBuilder = call.builder(); relBuilder.push(newAggregate); final List<Integer> newKeys = - Lists.transform(aggregate.getGroupSet().asList(), map::get); + Util.transform(aggregate.getGroupSet().asList(), map::get); if (!newKeys.equals(newGroupSet.asList())) { final List<Integer> posList = new ArrayList<>(); for (int newKey : newKeys) { diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java index 951dc0d..e188b7d 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java @@ -39,6 +39,7 @@ import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableIntList; import org.apache.calcite.util.Pair; +import org.apache.calcite.util.Util; import org.apache.calcite.util.graph.DefaultDirectedGraph; import org.apache.calcite.util.graph.DefaultEdge; import org.apache.calcite.util.graph.DirectedGraph; @@ -46,7 +47,6 @@ import org.apache.calcite.util.graph.TopologicalOrderIterator; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayDeque; import java.util.ArrayList; @@ -173,8 +173,7 @@ public abstract class ProjectToWindowRule } if (!program.projectsOnlyIdentity()) { relBuilder.project( - Lists.transform(program.getProjectList(), - program::expandLocalRef), + Util.transform(program.getProjectList(), program::expandLocalRef), calc.getRowType().getFieldNames()); } return relBuilder.build(); diff --git a/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java b/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java index 0e059a2..d385e4d 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java +++ b/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java @@ -25,7 +25,6 @@ import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Iterables; import java.math.BigDecimal; import java.util.LinkedHashSet; @@ -58,8 +57,7 @@ public class RexAnalyzer { variables.stream().map(RexAnalyzer::getComparables) .collect(Util.toImmutableList()); final Iterable<List<Comparable>> product = Linq4j.product(generators); - //noinspection StaticPseudoFunctionalStyleMethod - return Iterables.transform(product, + return Util.transform(product, values -> ImmutableMap.copyOf(Pair.zip(variables, values))); } diff --git a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java index 09f7e55..5ca2ee4 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java +++ b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java @@ -54,7 +54,6 @@ import org.apache.calcite.util.Util; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableRangeSet; -import com.google.common.collect.Lists; import com.google.common.collect.Range; import com.google.common.collect.RangeSet; import com.google.common.collect.TreeRangeSet; @@ -137,7 +136,7 @@ public class RexBuilder { /** Creates a list of {@link org.apache.calcite.rex.RexInputRef} expressions, * projecting the fields of a given record type. */ public List<? extends RexNode> identityProjects(final RelDataType rowType) { - return Lists.transform(rowType.getFieldList(), + return Util.transform(rowType.getFieldList(), input -> new RexInputRef(input.getIndex(), input.getType())); } diff --git a/core/src/main/java/org/apache/calcite/rex/RexUtil.java b/core/src/main/java/org/apache/calcite/rex/RexUtil.java index f111279..d513be4 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexUtil.java +++ b/core/src/main/java/org/apache/calcite/rex/RexUtil.java @@ -1813,11 +1813,11 @@ public class RexUtil { /** Transforms a list of expressions into a list of their types. */ public static List<RelDataType> types(List<? extends RexNode> nodes) { - return Lists.transform(nodes, RexNode::getType); + return Util.transform(nodes, RexNode::getType); } public static List<RelDataTypeFamily> families(List<RelDataType> types) { - return Lists.transform(types, RelDataType::getFamily); + return Util.transform(types, RelDataType::getFamily); } /** Removes all expressions from a list that are equivalent to a given @@ -2091,7 +2091,7 @@ public class RexUtil { } return composeConjunction(rexBuilder, Iterables.concat(ImmutableList.of(e), - Iterables.transform(notTerms, e2 -> not(rexBuilder, e2)))); + Util.transform(notTerms, e2 -> not(rexBuilder, e2)))); } /** Returns whether a given operand of a CASE expression is a predicate. @@ -2474,11 +2474,11 @@ public class RexUtil { case OR: operands = ((RexCall) arg).getOperands(); return toCnf2( - and(Lists.transform(flattenOr(operands), RexUtil::addNot))); + and(Util.transform(flattenOr(operands), RexUtil::addNot))); case AND: operands = ((RexCall) arg).getOperands(); return toCnf2( - or(Lists.transform(flattenAnd(operands), RexUtil::addNot))); + or(Util.transform(flattenAnd(operands), RexUtil::addNot))); default: incrementAndCheck(); return rex; @@ -2577,7 +2577,7 @@ public class RexUtil { /** Transforms a list of expressions to the list of digests. */ public static List<String> strings(List<RexNode> list) { - return Lists.transform(list, Object::toString); + return Util.transform(list, Object::toString); } /** Helps {@link org.apache.calcite.rex.RexUtil#toDnf}. */ @@ -2617,11 +2617,11 @@ public class RexUtil { case OR: operands = ((RexCall) arg).getOperands(); return toDnf( - and(Lists.transform(flattenOr(operands), RexUtil::addNot))); + and(Util.transform(flattenOr(operands), RexUtil::addNot))); case AND: operands = ((RexCall) arg).getOperands(); return toDnf( - or(Lists.transform(flattenAnd(operands), RexUtil::addNot))); + or(Util.transform(flattenAnd(operands), RexUtil::addNot))); default: return rex; } diff --git a/core/src/main/java/org/apache/calcite/schema/Schemas.java b/core/src/main/java/org/apache/calcite/schema/Schemas.java index 00b9239..126e7e1 100644 --- a/core/src/main/java/org/apache/calcite/schema/Schemas.java +++ b/core/src/main/java/org/apache/calcite/schema/Schemas.java @@ -39,6 +39,7 @@ import org.apache.calcite.sql.type.SqlTypeUtil; import org.apache.calcite.tools.RelRunner; import org.apache.calcite.util.BuiltInMethod; import org.apache.calcite.util.Pair; +import org.apache.calcite.util.Util; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -443,7 +444,7 @@ public final class Schemas { public static List<CalciteSchema.TableEntry> getStarTables( CalciteSchema schema) { final List<CalciteSchema.LatticeEntry> list = getLatticeEntries(schema); - return Lists.transform(list, entry -> { + return Util.transform(list, entry -> { final CalciteSchema.TableEntry starTable = Objects.requireNonNull(entry).getStarTable(); assert starTable.getTable().getJdbcTableType() @@ -457,7 +458,7 @@ public final class Schemas { * @param schema Schema */ public static List<Lattice> getLattices(CalciteSchema schema) { final List<CalciteSchema.LatticeEntry> list = getLatticeEntries(schema); - return Lists.transform(list, CalciteSchema.LatticeEntry::getLattice); + return Util.transform(list, LatticeEntry::getLattice); } /** Returns the lattices defined in a schema. diff --git a/core/src/main/java/org/apache/calcite/sql/SqlIdentifier.java b/core/src/main/java/org/apache/calcite/sql/SqlIdentifier.java index eac4f5d..d338075 100644 --- a/core/src/main/java/org/apache/calcite/sql/SqlIdentifier.java +++ b/core/src/main/java/org/apache/calcite/sql/SqlIdentifier.java @@ -27,7 +27,6 @@ import org.apache.calcite.util.Litmus; import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; @@ -122,7 +121,7 @@ public class SqlIdentifier extends SqlNode { public static SqlIdentifier star(List<String> names, SqlParserPos pos, List<SqlParserPos> componentPositions) { return new SqlIdentifier( - Lists.transform(names, s -> s.equals("*") ? "" : s), null, pos, + Util.transform(names, s -> s.equals("*") ? "" : s), null, pos, componentPositions); } @@ -147,7 +146,7 @@ public class SqlIdentifier extends SqlNode { /** Converts empty strings in a list of names to stars. */ public static List<String> toStar(List<String> names) { - return Lists.transform(names, + return Util.transform(names, s -> s.equals("") ? "*" : s.equals("*") ? "\"*\"" : s); } diff --git a/core/src/main/java/org/apache/calcite/sql/parser/SqlParserPos.java b/core/src/main/java/org/apache/calcite/sql/parser/SqlParserPos.java index a1d9d29..e5e94eb 100644 --- a/core/src/main/java/org/apache/calcite/sql/parser/SqlParserPos.java +++ b/core/src/main/java/org/apache/calcite/sql/parser/SqlParserPos.java @@ -17,8 +17,8 @@ package org.apache.calcite.sql.parser; import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.util.Util; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import java.io.Serializable; @@ -194,14 +194,8 @@ public class SqlParserPos implements Serializable { }; } - private static Iterable<SqlParserPos> toPos(Iterable<SqlNode> nodes) { - return Iterables.transform(nodes, node -> { - if (node == null) { - return null; - } else { - return node.getParserPosition(); - } - }); + private static Iterable<SqlParserPos> toPos(Iterable<? extends SqlNode> nodes) { + return Util.transform(nodes, node -> node == null ? null : node.getParserPosition()); } /** @@ -209,7 +203,7 @@ public class SqlParserPos implements Serializable { * which spans from the beginning of the first to the end of the last. */ public static SqlParserPos sum(final List<? extends SqlNode> nodes) { - return sum(Lists.transform(nodes, SqlNode::getParserPosition)); + return sum(Util.transform(nodes, SqlNode::getParserPosition)); } /** diff --git a/core/src/main/java/org/apache/calcite/sql/validate/ListScope.java b/core/src/main/java/org/apache/calcite/sql/validate/ListScope.java index d1887c9..3ac8511 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/ListScope.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/ListScope.java @@ -24,7 +24,6 @@ import org.apache.calcite.util.Pair; import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.Collection; @@ -67,7 +66,7 @@ public abstract class ListScope extends DelegatingScope { * @return list of child namespaces */ public List<SqlValidatorNamespace> getChildren() { - return Lists.transform(children, scopeChild -> scopeChild.namespace); + return Util.transform(children, scopeChild -> scopeChild.namespace); } /** @@ -76,7 +75,7 @@ public abstract class ListScope extends DelegatingScope { * @return list of child namespaces */ List<String> getChildNames() { - return Lists.transform(children, scopeChild -> scopeChild.name); + return Util.transform(children, scopeChild -> scopeChild.name); } private ScopeChild findChild(List<String> names, diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedFunction.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedFunction.java index 813658b..a5d9647 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedFunction.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedFunction.java @@ -29,8 +29,6 @@ import org.apache.calcite.sql.type.SqlOperandTypeInference; import org.apache.calcite.sql.type.SqlReturnTypeInference; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; - import java.util.List; /** @@ -92,7 +90,6 @@ public class SqlUserDefinedFunction extends SqlFunction { @SuppressWarnings("deprecation") @Override public List<String> getParamNames() { - return Lists.transform(function.getParameters(), - FunctionParameter::getName); + return Util.transform(function.getParameters(), FunctionParameter::getName); } } diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedTableMacro.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedTableMacro.java index 307bf75..82deb8f 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedTableMacro.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlUserDefinedTableMacro.java @@ -35,8 +35,6 @@ import org.apache.calcite.sql.type.SqlOperandTypeInference; import org.apache.calcite.sql.type.SqlReturnTypeInference; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; - import java.util.ArrayList; import java.util.List; @@ -81,8 +79,7 @@ public class SqlUserDefinedTableMacro extends SqlFunction @SuppressWarnings("deprecation") @Override public List<String> getParamNames() { - return Lists.transform(tableMacro.getParameters(), - FunctionParameter::getName); + return Util.transform(tableMacro.getParameters(), FunctionParameter::getName); } /** Returns the table in this UDF, or null if there is no table. */ diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorScope.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorScope.java index dc7f1cb..cc58c16 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorScope.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorScope.java @@ -25,10 +25,10 @@ import org.apache.calcite.sql.SqlNodeList; import org.apache.calcite.sql.SqlSelect; import org.apache.calcite.sql.SqlWindow; import org.apache.calcite.util.Pair; +import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.Collection; @@ -242,7 +242,7 @@ public interface SqlValidatorScope { /** Returns a list ["step1", "step2"]. */ List<String> stepNames() { - return Lists.transform(steps(), input -> input.name); + return Util.transform(steps(), input -> input.name); } protected void build(ImmutableList.Builder<Step> paths) { diff --git a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java index f18c31f..ed5a18e 100644 --- a/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java +++ b/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java @@ -62,7 +62,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import java.nio.charset.Charset; import java.util.ArrayList; @@ -227,8 +226,7 @@ public class SqlValidatorUtil { RelDataType sourceRowType, Map<Integer, RelDataTypeField> indexToField) { ImmutableBitSet source = ImmutableBitSet.of( - Lists.transform(sourceRowType.getFieldList(), - RelDataTypeField::getIndex)); + Util.transform(sourceRowType.getFieldList(), RelDataTypeField::getIndex)); ImmutableBitSet target = ImmutableBitSet.of(indexToField.keySet()); return source.intersect(target); @@ -275,8 +273,7 @@ public class SqlValidatorUtil { */ static void checkIdentifierListForDuplicates(List<SqlNode> columnList, SqlValidatorImpl.ValidationErrorFunction validationErrorFunction) { - final List<List<String>> names = Lists.transform(columnList, - o -> ((SqlIdentifier) o).names); + final List<List<String>> names = Util.transform(columnList, o -> ((SqlIdentifier) o).names); final int i = Util.firstDuplicate(names); if (i >= 0) { throw validationErrorFunction.apply(columnList.get(i), diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java index 3c4020d..5ea0f9d 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java @@ -600,7 +600,7 @@ public class RelDecorrelator implements ReflectiveVisitor { ImmutableBitSet.range(oldGroupKeyCount, newGroupKeyCount); newGroupSets = ImmutableBitSet.ORDERING.immutableSortedCopy( - Iterables.transform(rel.getGroupSets(), + Util.transform(rel.getGroupSets(), bitSet -> bitSet.union(addedGroupSet))); } diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java index e965bc6..96e949e 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java @@ -73,8 +73,6 @@ import org.apache.calcite.util.mapping.MappingType; import org.apache.calcite.util.mapping.Mappings; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import java.math.BigDecimal; import java.util.ArrayList; @@ -364,7 +362,7 @@ public class RelFieldTrimmer implements ReflectiveVisitor { ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { final RexProgram rexProgram = calc.getProgram(); - final List<RexNode> projs = Lists.transform(rexProgram.getProjectList(), + final List<RexNode> projs = Util.transform(rexProgram.getProjectList(), rexProgram::expandLocalRef); final RelDataType rowType = calc.getRowType(); @@ -426,7 +424,7 @@ public class RelFieldTrimmer implements ReflectiveVisitor { final RelNode newInputRelNode = relBuilder.push(newInput).build(); RexNode newConditionExpr = null; if (rexProgram.getCondition() != null) { - final List<RexNode> filter = Lists.transform( + final List<RexNode> filter = Util.transform( ImmutableList.of( rexProgram.getCondition()), rexProgram::expandLocalRef); assert filter.size() == 1; @@ -1051,7 +1049,7 @@ public class RelFieldTrimmer implements ReflectiveVisitor { final ImmutableList<ImmutableBitSet> newGroupSets = ImmutableList.copyOf( - Iterables.transform(aggregate.getGroupSets(), + Util.transform(aggregate.getGroupSets(), input1 -> Mappings.apply(inputMapping, input1))); // Populate mapping of where to find the fields. System, group key and diff --git a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java index 9c8d093..c554373 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -1522,7 +1522,7 @@ public class SqlToRelConverter { && call.operandCount() == leftKeys.size(); rexComparison = RexUtil.composeConjunction(rexBuilder, - Iterables.transform( + Util.transform( Pair.zip(leftKeys, call.getOperandList()), pair -> rexBuilder.makeCall(comparisonOp, pair.left, ensureSqlType(pair.left.getType(), 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 844b742..edbfe0c 100644 --- a/core/src/main/java/org/apache/calcite/tools/Programs.java +++ b/core/src/main/java/org/apache/calcite/tools/Programs.java @@ -114,12 +114,12 @@ public class Programs { /** Creates a list of programs based on an array of rule sets. */ public static List<Program> listOf(RuleSet... ruleSets) { - return Lists.transform(Arrays.asList(ruleSets), Programs::of); + return Util.transform(Arrays.asList(ruleSets), Programs::of); } /** Creates a list of programs based on a list of rule sets. */ public static List<Program> listOf(List<RuleSet> ruleSets) { - return Lists.transform(ruleSets, Programs::of); + return Util.transform(ruleSets, Programs::of); } /** Creates a program from a list of rules. */ diff --git a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java index 4da1c73..25c8a7d 100644 --- a/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java +++ b/core/src/main/java/org/apache/calcite/util/ImmutableBitSet.java @@ -21,7 +21,6 @@ import org.apache.calcite.runtime.Utilities; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedMap; -import com.google.common.collect.Iterables; import com.google.common.collect.Ordering; import java.io.Serializable; @@ -264,7 +263,7 @@ public class ImmutableBitSet singletons.add( ImmutableList.of(ImmutableBitSet.of(), ImmutableBitSet.of(bit))); } - return Iterables.transform(Linq4j.product(singletons), + return Util.transform(Linq4j.product(singletons), ImmutableBitSet::union); } @@ -886,7 +885,7 @@ public class ImmutableBitSet public static Iterable<ImmutableBitSet> permute( Iterable<ImmutableBitSet> bitSets, final Map<Integer, Integer> map) { - return Iterables.transform(bitSets, bitSet -> bitSet.permute(map)); + return Util.transform(bitSets, bitSet -> bitSet.permute(map)); } /** Returns a bit set with every bit moved up {@code offset} positions. diff --git a/core/src/main/java/org/apache/calcite/util/ImmutableNullableSet.java b/core/src/main/java/org/apache/calcite/util/ImmutableNullableSet.java index ffdb89e..0386e23 100644 --- a/core/src/main/java/org/apache/calcite/util/ImmutableNullableSet.java +++ b/core/src/main/java/org/apache/calcite/util/ImmutableNullableSet.java @@ -108,7 +108,7 @@ public class ImmutableNullableSet<E> extends AbstractSet<E> { } } else { set = ImmutableSet.copyOf( - Iterables.transform(elements, e -> + Util.transform(elements, e -> e == null ? NullSentinel.INSTANCE : e)); } if (set.contains(NullSentinel.INSTANCE)) { diff --git a/core/src/main/java/org/apache/calcite/util/Util.java b/core/src/main/java/org/apache/calcite/util/Util.java index 8926c8f..1e9d13a 100644 --- a/core/src/main/java/org/apache/calcite/util/Util.java +++ b/core/src/main/java/org/apache/calcite/util/Util.java @@ -36,6 +36,7 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.Collections2; +import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Sets; @@ -1721,19 +1722,7 @@ public class Util { public static <E> Iterator<E> cast( final Iterator<?> iter, final Class<E> clazz) { - return new Iterator<E>() { - public boolean hasNext() { - return iter.hasNext(); - } - - public E next() { - return clazz.cast(iter.next()); - } - - public void remove() { - iter.remove(); - } - }; + return transform(iter, clazz::cast); } /** @@ -1750,7 +1739,12 @@ public class Util { public static <E> Iterable<E> cast( final Iterable<? super E> iterable, final Class<E> clazz) { - return () -> cast(iterable.iterator(), clazz); + // FluentIterable provides toString + return new FluentIterable<E>() { + @Override public Iterator<E> iterator() { + return Util.cast(iterable.iterator(), clazz); + } + }; } /** @@ -1774,7 +1768,12 @@ public class Util { public static <E> Iterable<E> filter( final Iterable<?> iterable, final Class<E> includeFilter) { - return () -> new Filterator<>(iterable.iterator(), includeFilter); + // FluentIterable provides toString + return new FluentIterable<E>() { + @Override public Iterator<E> iterator() { + return new Filterator<>(iterable.iterator(), includeFilter); + } + }; } public static <E> Collection<E> filter( @@ -2558,8 +2557,8 @@ public class Util { } /** Transforms a list, applying a function to each element. */ - public static <F, T> List<T> transform(List<F> list, - java.util.function.Function<F, T> function) { + public static <F, T> List<T> transform(List<? extends F> list, + java.util.function.Function<? super F, ? extends T> function) { if (list instanceof RandomAccess) { return new RandomAccessTransformingList<>(list, function); } else { @@ -2567,24 +2566,51 @@ public class Util { } } + /** Transforms a iterator, applying a function to each element. */ + @API(since = "1.26", status = API.Status.EXPERIMENTAL) + public static <F, T> Iterable<T> transform(Iterable<? extends F> iterable, + java.util.function.Function<? super F, ? extends T> function) { + // FluentIterable provides toString + return new FluentIterable<T>() { + @Override public Iterator<T> iterator() { + return Util.transform(iterable.iterator(), function); + } + }; + } + + /** Transforms an iterator. */ + @API(since = "1.26", status = API.Status.EXPERIMENTAL) + public static <F, T> Iterator<T> transform(Iterator<? extends F> iterator, + java.util.function.Function<? super F, ? extends T> function) { + return new TransformingIterator<>(iterator, function); + } + /** Filters an iterable. */ - public static <E> Iterable<E> filter(Iterable<E> iterable, - Predicate<E> predicate) { - return () -> filter(iterable.iterator(), predicate); + @API(since = "1.26", status = API.Status.EXPERIMENTAL) + public static <E> Iterable<E> filter(Iterable<? extends E> iterable, + Predicate<? super E> predicate) { + // FluentIterable provides toString + return new FluentIterable<E>() { + @Override public Iterator<E> iterator() { + return Util.filter(iterable.iterator(), predicate); + } + }; } /** Filters an iterator. */ - public static <E> Iterator<E> filter(Iterator<E> iterator, - Predicate<E> predicate) { + @API(since = "1.26", status = API.Status.EXPERIMENTAL) + public static <E> Iterator<E> filter(Iterator<? extends E> iterator, + Predicate<? super E> predicate) { return new FilteringIterator<>(iterator, predicate); } /** Returns a list with any elements for which the predicate is true moved to * the head of the list. The algorithm does not modify the list, is stable, * and is idempotent. */ - public static <E> List<E> moveToHead(List<E> terms, Predicate<E> predicate) { + public static <E> List<E> moveToHead(List<? extends E> terms, Predicate<? super E> predicate) { if (alreadyAtFront(terms, predicate)) { - return terms; + //noinspection unchecked + return (List<E>) terms; } final List<E> newTerms = new ArrayList<>(terms.size()); for (E term : terms) { @@ -2603,8 +2629,8 @@ public class Util { /** Returns whether of the elements of a list for which predicate is true * occur before all elements where the predicate is false. (Returns true in * corner cases such as empty list, all true, or all false. */ - private static <E> boolean alreadyAtFront(List<E> list, - Predicate<E> predicate) { + private static <E> boolean alreadyAtFront(List<? extends E> list, + Predicate<? super E> predicate) { boolean prev = true; for (E e : list) { final boolean pass = predicate.test(e); @@ -2680,11 +2706,11 @@ public class Util { * @param <T> Element type of this list */ private static class TransformingList<F, T> extends AbstractList<T> { - private final java.util.function.Function<F, T> function; - private final List<F> list; + private final java.util.function.Function<? super F, ? extends T> function; + private final List<? extends F> list; - TransformingList(List<F> list, - java.util.function.Function<F, T> function) { + TransformingList(List<? extends F> list, + java.util.function.Function<? super F, ? extends T> function) { this.function = function; this.list = list; } @@ -2710,8 +2736,8 @@ public class Util { */ private static class RandomAccessTransformingList<F, T> extends TransformingList<F, T> implements RandomAccess { - RandomAccessTransformingList(List<F> list, - java.util.function.Function<F, T> function) { + RandomAccessTransformingList(List<? extends F> list, + java.util.function.Function<? super F, ? extends T> function) { super(list, function); } } @@ -2722,11 +2748,11 @@ public class Util { private static class FilteringIterator<T> implements Iterator<T> { private static final Object DUMMY = new Object(); final Iterator<? extends T> iterator; - private final Predicate<T> predicate; + private final Predicate<? super T> predicate; T current; FilteringIterator(Iterator<? extends T> iterator, - Predicate<T> predicate) { + Predicate<? super T> predicate) { this.iterator = iterator; this.predicate = predicate; current = moveNext(); @@ -2752,4 +2778,33 @@ public class Util { return (T) DUMMY; } } + + /** + * An {@link java.util.Iterator} that transforms its elements on-the-fly. + * + * @param <F> The element type of the delegate iterator + * @param <T> The element type of this iterator + */ + private static class TransformingIterator<F, T> implements Iterator<T> { + private final Iterator<? extends F> delegate; + private final java.util.function.Function<? super F, ? extends T> function; + + TransformingIterator(Iterator<? extends F> delegate, + java.util.function.Function<? super F, ? extends T> function) { + this.delegate = delegate; + this.function = function; + } + + @Override public boolean hasNext() { + return delegate.hasNext(); + } + + @Override public final T next() { + return function.apply(delegate.next()); + } + + @Override public void remove() { + delegate.remove(); + } + } } diff --git a/core/src/main/java/org/apache/calcite/util/mapping/IntPair.java b/core/src/main/java/org/apache/calcite/util/mapping/IntPair.java index f7b4834..2b2a4c0 100644 --- a/core/src/main/java/org/apache/calcite/util/mapping/IntPair.java +++ b/core/src/main/java/org/apache/calcite/util/mapping/IntPair.java @@ -17,9 +17,9 @@ package org.apache.calcite.util.mapping; import org.apache.calcite.runtime.Utilities; +import org.apache.calcite.util.Util; import com.google.common.base.Function; -import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import java.util.AbstractList; @@ -33,6 +33,7 @@ import java.util.List; */ public class IntPair { /** Function that swaps source and target fields of an {@link IntPair}. */ + @Deprecated public static final Function<IntPair, IntPair> SWAP = new Function<IntPair, IntPair>() { public IntPair apply(IntPair pair) { @@ -55,6 +56,7 @@ public class IntPair { }); /** Function that returns the left (source) side of a pair. */ + @Deprecated public static final Function<IntPair, Integer> LEFT = new Function<IntPair, Integer>() { public Integer apply(IntPair pair) { @@ -63,6 +65,7 @@ public class IntPair { }; /** Function that returns the right (target) side of a pair. */ + @Deprecated public static final Function<IntPair, Integer> RIGHT = new Function<IntPair, Integer>() { public Integer apply(IntPair pair) { @@ -156,11 +159,11 @@ public class IntPair { /** Returns the left side of a list of pairs. */ public static List<Integer> left(final List<IntPair> pairs) { - return Lists.transform(pairs, LEFT); + return Util.transform(pairs, x -> x.source); } /** Returns the right side of a list of pairs. */ public static List<Integer> right(final List<IntPair> pairs) { - return Lists.transform(pairs, RIGHT); + return Util.transform(pairs, x -> x.target); } } diff --git a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java index 269c6cd..aa88d11 100644 --- a/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java +++ b/core/src/main/java/org/apache/calcite/util/mapping/Mappings.java @@ -22,7 +22,6 @@ import org.apache.calcite.util.Permutation; import org.apache.calcite.util.Util; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; import com.google.common.primitives.Ints; import java.util.AbstractList; @@ -220,7 +219,7 @@ public abstract class Mappings { Iterable<ImmutableBitSet> bitSets) { return ImmutableList.copyOf( ImmutableBitSet.ORDERING.sortedCopy( - Iterables.transform(bitSets, input1 -> apply(mapping, input1)))); + Util.transform(bitSets, input1 -> apply(mapping, input1)))); } /** diff --git a/core/src/test/java/org/apache/calcite/test/QuidemTest.java b/core/src/test/java/org/apache/calcite/test/QuidemTest.java index 7284fd1..55296ef 100644 --- a/core/src/test/java/org/apache/calcite/test/QuidemTest.java +++ b/core/src/test/java/org/apache/calcite/test/QuidemTest.java @@ -33,7 +33,6 @@ import org.apache.calcite.util.Closer; import org.apache.calcite.util.Sources; import org.apache.calcite.util.Util; -import com.google.common.collect.Lists; import com.google.common.io.PatternFilenameFilter; import net.hydromatic.quidem.CommandHandler; @@ -111,7 +110,7 @@ public abstract class QuidemTest { for (File f : Util.first(dir.listFiles(filter), new File[0])) { paths.add(f.getAbsolutePath().substring(commonPrefixLength)); } - return Lists.transform(paths, path -> new Object[] {path}); + return Util.transform(paths, path -> new Object[] {path}); } protected void checkRun(String path) throws Exception { diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java index 0e5a3bd..9e0f5ed 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java @@ -34,7 +34,6 @@ import org.apache.calcite.util.trace.CalciteTrace; import com.google.common.collect.BoundType; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableRangeSet; -import com.google.common.collect.Lists; import com.google.common.collect.Range; import com.google.common.collect.TreeRangeSet; @@ -80,7 +79,7 @@ public class DruidDateTimeUtils { protected static List<Interval> toInterval( List<Range<Long>> ranges) { - List<Interval> intervals = Lists.transform(ranges, range -> { + List<Interval> intervals = Util.transform(ranges, range -> { if (!range.hasLowerBound() && !range.hasUpperBound()) { return DruidTable.DEFAULT_INTERVAL; } diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java index 509d9e7..fbdb8ec 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java @@ -71,7 +71,6 @@ import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.joda.time.Interval; @@ -1099,7 +1098,7 @@ public class DruidQuery extends AbstractRelNode implements BindableRel { // Case we have transformed the group by time to druid timeseries with Granularity. // Need to replace the name of the column with druid timestamp field name. final List<String> timeseriesFieldNames = - Lists.transform(queryOutputFieldNames, input -> { + Util.transform(queryOutputFieldNames, input -> { if (timeExtractColumn.equals(input)) { return "timestamp"; } diff --git a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeToEnumerableConverter.java b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeToEnumerableConverter.java index 7ce5e66..c8649c6 100644 --- a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeToEnumerableConverter.java +++ b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeToEnumerableConverter.java @@ -38,8 +38,7 @@ import org.apache.calcite.rel.metadata.RelMetadataQuery; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.util.BuiltInMethod; import org.apache.calcite.util.Pair; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.lang.reflect.Method; import java.util.AbstractList; @@ -152,6 +151,6 @@ public class GeodeToEnumerableConverter extends ConverterImpl implements Enumera * {@code {ConstantExpression("x"), ConstantExpression("y")}}. */ private static <T> List<Expression> constantList(List<T> values) { - return Lists.transform(values, Expressions::constant); + return Util.transform(values, Expressions::constant); } } diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ConstructorDeclaration.java b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ConstructorDeclaration.java index ebc2445..5cac1b9 100644 --- a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ConstructorDeclaration.java +++ b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/ConstructorDeclaration.java @@ -16,10 +16,10 @@ */ package org.apache.calcite.linq4j.tree; -import com.google.common.collect.Lists; import java.lang.reflect.Modifier; import java.lang.reflect.Type; +import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -62,16 +62,17 @@ public class ConstructorDeclaration extends MemberDeclaration { if (!modifiers.isEmpty()) { writer.append(' '); } + //noinspection unchecked writer .append(resultType) .list("(", ", ", ")", - Lists.transform(parameters, parameter -> { + () -> (Iterator) parameters.stream().map(parameter -> { final String modifiers1 = Modifier.toString(parameter.modifier); return modifiers1 + (modifiers1.isEmpty() ? "" : " ") + Types.className(parameter.getType()) + " " + parameter.name; - })) + }).iterator()) .append(' ').append(body); writer.newlineAndIndent(); } diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/MethodDeclaration.java b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/MethodDeclaration.java index e67fa6b..f40c15f 100644 --- a/linq4j/src/main/java/org/apache/calcite/linq4j/tree/MethodDeclaration.java +++ b/linq4j/src/main/java/org/apache/calcite/linq4j/tree/MethodDeclaration.java @@ -16,10 +16,10 @@ */ package org.apache.calcite.linq4j.tree; -import com.google.common.collect.Lists; import java.lang.reflect.Modifier; import java.lang.reflect.Type; +import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -63,12 +63,13 @@ public class MethodDeclaration extends MemberDeclaration { if (!modifiers.isEmpty()) { writer.append(' '); } + //noinspection unchecked writer .append(resultType) .append(' ') .append(name) .list("(", ", ", ")", - Lists.transform(parameters, ParameterExpression::declString)) + () -> (Iterator) parameters.stream().map(ParameterExpression::declString).iterator()) .append(' ') .append(body); writer.newlineAndIndent(); diff --git a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoToEnumerableConverter.java b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoToEnumerableConverter.java index 6cb0c62..5d95e2c 100644 --- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoToEnumerableConverter.java +++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoToEnumerableConverter.java @@ -38,8 +38,7 @@ import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.runtime.Hook; import org.apache.calcite.util.BuiltInMethod; import org.apache.calcite.util.Pair; - -import com.google.common.collect.Lists; +import org.apache.calcite.util.Util; import java.util.AbstractList; import java.util.List; @@ -156,6 +155,6 @@ public class MongoToEnumerableConverter /** E.g. {@code constantList("x", "y")} returns * {@code {ConstantExpression("x"), ConstantExpression("y")}}. */ private static <T> List<Expression> constantList(List<T> values) { - return Lists.transform(values, Expressions::constant); + return Util.transform(values, Expressions::constant); } } diff --git a/src/main/config/forbidden-apis/signatures.txt b/src/main/config/forbidden-apis/signatures.txt index 9b40bb8..8de4771 100644 --- a/src/main/config/forbidden-apis/signatures.txt +++ b/src/main/config/forbidden-apis/signatures.txt @@ -84,6 +84,12 @@ com.google.common.base.Joiner @defaultMessage Use "new ArrayList<>()" com.google.common.collect.Lists#newArrayList() +@defaultMessage Use "org.apache.calcite.util.Util#transform(List, Function)" +com.google.common.collect.Lists#transform(java.util.List, com.google.common.base.Function) + +@defaultMessage Use "org.apache.calcite.util.Util#transform(Iterable, Function)" +com.google.common.collect.Iterables#transform(java.lang.Iterable, com.google.common.base.Function) + @defaultMessage Use "new HashMap<>()" com.google.common.collect.Maps#newHashMap() @@ -95,5 +101,3 @@ com.google.common.collect.Maps#newTreeMap() @defaultMessage Use "new HashSet<>()" com.google.common.collect.Sets#newHashSet() - -# End signatures.txt
