Apply small refactorings to Calcite codebase (Java 5, Java 7, Java 8)

Use Objects.equals when possible
Replace for with foreach in Mappings
Use Java 7 diamond operator to reduce code verbosity
Collapse identical catch blocks to multi-catch
Use Double/Float/Long/Boolean hashCode from Java 8
Remove unnecessary substring call arguments
Fix sqlTypeName -> SqlTypeName typo
Make floorKey/ceilingKey non-static so their use in NameMap makes more sense
NameMap uses COMPARATOR.floorKey(name) which is a bit weird when floorKey is 
static
Add @SafeVarargs to methods that are obviously safe
Replace anonymous types with Java 8 lambdas
Use Collection#removeIf when possible
Use Integer.compare when possible
Suppress AssertWithSideEffects warnings
Add missing check to Permutation#isValid
Permutation#isValid had occurCount[target] != 0 check, however the array was 
never updated, so the check was useless.
Remove duplicate keys from Strong#MAP
Replace remove+add with set in ReduceExpressionsRule
Remove redundant initializers
Move dead code inside if (false) branch in 
org.apache.calcite.plan.volcano.RelSubset#add
Revert removal of UtilTest#testHash

closes #834


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/295ab13e
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/295ab13e
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/295ab13e

Branch: refs/heads/master
Commit: 295ab13e8338bdd0e0c29e051907371c9b2929aa
Parents: 8f202e9
Author: Vladimir Sitnikov <[email protected]>
Authored: Sun Sep 16 15:24:07 2018 +0300
Committer: Vladimir Sitnikov <[email protected]>
Committed: Thu Sep 20 11:51:04 2018 +0300

----------------------------------------------------------------------
 .../adapter/cassandra/CassandraFilter.java      |  8 ++--
 .../adapter/cassandra/CassandraProject.java     |  2 +-
 .../calcite/adapter/cassandra/CassandraRel.java |  6 +--
 .../adapter/cassandra/CassandraRules.java       |  2 +-
 .../adapter/cassandra/CassandraSort.java        |  2 +-
 .../CassandraToEnumerableConverter.java         |  2 +-
 core/src/main/java/org/apache/calcite/Demo.java |  2 +-
 .../enumerable/EnumerableRelImplementor.java    |  2 +-
 .../enumerable/EnumerableTableModify.java       |  2 +-
 .../adapter/enumerable/EnumerableValues.java    |  4 +-
 .../adapter/enumerable/EnumerableWindow.java    | 12 +++---
 .../enumerable/NestedBlockBuilderImpl.java      |  6 +--
 .../adapter/jdbc/JdbcToEnumerableConverter.java |  2 +-
 .../apache/calcite/interpreter/Interpreter.java |  2 +-
 .../calcite/interpreter/JaninoRexCompiler.java  |  4 +-
 .../calcite/plan/MulticastRelOptListener.java   |  2 +-
 .../apache/calcite/plan/RelCompositeTrait.java  |  6 +--
 .../org/apache/calcite/plan/RelOptCluster.java  |  2 +-
 .../org/apache/calcite/plan/RelOptCostImpl.java |  4 +-
 .../org/apache/calcite/plan/RelOptQuery.java    |  2 +-
 .../org/apache/calcite/plan/RelTraitSet.java    |  3 +-
 .../java/org/apache/calcite/plan/Strong.java    |  4 --
 .../org/apache/calcite/plan/TableAccessMap.java |  4 +-
 .../apache/calcite/plan/hep/HepInstruction.java |  2 +-
 .../calcite/plan/hep/HepProgramBuilder.java     |  3 +-
 .../apache/calcite/plan/hep/HepRuleCall.java    |  2 +-
 .../apache/calcite/plan/volcano/RelSubset.java  |  4 +-
 .../apache/calcite/plan/volcano/RuleQueue.java  | 10 ++---
 .../calcite/plan/volcano/VolcanoPlanner.java    | 13 ++----
 .../calcite/prepare/LixToRelTranslator.java     |  8 ++--
 .../org/apache/calcite/rel/core/JoinInfo.java   |  6 +--
 .../java/org/apache/calcite/rel/core/SetOp.java |  2 +-
 .../apache/calcite/rel/externalize/RelJson.java | 22 +++-------
 .../calcite/rel/externalize/RelXmlWriter.java   |  2 +-
 .../rel/metadata/JaninoRelMetadataProvider.java |  2 +-
 .../rel/metadata/RelMdExpressionLineage.java    |  2 +-
 .../rel/rules/AbstractMaterializedViewRule.java |  2 +-
 .../rules/FilterTableFunctionTransposeRule.java |  2 +-
 .../rel/rules/JoinUnionTransposeRule.java       |  2 +-
 .../org/apache/calcite/rel/rules/MultiJoin.java |  8 ++--
 .../apache/calcite/rel/rules/PushProjector.java |  2 +-
 .../calcite/rel/rules/ReduceDecimalsRule.java   |  6 +--
 .../rel/rules/ReduceExpressionsRule.java        |  3 +-
 .../rel/rules/SemiJoinJoinTransposeRule.java    |  2 +-
 .../java/org/apache/calcite/rex/RexLiteral.java |  2 +-
 .../apache/calcite/rex/RexProgramBuilder.java   |  1 +
 .../rex/RexSqlReflectiveConvertletTable.java    |  2 +-
 .../rex/RexSqlStandardConvertletTable.java      |  2 +-
 .../org/apache/calcite/rex/RexTransformer.java  |  5 +--
 .../org/apache/calcite/runtime/FlatLists.java   | 22 +++++-----
 .../calcite/runtime/ResultSetEnumerable.java    |  8 ++--
 .../apache/calcite/runtime/SortedMultiMap.java  |  4 +-
 .../apache/calcite/runtime/SqlFunctions.java    |  4 +-
 .../org/apache/calcite/runtime/Utilities.java   | 44 ++++++++++----------
 .../apache/calcite/schema/impl/StarTable.java   |  4 +-
 .../apache/calcite/sql/advise/SqlAdvisor.java   | 12 +++---
 .../calcite/sql/advise/SqlSimpleParser.java     | 17 ++++----
 .../apache/calcite/sql/fun/SqlCaseOperator.java |  6 +--
 .../sql/fun/SqlTimestampDiffFunction.java       | 24 +++++------
 .../sql/parser/SqlAbstractParserImpl.java       | 14 +++----
 .../calcite/sql/parser/SqlParseException.java   |  2 +-
 .../apache/calcite/sql/type/SqlTypeUtil.java    |  8 ++--
 .../type/TableFunctionReturnTypeInference.java  |  8 ++--
 .../calcite/sql/util/ListSqlOperatorTable.java  |  2 +-
 .../org/apache/calcite/sql/util/SqlShuttle.java |  2 +-
 .../calcite/sql/validate/AliasNamespace.java    |  4 +-
 .../calcite/sql/validate/SqlNameMatchers.java   |  2 +-
 .../calcite/sql/validate/SqlValidatorImpl.java  |  2 +-
 .../apache/calcite/sql2rel/RelDecorrelator.java |  2 +
 .../calcite/sql2rel/SqlToRelConverter.java      |  4 +-
 .../calcite/util/BarfingInvocationHandler.java  |  6 +--
 .../java/org/apache/calcite/util/Benchmark.java |  2 +-
 .../calcite/util/CaseInsensitiveComparator.java |  8 ++--
 .../org/apache/calcite/util/CompositeList.java  |  2 +-
 .../org/apache/calcite/util/CompositeMap.java   |  9 ++--
 .../util/CompoundClosableAllocation.java        |  2 +-
 .../util/DelegatingInvocationHandler.java       |  4 +-
 .../java/org/apache/calcite/util/Holder.java    |  2 +-
 .../calcite/util/ImmutableNullableList.java     |  8 ++--
 .../org/apache/calcite/util/JsonBuilder.java    |  4 +-
 .../org/apache/calcite/util/Permutation.java    |  1 +
 .../calcite/util/UnmodifiableArrayList.java     |  2 +-
 .../main/java/org/apache/calcite/util/Util.java |  2 +-
 .../java/org/apache/calcite/util/XmlOutput.java |  6 +--
 .../util/graph/BreadthFirstIterator.java        |  8 ++--
 .../calcite/util/graph/CycleDetector.java       |  2 +-
 .../util/graph/DefaultDirectedGraph.java        | 23 ++++------
 .../calcite/util/graph/DepthFirstIterator.java  |  2 +-
 .../org/apache/calcite/util/graph/Graphs.java   |  2 +-
 .../util/graph/TopologicalOrderIterator.java    |  6 +--
 .../calcite/util/javac/JaninoCompiler.java      |  3 +-
 .../calcite/util/javac/JavaCompilerArgs.java    |  6 +--
 .../apache/calcite/util/mapping/Mappings.java   | 10 ++---
 .../java/org/apache/calcite/util/UtilTest.java  |  1 +
 .../adapter/druid/DruidSqlCastConverter.java    |  2 +-
 .../calcite/adapter/druid/DruidTable.java       |  2 +-
 .../adapter/druid/DruidTableFactory.java        |  2 +-
 .../elasticsearch/ElasticsearchEnumerators.java | 30 +++++--------
 .../calcite/adapter/csv/CsvEnumerator.java      | 14 +------
 .../calcite/adapter/csv/CsvFilterableTable.java |  8 +---
 .../calcite/adapter/geode/rel/GeodeFilter.java  |  4 +-
 .../calcite/adapter/geode/rel/GeodeSort.java    |  2 +-
 .../calcite/linq4j/AbstractEnumerable2.java     |  2 +-
 .../calcite/linq4j/DefaultEnumerable.java       |  5 +--
 .../calcite/linq4j/EnumerableDefaults.java      | 29 +++++--------
 .../java/org/apache/calcite/linq4j/Linq4j.java  |  7 ++--
 .../org/apache/calcite/linq4j/LookupImpl.java   |  4 +-
 .../calcite/linq4j/QueryProviderImpl.java       |  4 +-
 .../calcite/linq4j/QueryableDefaults.java       |  6 +--
 .../linq4j/tree/ClassDeclarationFinder.java     | 11 +----
 .../apache/calcite/linq4j/tree/Evaluator.java   |  5 +--
 .../apache/calcite/linq4j/tree/Expressions.java | 28 ++++++-------
 .../calcite/linq4j/tree/FunctionExpression.java | 10 ++---
 .../org/apache/calcite/linq4j/tree/Types.java   |  4 +-
 .../calcite/adapter/mongodb/MongoAggregate.java |  6 +--
 .../calcite/adapter/mongodb/MongoFilter.java    |  4 +-
 .../calcite/adapter/mongodb/MongoProject.java   |  2 +-
 .../calcite/adapter/mongodb/MongoRel.java       |  3 +-
 .../calcite/adapter/mongodb/MongoRules.java     |  4 +-
 .../calcite/adapter/mongodb/MongoSort.java      |  2 +-
 .../org/apache/calcite/adapter/pig/PigJoin.java |  3 +-
 .../calcite/adapter/os/VmstatTableFunction.java |  2 +-
 .../adapter/spark/JdbcToSparkConverter.java     |  2 +-
 .../calcite/adapter/spark/SparkMethod.java      |  3 +-
 .../calcite/adapter/spark/SparkRules.java       |  4 +-
 .../adapter/splunk/SplunkPushDownRule.java      |  8 ++--
 .../calcite/adapter/splunk/SplunkQuery.java     |  2 +-
 .../calcite/adapter/splunk/SplunkTable.java     |  4 +-
 .../splunk/search/SplunkConnectionImpl.java     |  8 ++--
 .../adapter/splunk/util/StringUtils.java        |  4 +-
 130 files changed, 329 insertions(+), 429 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
index 0bdc7f6..8aab55e 100644
--- 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
+++ 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java
@@ -65,7 +65,7 @@ public class CassandraFilter extends Filter implements 
CassandraRel {
 
     this.partitionKeys = partitionKeys;
     this.singlePartition = false;
-    this.clusteringKeys = new ArrayList<String>(clusteringKeys);
+    this.clusteringKeys = new ArrayList<>(clusteringKeys);
     this.implicitFieldCollations = implicitFieldCollations;
 
     Translator translator =
@@ -124,7 +124,7 @@ public class CassandraFilter extends Filter implements 
CassandraRel {
         List<RelFieldCollation> implicitFieldCollations) {
       this.rowType = rowType;
       this.fieldNames = CassandraRules.cassandraFieldNames(rowType);
-      this.partitionKeys = new HashSet<String>(partitionKeys);
+      this.partitionKeys = new HashSet<>(partitionKeys);
       this.clusteringKeys = clusteringKeys;
       this.restrictedClusteringKeys = 0;
       this.implicitFieldCollations = implicitFieldCollations;
@@ -149,7 +149,7 @@ public class CassandraFilter extends Filter implements 
CassandraRel {
       }
 
       // Pull out the correct fields along with their original collations
-      List<RelFieldCollation> fieldCollations = new 
ArrayList<RelFieldCollation>();
+      List<RelFieldCollation> fieldCollations = new ArrayList<>();
       for (int i = restrictedClusteringKeys; i < clusteringKeys.size(); i++) {
         int fieldIndex = fieldNames.indexOf(clusteringKeys.get(i));
         RelFieldCollation.Direction direction = 
implicitFieldCollations.get(i).getDirection();
@@ -192,7 +192,7 @@ public class CassandraFilter extends Filter implements 
CassandraRel {
      * @return CQL string for the predicate
      */
     private String translateAnd(RexNode condition) {
-      List<String> predicates = new ArrayList<String>();
+      List<String> predicates = new ArrayList<>();
       for (RexNode node : RelOptUtil.conjunctions(condition)) {
         predicates.add(translateMatch2(node));
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java
 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java
index 5e55e46..44dbfba 100644
--- 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java
+++ 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java
@@ -61,7 +61,7 @@ public class CassandraProject extends Project implements 
CassandraRel {
         new CassandraRules.RexToCassandraTranslator(
             (JavaTypeFactory) getCluster().getTypeFactory(),
             CassandraRules.cassandraFieldNames(getInput().getRowType()));
-    final Map<String, String> fields = new LinkedHashMap<String, String>();
+    final Map<String, String> fields = new LinkedHashMap<>();
     for (Pair<RexNode, String> pair : getNamedProjects()) {
       final String name = pair.right;
       final String originalName = pair.left.accept(translator);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRel.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRel.java
 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRel.java
index b74919d..998334d 100644
--- 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRel.java
+++ 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRel.java
@@ -37,11 +37,11 @@ public interface CassandraRel extends RelNode {
   /** Callback for the implementation process that converts a tree of
    * {@link CassandraRel} nodes into a CQL query. */
   class Implementor {
-    final Map<String, String> selectFields = new LinkedHashMap<String, 
String>();
-    final List<String> whereClause = new ArrayList<String>();
+    final Map<String, String> selectFields = new LinkedHashMap<>();
+    final List<String> whereClause = new ArrayList<>();
     int offset = 0;
     int fetch = -1;
-    final List<String> order = new ArrayList<String>();
+    final List<String> order = new ArrayList<>();
 
     RelOptTable table;
     CassandraTable cassandraTable;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRules.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRules.java
 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRules.java
index cdf86dc..90112aa 100644
--- 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRules.java
+++ 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraRules.java
@@ -129,7 +129,7 @@ public class CassandraRules {
       // Get field names from the scan operation
       CassandraTableScan scan = call.rel(1);
       Pair<List<String>, List<String>> keyFields = 
scan.cassandraTable.getKeyFields();
-      Set<String> partitionKeys = new HashSet<String>(keyFields.left);
+      Set<String> partitionKeys = new HashSet<>(keyFields.left);
       List<String> fieldNames = 
CassandraRules.cassandraFieldNames(filter.getInput().getRowType());
 
       List<RexNode> disjunctions = RelOptUtil.disjunctions(condition);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSort.java
----------------------------------------------------------------------
diff --git 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSort.java
 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSort.java
index 7baff99..aa3b0a3 100644
--- 
a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSort.java
+++ 
b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSort.java
@@ -63,7 +63,7 @@ public class CassandraSort extends Sort implements 
CassandraRel {
     implementor.visitChild(0, getInput());
 
     List<RelFieldCollation> sortCollations = collation.getFieldCollations();
-    List<String> fieldOrder = new ArrayList<String>();
+    List<String> fieldOrder = new ArrayList<>();
     if (!sortCollations.isEmpty()) {
       // Construct a series of order clauses from the desired collation
       final List<RelDataTypeField> fields = getRowType().getFieldList();

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverter.java
----------------------------------------------------------------------
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 5961aed..a0c0be9 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
@@ -93,7 +93,7 @@ public class CassandraToEnumerableConverter
                       }
                     }),
                 Pair.class));
-    List<Map.Entry<String, String>> selectList = new 
ArrayList<Map.Entry<String, String>>();
+    List<Map.Entry<String, String>> selectList = new ArrayList<>();
     for (Map.Entry<String, String> entry
             : Pair.zip(cassandraImplementor.selectFields.keySet(),
                 cassandraImplementor.selectFields.values())) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/Demo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/Demo.java 
b/core/src/main/java/org/apache/calcite/Demo.java
index 27f65fe..7e0bde4 100644
--- a/core/src/main/java/org/apache/calcite/Demo.java
+++ b/core/src/main/java/org/apache/calcite/Demo.java
@@ -26,7 +26,7 @@ public class Demo {
   }
 
   public static void main(String[] args) {
-    ArrayList<String> names = new ArrayList<String>();
+    ArrayList<String> names = new ArrayList<>();
     names.add("John");
     names.add("Paul");
     names.add("George");

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRelImplementor.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRelImplementor.java
 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRelImplementor.java
index 58f26e7..548a891 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRelImplementor.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRelImplementor.java
@@ -180,7 +180,7 @@ public class EnumerableRelImplementor extends 
JavaRelImplementor {
             type.getName(),
             null,
             ImmutableList.of(Serializable.class),
-            new ArrayList<MemberDeclaration>());
+            new ArrayList<>());
 
     // For each field:
     //   public T0 f0;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModify.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModify.java
 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModify.java
index 14ac0de..ba1a208 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModify.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModify.java
@@ -104,7 +104,7 @@ public class EnumerableTableModify extends TableModify
       final JavaRowFormat format = EnumerableTableScan.deduceFormat(table);
       PhysType physType =
           PhysTypeImpl.of(typeFactory, table.getRowType(), format);
-      List<Expression> expressionList = new ArrayList<Expression>();
+      List<Expression> expressionList = new ArrayList<>();
       final PhysType childPhysType = result.physType;
       final ParameterExpression o_ =
           Expressions.parameter(childPhysType.getJavaRowType(), "o");

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValues.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValues.java
 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValues.java
index ebf6ffd..82b2f87 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValues.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValues.java
@@ -88,10 +88,10 @@ public class EnumerableValues extends Values implements 
EnumerableRel {
             pref.preferCustom());
     final Type rowClass = physType.getJavaRowType();
 
-    final List<Expression> expressions = new ArrayList<Expression>();
+    final List<Expression> expressions = new ArrayList<>();
     final List<RelDataTypeField> fields = rowType.getFieldList();
     for (List<RexLiteral> tuple : tuples) {
-      final List<Expression> literals = new ArrayList<Expression>();
+      final List<Expression> literals = new ArrayList<>();
       for (Pair<RelDataTypeField, RexLiteral> pair
           : Pair.zip(fields, tuple)) {
         literals.add(

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindow.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindow.java
 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindow.java
index 6b55983..bcce732 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindow.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindow.java
@@ -166,7 +166,7 @@ public class EnumerableWindow extends Window implements 
EnumerableRel {
     Expression source_ = builder.append("source", result.block);
 
     final List<Expression> translatedConstants =
-        new ArrayList<Expression>(constants.size());
+        new ArrayList<>(constants.size());
     for (RexLiteral constant : constants) {
       translatedConstants.add(
           RexToLixTranslator.translateLiteral(constant, constant.getType(),
@@ -205,7 +205,7 @@ public class EnumerableWindow extends Window implements 
EnumerableRel {
       final Expression collectionExpr = partitionIterator.left;
       final Expression iterator_ = partitionIterator.right;
 
-      List<AggImpState> aggs = new ArrayList<AggImpState>();
+      List<AggImpState> aggs = new ArrayList<>();
       List<AggregateCall> aggregateCalls = group.getAggregateCalls(this);
       for (int aggIdx = 0; aggIdx < aggregateCalls.size(); aggIdx++) {
         AggregateCall call = aggregateCalls.get(aggIdx);
@@ -275,7 +275,7 @@ public class EnumerableWindow extends Window implements 
EnumerableRel {
           RexToLixTranslator.forAggregation(typeFactory, builder4,
               inputGetter);
 
-      final List<Expression> outputRow = new ArrayList<Expression>();
+      final List<Expression> outputRow = new ArrayList<>();
       int fieldCountWithAggResults =
           inputPhysType.getRowType().getFieldCount();
       for (int i = 0; i < fieldCountWithAggResults; i++) {
@@ -435,8 +435,7 @@ public class EnumerableWindow extends Window implements 
EnumerableRel {
                 result.physType.getRowType(),
                 constants,
                 argList);
-        List<RexNode> args = new ArrayList<RexNode>(
-            inputTypes.size());
+        List<RexNode> args = new ArrayList<>(inputTypes.size());
         for (int i = 0; i < argList.size(); i++) {
           Integer idx = argList.get(i);
           args.add(new RexInputRef(idx, inputTypes.get(i)));
@@ -803,8 +802,7 @@ public class EnumerableWindow extends Window implements 
EnumerableRel {
             .substring("ID$0$".length()) + aggName;
       }
       List<Type> state = agg.implementor.getStateType(agg.context);
-      final List<Expression> decls =
-          new ArrayList<Expression>(state.size());
+      final List<Expression> decls = new ArrayList<>(state.size());
       for (int i = 0; i < state.size(); i++) {
         Type type = state.get(i);
         ParameterExpression pe =

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/enumerable/NestedBlockBuilderImpl.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/NestedBlockBuilderImpl.java
 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/NestedBlockBuilderImpl.java
index d0fadf3..f932fec 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/enumerable/NestedBlockBuilderImpl.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/enumerable/NestedBlockBuilderImpl.java
@@ -32,9 +32,9 @@ import java.util.Map;
  * @see 
org.apache.calcite.adapter.enumerable.StrictAggImplementor#implementAdd(AggContext,
 AggAddContext)
  */
 public class NestedBlockBuilderImpl implements NestedBlockBuilder {
-  private final List<BlockBuilder> blocks = new ArrayList<BlockBuilder>();
+  private final List<BlockBuilder> blocks = new ArrayList<>();
   private final List<Map<RexNode, Boolean>> nullables =
-      new ArrayList<Map<RexNode, Boolean>>();
+      new ArrayList<>();
 
   /**
    * Constructs nested block builders starting of a given code block.
@@ -83,7 +83,7 @@ public class NestedBlockBuilderImpl implements 
NestedBlockBuilder {
     if (nullables == null || nullables.isEmpty()) {
       next = prev;
     } else {
-      next = new HashMap<RexNode, Boolean>(nullables);
+      next = new HashMap<>(nullables);
       next.putAll(prev);
       next = Collections.unmodifiableMap(next);
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcToEnumerableConverter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcToEnumerableConverter.java
 
b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcToEnumerableConverter.java
index 61bf750..b018132 100644
--- 
a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcToEnumerableConverter.java
+++ 
b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcToEnumerableConverter.java
@@ -184,7 +184,7 @@ public class JdbcToEnumerableConverter
     final Primitive primitive = Primitive.ofBoxOr(physType.fieldClass(i));
     final RelDataType fieldType =
         physType.getRowType().getFieldList().get(i).getType();
-    final List<Expression> dateTimeArgs = new ArrayList<Expression>();
+    final List<Expression> dateTimeArgs = new ArrayList<>();
     dateTimeArgs.add(Expressions.constant(i + 1));
     SqlTypeName sqlTypeName = fieldType.getSqlTypeName();
     boolean offset = false;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java 
b/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
index 2bff11c..0a85351 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
@@ -534,7 +534,7 @@ public class Interpreter extends 
AbstractEnumerable<Object[]>
         nodeInfo = new NodeInfo(rel, null);
         nodes.put(rel, nodeInfo);
         for (Edge edge : edges2) {
-          nodeInfo.sinks.put(edge, new ListSink(new ArrayDeque<Row>()));
+          nodeInfo.sinks.put(edge, new ListSink(new ArrayDeque<>()));
         }
       }
       if (edges.size() == 1) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java 
b/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
index 7b2ddca..2020636 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
@@ -147,9 +147,7 @@ public class JaninoRexCompiler implements 
Interpreter.ScalarCompiler {
     }
     try {
       return getScalar(classDeclaration, s);
-    } catch (CompileException e) {
-      throw new RuntimeException(e);
-    } catch (IOException e) {
+    } catch (CompileException | IOException e) {
       throw new RuntimeException(e);
     }
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/MulticastRelOptListener.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/plan/MulticastRelOptListener.java 
b/core/src/main/java/org/apache/calcite/plan/MulticastRelOptListener.java
index 9b2bcc0..1cba6a5 100644
--- a/core/src/main/java/org/apache/calcite/plan/MulticastRelOptListener.java
+++ b/core/src/main/java/org/apache/calcite/plan/MulticastRelOptListener.java
@@ -34,7 +34,7 @@ public class MulticastRelOptListener implements 
RelOptListener {
    * Creates a new empty multicast listener.
    */
   public MulticastRelOptListener() {
-    listeners = new ArrayList<RelOptListener>();
+    listeners = new ArrayList<>();
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java 
b/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
index b2a4ffc..a66bf7b 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
@@ -56,14 +56,14 @@ class RelCompositeTrait<T extends RelMultipleTrait> 
implements RelTrait {
       List<T> traitList) {
     final RelCompositeTrait<T> compositeTrait;
     if (traitList.isEmpty()) {
-      compositeTrait = new EmptyCompositeTrait<T>(def);
+      compositeTrait = new EmptyCompositeTrait<>(def);
     } else {
       final RelMultipleTrait[] traits =
           traitList.toArray(new RelMultipleTrait[0]);
       for (int i = 0; i < traits.length; i++) {
         traits[i] = (T) def.canonize(traits[i]);
       }
-      compositeTrait = new RelCompositeTrait<T>(def, (T[]) traits);
+      compositeTrait = new RelCompositeTrait<>(def, (T[]) traits);
     }
     return def.canonizeComposite(compositeTrait);
   }
@@ -120,7 +120,7 @@ class RelCompositeTrait<T extends RelMultipleTrait> 
implements RelTrait {
     }
     assert false;
     // TODO: cache duplicate composites
-    return new RelCompositeTrait<T>(traitDef, newTraits);
+    return new RelCompositeTrait<>(traitDef, newTraits);
   }
 
   public T trait(int i) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java 
b/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
index c853eb8..da6b8eb 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
@@ -91,7 +91,7 @@ public class RelOptCluster {
   public static RelOptCluster create(RelOptPlanner planner,
       RexBuilder rexBuilder) {
     return new RelOptCluster(planner, rexBuilder.getTypeFactory(),
-        rexBuilder, new AtomicInteger(0), new HashMap<String, RelNode>());
+        rexBuilder, new AtomicInteger(0), new HashMap<>());
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/RelOptCostImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptCostImpl.java 
b/core/src/main/java/org/apache/calcite/plan/RelOptCostImpl.java
index 4a29cd6..0c46353 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptCostImpl.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptCostImpl.java
@@ -16,8 +16,6 @@
  */
 package org.apache.calcite.plan;
 
-import org.apache.calcite.runtime.Utilities;
-
 /**
  * RelOptCostImpl provides a default implementation for the {@link RelOptCost}
  * interface. It it defined in terms of a single scalar quantity; somewhat
@@ -70,7 +68,7 @@ public class RelOptCostImpl implements RelOptCost {
   }
 
   @Override public int hashCode() {
-    return Utilities.hashCode(getRows());
+    return Double.hashCode(getRows());
   }
 
   // implement RelOptCost

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/RelOptQuery.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptQuery.java 
b/core/src/main/java/org/apache/calcite/plan/RelOptQuery.java
index 34f5c5f..e4814d3 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptQuery.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptQuery.java
@@ -58,7 +58,7 @@ public class RelOptQuery {
    */
   @Deprecated // to be removed before 2.0
   public RelOptQuery(RelOptPlanner planner) {
-    this(planner, new AtomicInteger(0), new HashMap<String, RelNode>());
+    this(planner, new AtomicInteger(0), new HashMap<>());
   }
 
   /** For use by RelOptCluster only. */

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java 
b/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
index 717ef07..fa11142 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
@@ -539,8 +539,7 @@ public final class RelTraitSet extends 
AbstractList<RelTrait> {
 
   /** Cache of trait sets. */
   private static class Cache {
-    final Map<List<RelTrait>, RelTraitSet> map =
-        new HashMap<List<RelTrait>, RelTraitSet>();
+    final Map<List<RelTrait>, RelTraitSet> map = new HashMap<>();
 
     Cache() {
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/Strong.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/Strong.java 
b/core/src/main/java/org/apache/calcite/plan/Strong.java
index 0c2bb9e..3b2b8d8 100644
--- a/core/src/main/java/org/apache/calcite/plan/Strong.java
+++ b/core/src/main/java/org/apache/calcite/plan/Strong.java
@@ -204,8 +204,6 @@ public class Strong {
     map.put(SqlKind.IS_NOT_TRUE, Policy.NOT_NULL);
     map.put(SqlKind.IS_FALSE, Policy.NOT_NULL);
     map.put(SqlKind.IS_NOT_FALSE, Policy.NOT_NULL);
-    map.put(SqlKind.IS_DISTINCT_FROM, Policy.NOT_NULL);
-    map.put(SqlKind.IS_NOT_DISTINCT_FROM, Policy.NOT_NULL);
 
     map.put(SqlKind.NOT, Policy.ANY);
     map.put(SqlKind.EQUALS, Policy.ANY);
@@ -216,8 +214,6 @@ public class Strong {
     map.put(SqlKind.GREATER_THAN_OR_EQUAL, Policy.ANY);
     map.put(SqlKind.LIKE, Policy.ANY);
     map.put(SqlKind.SIMILAR, Policy.ANY);
-    map.put(SqlKind.PLUS_PREFIX, Policy.ANY);
-    map.put(SqlKind.MINUS_PREFIX, Policy.ANY);
     map.put(SqlKind.PLUS, Policy.ANY);
     map.put(SqlKind.PLUS_PREFIX, Policy.ANY);
     map.put(SqlKind.MINUS, Policy.ANY);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/TableAccessMap.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/TableAccessMap.java 
b/core/src/main/java/org/apache/calcite/plan/TableAccessMap.java
index 3e2843d..259cdf9 100644
--- a/core/src/main/java/org/apache/calcite/plan/TableAccessMap.java
+++ b/core/src/main/java/org/apache/calcite/plan/TableAccessMap.java
@@ -84,7 +84,7 @@ public class TableAccessMap {
     // input rel, because we use it for cached statements, and we don't
     // want to retain any rel references after preparation completes.
 
-    accessMap = new HashMap<List<String>, Mode>();
+    accessMap = new HashMap<>();
     RelOptUtil.go(
         new TableRelVisitor(),
         rel);
@@ -97,7 +97,7 @@ public class TableAccessMap {
    * @param mode  access mode for the table
    */
   public TableAccessMap(List<String> table, Mode mode) {
-    accessMap = new HashMap<List<String>, Mode>();
+    accessMap = new HashMap<>();
     accessMap.put(table, mode);
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/hep/HepInstruction.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/hep/HepInstruction.java 
b/core/src/main/java/org/apache/calcite/plan/hep/HepInstruction.java
index 2529372..d89e58f 100644
--- a/core/src/main/java/org/apache/calcite/plan/hep/HepInstruction.java
+++ b/core/src/main/java/org/apache/calcite/plan/hep/HepInstruction.java
@@ -186,7 +186,7 @@ abstract class HepInstruction {
         return;
       }
 
-      ruleSet = new HashSet<RelOptRule>();
+      ruleSet = new HashSet<>();
       collecting = true;
     }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/hep/HepProgramBuilder.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/plan/hep/HepProgramBuilder.java 
b/core/src/main/java/org/apache/calcite/plan/hep/HepProgramBuilder.java
index b698090..2a4ca27 100644
--- a/core/src/main/java/org/apache/calcite/plan/hep/HepProgramBuilder.java
+++ b/core/src/main/java/org/apache/calcite/plan/hep/HepProgramBuilder.java
@@ -30,8 +30,7 @@ import java.util.List;
 public class HepProgramBuilder {
   //~ Instance fields --------------------------------------------------------
 
-  private final List<HepInstruction> instructions =
-      new ArrayList<HepInstruction>();
+  private final List<HepInstruction> instructions = new ArrayList<>();
 
   private HepInstruction.BeginGroup group;
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/hep/HepRuleCall.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/hep/HepRuleCall.java 
b/core/src/main/java/org/apache/calcite/plan/hep/HepRuleCall.java
index 8a280f8..3a40ec0 100644
--- a/core/src/main/java/org/apache/calcite/plan/hep/HepRuleCall.java
+++ b/core/src/main/java/org/apache/calcite/plan/hep/HepRuleCall.java
@@ -46,7 +46,7 @@ public class HepRuleCall extends RelOptRuleCall {
       List<RelNode> parents) {
     super(planner, operand, rels, nodeChildren, parents);
 
-    results = new ArrayList<RelNode>();
+    results = new ArrayList<>();
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/volcano/RelSubset.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/RelSubset.java 
b/core/src/main/java/org/apache/calcite/plan/volcano/RelSubset.java
index 8352ffe..a2b185e 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/RelSubset.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/RelSubset.java
@@ -277,9 +277,9 @@ public class RelSubset extends AbstractRelNode {
           "rowtype of set", getRowType(), Litmus.THROW);
     }
     set.addInternal(rel);
-    Set<CorrelationId> variablesSet = RelOptUtil.getVariablesSet(rel);
-    Set<CorrelationId> variablesStopped = rel.getVariablesSet();
     if (false) {
+      Set<CorrelationId> variablesSet = RelOptUtil.getVariablesSet(rel);
+      Set<CorrelationId> variablesStopped = rel.getVariablesSet();
       Set<CorrelationId> variablesPropagated =
           Util.minus(variablesSet, variablesStopped);
       assert set.variablesPropagated.containsAll(variablesPropagated);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/volcano/RuleQueue.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/RuleQueue.java 
b/core/src/main/java/org/apache/calcite/plan/volcano/RuleQueue.java
index 10b9553..13dd779 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/RuleQueue.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/RuleQueue.java
@@ -117,7 +117,7 @@ class RuleQueue {
 
     // init empty sets for all phases
     for (VolcanoPlannerPhase phase : VolcanoPlannerPhase.values()) {
-      phaseRuleMapping.put(phase, new HashSet<String>());
+      phaseRuleMapping.put(phase, new HashSet<>());
     }
 
     // configure phases
@@ -238,18 +238,14 @@ class RuleQueue {
       public int compare(RelSubset o1, RelSubset o2) {
         int o1children = countChildren(o1);
         int o2children = countChildren(o2);
-        int c = compare(o1children, o2children);
+        int c = Integer.compare(o1children, o2children);
         if (c == 0) {
           // for determinism
-          c = compare(o1.getId(), o2.getId());
+          c = Integer.compare(o1.getId(), o2.getId());
         }
         return c;
       }
 
-      private int compare(int i1, int i2) {
-        return (i1 < i2) ? -1 : ((i1 == i2) ? 0 : 1);
-      }
-
       private int countChildren(RelSubset subset) {
         int count = 0;
         for (RelNode rel : subset.getRels()) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java 
b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
index 20eadfa..834fe5e 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoPlanner.java
@@ -79,6 +79,7 @@ import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.Deque;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -501,13 +502,7 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
     unmapRuleDescription(rule);
 
     // Remove operands.
-    for (Iterator<RelOptRuleOperand> iter = classOperands.values().iterator();
-         iter.hasNext();) {
-      RelOptRuleOperand entry = iter.next();
-      if (entry.getRule().equals(rule)) {
-        iter.remove();
-      }
-    }
+    classOperands.values().removeIf(entry -> entry.getRule().equals(rule));
 
     // Remove trait mappings. (In particular, entries from conversion
     // graph.)
@@ -1165,7 +1160,7 @@ public class VolcanoPlanner extends AbstractRelOptPlanner 
{
     pw.println("Original rel:");
     pw.println(originalRootString);
     pw.println("Sets:");
-    Ordering<RelSet> ordering = Ordering.from((o1, o2) -> o1.id - o2.id);
+    Ordering<RelSet> ordering = Ordering.from(Comparator.comparingInt(o -> 
o.id));
     for (RelSet set : ordering.immutableSortedCopy(allSets)) {
       pw.println("Set#" + set.id
           + ", type: " + set.subsets.get(0).getRowType());
@@ -1637,7 +1632,7 @@ public class VolcanoPlanner extends AbstractRelOptPlanner 
{
     // not established. So, give the subset another change to figure out
     // its cost.
     final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
-    subset.propagateCostImprovements(this, mq, rel, new HashSet<RelSubset>());
+    subset.propagateCostImprovements(this, mq, rel, new HashSet<>());
 
     return subset;
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/prepare/LixToRelTranslator.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/prepare/LixToRelTranslator.java 
b/core/src/main/java/org/apache/calcite/prepare/LixToRelTranslator.java
index 460e2ca..6994550 100644
--- a/core/src/main/java/org/apache/calcite/prepare/LixToRelTranslator.java
+++ b/core/src/main/java/org/apache/calcite/prepare/LixToRelTranslator.java
@@ -71,7 +71,7 @@ class LixToRelTranslator implements RelOptTable.ToRelContext {
 
   public <T> RelNode translate(Queryable<T> queryable) {
     QueryableRelBuilder<T> translatorQueryable =
-        new QueryableRelBuilder<T>(this);
+        new QueryableRelBuilder<>(this);
     return translatorQueryable.toRel(queryable);
   }
 
@@ -132,7 +132,7 @@ class LixToRelTranslator implements 
RelOptTable.ToRelContext {
         CalcitePrepareImpl.EmptyScalarTranslator
             .empty(rexBuilder)
             .bind(expression.parameterList, list);
-    final List<RexNode> rexList = new ArrayList<RexNode>();
+    final List<RexNode> rexList = new ArrayList<>();
     final Expression simple = Blocks.simple(expression.body);
     for (Expression expression1 : fieldExpressions(simple)) {
       rexList.add(translator.toRex(expression1));
@@ -153,7 +153,7 @@ class LixToRelTranslator implements 
RelOptTable.ToRelContext {
   List<RexNode> toRexList(
       FunctionExpression expression,
       RelNode... inputs) {
-    List<RexNode> list = new ArrayList<RexNode>();
+    List<RexNode> list = new ArrayList<>();
     RexBuilder rexBuilder = cluster.getRexBuilder();
     for (RelNode input : inputs) {
       list.add(rexBuilder.makeRangeReference(input));
@@ -166,7 +166,7 @@ class LixToRelTranslator implements 
RelOptTable.ToRelContext {
   RexNode toRex(
       FunctionExpression expression,
       RelNode... inputs) {
-    List<RexNode> list = new ArrayList<RexNode>();
+    List<RexNode> list = new ArrayList<>();
     RexBuilder rexBuilder = cluster.getRexBuilder();
     for (RelNode input : inputs) {
       list.add(rexBuilder.makeRangeReference(input));

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java 
b/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
index 973734c..6588ffa 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/JoinInfo.java
@@ -53,9 +53,9 @@ public abstract class JoinInfo {
 
   /** Creates a {@code JoinInfo} by analyzing a condition. */
   public static JoinInfo of(RelNode left, RelNode right, RexNode condition) {
-    final List<Integer> leftKeys = new ArrayList<Integer>();
-    final List<Integer> rightKeys = new ArrayList<Integer>();
-    final List<Boolean> filterNulls = new ArrayList<Boolean>();
+    final List<Integer> leftKeys = new ArrayList<>();
+    final List<Integer> rightKeys = new ArrayList<>();
+    final List<Boolean> filterNulls = new ArrayList<>();
     RexNode remaining =
         RelOptUtil.splitJoinCondition(left, right, condition, leftKeys,
             rightKeys, filterNulls);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/core/SetOp.java
----------------------------------------------------------------------
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 eef57c3..6596b61 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
@@ -82,7 +82,7 @@ public abstract class SetOp extends AbstractRelNode {
   }
 
   @Override public void replaceInput(int ordinalInParent, RelNode p) {
-    final List<RelNode> newInputs = new ArrayList<RelNode>(inputs);
+    final List<RelNode> newInputs = new ArrayList<>(inputs);
     newInputs.set(ordinalInParent, p);
     inputs = ImmutableList.copyOf(newInputs);
     recomputeDigest();

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java 
b/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
index d8db9c3..422be42 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelJson.java
@@ -62,8 +62,7 @@ import java.util.Map;
  * into JSON format.
  */
 public class RelJson {
-  private final Map<String, Constructor> constructorMap =
-      new HashMap<String, Constructor>();
+  private final Map<String, Constructor> constructorMap = new HashMap<>();
   private final JsonBuilder jsonBuilder;
 
   public static final List<String> PACKAGES =
@@ -83,16 +82,8 @@ public class RelJson {
     Constructor constructor = getConstructor(type);
     try {
       return (RelNode) constructor.newInstance(map);
-    } catch (InstantiationException e) {
-      throw new RuntimeException(
-          "while invoking constructor for type '" + type + "'", e);
-    } catch (IllegalAccessException e) {
-      throw new RuntimeException(
-          "while invoking constructor for type '" + type + "'", e);
-    } catch (InvocationTargetException e) {
-      throw new RuntimeException(
-          "while invoking constructor for type '" + type + "'", e);
-    } catch (ClassCastException e) {
+    } catch (InstantiationException | ClassCastException | 
InvocationTargetException
+        | IllegalAccessException e) {
       throw new RuntimeException(
           "while invoking constructor for type '" + type + "'", e);
     }
@@ -152,7 +143,7 @@ public class RelJson {
   }
 
   public Object toJson(RelCollationImpl node) {
-    final List<Object> list = new ArrayList<Object>();
+    final List<Object> list = new ArrayList<>();
     for (RelFieldCollation fieldCollation : node.getFieldCollations()) {
       final Map<String, Object> map = jsonBuilder.map();
       map.put("field", fieldCollation.getFieldIndex());
@@ -165,8 +156,7 @@ public class RelJson {
 
   public RelCollation toCollation(
       List<Map<String, Object>> jsonFieldCollations) {
-    final List<RelFieldCollation> fieldCollations =
-        new ArrayList<RelFieldCollation>();
+    final List<RelFieldCollation> fieldCollations = new ArrayList<>();
     for (Map<String, Object> map : jsonFieldCollations) {
       fieldCollations.add(toFieldCollation(map));
     }
@@ -429,7 +419,7 @@ public class RelJson {
   }
 
   private List<RexNode> toRexList(RelInput relInput, List operands) {
-    final List<RexNode> list = new ArrayList<RexNode>();
+    final List<RexNode> list = new ArrayList<>();
     for (Object operand : operands) {
       list.add(toRex(relInput, operand));
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java 
b/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
index 908eb99..92c96ee 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelXmlWriter.java
@@ -95,7 +95,7 @@ public class RelXmlWriter extends RelWriterImpl {
 
     xmlOutput.endBeginTag("RelNode");
 
-    final List<RelNode> inputs = new ArrayList<RelNode>();
+    final List<RelNode> inputs = new ArrayList<>();
     for (Pair<String, Object> pair : values) {
       if (pair.right instanceof RelNode) {
         inputs.add((RelNode) pair.right);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java
 
b/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java
index e3e4407..e206ff3 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/metadata/JaninoRelMetadataProvider.java
@@ -370,7 +370,7 @@ public class JaninoRelMetadataProvider implements 
RelMetadataProvider {
         buff.append(pair.getKey());
       }
     }
-    final List<Object> argList = new 
ArrayList<Object>(Pair.right(providerList));
+    final List<Object> argList = new ArrayList<>(Pair.right(providerList));
     argList.add(0, ImmutableList.copyOf(relClasses));
     try {
       return compile(name, buff.toString(), def, argList);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
index 1afadc3..d456c81 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
@@ -388,7 +388,7 @@ public class RelMdExpressionLineage
     }
 
     return createAllPossibleExpressions(rexBuilder, expr, predFieldsUsed, 
mapping,
-        new HashMap<RexInputRef, RexNode>());
+        new HashMap<>());
   }
 
   private static Set<RexNode> createAllPossibleExpressions(RexBuilder 
rexBuilder,

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
 
b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
index 54da1e4..d52ea47 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
@@ -1252,7 +1252,7 @@ public abstract class AbstractMaterializedViewRule 
extends RelOptRule {
       if (topProject != null && !unionRewriting) {
         // We have a Project on top, gather only what is needed
         final RelOptUtil.InputFinder inputFinder =
-            new RelOptUtil.InputFinder(new LinkedHashSet<RelDataTypeField>());
+            new RelOptUtil.InputFinder(new LinkedHashSet<>());
         for (RexNode e : topProject.getChildExps()) {
           e.accept(inputFinder);
         }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.java
 
b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.java
index a151487..743a9d0 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableFunctionTransposeRule.java
@@ -87,7 +87,7 @@ public class FilterTableFunctionTransposeRule extends 
RelOptRule {
         return;
       }
     }
-    final List<RelNode> newFuncInputs = new ArrayList<RelNode>();
+    final List<RelNode> newFuncInputs = new ArrayList<>();
     final RelOptCluster cluster = funcRel.getCluster();
     final RexNode condition = filter.getCondition();
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/JoinUnionTransposeRule.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/rules/JoinUnionTransposeRule.java 
b/core/src/main/java/org/apache/calcite/rel/rules/JoinUnionTransposeRule.java
index acd4577..72be74a 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/rules/JoinUnionTransposeRule.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/rules/JoinUnionTransposeRule.java
@@ -96,7 +96,7 @@ public class JoinUnionTransposeRule extends RelOptRule {
         return;
       }
     }
-    List<RelNode> newUnionInputs = new ArrayList<RelNode>();
+    List<RelNode> newUnionInputs = new ArrayList<>();
     for (RelNode input : unionRel.getInputs()) {
       RelNode joinLeft;
       RelNode joinRight;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/MultiJoin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/MultiJoin.java 
b/core/src/main/java/org/apache/calcite/rel/rules/MultiJoin.java
index 153f31b..a362409 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/MultiJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/MultiJoin.java
@@ -134,7 +134,7 @@ public final class MultiJoin extends AbstractRelNode {
    * Returns a deep copy of {@link #joinFieldRefCountsMap}.
    */
   private Map<Integer, int[]> cloneJoinFieldRefCountsMap() {
-    Map<Integer, int[]> clonedMap = new HashMap<Integer, int[]>();
+    Map<Integer, int[]> clonedMap = new HashMap<>();
     for (int i = 0; i < inputs.size(); i++) {
       clonedMap.put(i, joinFieldRefCountsMap.get(i).toIntArray());
     }
@@ -142,9 +142,9 @@ public final class MultiJoin extends AbstractRelNode {
   }
 
   public RelWriter explainTerms(RelWriter pw) {
-    List<String> joinTypeNames = new ArrayList<String>();
-    List<String> outerJoinConds = new ArrayList<String>();
-    List<String> projFieldObjects = new ArrayList<String>();
+    List<String> joinTypeNames = new ArrayList<>();
+    List<String> outerJoinConds = new ArrayList<>();
+    List<String> projFieldObjects = new ArrayList<>();
     for (int i = 0; i < inputs.size(); i++) {
       joinTypeNames.add(joinTypes.get(i).name());
       if (outerJoinConditions.get(i) == null) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java 
b/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
index 22b8d63..e0d6b71 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
@@ -503,7 +503,7 @@ public class PushProjector {
     }
     int refIdx = offset - 1;
     List<Pair<RexNode, String>> newProjects =
-        new ArrayList<Pair<RexNode, String>>();
+        new ArrayList<>();
     List<RelDataTypeField> destFields =
         projChild.getRowType().getFieldList();
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/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 7af2264..1242d51 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
@@ -127,8 +127,8 @@ public class ReduceDecimalsRule extends RelOptRule {
     private final ExpanderMap expanderMap;
 
     public DecimalShuttle(RexBuilder rexBuilder) {
-      irreducible = new HashMap<Pair<String, String>, RexNode>();
-      results = new HashMap<Pair<String, String>, RexNode>();
+      irreducible = new HashMap<>();
+      results = new HashMap<>();
       expanderMap = new ExpanderMap(rexBuilder);
     }
 
@@ -224,7 +224,7 @@ public class ReduceDecimalsRule extends RelOptRule {
     private RexExpander defaultExpander;
 
     private ExpanderMap(RexBuilder rexBuilder) {
-      map = new HashMap<SqlOperator, RexExpander>();
+      map = new HashMap<>();
       registerExpanders(rexBuilder);
     }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java 
b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
index a3ae9d9..09fdeaa 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
@@ -546,8 +546,7 @@ public abstract class ReduceExpressionsRule extends 
RelOptRule {
     for (int i = 0; i < expList.size(); i++) {
       RexNode expr2 = simplifier.apply(expList.get(i));
       if (!expr2.toString().equals(expList.get(i).toString())) {
-        expList.remove(i);
-        expList.add(i, expr2);
+        expList.set(i, expr2);
         simplified = true;
       }
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.java
 
b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.java
index f7e4f48..7fa1a35 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinJoinTransposeRule.java
@@ -80,7 +80,7 @@ public class SemiJoinJoinTransposeRule extends RelOptRule {
     int nFieldsY = join.getRight().getRowType().getFieldList().size();
     int nFieldsZ = semiJoin.getRight().getRowType().getFieldList().size();
     int nTotalFields = nFieldsX + nFieldsY + nFieldsZ;
-    List<RelDataTypeField> fields = new ArrayList<RelDataTypeField>();
+    List<RelDataTypeField> fields = new ArrayList<>();
 
     // create a list of fields for the full join result; note that
     // we can't simply use the fields from the semi-join because the

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java 
b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
index ade5556..2fd97ad 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
@@ -993,7 +993,7 @@ public class RexLiteral extends RexNode {
   }
 
   private static boolean equals(Object o1, Object o2) {
-    return (o1 == null) ? (o2 == null) : o1.equals(o2);
+    return Objects.equals(o1, o2);
   }
 
   public <R> R accept(RexVisitor<R> visitor) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java 
b/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
index a4a62d9..a7aacd8 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
@@ -158,6 +158,7 @@ public class RexProgramBuilder {
    */
   private static boolean assertionsAreEnabled() {
     boolean assertionsEnabled = false;
+    //noinspection AssertWithSideEffects
     assert assertionsEnabled = true;
     return assertionsEnabled;
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rex/RexSqlReflectiveConvertletTable.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rex/RexSqlReflectiveConvertletTable.java
 
b/core/src/main/java/org/apache/calcite/rex/RexSqlReflectiveConvertletTable.java
index 596ebd5..a571331 100644
--- 
a/core/src/main/java/org/apache/calcite/rex/RexSqlReflectiveConvertletTable.java
+++ 
b/core/src/main/java/org/apache/calcite/rex/RexSqlReflectiveConvertletTable.java
@@ -27,7 +27,7 @@ import java.util.Map;
 public class RexSqlReflectiveConvertletTable implements RexSqlConvertletTable {
   //~ Instance fields --------------------------------------------------------
 
-  private final Map<Object, Object> map = new HashMap<Object, Object>();
+  private final Map<Object, Object> map = new HashMap<>();
 
   //~ Constructors -----------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java 
b/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
index e93df95..159b281 100644
--- 
a/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
+++ 
b/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
@@ -196,7 +196,7 @@ public class RexSqlStandardConvertletTable
             return null;
           }
           List<SqlNode> operandList =
-              new ArrayList<SqlNode>(Arrays.asList(operands));
+              new ArrayList<>(Arrays.asList(operands));
           SqlDataTypeSpec typeSpec =
               SqlTypeUtil.convertTypeToSpec(call.getType());
           operandList.add(typeSpec);

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/rex/RexTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexTransformer.java 
b/core/src/main/java/org/apache/calcite/rex/RexTransformer.java
index 307b466..13e3199 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexTransformer.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexTransformer.java
@@ -39,8 +39,7 @@ public class RexTransformer {
   private RexNode root;
   private final RexBuilder rexBuilder;
   private int isParentsCount;
-  private final Set<SqlOperator> transformableOperators =
-      new HashSet<SqlOperator>();
+  private final Set<SqlOperator> transformableOperators = new HashSet<>();
 
   //~ Constructors -----------------------------------------------------------
 
@@ -159,7 +158,7 @@ public class RexTransformer {
       RexCall call = (RexCall) node;
 
       // Transform children (if any) before transforming node itself.
-      final ArrayList<RexNode> operands = new ArrayList<RexNode>();
+      final ArrayList<RexNode> operands = new ArrayList<>();
       for (RexNode operand : call.operands) {
         operands.add(transformNullSemantics(operand));
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java 
b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
index d07014a..2dce103 100644
--- a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
+++ b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
@@ -49,32 +49,32 @@ public class FlatLists {
 
   /** Creates a flat list with 1 element. */
   public static <T> List<T> of(T t0) {
-    return new Flat1List<T>(t0);
+    return new Flat1List<>(t0);
   }
 
   /** Creates a flat list with 2 elements. */
   public static <T> List<T> of(T t0, T t1) {
-    return new Flat2List<T>(t0, t1);
+    return new Flat2List<>(t0, t1);
   }
 
   /** Creates a flat list with 3 elements. */
   public static <T> List<T> of(T t0, T t1, T t2) {
-    return new Flat3List<T>(t0, t1, t2);
+    return new Flat3List<>(t0, t1, t2);
   }
 
   /** Creates a flat list with 4 elements. */
   public static <T> List<T> of(T t0, T t1, T t2, T t3) {
-    return new Flat4List<T>(t0, t1, t2, t3);
+    return new Flat4List<>(t0, t1, t2, t3);
   }
 
   /** Creates a flat list with 6 elements. */
   public static <T> List<T> of(T t0, T t1, T t2, T t3, T t4) {
-    return new Flat5List<T>(t0, t1, t2, t3, t4);
+    return new Flat5List<>(t0, t1, t2, t3, t4);
   }
 
   /** Creates a flat list with 6 elements. */
   public static <T> List<T> of(T t0, T t1, T t2, T t3, T t4, T t5) {
-    return new Flat6List<T>(t0, t1, t2, t3, t4, t5);
+    return new Flat6List<>(t0, t1, t2, t3, t4, t5);
   }
 
   /**
@@ -389,7 +389,7 @@ public class FlatLists {
     }
 
     public List<T> append(T e) {
-      return new Flat2List<T>(t0, e);
+      return new Flat2List<>(t0, e);
     }
   }
 
@@ -522,7 +522,7 @@ public class FlatLists {
     }
 
     public List<T> append(T e) {
-      return new Flat3List<T>(t0, t1, e);
+      return new Flat3List<>(t0, t1, e);
     }
   }
 
@@ -672,7 +672,7 @@ public class FlatLists {
     }
 
     public List<T> append(T e) {
-      return new Flat4List<T>(t0, t1, t2, e);
+      return new Flat4List<>(t0, t1, t2, e);
     }
   }
 
@@ -841,7 +841,7 @@ public class FlatLists {
     }
 
     public List<T> append(T e) {
-      return new Flat5List<T>(t0, t1, t2, t3, e);
+      return new Flat5List<>(t0, t1, t2, t3, e);
     }
   }
 
@@ -1029,7 +1029,7 @@ public class FlatLists {
     }
 
     public List<T> append(T e) {
-      return new Flat6List<T>(t0, t1, t2, t3, t4, e);
+      return new Flat6List<>(t0, t1, t2, t3, t4, e);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java 
b/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
index 4724d8c..771772f 100644
--- a/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
+++ b/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
@@ -72,7 +72,7 @@ public class ResultSetEnumerable<T> extends 
AbstractEnumerable<T> {
           //noinspection unchecked
           return (Function0) () -> {
             try {
-              final List<Object> list = new ArrayList<Object>();
+              final List<Object> list = new ArrayList<>();
               for (int i = 0; i < columnCount; i++) {
                 if (metaData.getColumnType(i + 1) == Types.TIMESTAMP) {
                   long v = resultSet.getLong(i + 1);
@@ -120,7 +120,7 @@ public class ResultSetEnumerable<T> extends 
AbstractEnumerable<T> {
       DataSource dataSource,
       String sql,
       Function1<ResultSet, Function0<T>> rowBuilderFactory) {
-    return new ResultSetEnumerable<T>(dataSource, sql, rowBuilderFactory);
+    return new ResultSetEnumerable<>(dataSource, sql, rowBuilderFactory);
   }
 
   public Enumerator<T> enumerator() {
@@ -138,7 +138,7 @@ public class ResultSetEnumerable<T> extends 
AbstractEnumerable<T> {
         final ResultSet resultSet = statement.getResultSet();
         statement = null;
         connection = null;
-        return new ResultSetEnumerator<T>(resultSet, rowBuilderFactory);
+        return new ResultSetEnumerator<>(resultSet, rowBuilderFactory);
       } else {
         Integer updateCount = statement.getUpdateCount();
         return Linq4j.singletonEnumerator((T) updateCount);
@@ -243,7 +243,7 @@ public class ResultSetEnumerable<T> extends 
AbstractEnumerable<T> {
       //noinspection unchecked
       return (Function0) () -> {
         try {
-          final List<Object> list = new ArrayList<Object>();
+          final List<Object> list = new ArrayList<>();
           for (int i = 0; i < columnCount; i++) {
             list.add(primitives[i].jdbcGet(resultSet, i + 1));
           }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/runtime/SortedMultiMap.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/runtime/SortedMultiMap.java 
b/core/src/main/java/org/apache/calcite/runtime/SortedMultiMap.java
index d4fa04e..c1dd446 100644
--- a/core/src/main/java/org/apache/calcite/runtime/SortedMultiMap.java
+++ b/core/src/main/java/org/apache/calcite/runtime/SortedMultiMap.java
@@ -38,7 +38,7 @@ public class SortedMultiMap<K, V> extends HashMap<K, List<V>> 
{
       return;
     }
     if (list.size() == 1) {
-      list = new ArrayList<V>(list);
+      list = new ArrayList<>(list);
     }
     list.add(value);
     put(key, list);
@@ -71,7 +71,7 @@ public class SortedMultiMap<K, V> extends HashMap<K, List<V>> 
{
   public static <V> Iterator<V[]> singletonArrayIterator(
       Comparator<V> comparator, List<V> list) {
     final SortedMultiMap<Object, V> multiMap =
-        new SortedMultiMap<Object, V>();
+        new SortedMultiMap<>();
     multiMap.put("x", list);
     return multiMap.arrays(comparator);
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java 
b/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
index c7c3875..8062afe 100644
--- a/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
+++ b/core/src/main/java/org/apache/calcite/runtime/SqlFunctions.java
@@ -2137,9 +2137,9 @@ public class SqlFunctions {
   /** Support the MULTISET INTERSECT DISTINCT function. */
   public static <E> Collection<E> multisetIntersectDistinct(Collection<E> c1,
       Collection<E> c2) {
-    final Set<E> result = new HashSet<E>(c1);
+    final Set<E> result = new HashSet<>(c1);
     result.retainAll(c2);
-    return new ArrayList<E>(result);
+    return new ArrayList<>(result);
   }
 
   /** Support the MULTISET INTERSECT ALL function. */

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/runtime/Utilities.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/runtime/Utilities.java 
b/core/src/main/java/org/apache/calcite/runtime/Utilities.java
index a97a038..1923b72 100644
--- a/core/src/main/java/org/apache/calcite/runtime/Utilities.java
+++ b/core/src/main/java/org/apache/calcite/runtime/Utilities.java
@@ -18,6 +18,7 @@ package org.apache.calcite.runtime;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Utility methods called by generated code.
@@ -34,7 +35,7 @@ public class Utilities {
   public static boolean equal(Object o0, Object o1) {
     // Same as java.lang.Objects.equals (JDK 1.7 and later)
     // and com.google.common.base.Objects.equal
-    return o0 == o1 || o0 != null && o0.equals(o1);
+    return Objects.equals(o0, o1);
   }
 
   public static int hash(Object v) {
@@ -47,10 +48,11 @@ public class Utilities {
    *
    * @param v Value
    * @return Hash code
+   * @deprecated Use {@link Double#hashCode(double)}
    */
+  @Deprecated // to be removed before 2.0
   public static int hashCode(double v) {
-    long bits = Double.doubleToLongBits(v);
-    return hashCode(bits);
+    return Double.hashCode(v);
   }
 
   /** Computes the hash code of a {@code float} value. Equivalent to
@@ -59,9 +61,11 @@ public class Utilities {
    *
    * @param v Value
    * @return Hash code
+   * @deprecated Use {@link Float#hashCode(float)}
    */
+  @Deprecated // to be removed before 2.0
   public static int hashCode(float v) {
-    return Float.floatToIntBits(v);
+    return Float.hashCode(v);
   }
 
   /** Computes the hash code of a {@code long} value. Equivalent to
@@ -70,9 +74,11 @@ public class Utilities {
    *
    * @param v Value
    * @return Hash code
+   * @deprecated Use {@link Long#hashCode(long)}
    */
+  @Deprecated // to be removed before 2.0
   public static int hashCode(long v) {
-    return (int) (v ^ (v >>> 32));
+    return Long.hashCode(v);
   }
 
   /** Computes the hash code of a {@code boolean} value. Equivalent to
@@ -81,9 +87,11 @@ public class Utilities {
    *
    * @param v Value
    * @return Hash code
+   * @deprecated Use {@link Boolean#hashCode(boolean)}
    */
+  @Deprecated // to be removed before 2.0
   public static int hashCode(boolean v) {
-    return v ? 1231 : 1237;
+    return Boolean.hashCode(v);
   }
 
   public static int hash(int h, boolean v) {
@@ -107,15 +115,15 @@ public class Utilities {
   }
 
   public static int hash(int h, long v) {
-    return h * 31 + hashCode(v);
+    return h * 31 + Long.hashCode(v);
   }
 
   public static int hash(int h, float v) {
-    return hash(h, hashCode(v));
+    return hash(h, Float.hashCode(v));
   }
 
   public static int hash(int h, double v) {
-    return hash(h, hashCode(v));
+    return hash(h, Double.hashCode(v));
   }
 
   public static int hash(int h, Object v) {
@@ -123,33 +131,27 @@ public class Utilities {
   }
 
   public static int compare(boolean v0, boolean v1) {
-    // Same as Boolean.compare (introduced in JDK 1.7)
-    return (v0 == v1) ? 0 : (v0 ? 1 : -1);
+    return Boolean.compare(v0, v1);
   }
 
   public static int compare(byte v0, byte v1) {
-    // Same as Byte.compare (introduced in JDK 1.7)
-    return v0 - v1;
+    return Byte.compare(v0, v1);
   }
 
   public static int compare(char v0, char v1) {
-    // Same as Character.compare (introduced in JDK 1.7)
-    return v0 - v1;
+    return Character.compare(v0, v1);
   }
 
   public static int compare(short v0, short v1) {
-    // Same as Short.compare (introduced in JDK 1.7)
-    return v0 - v1;
+    return Short.compare(v0, v1);
   }
 
   public static int compare(int v0, int v1) {
-    // Same as Integer.compare (introduced in JDK 1.7)
-    return (v0 < v1) ? -1 : ((v0 == v1) ? 0 : 1);
+    return Integer.compare(v0, v1);
   }
 
   public static int compare(long v0, long v1) {
-    // Same as Long.compare (introduced in JDK 1.7)
-    return (v0 < v1) ? -1 : ((v0 == v1) ? 0 : 1);
+    return Long.compare(v0, v1);
   }
 
   public static int compare(float v0, float v1) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/schema/impl/StarTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/schema/impl/StarTable.java 
b/core/src/main/java/org/apache/calcite/schema/impl/StarTable.java
index b0a62a5..b1d89da 100644
--- a/core/src/main/java/org/apache/calcite/schema/impl/StarTable.java
+++ b/core/src/main/java/org/apache/calcite/schema/impl/StarTable.java
@@ -77,8 +77,8 @@ public class StarTable extends AbstractTable implements 
TranslatableTable {
   }
 
   public RelDataType getRowType(RelDataTypeFactory typeFactory) {
-    final List<RelDataType> typeList = new ArrayList<RelDataType>();
-    final List<Integer> fieldCounts = new ArrayList<Integer>();
+    final List<RelDataType> typeList = new ArrayList<>();
+    final List<Integer> fieldCounts = new ArrayList<>();
     for (Table table : tables) {
       final RelDataType rowType = table.getRowType(typeFactory);
       typeList.addAll(RelOptUtil.getFieldTypeList(rowType));

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java 
b/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
index 25949ab..9b90343 100644
--- a/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
+++ b/core/src/main/java/org/apache/calcite/sql/advise/SqlAdvisor.java
@@ -172,7 +172,7 @@ public class SqlAdvisor {
     if (wordStart < wordEnd) {
       sql =
           sql.substring(0, wordStart)
-              + sql.substring(wordEnd, sql.length());
+              + sql.substring(wordEnd);
     }
 
     final List<SqlMoniker> completionHints =
@@ -324,7 +324,7 @@ public class SqlAdvisor {
   public List<SqlMoniker> getCompletionHints(String sql, SqlParserPos pos) {
     // First try the statement they gave us. If this fails, just return
     // the tokens which were expected at the failure point.
-    List<SqlMoniker> hintList = new ArrayList<SqlMoniker>();
+    List<SqlMoniker> hintList = new ArrayList<>();
     SqlNode sqlNode = tryParse(sql, hintList);
     if (sqlNode == null) {
       return hintList;
@@ -433,9 +433,7 @@ public class SqlAdvisor {
     SqlParserPos pos = new SqlParserPos(1, cursor + 1);
     try {
       return validator.lookupQualifiedName(sqlNode, pos);
-    } catch (CalciteContextException e) {
-      return null;
-    } catch (java.lang.AssertionError e) {
+    } catch (CalciteContextException | AssertionError e) {
       return null;
     }
   }
@@ -475,7 +473,7 @@ public class SqlAdvisor {
    */
   public List<ValidateErrorInfo> validate(String sql) {
     SqlNode sqlNode;
-    List<ValidateErrorInfo> errorList = new ArrayList<ValidateErrorInfo>();
+    List<ValidateErrorInfo> errorList = new ArrayList<>();
 
     sqlNode = collectParserError(sql, errorList);
     if (!errorList.isEmpty()) {
@@ -542,7 +540,7 @@ public class SqlAdvisor {
     List<String> l =
         Arrays.asList(
             getParserMetadata().getJdbcKeywords().split(","));
-    List<String> al = new ArrayList<String>();
+    List<String> al = new ArrayList<>();
     al.addAll(c);
     al.addAll(l);
     reservedWordsList = al;

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java 
b/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
index edafcb4..a71a9ad 100644
--- a/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
+++ b/core/src/main/java/org/apache/calcite/sql/advise/SqlSimpleParser.java
@@ -150,7 +150,7 @@ public class SqlSimpleParser {
    */
   public String simplifySql(String sql) {
     Tokenizer tokenizer = new Tokenizer(sql, hintToken, 
parserConfig.quoting());
-    List<Token> list = new ArrayList<Token>();
+    List<Token> list = new ArrayList<>();
     while (true) {
       Token token = tokenizer.nextToken();
       if (token == null) {
@@ -164,7 +164,7 @@ public class SqlSimpleParser {
     }
 
     // Gather consecutive sub-sequences of tokens into sub-queries.
-    List<Token> outList = new ArrayList<Token>();
+    List<Token> outList = new ArrayList<>();
     consumeQuery(list.listIterator(), outList);
 
     // Simplify.
@@ -216,7 +216,7 @@ public class SqlSimpleParser {
   private void consumeSelect(ListIterator<Token> iter, List<Token> outList) {
     boolean isQuery = false;
     int start = outList.size();
-    List<Token> subQueryList = new ArrayList<Token>();
+    List<Token> subQueryList = new ArrayList<>();
   loop:
     while (iter.hasNext()) {
       Token token = iter.next();
@@ -261,8 +261,7 @@ public class SqlSimpleParser {
   //~ Inner Classes ----------------------------------------------------------
 
   public static class Tokenizer {
-    private static final Map<String, TokenType> map =
-        new HashMap<String, TokenType>();
+    private static final Map<String, TokenType> map = new HashMap<>();
 
     static {
       for (TokenType type : TokenType.values()) {
@@ -483,7 +482,7 @@ public class SqlSimpleParser {
 
     public Query(List<Token> tokenList) {
       super(TokenType.QUERY);
-      this.tokenList = new ArrayList<Token>(tokenList);
+      this.tokenList = new ArrayList<>(tokenList);
     }
 
     public void unparse(StringBuilder buf) {
@@ -664,7 +663,7 @@ public class SqlSimpleParser {
         }
 
         List<Token> selectItem =
-            new ArrayList<Token>(
+            new ArrayList<>(
                 sublist.subList(itemStart, itemEnd));
         Token select = sublist.get(0);
         sublist.clear();
@@ -683,7 +682,7 @@ public class SqlSimpleParser {
 
     private void purgeSelectExprsKeepAliases() {
       List<Token> sublist = findClause(TokenType.SELECT);
-      List<Token> newSelectClause = new ArrayList<Token>();
+      List<Token> newSelectClause = new ArrayList<>();
       newSelectClause.add(sublist.get(0));
       int itemStart = 1;
       for (int i = 1; i < sublist.size(); i++) {
@@ -749,7 +748,7 @@ public class SqlSimpleParser {
           itemEnd = sublist.size();
         }
         List<Token> fromItem =
-            new ArrayList<Token>(
+            new ArrayList<>(
                 sublist.subList(itemStart, itemEnd));
         Token from = sublist.get(0);
         sublist.clear();

http://git-wip-us.apache.org/repos/asf/calcite/blob/295ab13e/core/src/main/java/org/apache/calcite/sql/fun/SqlCaseOperator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/fun/SqlCaseOperator.java 
b/core/src/main/java/org/apache/calcite/sql/fun/SqlCaseOperator.java
index ec92b48..97e1ba0 100644
--- a/core/src/main/java/org/apache/calcite/sql/fun/SqlCaseOperator.java
+++ b/core/src/main/java/org/apache/calcite/sql/fun/SqlCaseOperator.java
@@ -227,8 +227,8 @@ public class SqlCaseOperator extends SqlOperator {
       SqlCallBinding callBinding) {
     SqlCase caseCall = (SqlCase) callBinding.getCall();
     SqlNodeList thenList = caseCall.getThenOperands();
-    ArrayList<SqlNode> nullList = new ArrayList<SqlNode>();
-    List<RelDataType> argTypes = new ArrayList<RelDataType>();
+    ArrayList<SqlNode> nullList = new ArrayList<>();
+    List<RelDataType> argTypes = new ArrayList<>();
     for (SqlNode node : thenList) {
       argTypes.add(
           callBinding.getValidator().deriveType(
@@ -263,7 +263,7 @@ public class SqlCaseOperator extends SqlOperator {
     assert (argTypes.size() % 2) == 1 : "odd number of arguments expected: "
         + argTypes.size();
     assert argTypes.size() > 1 : argTypes.size();
-    List<RelDataType> thenTypes = new ArrayList<RelDataType>();
+    List<RelDataType> thenTypes = new ArrayList<>();
     for (int j = 1; j < (argTypes.size() - 1); j += 2) {
       thenTypes.add(argTypes.get(j));
     }

Reply via email to