[CALCITE-2164] Fix alerts raised by lgtm.com (Malcolm Taylor) Close apache/calcite#621
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/09be7e74 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/09be7e74 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/09be7e74 Branch: refs/heads/master Commit: 09be7e74a6a4d1b1c4f640c8e69b5ebdd467d811 Parents: b1e3c82 Author: Malcolm Taylor <[email protected]> Authored: Sun Feb 4 20:42:21 2018 +0000 Committer: Julian Hyde <[email protected]> Committed: Sat Apr 21 09:59:24 2018 -0700 ---------------------------------------------------------------------- .../adapter/enumerable/RexToLixTranslator.java | 3 +- .../rel/metadata/RelMdDistinctRowCount.java | 6 +- .../rel/metadata/RelMdPopulationSize.java | 2 +- .../apache/calcite/rel/metadata/RelMdSize.java | 4 +- .../calcite/rel/rules/JoinToMultiJoinRule.java | 2 + .../rel/rules/LoptSemiJoinOptimizer.java | 2 +- .../calcite/rel/rules/ReduceDecimalsRule.java | 3 +- .../calcite/sql/validate/SqlValidatorUtil.java | 2 +- .../calcite/sql2rel/SqlToRelConverter.java | 1 - .../org/apache/calcite/util/StackWriter.java | 2 +- .../org/apache/calcite/linq4j/LookupImpl.java | 3 +- .../apache/calcite/linq4j/test/Linq4jSuite.java | 2 +- .../calcite/linq4j/test/LookupImplTest.java | 65 ++++++++++++++++++++ 13 files changed, 80 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java index 805216b..e1c53b8 100644 --- a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java +++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java @@ -541,8 +541,7 @@ public class RexToLixTranslator { } // If this is a widening cast, no need to pad. if (SqlTypeUtil.comparePrecision(sourcePrecision, targetPrecision) - >= 0 - && targetPrecision != RelDataType.PRECISION_NOT_SPECIFIED) { + >= 0) { pad = false; } // fall through http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java index bf3fc3a..6959a20 100644 --- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java +++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistinctRowCount.java @@ -82,7 +82,7 @@ public class RelMdDistinctRowCount public Double getDistinctRowCount(Union rel, RelMetadataQuery mq, ImmutableBitSet groupKey, RexNode predicate) { - Double rowCount = 0.0; + double rowCount = 0.0; int[] adjustments = new int[rel.getRowType().getFieldCount()]; RexBuilder rexBuilder = rel.getCluster().getRexBuilder(); for (RelNode input : rel.getInputs()) { @@ -215,10 +215,10 @@ public class RelMdDistinctRowCount return 1D; } } - Double selectivity = RelMdUtil.guessSelectivity(predicate); + double selectivity = RelMdUtil.guessSelectivity(predicate); // assume half the rows are duplicates - Double nRows = rel.estimateRowCount(mq) / 2; + double nRows = rel.estimateRowCount(mq) / 2; return RelMdUtil.numDistinctVals(nRows, nRows * selectivity); } http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java index 67b3fe9..a0d17bb 100644 --- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java +++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPopulationSize.java @@ -69,7 +69,7 @@ public class RelMdPopulationSize public Double getPopulationSize(Union rel, RelMetadataQuery mq, ImmutableBitSet groupKey) { - Double population = 0.0; + double population = 0.0; for (RelNode input : rel.getInputs()) { Double subPop = mq.getPopulationSize(input, groupKey); if (subPop == null) { http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/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 085fd7c..63c27b1 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 @@ -88,7 +88,7 @@ public class RelMdSize implements MetadataHandler<BuiltInMetadata.Size> { if (averageColumnSizes == null) { return null; } - Double d = 0d; + double d = 0d; final List<RelDataTypeField> fields = rel.getRowType().getFieldList(); for (Pair<Double, RelDataTypeField> p : Pair.zip(averageColumnSizes, fields)) { @@ -312,7 +312,7 @@ public class RelMdSize implements MetadataHandler<BuiltInMetadata.Size> { // Even in large (say VARCHAR(2000)) columns most strings are small return Math.min((double) type.getPrecision() * BYTES_PER_CHARACTER, 100d); case ROW: - Double average = 0.0; + double average = 0.0; for (RelDataTypeField field : type.getFieldList()) { average += averageTypeValueSize(field.getType()); } http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/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 ecccad1..90a98bf 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 @@ -348,6 +348,8 @@ public class JoinToMultiJoinRule extends RelOptRule { if (adjustmentAmount == 0) { destJoinSpecs.addAll(srcJoinSpecs); } else { + assert srcFields != null; + assert destFields != null; int nFields = srcFields.size(); int[] adjustments = new int[nFields]; for (int idx = 0; idx < nFields; idx++) { http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java index 17a158e..05196d4 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java @@ -671,7 +671,7 @@ public class LoptSemiJoinOptimizer { return 0; } - Double dimRows = dimCost.getRows(); + double dimRows = dimCost.getRows(); if (dimRows < 1.0) { dimRows = 1.0; } http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java index 2d27fc5..7af2264 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/ReduceDecimalsRule.java @@ -801,8 +801,7 @@ public class ReduceDecimalsRule extends RelOptRule { if (fromScale <= toScale) { scaled = ensureScale(value, fromScale, toScale); } else { - if ((toDigits == fromDigits) - && (toScale < fromScale)) { + if (toDigits == fromDigits) { // rounding away from zero may cause an overflow // for example: cast(9.99 as decimal(2,1)) checkOverflow = true; http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorUtil.java ---------------------------------------------------------------------- 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 d4c082d..f38825d 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 @@ -512,7 +512,7 @@ public class SqlValidatorUtil { * * @param typeFactory Type factory * @param leftType Type of left input to join - * @param rightType Type of right input to join + * @param rightType Type of right input to join, or null for semi-join * @param fieldNameList If not null, overrides the original names of the * fields * @param systemFieldList List of system fields that will be prefixed to http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java ---------------------------------------------------------------------- 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 4a96172..466919f 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -4771,7 +4771,6 @@ public class SqlToRelConverter { /** Expressions to be evaluated as rows are being placed into the * aggregate's hash table. This is when group functions such as TUMBLE * cause rows to be expanded. */ - private final List<RexNode> midExprs = new ArrayList<>(); private final List<AggregateCall> aggCalls = new ArrayList<>(); private final Map<SqlNode, RexNode> aggMapping = new HashMap<>(); http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/core/src/main/java/org/apache/calcite/util/StackWriter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/util/StackWriter.java b/core/src/main/java/org/apache/calcite/util/StackWriter.java index ccf73cc..14ce5ef 100644 --- a/core/src/main/java/org/apache/calcite/util/StackWriter.java +++ b/core/src/main/java/org/apache/calcite/util/StackWriter.java @@ -154,7 +154,7 @@ public class StackWriter extends FilterWriter { private void popQuote(Character quoteChar) throws IOException { final Character pop = quoteStack.pop(); - assert pop == quoteChar; + assert pop.equals(quoteChar); writeQuote(quoteChar); } http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java ---------------------------------------------------------------------- diff --git a/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java b/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java index b5bf65c..0451d10 100644 --- a/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java +++ b/linq4j/src/main/java/org/apache/calcite/linq4j/LookupImpl.java @@ -88,8 +88,7 @@ class LookupImpl<K, V> extends AbstractEnumerable<Grouping<K, V>> public boolean containsValue(Object value) { @SuppressWarnings("unchecked") List<V> list = (List<V>) value; - Enumerable<V> enumerable = Linq4j.asEnumerable(list); - return map.containsValue(enumerable); + return map.containsValue(list); } public Enumerable<V> get(Object key) { http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/linq4j/src/test/java/org/apache/calcite/linq4j/test/Linq4jSuite.java ---------------------------------------------------------------------- diff --git a/linq4j/src/test/java/org/apache/calcite/linq4j/test/Linq4jSuite.java b/linq4j/src/test/java/org/apache/calcite/linq4j/test/Linq4jSuite.java index 17d8b46..8a0cbb9 100644 --- a/linq4j/src/test/java/org/apache/calcite/linq4j/test/Linq4jSuite.java +++ b/linq4j/src/test/java/org/apache/calcite/linq4j/test/Linq4jSuite.java @@ -22,7 +22,6 @@ import org.apache.calcite.linq4j.tree.TypeTest; import org.junit.runner.RunWith; import org.junit.runners.Suite; - /** * Suite of all Linq4j tests. */ @@ -33,6 +32,7 @@ import org.junit.runners.Suite; ExpressionTest.class, OptimizerTest.class, InlinerTest.class, + LookupImplTest.class, DeterministicTest.class, BlockBuilderTest.class, FunctionTest.class, http://git-wip-us.apache.org/repos/asf/calcite/blob/09be7e74/linq4j/src/test/java/org/apache/calcite/linq4j/test/LookupImplTest.java ---------------------------------------------------------------------- diff --git a/linq4j/src/test/java/org/apache/calcite/linq4j/test/LookupImplTest.java b/linq4j/src/test/java/org/apache/calcite/linq4j/test/LookupImplTest.java new file mode 100644 index 0000000..9b11464 --- /dev/null +++ b/linq4j/src/test/java/org/apache/calcite/linq4j/test/LookupImplTest.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.calcite.linq4j.test; + +import org.apache.calcite.linq4j.Linq4j; +import org.apache.calcite.linq4j.Lookup; + +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +import junit.framework.TestCase; + +/** + * Unit tests for LookupImpl.java + * + */ +public class LookupImplTest extends TestCase { + + private Lookup<Integer, String> impl; + + @Before + public void setUp() { + impl = Linq4j.asEnumerable(Linq4jTest.emps).toLookup( + Linq4jTest.EMP_DEPTNO_SELECTOR, + Linq4jTest.EMP_NAME_SELECTOR); + } + + @Test + public void testPut() { + int initSize = impl.size(); + impl.put(99, Linq4j.asEnumerable(new String[]{"A", "B"})); + assertTrue(impl.containsKey(99)); + assertTrue(impl.size() == initSize + 1); + } + + @Test + public void testContainsValue() { + List<String> list = new ArrayList<>(); + list.add("C"); + list.add("D"); + List<String> list2 = new ArrayList<>(list); + impl.put(100, Linq4j.asEnumerable(list)); + assertTrue(impl.containsValue(list)); + assertTrue(impl.containsValue(list2)); + } +} + +// End LookupImplTest.java
