From 995b90bdee997d879f69020de06fe4f6e24f49eb Mon Sep 17 00:00:00 2001 From: Vladimir Sitnikov Date: Tue, 29 Sep 2020 22:18:38 +0300 Subject: [PATCH] [CALCITE-4314] Suppress warnings on Guava's @Beta API usage @Beta APIs should not be used in library code as they are subject to change See https://github.com/google/guava/wiki/PhilosophyExplained#beta-apis --- core/src/main/java/org/apache/calcite/plan/RelTraitDef.java | 2 ++ .../java/org/apache/calcite/rel/rel2sql/SqlImplementor.java | 2 +- .../java/org/apache/calcite/rel/rules/DateRangeRules.java | 2 ++ .../org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java | 2 ++ core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java | 1 + core/src/main/java/org/apache/calcite/rex/RexBuilder.java | 3 ++- core/src/main/java/org/apache/calcite/rex/RexSimplify.java | 4 ++++ core/src/main/java/org/apache/calcite/rex/RexUtil.java | 1 + core/src/main/java/org/apache/calcite/sql/SqlUtil.java | 1 + core/src/main/java/org/apache/calcite/util/RangeSets.java | 4 ++-- core/src/main/java/org/apache/calcite/util/Sarg.java | 1 + .../org/apache/calcite/adapter/druid/DruidDateTimeUtils.java | 2 ++ .../java/org/apache/calcite/adapter/druid/DruidRules.java | 1 + 13 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/plan/RelTraitDef.java b/core/src/main/java/org/apache/calcite/plan/RelTraitDef.java index c9d99e178144..c4ab3ff1ad07 100644 --- a/core/src/main/java/org/apache/calcite/plan/RelTraitDef.java +++ b/core/src/main/java/org/apache/calcite/plan/RelTraitDef.java @@ -57,6 +57,7 @@ public abstract class RelTraitDef { * *

Uses weak interner to allow GC. */ + @SuppressWarnings("BetaApi") private final Interner interner = Interners.newWeakInterner(); //~ Constructors ----------------------------------------------------------- @@ -95,6 +96,7 @@ public boolean multiple() { * @param trait a possibly non-canonical RelTrait * @return a canonical RelTrait. */ + @SuppressWarnings("BetaApi") public final T canonize(T trait) { if (!(trait instanceof RelCompositeTrait)) { assert getTraitClass().isInstance(trait) 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 35634ffd432f..4dce25348cc7 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 @@ -857,7 +857,7 @@ public SqlNode toSql(RexProgram program, RexNode rex) { /** Converts a Sarg to SQL, generating "operand IN (c1, c2, ...)" if the * ranges are all points. */ - @SuppressWarnings("UnstableApiUsage") + @SuppressWarnings({"BetaApi", "UnstableApiUsage"}) private > SqlNode toSql(RexProgram program, RexNode operand, RelDataType type, Sarg sarg) { final List orList = new ArrayList<>(); 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 201f87daa49b..0b4e31a81fe6 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 @@ -138,6 +138,7 @@ static ImmutableSortedSet extractTimeUnits(RexNode e) { /** Replaces calls to EXTRACT, FLOOR and CEIL in an expression. */ @VisibleForTesting + @SuppressWarnings("BetaApi") public static RexNode replaceTimeUnits(RexBuilder rexBuilder, RexNode e, String timeZone) { ImmutableSortedSet timeUnits = extractTimeUnits(e); @@ -264,6 +265,7 @@ private ExtractFinder() { /** Walks over an expression, replacing calls to * {@code EXTRACT}, {@code FLOOR} and {@code CEIL} with date ranges. */ @VisibleForTesting + @SuppressWarnings("BetaApi") static class ExtractShuttle extends RexShuttle { private final RexBuilder rexBuilder; private final TimeUnitRange timeUnit; diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java index 0f5ff19cf648..8bbbc5b76183 100644 --- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java +++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java @@ -61,6 +61,7 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory { /** * Global cache for RelDataType. */ + @SuppressWarnings("BetaApi") private static final Interner DATATYPE_CACHE = Interners.newWeakInterner(); @@ -348,6 +349,7 @@ private RelDataType copyRecordType( * * @throws NullPointerException if type is null */ + @SuppressWarnings("BetaApi") protected RelDataType canonize(final RelDataType type) { return DATATYPE_CACHE.intern(type); } 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 d385e4d6aae5..65afaece8d00 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java +++ b/core/src/main/java/org/apache/calcite/rex/RexAnalyzer.java @@ -52,6 +52,7 @@ public RexAnalyzer(RexNode e, RelOptPredicateList predicates) { /** Generates a map of variables and lists of values that could be assigned * to them. */ + @SuppressWarnings("BetaApi") public Iterable> assignments() { final List> generators = variables.stream().map(RexAnalyzer::getComparables) 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 f6ee5bda33c9..304a33765e9f 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java +++ b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java @@ -1350,6 +1350,7 @@ private boolean areAssignable(RexNode arg, List bounds) { *

If the expressions are all literals of compatible type, creates a call * to {@link Sarg} literal, {@code SEARCH(arg, SARG([lower..upper])}; * otherwise creates a disjunction, {@code arg >= lower AND arg <= upper}. */ + @SuppressWarnings("BetaApi") public RexNode makeBetween(RexNode arg, RexNode lower, RexNode upper) { final Comparable lowerValue = toComparable(Comparable.class, lower); final Comparable upperValue = toComparable(Comparable.class, upper); @@ -1370,7 +1371,7 @@ && areAssignable(arg, Arrays.asList(lower, upper))) { /** Converts a list of expressions to a search argument, or returns null if * not possible. */ - @SuppressWarnings("UnstableApiUsage") + @SuppressWarnings({"BetaApi", "UnstableApiUsage"}) private static > Sarg toSarg(Class clazz, List ranges, boolean containsNull) { if (ranges.isEmpty()) { diff --git a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java index fe966812eff7..553dddba70e8 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java +++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java @@ -1630,6 +1630,7 @@ private > RexNode simplifyAnd2ForUnknownAsFalse( return RexUtil.composeConjunction(rexBuilder, terms); } + @SuppressWarnings("BetaApi") private > RexNode simplifyUsingPredicates(RexNode e, Class clazz) { if (predicates.pulledUpPredicates.isEmpty()) { @@ -1689,6 +1690,7 @@ private > RexNode simplifyUsingPredicates(RexNode e, *

  • {@code residue($0 < 10, [$0 < 20, $0 > 0])} returns {@code $0 < 10} * */ + @SuppressWarnings("BetaApi") private > RangeSet residue(RexNode ref, RangeSet r0, List predicates, Class clazz) { RangeSet result = r0; @@ -2352,6 +2354,7 @@ private static > Range range(SqlKind comparison, } } + @SuppressWarnings("BetaApi") private static > RangeSet rangeSet(SqlKind comparison, C c) { switch (comparison) { @@ -2695,6 +2698,7 @@ RexNode fix(RexBuilder rexBuilder, RexNode term) { * *

    The {@link SargCollector#fix} method converts it to an immutable * literal. */ + @SuppressWarnings("BetaApi") static class RexSargBuilder extends RexNode { final RexNode ref; private final RexBuilder rexBuilder; 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 ad7213b4ebd7..bdda82bac9b7 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexUtil.java +++ b/core/src/main/java/org/apache/calcite/rex/RexUtil.java @@ -580,6 +580,7 @@ public static RexNode expandSearch(RexBuilder rexBuilder, return node.accept(shuttle); } + @SuppressWarnings("BetaApi") private static > RexNode visitSearch(RexBuilder rexBuilder, @Nullable RexProgram program, RexCall call) { diff --git a/core/src/main/java/org/apache/calcite/sql/SqlUtil.java b/core/src/main/java/org/apache/calcite/sql/SqlUtil.java index d88be7637eb7..76eae74cbe56 100644 --- a/core/src/main/java/org/apache/calcite/sql/SqlUtil.java +++ b/core/src/main/java/org/apache/calcite/sql/SqlUtil.java @@ -990,6 +990,7 @@ public static Charset getCharset(String charsetName) { * @throws RuntimeException If the given value cannot be represented in the * given charset */ + @SuppressWarnings("BetaApi") public static void validateCharset(ByteString value, Charset charset) { if (charset == StandardCharsets.UTF_8) { final byte[] bytes = value.getBytes(); diff --git a/core/src/main/java/org/apache/calcite/util/RangeSets.java b/core/src/main/java/org/apache/calcite/util/RangeSets.java index b3090d97c786..c68803fc8849 100644 --- a/core/src/main/java/org/apache/calcite/util/RangeSets.java +++ b/core/src/main/java/org/apache/calcite/util/RangeSets.java @@ -27,11 +27,11 @@ import java.util.function.Function; /** Utilities for Guava {@link com.google.common.collect.RangeSet}. */ -@SuppressWarnings({"UnstableApiUsage"}) +@SuppressWarnings({"BetaApi", "UnstableApiUsage"}) public class RangeSets { private RangeSets() {} - @SuppressWarnings("rawtypes") + @SuppressWarnings({"BetaApi", "rawtypes"}) private static final ImmutableRangeSet ALL = ImmutableRangeSet.of().complement(); diff --git a/core/src/main/java/org/apache/calcite/util/Sarg.java b/core/src/main/java/org/apache/calcite/util/Sarg.java index add9218bd84b..cfd86397359f 100644 --- a/core/src/main/java/org/apache/calcite/util/Sarg.java +++ b/core/src/main/java/org/apache/calcite/util/Sarg.java @@ -60,6 +60,7 @@ * * @see SqlStdOperatorTable#SEARCH */ +@SuppressWarnings("BetaApi") public class Sarg> implements Comparable> { public final RangeSet rangeSet; public final boolean containsNull; 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 a71b83a41bca..15465cfe4038 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 @@ -63,6 +63,7 @@ private DruidDateTimeUtils() { * reference a single column: the timestamp column. */ @Nullable + @SuppressWarnings("BetaApi") public static List createInterval(RexNode e) { final List> ranges = extractRanges(e, false); if (ranges == null) { @@ -166,6 +167,7 @@ protected static List> extractRanges(RexNode node, boolean withNot) } @Nullable + @SuppressWarnings("BetaApi") protected static List> leafToRanges(RexCall call, boolean withNot) { final ImmutableList.Builder> ranges; switch (call.getKind()) { diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java index 1c253f2c8559..0e040a654d89 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java @@ -258,6 +258,7 @@ protected DruidFilterRule(Config config) { * 2-m) condition filters that can be pushed to Druid, * 3-r) condition filters that cannot be pushed to Druid. */ + @SuppressWarnings("BetaApi") private static Triple, List, List> splitFilters( final List validPreds, final List nonValidPreds, final int timestampFieldIdx) {