You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by mm...@apache.org on 2018/07/20 17:41:35 UTC

[22/53] [abbrv] calcite git commit: [CALCITE-2259] Allow Java 8 syntax

[CALCITE-2259] Allow Java 8 syntax

In summary: use lambdas where possible, switch from Guava function
types to Java function types or lambdas, but continue to use Guava
components (such as immutable collections and cache) that have no
equivalent in the Java runtime.

1. Change single-abstract-method (SAM) classes to lambdas. Preserve
formatting wherever possible.

2. Change AssertQuery.returns argument type from Guava Function to Java
Consumer. If you are using a lambda and see 'returns is deprecated',
remove the 'return null;' line, and the lambda will become a Consumer
(whose return is void).

3. Change RelOptRuleOperand and RelOptRule.operand methods to take Java
Predicate rather than Guava Predicate.

4. Change the argument of Hook.add and .addThread from Guava Function to
Java Consumer.

5. Change 'list.toArray(new T[list.size()])' to 'list.toArray(new T[0])'
because the latter is simpler, and just as efficient on recent Java
versions.

6. Resource references; change "try (Closeable ignore = foo())" to "try
  (foo())", especially uses of TryThreadLocal and Hook.Closeable.

7. Convert linq4j Function1 to java Function, Function2 to java BiFunction

8. Fix occurrences of Intellij's "Explicit type can be replaced with
<>" inspection. (Occurs for "List<String> list = new
ArrayList<String>();".)

9. Change Guava Preconditions.checkNotNull to Java
Objects.requireNonNull. (Kevin Risden)

10. Break out anonymous classes and fix dependency problems.

11. Use CacheLoader.of(Function) where possible.

12. Replace sub-classes of ThreadLocal with ThreadLocal.withInitial().

13. Replace Guava collection methods with calls to Java collection types,
for example replace Lists.newArrayList() with new ArrayList<>(),
Maps.newHashSet() with new HashSet<>(), similarly Sets.

14. Replace Guava Joiner with String.join.

15. Replace Collections.emptyList() with ImmutableList.of() in a few
places.

For backwards compatibility, we preserved (and deprecated) the old
methods that used Guava types. In a few cases where new and old have
the same signature (after erasure), we could not add a method with the
same name, so we gave the new method a "J" suffix. Examples include
Hook.property and .propertyJ, RelOptRule.operand and .operandJ.

In test code, we have not slavishly ensured backwards compatibility.

We do not intend to remove uses of Guava's immutable collections.

We have ignored Intellij's "Pseudo functional style code" inspection
most of the time, but in a few cases have converted Lists.transform(),
Iterables.transform(), and Iterables.filter() into Java streams. Use
the Util.toImmutableList() collector if the result is to be an
immutable list. Use Util.transform() rather than Lists.transform()
if you have a Java function rather than a Guava function or lambda.

Not covered in this change (might be done in future):
* Convert Collections.sort(list) to list.sort.
* Review uses of 'for (Map.Entry<K, V> e : map.entrySet())' and see
  whether it makes sense to convert to 'map.forEach((k, v) ->
  ...)'. Intellij inspection is called 'Replace with Map.forEach'.

Breaking changes:
* LatticeStatisticProvider.Factory, result of RexUtil.notFun(), and
  arguments to Mappings.target() are Function (was Guava, now Java)
* Argument to SqlSpecialOperator.TokenSequence.parser() is Predicate
  (was Guava, now Java)
* AggregateNode.AccumulatorFactory extends Supplier (was Guava, now Java)


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

Branch: refs/heads/site
Commit: d59b639d27da704f00eff616324a2c04aa06f84c
Parents: 5bbc501
Author: Julian Hyde <jh...@apache.org>
Authored: Thu Jul 5 13:21:59 2018 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Sun Jul 8 10:16:26 2018 -0700

----------------------------------------------------------------------
 .../adapter/cassandra/CassandraRules.java       |   42 +-
 .../adapter/cassandra/CassandraSchema.java      |   21 +-
 .../adapter/cassandra/CassandraTable.java       |   51 +-
 .../CassandraToEnumerableConverter.java         |    8 +-
 .../CassandraToEnumerableConverterRule.java     |    4 +-
 core/src/main/codegen/templates/Parser.jj       |   16 +-
 .../calcite/adapter/clone/ArrayTable.java       |    8 +-
 .../calcite/adapter/clone/CloneSchema.java      |   34 +-
 .../calcite/adapter/clone/ColumnLoader.java     |   37 +-
 .../apache/calcite/adapter/clone/ListTable.java |    3 +-
 .../elasticsearch/ElasticsearchFilter.java      |    1 -
 .../elasticsearch/ElasticsearchProject.java     |   20 +-
 .../elasticsearch/ElasticsearchTableScan.java   |    5 +-
 .../ElasticsearchToEnumerableConverter.java     |   11 +-
 .../ElasticsearchToEnumerableConverterRule.java |    4 +-
 .../calcite/adapter/enumerable/EnumUtils.java   |   12 +-
 .../adapter/enumerable/EnumerableAggregate.java |    3 +-
 .../adapter/enumerable/EnumerableBindable.java  |   20 +-
 .../adapter/enumerable/EnumerableCalc.java      |   14 +-
 .../adapter/enumerable/EnumerableCalcRule.java  |   10 +-
 .../enumerable/EnumerableCorrelateRule.java     |    4 +-
 .../adapter/enumerable/EnumerableFilter.java    |   18 +-
 .../enumerable/EnumerableFilterRule.java        |    9 +-
 .../enumerable/EnumerableInterpreterRule.java   |    4 +-
 .../adapter/enumerable/EnumerableLimit.java     |   16 +-
 .../adapter/enumerable/EnumerableMergeJoin.java |    2 +-
 .../enumerable/EnumerableMergeJoinRule.java     |    9 +-
 .../adapter/enumerable/EnumerableProject.java   |   20 +-
 .../enumerable/EnumerableProjectRule.java       |    9 +-
 .../adapter/enumerable/EnumerableRel.java       |   26 +-
 .../enumerable/EnumerableRelImplementor.java    |   50 +-
 .../EnumerableTableFunctionScanRule.java        |    4 +-
 .../enumerable/EnumerableTableModifyRule.java   |    4 +-
 .../adapter/enumerable/EnumerableTableScan.java |   17 +-
 .../enumerable/EnumerableTableScanRule.java     |    4 +-
 .../adapter/enumerable/EnumerableUncollect.java |    2 +-
 .../adapter/enumerable/EnumerableValues.java    |   15 +-
 .../enumerable/EnumerableValuesRule.java        |    4 +-
 .../adapter/enumerable/EnumerableWindow.java    |  203 ++-
 .../enumerable/NestedBlockBuilderImpl.java      |    6 +-
 .../adapter/enumerable/PhysTypeImpl.java        |   24 +-
 .../calcite/adapter/enumerable/RexImpTable.java |  198 ++-
 .../adapter/enumerable/RexToLixTranslator.java  |    8 +-
 .../enumerable/impl/WinAggAddContextImpl.java   |   10 +-
 .../impl/WinAggResultContextImpl.java           |   13 +-
 .../apache/calcite/adapter/jdbc/JdbcRules.java  |   64 +-
 .../apache/calcite/adapter/jdbc/JdbcSchema.java |    6 +-
 .../apache/calcite/adapter/jdbc/JdbcTable.java  |   25 +-
 .../jdbc/JdbcToEnumerableConverterRule.java     |    4 +-
 .../apache/calcite/adapter/jdbc/JdbcUtils.java  |   41 +-
 .../config/CalciteConnectionConfigImpl.java     |    2 +-
 .../calcite/interpreter/AggregateNode.java      |   23 +-
 .../apache/calcite/interpreter/Bindables.java   |   54 +-
 .../calcite/interpreter/InterpretableRel.java   |    8 +-
 .../apache/calcite/interpreter/Interpreter.java |    6 +-
 .../calcite/interpreter/JaninoRexCompiler.java  |   19 +-
 .../apache/calcite/interpreter/JoinNode.java    |    4 +-
 .../NoneToBindableConverterRule.java            |    4 +-
 .../apache/calcite/interpreter/SortNode.java    |   34 +-
 .../calcite/interpreter/TableScanNode.java      |   41 +-
 .../apache/calcite/interpreter/UnionNode.java   |    4 +-
 .../apache/calcite/interpreter/ValuesNode.java  |    4 +-
 .../calcite/jdbc/CalciteConnectionImpl.java     |   43 +-
 .../apache/calcite/jdbc/CalciteMetaImpl.java    |  187 +--
 .../org/apache/calcite/jdbc/CalcitePrepare.java |   13 +-
 .../apache/calcite/jdbc/CalciteResultSet.java   |    7 +-
 .../org/apache/calcite/jdbc/CalciteSchema.java  |   27 +-
 .../org/apache/calcite/jdbc/JavaRecordType.java |    4 +-
 .../calcite/jdbc/JavaTypeFactoryImpl.java       |   15 +-
 .../org/apache/calcite/jdbc/MetadataSchema.java |   12 +-
 .../CachingLatticeStatisticProvider.java        |   10 +-
 .../org/apache/calcite/materialize/Lattice.java |   98 +-
 .../materialize/LatticeStatisticProvider.java   |    3 +-
 .../materialize/MaterializationActor.java       |   10 +-
 .../materialize/MaterializationService.java     |   46 +-
 .../ProfilerLatticeStatisticProvider.java       |   88 +-
 .../SqlLatticeStatisticProvider.java            |   24 +-
 .../calcite/materialize/TileSuggester.java      |   12 +-
 .../calcite/plan/AbstractRelOptPlanner.java     |    9 +-
 .../java/org/apache/calcite/plan/Contexts.java  |    9 +-
 .../apache/calcite/plan/ConventionTraitDef.java |    9 +-
 .../apache/calcite/plan/RelCompositeTrait.java  |    6 +-
 .../org/apache/calcite/plan/RelOptCluster.java  |    7 +-
 .../calcite/plan/RelOptMaterialization.java     |   18 +-
 .../calcite/plan/RelOptMaterializations.java    |   31 +-
 .../calcite/plan/RelOptPredicateList.java       |   13 +-
 .../org/apache/calcite/plan/RelOptRule.java     |   62 +-
 .../org/apache/calcite/plan/RelOptRuleCall.java |    2 +-
 .../apache/calcite/plan/RelOptRuleOperand.java  |    9 +-
 .../calcite/plan/RelOptRuleOperandChildren.java |    4 +-
 .../org/apache/calcite/plan/RelOptUtil.java     |  118 +-
 .../org/apache/calcite/plan/RelTraitDef.java    |    7 +-
 .../org/apache/calcite/plan/RelTraitSet.java    |    4 +-
 .../calcite/plan/RexImplicationChecker.java     |   12 +-
 .../java/org/apache/calcite/plan/Strong.java    |    4 +-
 .../calcite/plan/SubstitutionVisitor.java       |   46 +-
 .../org/apache/calcite/plan/hep/HepPlanner.java |    4 +-
 .../plan/hep/HepRelMetadataProvider.java        |   21 +-
 .../apache/calcite/plan/volcano/RelSubset.java  |   17 +-
 .../apache/calcite/plan/volcano/RuleQueue.java  |   49 +-
 .../calcite/plan/volcano/VolcanoPlanner.java    |   37 +-
 .../volcano/VolcanoRelMetadataProvider.java     |  103 +-
 .../calcite/plan/volcano/VolcanoRuleCall.java   |    2 +-
 .../calcite/prepare/CalciteCatalogReader.java   |   99 +-
 .../calcite/prepare/CalciteMaterializer.java    |    4 +-
 .../calcite/prepare/CalcitePrepareImpl.java     |   79 +-
 .../calcite/prepare/LixToRelTranslator.java     |    4 +-
 .../org/apache/calcite/prepare/PlannerImpl.java |   23 +-
 .../org/apache/calcite/prepare/Prepare.java     |   12 +-
 .../apache/calcite/prepare/RelOptTableImpl.java |   41 +-
 .../apache/calcite/profile/ProfilerImpl.java    |   65 +-
 .../apache/calcite/profile/SimpleProfiler.java  |   26 +-
 .../org/apache/calcite/rel/RelCollations.java   |   10 +-
 .../apache/calcite/rel/RelDistributions.java    |    3 +-
 .../apache/calcite/rel/RelFieldCollation.java   |    6 +-
 .../java/org/apache/calcite/rel/RelRoot.java    |    4 +-
 .../calcite/rel/convert/ConverterRule.java      |   25 +-
 .../org/apache/calcite/rel/core/Aggregate.java  |   51 +-
 .../apache/calcite/rel/core/AggregateCall.java  |    5 +-
 .../org/apache/calcite/rel/core/Correlate.java  |    3 +-
 .../org/apache/calcite/rel/core/EquiJoin.java   |    7 +-
 .../org/apache/calcite/rel/core/Exchange.java   |    5 +-
 .../java/org/apache/calcite/rel/core/Join.java  |    6 +-
 .../org/apache/calcite/rel/core/JoinInfo.java   |    9 +-
 .../java/org/apache/calcite/rel/core/Match.java |    9 +-
 .../org/apache/calcite/rel/core/Project.java    |    9 +-
 .../apache/calcite/rel/core/RelFactories.java   |    3 +-
 .../org/apache/calcite/rel/core/SemiJoin.java   |    5 +-
 .../java/org/apache/calcite/rel/core/SetOp.java |    9 +-
 .../apache/calcite/rel/core/SortExchange.java   |    4 +-
 .../calcite/rel/core/TableFunctionScan.java     |    2 +-
 .../apache/calcite/rel/core/TableModify.java    |    5 +-
 .../org/apache/calcite/rel/core/Values.java     |   86 +-
 .../apache/calcite/rel/logical/LogicalCalc.java |   15 +-
 .../calcite/rel/logical/LogicalFilter.java      |   26 +-
 .../apache/calcite/rel/logical/LogicalJoin.java |   14 +-
 .../calcite/rel/logical/LogicalProject.java     |   12 +-
 .../calcite/rel/logical/LogicalTableScan.java   |   17 +-
 .../calcite/rel/logical/LogicalValues.java      |   12 +-
 .../calcite/rel/logical/LogicalWindow.java      |   16 +-
 .../metadata/CachingRelMetadataProvider.java    |   18 +-
 .../metadata/ChainedRelMetadataProvider.java    |   23 +-
 .../rel/metadata/JaninoRelMetadataProvider.java |   12 +-
 .../rel/metadata/MetadataFactoryImpl.java       |   23 +-
 .../metadata/ReflectiveRelMetadataProvider.java |  137 +-
 .../rel/metadata/RelMdAllPredicates.java        |   23 +-
 .../calcite/rel/metadata/RelMdCollation.java    |    9 +-
 .../rel/metadata/RelMdColumnUniqueness.java     |   10 -
 .../rel/metadata/RelMdExpressionLineage.java    |   37 +-
 .../calcite/rel/metadata/RelMdPredicates.java   |   34 +-
 .../apache/calcite/rel/metadata/RelMdSize.java  |    4 +-
 .../rel/metadata/RelMdTableReferences.java      |    4 +-
 .../calcite/rel/metadata/RelMetadataQuery.java  |   24 +-
 .../calcite/rel/metadata/UnboundMetadata.java   |    1 +
 .../calcite/rel/mutable/MutableMultiRel.java    |    8 +-
 .../apache/calcite/rel/mutable/MutableRel.java  |    8 +-
 .../apache/calcite/rel/mutable/MutableRels.java |   17 +-
 .../calcite/rel/rel2sql/RelToSqlConverter.java  |   19 +-
 .../calcite/rel/rel2sql/SqlImplementor.java     |    8 +-
 .../rel/rules/AbstractMaterializedViewRule.java |   24 +-
 .../AggregateExpandDistinctAggregatesRule.java  |    6 +-
 .../rel/rules/AggregateExtractProjectRule.java  |   27 +-
 .../rel/rules/AggregateFilterTransposeRule.java |   11 +-
 .../rel/rules/AggregateJoinTransposeRule.java   |   42 +-
 .../rel/rules/AggregateProjectMergeRule.java    |    6 +-
 .../AggregateProjectPullUpConstantsRule.java    |    2 +-
 .../rel/rules/AggregateReduceFunctionsRule.java |   11 +-
 .../rel/rules/AggregateStarTableRule.java       |   10 +-
 .../rel/rules/AggregateUnionAggregateRule.java  |    2 +-
 .../rel/rules/AggregateUnionTransposeRule.java  |    4 +-
 .../calcite/rel/rules/AggregateValuesRule.java  |    7 +-
 .../calcite/rel/rules/CalcRelSplitter.java      |    2 +-
 .../calcite/rel/rules/DateRangeRules.java       |   41 +-
 .../rel/rules/FilterAggregateTransposeRule.java |    6 +-
 .../calcite/rel/rules/FilterJoinRule.java       |   18 +-
 .../calcite/rel/rules/FilterTableScanRule.java  |   30 +-
 .../calcite/rel/rules/JoinAssociateRule.java    |    9 +-
 .../rel/rules/JoinProjectTransposeRule.java     |    2 +-
 .../calcite/rel/rules/JoinToMultiJoinRule.java  |   18 +-
 .../apache/calcite/rel/rules/LoptJoinTree.java  |   13 +-
 .../apache/calcite/rel/rules/LoptMultiJoin.java |    5 +-
 .../calcite/rel/rules/LoptOptimizeJoinRule.java |    8 +-
 .../rules/MaterializedViewFilterScanRule.java   |    2 +-
 .../rel/rules/MultiJoinOptimizeBushyRule.java   |   19 +-
 .../rules/ProjectCorrelateTransposeRule.java    |    3 +-
 .../rel/rules/ProjectFilterTransposeRule.java   |    6 +-
 .../rel/rules/ProjectJoinTransposeRule.java     |    3 +-
 .../calcite/rel/rules/ProjectRemoveRule.java    |   15 +-
 .../rel/rules/ProjectSetOpTransposeRule.java    |    4 +-
 .../calcite/rel/rules/ProjectTableScanRule.java |   26 +-
 .../calcite/rel/rules/ProjectToWindowRule.java  |   35 +-
 .../calcite/rel/rules/PruneEmptyRules.java      |   42 +-
 .../apache/calcite/rel/rules/PushProjector.java |   31 +-
 .../rel/rules/ReduceExpressionsRule.java        |   14 +-
 .../apache/calcite/rel/rules/SemiJoinRule.java  |   36 +-
 .../rel/rules/SortJoinTransposeRule.java        |    1 -
 .../rel/rules/SortProjectTransposeRule.java     |    2 +-
 .../calcite/rel/rules/SubQueryRemoveRule.java   |    9 +-
 .../rel/rules/UnionPullUpConstantsRule.java     |    2 +-
 .../calcite/rel/rules/ValuesReduceRule.java     |    6 +-
 .../apache/calcite/rel/stream/StreamRules.java  |    9 +-
 .../calcite/rel/type/DynamicRecordTypeImpl.java |    5 +-
 .../calcite/rel/type/RelDataTypeFactory.java    |    5 +-
 .../rel/type/RelDataTypeFactoryImpl.java        |   40 +-
 .../calcite/rel/type/RelDataTypeField.java      |   14 +-
 .../calcite/rel/type/RelDataTypeImpl.java       |   36 +-
 .../apache/calcite/rel/type/RelRecordType.java  |    5 +-
 .../java/org/apache/calcite/rex/RexBuilder.java |   27 +-
 .../java/org/apache/calcite/rex/RexCall.java    |    6 +-
 .../apache/calcite/rex/RexCorrelVariable.java   |    4 +-
 .../org/apache/calcite/rex/RexExecutorImpl.java |    7 +-
 .../java/org/apache/calcite/rex/RexLiteral.java |    4 +-
 .../java/org/apache/calcite/rex/RexOver.java    |    3 +-
 .../calcite/rex/RexPermuteInputsShuttle.java    |    2 +-
 .../java/org/apache/calcite/rex/RexProgram.java |    5 +-
 .../apache/calcite/rex/RexProgramBuilder.java   |    7 +-
 .../java/org/apache/calcite/rex/RexShuttle.java |    9 +-
 .../org/apache/calcite/rex/RexSimplify.java     |   22 +-
 .../rex/RexSqlStandardConvertletTable.java      |   80 +-
 .../org/apache/calcite/rex/RexSubQuery.java     |    4 +-
 .../java/org/apache/calcite/rex/RexUtil.java    |  243 ++-
 .../apache/calcite/runtime/BinarySearch.java    |    8 +-
 .../org/apache/calcite/runtime/Enumerables.java |   32 +-
 .../org/apache/calcite/runtime/FlatLists.java   |   24 +
 .../apache/calcite/runtime/GeoFunctions.java    |    7 +-
 .../java/org/apache/calcite/runtime/Hook.java   |   85 +-
 .../org/apache/calcite/runtime/HttpUtils.java   |    9 +-
 .../apache/calcite/runtime/PredicateImpl.java   |    3 +
 .../calcite/runtime/ResultSetEnumerable.java    |  138 +-
 .../apache/calcite/runtime/SqlFunctions.java    |   68 +-
 .../calcite/schema/FunctionParameter.java       |    8 -
 .../java/org/apache/calcite/schema/Schemas.java |   63 +-
 .../org/apache/calcite/schema/Statistics.java   |   12 +-
 .../java/org/apache/calcite/schema/Table.java   |    6 +-
 .../calcite/schema/impl/AbstractSchema.java     |    4 -
 .../schema/impl/AggregateFunctionImpl.java      |    6 +-
 .../schema/impl/MaterializedViewTable.java      |    5 +-
 .../schema/impl/ModifiableViewTable.java        |    4 +-
 .../apache/calcite/schema/impl/StarTable.java   |    4 +-
 .../org/apache/calcite/sql/SqlBasicCall.java    |    7 +-
 .../calcite/sql/SqlBinaryStringLiteral.java     |   14 +-
 .../java/org/apache/calcite/sql/SqlCall.java    |    2 +-
 .../org/apache/calcite/sql/SqlCallBinding.java  |   26 +-
 .../calcite/sql/SqlCharStringLiteral.java       |   13 +-
 .../org/apache/calcite/sql/SqlDataTypeSpec.java |    6 +-
 .../java/org/apache/calcite/sql/SqlDdl.java     |    4 +-
 .../apache/calcite/sql/SqlDescribeSchema.java   |    2 +-
 .../apache/calcite/sql/SqlDescribeTable.java    |    2 +-
 .../java/org/apache/calcite/sql/SqlDialect.java |   51 +-
 .../org/apache/calcite/sql/SqlFunction.java     |   14 +-
 .../org/apache/calcite/sql/SqlIdentifier.java   |   28 +-
 .../calcite/sql/SqlIntervalQualifier.java       |    5 +-
 .../apache/calcite/sql/SqlJdbcFunctionCall.java |    4 +-
 .../java/org/apache/calcite/sql/SqlJoin.java    |   11 +-
 .../apache/calcite/sql/SqlMatchRecognize.java   |   19 +-
 .../java/org/apache/calcite/sql/SqlNode.java    |    5 +-
 .../org/apache/calcite/sql/SqlNodeList.java     |    2 +-
 .../org/apache/calcite/sql/SqlOperator.java     |    2 +-
 .../java/org/apache/calcite/sql/SqlSelect.java  |   11 +-
 .../org/apache/calcite/sql/SqlSetOption.java    |    5 +-
 .../apache/calcite/sql/SqlSpecialOperator.java  |    2 +-
 .../java/org/apache/calcite/sql/SqlUtil.java    |  140 +-
 .../apache/calcite/sql/advise/SqlAdvisor.java   |   19 +-
 .../sql/advise/SqlAdvisorGetHintsFunction.java  |   14 +-
 .../calcite/sql/advise/SqlAdvisorHint.java      |    2 +-
 .../sql/dialect/JethroDataSqlDialect.java       |    8 +-
 .../calcite/sql/dialect/MssqlSqlDialect.java    |    2 -
 .../calcite/sql/fun/OracleSqlOperatorTable.java |   27 +-
 .../sql/fun/SqlDatetimeSubtractionOperator.java |    2 -
 .../calcite/sql/fun/SqlLeadLagAggFunction.java  |   26 +-
 .../calcite/sql/fun/SqlQuantifyOperator.java    |    4 +-
 .../calcite/sql/fun/SqlStdOperatorTable.java    |    4 +-
 .../sql/fun/SqlTimestampAddFunction.java        |   13 +-
 .../sql/parser/SqlAbstractParserImpl.java       |    4 +-
 .../apache/calcite/sql/parser/SqlParser.java    |   21 +-
 .../apache/calcite/sql/parser/SqlParserPos.java |   12 +-
 .../calcite/sql/parser/SqlParserUtil.java       |   73 +-
 .../calcite/sql/pretty/SqlPrettyWriter.java     |    2 +-
 .../apache/calcite/sql/type/ArraySqlType.java   |    4 +-
 .../sql/type/ComparableOperandTypeChecker.java  |    4 +-
 .../sql/type/CompositeOperandTypeChecker.java   |    6 +-
 .../sql/type/FamilyOperandTypeChecker.java      |    6 +-
 .../org/apache/calcite/sql/type/InferTypes.java |   87 +-
 .../calcite/sql/type/IntervalSqlType.java       |   10 +-
 .../apache/calcite/sql/type/OperandTypes.java   |   18 +-
 .../apache/calcite/sql/type/ReturnTypes.java    |  576 ++++----
 .../sql/type/SqlTypeAssignmentRules.java        |   16 +-
 .../calcite/sql/type/SqlTypeTransforms.java     |   98 +-
 .../apache/calcite/sql/type/SqlTypeUtil.java    |   11 +-
 .../org/apache/calcite/sql/util/SqlShuttle.java |    2 +-
 .../apache/calcite/sql/validate/AggChecker.java |    2 +-
 .../apache/calcite/sql/validate/AggVisitor.java |    5 +-
 .../sql/validate/AggregatingSelectScope.java    |   29 +-
 .../calcite/sql/validate/CatalogScope.java      |   22 +-
 .../calcite/sql/validate/DelegatingScope.java   |    2 +-
 .../sql/validate/IdentifierNamespace.java       |    6 +-
 .../apache/calcite/sql/validate/ListScope.java  |    8 +-
 .../calcite/sql/validate/SchemaNamespace.java   |    4 +-
 .../apache/calcite/sql/validate/ScopeChild.java |   15 -
 .../sql/validate/SqlIdentifierMoniker.java      |    5 +-
 .../calcite/sql/validate/SqlMonikerImpl.java    |    3 +-
 .../sql/validate/SqlUserDefinedAggFunction.java |   14 +-
 .../sql/validate/SqlUserDefinedFunction.java    |    3 +-
 .../sql/validate/SqlUserDefinedTableMacro.java  |   12 +-
 .../calcite/sql/validate/SqlValidatorImpl.java  |   58 +-
 .../calcite/sql/validate/SqlValidatorScope.java |   20 +-
 .../calcite/sql/validate/SqlValidatorUtil.java  |   44 +-
 .../calcite/sql/validate/TableNamespace.java    |   25 +-
 .../apache/calcite/sql/validate/TableScope.java |    6 +-
 .../calcite/sql/validate/UnnestNamespace.java   |    1 -
 .../sql2rel/ReflectiveConvertletTable.java      |   57 +-
 .../apache/calcite/sql2rel/RelDecorrelator.java |  128 +-
 .../apache/calcite/sql2rel/RelFieldTrimmer.java |    9 +-
 .../sql2rel/RelStructuredTypeFlattener.java     |   28 +-
 .../calcite/sql2rel/SqlToRelConverter.java      |   85 +-
 .../sql2rel/StandardConvertletTable.java        |  311 ++--
 .../org/apache/calcite/tools/Frameworks.java    |   19 +-
 .../java/org/apache/calcite/tools/Programs.java |  177 +--
 .../org/apache/calcite/tools/RelBuilder.java    |  145 +-
 .../java/org/apache/calcite/util/BitSets.java   |   28 +-
 .../org/apache/calcite/util/CancelFlag.java     |    5 +-
 .../org/apache/calcite/util/Compatible.java     |   96 +-
 .../apache/calcite/util/CompatibleGuava11.java  |   31 +-
 .../apache/calcite/util/ImmutableBitSet.java    |   70 +-
 .../calcite/util/ImmutableNullableList.java     |    6 +-
 .../apache/calcite/util/IntegerIntervalSet.java |   20 +-
 .../java/org/apache/calcite/util/NameSet.java   |   17 +-
 .../main/java/org/apache/calcite/util/Pair.java |  255 ++--
 .../calcite/util/PartiallyOrderedSet.java       |   41 +-
 .../calcite/util/PrecedenceClimbingParser.java  |   10 +-
 .../org/apache/calcite/util/ReflectUtil.java    |    4 +-
 .../java/org/apache/calcite/util/Sources.java   |    7 +-
 .../org/apache/calcite/util/TryThreadLocal.java |   12 +-
 .../calcite/util/UnmodifiableArrayList.java     |    5 +-
 .../main/java/org/apache/calcite/util/Util.java |  112 +-
 .../java/org/apache/calcite/util/XmlOutput.java |    4 +-
 .../util/graph/BreadthFirstIterator.java        |    6 +-
 .../util/graph/DefaultDirectedGraph.java        |    2 +-
 .../apache/calcite/util/graph/DefaultEdge.java  |    6 +-
 .../calcite/util/graph/DepthFirstIterator.java  |    8 +-
 .../util/graph/TopologicalOrderIterator.java    |    6 +-
 .../calcite/util/javac/JavaCompilerArgs.java    |    6 +-
 .../apache/calcite/util/mapping/Mappings.java   |   60 +-
 .../apache/calcite/util/trace/CalciteTrace.java |    6 +-
 .../calcite/jdbc/CalciteRemoteDriverTest.java   |   84 +-
 .../org/apache/calcite/plan/RelOptUtilTest.java |    7 +-
 .../org/apache/calcite/plan/RelWriterTest.java  |  100 +-
 .../calcite/plan/volcano/ComboRuleTest.java     |    1 -
 .../plan/volcano/TraitConversionTest.java       |    1 -
 .../plan/volcano/TraitPropagationTest.java      |    9 +-
 .../prepare/LookupOperatorOverloadsTest.java    |    2 +-
 .../apache/calcite/profile/ProfilerTest.java    |  374 +++--
 .../apache/calcite/rel/RelCollationTest.java    |    9 +-
 .../rel/rel2sql/RelToSqlConverterTest.java      |   21 +-
 .../calcite/rel/rules/DateRangeRulesTest.java   |   20 +-
 .../org/apache/calcite/rex/RexExecutorTest.java |  302 ++--
 .../calcite/runtime/BinarySearchTest.java       |    4 +-
 .../apache/calcite/runtime/EnumerablesTest.java |   79 +-
 .../calcite/sql/parser/SqlParserTest.java       |    6 +-
 .../calcite/sql/test/DefaultSqlTestFactory.java |   53 +-
 .../calcite/sql/test/SqlOperatorBaseTest.java   |   23 +-
 .../apache/calcite/sql/test/SqlTesterImpl.java  |   64 +-
 .../org/apache/calcite/sql/test/SqlTests.java   |   21 +-
 .../calcite/sql/type/SqlTypeFactoryTest.java    |    1 -
 .../org/apache/calcite/test/CalciteAssert.java  |  489 +++---
 .../apache/calcite/test/CollectionTypeTest.java |    3 +-
 .../calcite/test/ExceptionMessageTest.java      |    7 +-
 .../test/FoodMartLatticeStatisticProvider.java  |    8 +-
 .../calcite/test/InduceGroupingTypeTest.java    |   29 +-
 .../apache/calcite/test/InterpreterTest.java    |    5 +-
 .../apache/calcite/test/JdbcAdapterTest.java    |  201 ++-
 .../calcite/test/JdbcFrontJdbcBackTest.java     |  128 +-
 .../calcite/test/JdbcFrontLinqBackTest.java     |   57 +-
 .../java/org/apache/calcite/test/JdbcTest.java  | 1392 ++++++++----------
 .../org/apache/calcite/test/LatticeTest.java    |  103 +-
 .../calcite/test/LinqFrontJdbcBackTest.java     |    3 +-
 .../java/org/apache/calcite/test/Matchers.java  |   37 +-
 .../calcite/test/MaterializationTest.java       |   79 +-
 .../apache/calcite/test/MockCatalogReader.java  |   41 +-
 .../apache/calcite/test/MockRelOptPlanner.java  |    6 +-
 .../calcite/test/MultiJdbcSchemaJoinTest.java   |    3 +-
 .../org/apache/calcite/test/MutableRelTest.java |    4 +-
 .../org/apache/calcite/test/QuidemTest.java     |   77 +-
 .../calcite/test/ReflectiveSchemaTest.java      |  209 ++-
 .../org/apache/calcite/test/RelBuilderTest.java |    2 +-
 .../apache/calcite/test/RelMetadataTest.java    |  209 ++-
 .../apache/calcite/test/RelOptRulesTest.java    |   94 +-
 .../org/apache/calcite/test/RelOptTestBase.java |   66 +-
 .../org/apache/calcite/test/RexProgramTest.java |    5 +-
 .../apache/calcite/test/ScannableTableTest.java |   19 +-
 .../org/apache/calcite/test/SqlLineTest.java    |    2 +-
 .../org/apache/calcite/test/SqlTestGen.java     |    2 +-
 .../test/SqlToRelConverterExtendedTest.java     |   39 +-
 .../calcite/test/SqlToRelConverterTest.java     |   28 +-
 .../apache/calcite/test/SqlToRelTestBase.java   |   79 +-
 .../apache/calcite/test/SqlValidatorTest.java   |   57 +-
 .../calcite/test/SqlValidatorTestCase.java      |   11 +-
 .../org/apache/calcite/test/StreamTest.java     |  147 +-
 .../apache/calcite/test/TableFunctionTest.java  |   30 +-
 .../java/org/apache/calcite/test/UdfTest.java   |   48 +-
 .../ConcurrentTestTimedCommandGenerator.java    |   10 +-
 .../apache/calcite/tools/FrameworksTest.java    |  158 +-
 .../org/apache/calcite/tools/PlannerTest.java   |    3 +-
 .../org/apache/calcite/util/BitSetsTest.java    |    9 +-
 .../org/apache/calcite/util/ChunkListTest.java  |  199 ++-
 .../calcite/util/ImmutableBitSetTest.java       |   10 +-
 .../calcite/util/PartiallyOrderedSetTest.java   |  142 +-
 .../calcite/util/PermutationTestCase.java       |    1 -
 .../util/PrecedenceClimbingParserTest.java      |   11 +-
 .../java/org/apache/calcite/util/Smalls.java    |   49 +-
 .../java/org/apache/calcite/util/UtilTest.java  |  117 +-
 .../calcite/util/graph/DirectedGraphTest.java   |   20 +-
 .../calcite/util/mapping/MappingTest.java       |    2 +-
 .../adapter/druid/DefaultDimensionSpec.java     |    6 +-
 .../adapter/druid/DruidConnectionImpl.java      |    6 +-
 .../adapter/druid/DruidDateTimeUtils.java       |   46 +-
 .../calcite/adapter/druid/DruidExpressions.java |   27 +-
 .../calcite/adapter/druid/DruidJsonFilter.java  |   12 +-
 .../calcite/adapter/druid/DruidQuery.java       |   48 +-
 .../calcite/adapter/druid/DruidRules.java       |   19 +-
 .../calcite/adapter/druid/DruidSchema.java      |   39 +-
 .../calcite/adapter/druid/DruidTable.java       |   16 +-
 .../adapter/druid/ExtractionDimensionSpec.java  |    6 +-
 .../adapter/druid/FloorOperatorConversion.java  |    1 -
 .../calcite/adapter/druid/Granularities.java    |    8 +-
 .../adapter/druid/NaryOperatorConverter.java    |    7 +-
 .../calcite/adapter/druid/VirtualColumn.java    |    6 +-
 .../adapter/druid/DruidQueryFilterTest.java     |    4 +-
 .../org/apache/calcite/test/DruidAdapterIT.java |  239 ++-
 .../apache/calcite/test/DruidAdapterIT2.java    |  237 ++-
 elasticsearch2/pom.xml                          |    4 -
 .../Elasticsearch2Enumerator.java               |   46 +-
 .../elasticsearch2/Elasticsearch2Schema.java    |    8 +-
 .../EmbeddedElasticsearchNode.java              |    3 +-
 .../EmbeddedElasticsearchPolicy.java            |    6 +-
 .../calcite/test/Elasticsearch2AdapterIT.java   |  265 ++++
 .../calcite/test/ElasticsearchChecker.java      |   22 +-
 elasticsearch5/pom.xml                          |    4 -
 .../Elasticsearch5Enumerator.java               |   44 +-
 .../elasticsearch5/Elasticsearch5Schema.java    |    7 +-
 .../EmbeddedElasticsearchNode.java              |    3 +-
 .../EmbeddedElasticsearchPolicy.java            |    7 +-
 .../calcite/test/Elasticsearch5AdapterIT.java   |  265 ++++
 .../calcite/test/ElasticsearchChecker.java      |   28 +-
 .../calcite/adapter/csv/CsvEnumerator.java      |    4 +-
 .../apache/calcite/adapter/csv/CsvSchema.java   |   14 +-
 .../java/org/apache/calcite/test/CsvTest.java   |  134 +-
 .../org/apache/calcite/example/maze/Maze.java   |   26 +-
 .../apache/calcite/example/maze/MazeTable.java  |    7 +-
 .../calcite/adapter/file/FileRowConverter.java  |    6 +-
 .../apache/calcite/adapter/file/FileSchema.java |   14 +-
 .../apache/calcite/adapter/file/SqlTest.java    |   80 +-
 .../calcite/adapter/geode/rel/GeodeRules.java   |   13 +-
 .../adapter/geode/rel/GeodeSchemaFactory.java   |    2 +-
 .../geode/rel/GeodeToEnumerableConverter.java   |    8 +-
 .../geode/util/JavaTypeFactoryExtImpl.java      |    1 -
 .../adapter/geode/rel/BaseGeodeAdapterIT.java   |   32 +-
 .../apache/calcite/linq4j/DefaultQueryable.java |    2 +-
 .../calcite/linq4j/EnumerableDefaults.java      |  157 +-
 .../org/apache/calcite/linq4j/Extensions.java   |  111 +-
 .../org/apache/calcite/linq4j/GroupingImpl.java |    7 +-
 .../java/org/apache/calcite/linq4j/Linq4j.java  |   16 +-
 .../java/org/apache/calcite/linq4j/Ord.java     |   36 +-
 .../calcite/linq4j/QueryableDefaults.java       |    4 +-
 .../calcite/linq4j/QueryableRecorder.java       |   16 +-
 .../calcite/linq4j/function/Function1.java      |    6 +-
 .../calcite/linq4j/function/Functions.java      |   69 +-
 .../calcite/linq4j/function/Predicate1.java     |   12 +-
 .../calcite/linq4j/function/Predicate2.java     |   12 +-
 .../linq4j/tree/ClassDeclarationFinder.java     |   32 +-
 .../calcite/linq4j/tree/ConstantExpression.java |   29 +-
 .../linq4j/tree/ConstructorDeclaration.java     |   18 +-
 .../linq4j/tree/DeterministicCodeOptimizer.java |    2 +-
 .../apache/calcite/linq4j/tree/Expressions.java |   16 +-
 .../calcite/linq4j/tree/FunctionExpression.java |   38 +-
 .../calcite/linq4j/tree/MethodDeclaration.java  |    8 +-
 .../calcite/linq4j/tree/TryStatement.java       |    6 +-
 .../org/apache/calcite/linq4j/tree/Types.java   |    6 +-
 .../test/java/com/example/Linq4jExample.java    |   27 +-
 .../calcite/linq4j/function/FunctionTest.java   |   61 +-
 .../calcite/linq4j/test/CorrelateJoinTest.java  |   42 +-
 .../calcite/linq4j/test/DeterministicTest.java  |   67 +-
 .../calcite/linq4j/test/ExpressionTest.java     |   27 +-
 .../apache/calcite/linq4j/test/Linq4jTest.java  |  727 +++------
 .../adapter/mongodb/MongoEnumerator.java        |   28 +-
 .../calcite/adapter/mongodb/MongoSchema.java    |    5 +-
 .../mongodb/MongoToEnumerableConverter.java     |    8 +-
 .../mongodb/MongoToEnumerableConverterRule.java |    4 +-
 .../adapter/mongodb/MongoAdapterTest.java       |   51 +-
 .../adapter/mongodb/MongoDatabasePolicy.java    |    7 +-
 .../apache/calcite/test/MongoAssertions.java    |   41 +-
 .../calcite/adapter/pig/PigAggregate.java       |   12 +-
 .../apache/calcite/adapter/pig/PigFilter.java   |    4 +-
 .../org/apache/calcite/adapter/pig/PigRel.java  |    4 +-
 .../calcite/adapter/pig/PigTableScan.java       |    4 +-
 .../org/apache/calcite/test/PigAdapterTest.java |   21 +-
 .../java/org/apache/calcite/piglet/Ast.java     |   22 +-
 piglet/src/main/javacc/PigletParser.jj          |   13 +-
 .../java/org/apache/calcite/test/Fluent.java    |   50 +-
 .../calcite/adapter/os/DuTableFunction.java     |    9 +-
 .../apache/calcite/adapter/os/Processes.java    |    3 +-
 .../org/apache/calcite/adapter/os/SqlShell.java |   57 +-
 .../calcite/adapter/tpcds/TpcdsSchema.java      |    5 +-
 .../calcite/chinook/EnvironmentFairy.java       |    7 +-
 .../calcite/adapter/os/OsAdapterTest.java       |  191 +--
 .../apache/calcite/adapter/tpcds/TpcdsTest.java |   35 +-
 .../apache/calcite/adapter/tpch/TpchTest.java   |   15 +-
 .../src/main/codegen/includes/parserImpls.ftl   |    6 +-
 .../calcite/sql/ddl/SqlCreateForeignSchema.java |    3 +-
 .../sql/ddl/SqlCreateMaterializedView.java      |    6 +-
 .../apache/calcite/sql/ddl/SqlCreateSchema.java |    7 +-
 .../apache/calcite/sql/ddl/SqlCreateTable.java  |   11 +-
 .../apache/calcite/sql/ddl/SqlCreateType.java   |    5 +-
 .../apache/calcite/sql/ddl/SqlCreateView.java   |    6 +-
 .../apache/calcite/sql/ddl/SqlDropObject.java   |    2 +-
 site/.gitignore                                 |    2 +-
 site/README.md                                  |    2 +-
 site/docker-compose.yml                         |    4 +-
 .../spark/EnumerableToSparkConverterRule.java   |    4 +-
 .../calcite/adapter/spark/HttpServer.java       |   22 +-
 .../adapter/spark/JdbcToSparkConverter.java     |    2 +-
 .../adapter/spark/JdbcToSparkConverterRule.java |    4 +-
 .../calcite/adapter/spark/SparkRules.java       |   48 +-
 .../apache/calcite/test/SplunkAdapterTest.java  |   68 +-
 src/main/config/forbidden-apis/signatures.txt   |   35 +
 525 files changed, 7983 insertions(+), 10608 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/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 94091b2..cdf86dc 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
@@ -38,17 +38,14 @@ import org.apache.calcite.rex.RexCall;
 import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.rex.RexVisitorImpl;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.sql.validate.SqlValidatorUtil;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Predicate;
 
 /**
  * Rules and relational operators for
@@ -95,7 +92,7 @@ public class CassandraRules {
 
     CassandraConverterRule(Class<? extends RelNode> clazz,
         String description) {
-      this(clazz, Predicates.<RelNode>alwaysTrue(), description);
+      this(clazz, r -> true, description);
     }
 
     <R extends RelNode> CassandraConverterRule(Class<R> clazz,
@@ -113,13 +110,9 @@ public class CassandraRules {
    */
   private static class CassandraFilterRule extends RelOptRule {
     private static final Predicate<LogicalFilter> PREDICATE =
-        new PredicateImpl<LogicalFilter>() {
-          public boolean test(LogicalFilter input) {
-            // TODO: Check for an equality predicate on the partition key
-            // Right now this just checks if we have a single top-level AND
-            return RelOptUtil.disjunctions(input.getCondition()).size() == 1;
-          }
-        };
+        // TODO: Check for an equality predicate on the partition key
+        // Right now this just checks if we have a single top-level AND
+        filter -> RelOptUtil.disjunctions(filter.getCondition()).size() == 1;
 
     private static final CassandraFilterRule INSTANCE = new CassandraFilterRule();
 
@@ -268,28 +261,21 @@ public class CassandraRules {
    * {@link CassandraSort}.
    */
   private static class CassandraSortRule extends RelOptRule {
-    private static final Predicate<Sort> SORT_PREDICATE =
-        new PredicateImpl<Sort>() {
-          public boolean test(Sort input) {
-            // Limits are handled by CassandraLimit
-            return input.offset == null && input.fetch == null;
-          }
-        };
-    private static final Predicate<CassandraFilter> FILTER_PREDICATE =
-        new PredicateImpl<CassandraFilter>() {
-          public boolean test(CassandraFilter input) {
-            // We can only use implicit sorting within a single partition
-            return input.isSinglePartition();
-          }
-        };
+
     private static final RelOptRuleOperand CASSANDRA_OP =
         operand(CassandraToEnumerableConverter.class,
-        operand(CassandraFilter.class, null, FILTER_PREDICATE, any()));
+            operandJ(CassandraFilter.class, null,
+                // We can only use implicit sorting within a single partition
+                CassandraFilter::isSinglePartition, any()));
 
     private static final CassandraSortRule INSTANCE = new CassandraSortRule();
 
     private CassandraSortRule() {
-      super(operand(Sort.class, null, SORT_PREDICATE, CASSANDRA_OP), "CassandraSortRule");
+      super(
+          operandJ(Sort.class, null,
+              // Limits are handled by CassandraLimit
+              sort -> sort.offset == null && sort.fetch == null, CASSANDRA_OP),
+          "CassandraSortRule");
     }
 
     public RelNode convert(Sort sort, CassandraFilter filter) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchema.java
----------------------------------------------------------------------
diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchema.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchema.java
index 709c7b4..f2bcdcd 100644
--- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchema.java
+++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchema.java
@@ -19,7 +19,6 @@ package org.apache.calcite.adapter.cassandra;
 import org.apache.calcite.avatica.util.Casing;
 import org.apache.calcite.jdbc.CalciteSchema;
 import org.apache.calcite.rel.RelFieldCollation;
-import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rel.type.RelDataTypeImpl;
 import org.apache.calcite.rel.type.RelDataTypeSystem;
@@ -50,7 +49,6 @@ import com.datastax.driver.core.KeyspaceMetadata;
 import com.datastax.driver.core.MaterializedViewMetadata;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.TableMetadata;
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
@@ -113,11 +111,8 @@ public class CassandraSchema extends AbstractSchema {
     this.parentSchema = parentSchema;
     this.name = name;
 
-    this.hook = Hook.TRIMMED.add(new Function<RelNode, Void>() {
-      public Void apply(RelNode node) {
-        CassandraSchema.this.addMaterializedViews();
-        return null;
-      }
+    this.hook = Hook.TRIMMED.add(node -> {
+      CassandraSchema.this.addMaterializedViews();
     });
   }
 
@@ -177,19 +172,19 @@ public class CassandraSchema extends AbstractSchema {
     }
 
     List<ColumnMetadata> partitionKey = table.getPartitionKey();
-    List<String> pKeyFields = new ArrayList<String>();
+    List<String> pKeyFields = new ArrayList<>();
     for (ColumnMetadata column : partitionKey) {
       pKeyFields.add(column.getName());
     }
 
     List<ColumnMetadata> clusteringKey = table.getClusteringColumns();
-    List<String> cKeyFields = new ArrayList<String>();
+    List<String> cKeyFields = new ArrayList<>();
     for (ColumnMetadata column : clusteringKey) {
       cKeyFields.add(column.getName());
     }
 
-    return Pair.of((List<String>) ImmutableList.copyOf(pKeyFields),
-        (List<String>) ImmutableList.copyOf(cKeyFields));
+    return Pair.of(ImmutableList.copyOf(pKeyFields),
+        ImmutableList.copyOf(cKeyFields));
   }
 
   /** Get the collation of all clustering key columns.
@@ -205,7 +200,7 @@ public class CassandraSchema extends AbstractSchema {
     }
 
     List<ClusteringOrder> clusteringOrder = table.getClusteringOrder();
-    List<RelFieldCollation> keyCollations = new ArrayList<RelFieldCollation>();
+    List<RelFieldCollation> keyCollations = new ArrayList<>();
 
     int i = 0;
     for (ClusteringOrder order : clusteringOrder) {
@@ -237,7 +232,7 @@ public class CassandraSchema extends AbstractSchema {
       StringBuilder queryBuilder = new StringBuilder("SELECT ");
 
       // Add all the selected columns to the query
-      List<String> columnNames = new ArrayList<String>();
+      List<String> columnNames = new ArrayList<>();
       for (ColumnMetadata column : view.getColumns()) {
         columnNames.add("\"" + column.getName() + "\"");
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraTable.java
----------------------------------------------------------------------
diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraTable.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraTable.java
index 57293b5..9f72116 100644
--- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraTable.java
+++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraTable.java
@@ -42,8 +42,8 @@ import org.apache.calcite.util.Util;
 
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Session;
+import com.google.common.collect.ImmutableList;
 
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -97,9 +97,8 @@ public class CassandraTable extends AbstractQueryableTable
   }
 
   public Enumerable<Object> query(final Session session) {
-    return query(session, Collections.<Map.Entry<String, Class>>emptyList(),
-        Collections.<Map.Entry<String, String>>emptyList(),
-        Collections.<String>emptyList(), Collections.<String>emptyList(), 0, -1);
+    return query(session, ImmutableList.of(), ImmutableList.of(),
+        ImmutableList.of(), ImmutableList.of(), 0, -1);
   }
 
   /** Executes a CQL query on the underlying table.
@@ -118,12 +117,12 @@ public class CassandraTable extends AbstractQueryableTable
     final RelDataTypeFactory.Builder fieldInfo = typeFactory.builder();
     final RelDataType rowType = getRowType(typeFactory);
 
-    Function1<String, Void> addField = new Function1<String, Void>() {
-      public Void apply(String fieldName) {
-        SqlTypeName typeName = rowType.getField(fieldName, true, false).getType().getSqlTypeName();
-        fieldInfo.add(fieldName, typeFactory.createSqlType(typeName)).nullable(true);
-        return null;
-      }
+    Function1<String, Void> addField = fieldName -> {
+      SqlTypeName typeName =
+          rowType.getField(fieldName, true, false).getType().getSqlTypeName();
+      fieldInfo.add(fieldName, typeFactory.createSqlType(typeName))
+          .nullable(true);
+      return null;
     };
 
     if (selectFields.isEmpty()) {
@@ -143,26 +142,24 @@ public class CassandraTable extends AbstractQueryableTable
     if (selectFields.isEmpty()) {
       selectString = "*";
     } else {
-      selectString = Util.toString(new Iterable<String>() {
-        public Iterator<String> iterator() {
-          final Iterator<Map.Entry<String, String>> selectIterator =
-              selectFields.iterator();
+      selectString = Util.toString(() -> {
+        final Iterator<Map.Entry<String, String>> selectIterator =
+            selectFields.iterator();
 
-          return new Iterator<String>() {
-            @Override public boolean hasNext() {
-              return selectIterator.hasNext();
-            }
+        return new Iterator<String>() {
+          @Override public boolean hasNext() {
+            return selectIterator.hasNext();
+          }
 
-            @Override public String next() {
-              Map.Entry<String, String> entry = selectIterator.next();
-              return entry.getKey() + " AS " + entry.getValue();
-            }
+          @Override public String next() {
+            Map.Entry<String, String> entry = selectIterator.next();
+            return entry.getKey() + " AS " + entry.getValue();
+          }
 
-            @Override public void remove() {
-              throw new UnsupportedOperationException();
-            }
-          };
-        }
+          @Override public void remove() {
+            throw new UnsupportedOperationException();
+          }
+        };
       }, "", ", ", "");
     }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/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 ab55fff..5961aed 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
@@ -39,7 +39,6 @@ import org.apache.calcite.runtime.Hook;
 import org.apache.calcite.util.BuiltInMethod;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 
 import java.util.AbstractList;
@@ -144,12 +143,7 @@ public class CassandraToEnumerableConverter
   /** E.g. {@code constantList("x", "y")} returns
    * {@code {ConstantExpression("x"), ConstantExpression("y")}}. */
   private static <T> List<Expression> constantList(List<T> values) {
-    return Lists.transform(values,
-        new Function<T, Expression>() {
-          public Expression apply(T a0) {
-            return Expressions.constant(a0);
-          }
-        });
+    return Lists.transform(values, Expressions::constant);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverterRule.java
----------------------------------------------------------------------
diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverterRule.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverterRule.java
index abcf155..9184c30 100644
--- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverterRule.java
+++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraToEnumerableConverterRule.java
@@ -23,7 +23,7 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
+import java.util.function.Predicate;
 
 /**
  * Rule to convert a relational expression from
@@ -40,7 +40,7 @@ public class CassandraToEnumerableConverterRule extends ConverterRule {
    */
   public CassandraToEnumerableConverterRule(
       RelBuilderFactory relBuilderFactory) {
-    super(RelNode.class, Predicates.<RelNode>alwaysTrue(),
+    super(RelNode.class, (Predicate<RelNode>) r -> true,
         CassandraRel.CONVENTION, EnumerableConvention.INSTANCE,
         relBuilderFactory, "CassandraToEnumerableConverterRule");
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/codegen/templates/Parser.jj
----------------------------------------------------------------------
diff --git a/core/src/main/codegen/templates/Parser.jj b/core/src/main/codegen/templates/Parser.jj
index 6baa30b..4096cfe 100644
--- a/core/src/main/codegen/templates/Parser.jj
+++ b/core/src/main/codegen/templates/Parser.jj
@@ -106,8 +106,6 @@ import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 import org.apache.calcite.util.trace.CalciteTrace;
 
-import com.google.common.collect.Lists;
-
 import org.slf4j.Logger;
 
 import java.io.Reader;
@@ -1010,7 +1008,7 @@ SqlNode SqlStmtEof() :
  */
 SqlSelect SqlSelect() :
 {
-    final List<SqlLiteral> keywords = Lists.newArrayList();
+    final List<SqlLiteral> keywords = new ArrayList<SqlLiteral>();
     final SqlNodeList keywordList;
     List<SqlNode> selectList;
     final SqlNode fromClause;
@@ -1261,7 +1259,7 @@ SqlNode NamedRoutineCall(
     ExprContext exprContext) :
 {
     SqlIdentifier name;
-    final List<SqlNode> list = Lists.newArrayList();
+    final List<SqlNode> list = new ArrayList<SqlNode>();
     final Span s;
 }
 {
@@ -1290,7 +1288,7 @@ SqlNode NamedRoutineCall(
  */
 SqlNode SqlInsert() :
 {
-    final List<SqlLiteral> keywords = Lists.newArrayList();
+    final List<SqlLiteral> keywords = new ArrayList<SqlLiteral>();
     final SqlNodeList keywordList;
     SqlNode table;
     SqlNodeList extendList = null;
@@ -1498,7 +1496,7 @@ SqlUpdate WhenMatchedClause(SqlNode table, SqlIdentifier alias) :
 SqlInsert WhenNotMatchedClause(SqlNode table) :
 {
     final Span insertSpan, valuesSpan;
-    final List<SqlLiteral> keywords = Lists.newArrayList();
+    final List<SqlLiteral> keywords = new ArrayList<SqlLiteral>();
     final SqlNodeList keywordList;
     SqlNodeList insertColumnList = null;
     SqlNode rowConstructor;
@@ -1981,7 +1979,7 @@ SqlNode TableRef2(boolean lateral) :
 SqlNodeList ExtendList() :
 {
     final Span s;
-    List<SqlNode> list = Lists.newArrayList();
+    List<SqlNode> list = new ArrayList<SqlNode>();
 }
 {
     <LPAREN> { s = span(); }
@@ -2205,7 +2203,7 @@ SqlNode WhereOpt() :
  */
 SqlNodeList GroupByOpt() :
 {
-    List<SqlNode> list = Lists.newArrayList();
+    List<SqlNode> list = new ArrayList<SqlNode>();
     final Span s;
 }
 {
@@ -2221,7 +2219,7 @@ SqlNodeList GroupByOpt() :
 
 List<SqlNode> GroupingElementList() :
 {
-    List<SqlNode> list = Lists.newArrayList();
+    List<SqlNode> list = new ArrayList<SqlNode>();
     SqlNode e;
 }
 {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java b/core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java
index c4b02d2..c4579e6 100644
--- a/core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java
+++ b/core/src/main/java/org/apache/calcite/adapter/clone/ArrayTable.java
@@ -40,11 +40,11 @@ import org.apache.calcite.util.Pair;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Type;
 import java.util.AbstractList;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -72,7 +72,7 @@ class ArrayTable extends AbstractQueryableTable implements ScannableTable {
   }
 
   public Statistic getStatistic() {
-    final List<ImmutableBitSet> keys = Lists.newArrayList();
+    final List<ImmutableBitSet> keys = new ArrayList<>();
     final Content content = supplier.get();
     for (Ord<Column> ord : Ord.zip(content.columns)) {
       if (ord.e.cardinality == content.size) {
@@ -280,7 +280,7 @@ class ArrayTable extends AbstractQueryableTable implements ScannableTable {
     public Object freeze(ColumnLoader.ValueSet valueSet, int[] sources) {
       // We assume the values have been canonized.
       final List<Comparable> list = permuteList(valueSet.values, sources);
-      return list.toArray(new Comparable[list.size()]);
+      return list.toArray(new Comparable[0]);
     }
 
     public Object permute(Object dataSet, int[] sources) {
@@ -816,7 +816,7 @@ class ArrayTable extends AbstractQueryableTable implements ScannableTable {
       this(columns, size,
           sortField >= 0
               ? RelCollations.createSingleton(sortField)
-              : ImmutableList.<RelCollation>of());
+              : ImmutableList.of());
     }
 
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/clone/CloneSchema.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/clone/CloneSchema.java b/core/src/main/java/org/apache/calcite/adapter/clone/CloneSchema.java
index fe7cb92..0b5bb25 100644
--- a/core/src/main/java/org/apache/calcite/adapter/clone/CloneSchema.java
+++ b/core/src/main/java/org/apache/calcite/adapter/clone/CloneSchema.java
@@ -34,7 +34,6 @@ import org.apache.calcite.schema.Schemas;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.schema.impl.AbstractSchema;
 
-import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
 import com.google.common.collect.ImmutableList;
 
@@ -85,7 +84,7 @@ public class CloneSchema extends AbstractSchema {
     final JavaTypeFactory typeFactory =
         ((CalciteConnection) queryProvider).getTypeFactory();
     return createCloneTable(typeFactory, Schemas.proto(sourceTable),
-        ImmutableList.<RelCollation>of(), null, queryable);
+        ImmutableList.of(), null, queryable);
   }
 
   @Deprecated // to be removed before 2.0
@@ -93,8 +92,8 @@ public class CloneSchema extends AbstractSchema {
       final RelProtoDataType protoRowType,
       final List<ColumnMetaData.Rep> repList,
       final Enumerable<T> source) {
-    return createCloneTable(typeFactory, protoRowType,
-        ImmutableList.<RelCollation>of(), repList, source);
+    return createCloneTable(typeFactory, protoRowType, ImmutableList.of(),
+        repList, source);
   }
 
   public static <T> Table createCloneTable(final JavaTypeFactory typeFactory,
@@ -115,21 +114,18 @@ public class CloneSchema extends AbstractSchema {
     return new ArrayTable(
         elementType,
         protoRowType,
-        Suppliers.memoize(
-            new Supplier<ArrayTable.Content>() {
-              public ArrayTable.Content get() {
-                final ColumnLoader loader =
-                    new ColumnLoader<>(typeFactory, source, protoRowType,
-                        repList);
-                final List<RelCollation> collation2 =
-                    collations.isEmpty()
-                        && loader.sortField >= 0
-                        ? RelCollations.createSingleton(loader.sortField)
-                        : collations;
-                return new ArrayTable.Content(loader.representationValues,
-                    loader.size(), collation2);
-              }
-            }));
+        Suppliers.memoize(() -> {
+          final ColumnLoader loader =
+              new ColumnLoader<>(typeFactory, source, protoRowType,
+                  repList);
+          final List<RelCollation> collation2 =
+              collations.isEmpty()
+                  && loader.sortField >= 0
+                  ? RelCollations.createSingleton(loader.sortField)
+                  : collations;
+          return new ArrayTable.Content(loader.representationValues,
+              loader.size(), collation2);
+        }));
   }
 
   /** Schema factory that creates a

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java b/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java
index acc4adc..558118f 100644
--- a/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java
+++ b/core/src/main/java/org/apache/calcite/adapter/clone/ColumnLoader.java
@@ -26,7 +26,6 @@ import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.rel.type.RelProtoDataType;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 
 import java.lang.reflect.Type;
@@ -53,31 +52,6 @@ class ColumnLoader<T> {
       0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000, 0xFFFFFFFF00000000L};
   static final int[] LONG_S = {1, 2, 4, 8, 16, 32};
 
-  private static final Function<Timestamp, Long> TIMESTAMP_TO_LONG =
-      new Function<Timestamp, Long>() {
-        public Long apply(Timestamp a0) {
-          return a0 == null ? null : a0.getTime();
-        }
-      };
-
-  private static final Function<Time, Integer> TIME_TO_INT =
-      new Function<Time, Integer>() {
-        public Integer apply(Time a0) {
-          return a0 == null
-              ? null
-              : (int) (a0.getTime() % DateTimeUtils.MILLIS_PER_DAY);
-        }
-      };
-
-  private static final Function<Date, Integer> DATE_TO_INT =
-      new Function<Date, Integer>() {
-        public Integer apply(Date a0) {
-          return a0 == null
-              ? null
-              : (int) (a0.getTime() / DateTimeUtils.MILLIS_PER_DAY);
-        }
-      };
-
   public final List<T> list = new ArrayList<>();
   public final List<ArrayTable.Column> representationValues = new ArrayList<>();
   private final JavaTypeFactory typeFactory;
@@ -264,21 +238,26 @@ class ColumnLoader<T> {
       switch (rep) {
       case OBJECT:
       case JAVA_SQL_TIMESTAMP:
-        return Lists.transform(list, TIMESTAMP_TO_LONG);
+        return Lists.transform(list,
+            (Timestamp t) -> t == null ? null : t.getTime());
       }
       break;
     case TIME:
       switch (rep) {
       case OBJECT:
       case JAVA_SQL_TIME:
-        return Lists.transform(list, TIME_TO_INT);
+        return Lists.transform(list, (Time t) -> t == null
+            ? null
+            : (int) (t.getTime() % DateTimeUtils.MILLIS_PER_DAY));
       }
       break;
     case DATE:
       switch (rep) {
       case OBJECT:
       case JAVA_SQL_DATE:
-        return Lists.transform(list, DATE_TO_INT);
+        return Lists.transform(list, (Date d) -> d == null
+            ? null
+            : (int) (d.getTime() / DateTimeUtils.MILLIS_PER_DAY));
       }
       break;
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/clone/ListTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/clone/ListTable.java b/core/src/main/java/org/apache/calcite/adapter/clone/ListTable.java
index 3a0b9e8..d8ee05e 100644
--- a/core/src/main/java/org/apache/calcite/adapter/clone/ListTable.java
+++ b/core/src/main/java/org/apache/calcite/adapter/clone/ListTable.java
@@ -29,7 +29,6 @@ import org.apache.calcite.rel.type.RelProtoDataType;
 import org.apache.calcite.schema.SchemaPlus;
 import org.apache.calcite.schema.Statistic;
 import org.apache.calcite.schema.Statistics;
-import org.apache.calcite.util.ImmutableBitSet;
 
 import com.google.common.collect.ImmutableList;
 
@@ -64,7 +63,7 @@ class ListTable extends AbstractQueryableTable {
   }
 
   public Statistic getStatistic() {
-    return Statistics.of(list.size(), ImmutableList.<ImmutableBitSet>of());
+    return Statistics.of(list.size(), ImmutableList.of());
   }
 
   public <T> Queryable<T> asQueryable(final QueryProvider queryProvider,

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchFilter.java b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchFilter.java
index 2551556..06b39c0 100644
--- a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchFilter.java
+++ b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchFilter.java
@@ -42,7 +42,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-
 /**
  * Implementation of a {@link org.apache.calcite.rel.core.Filter}
  * relational expression in Elasticsearch.

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java
index 961c8b0..63270db 100644
--- a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java
+++ b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchProject.java
@@ -28,14 +28,11 @@ import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.annotation.Nullable;
-
 /**
  * Implementation of {@link org.apache.calcite.rel.core.Project}
  * relational expression in Elasticsearch.
@@ -89,12 +86,7 @@ public class ElasticsearchProject extends Project implements ElasticsearchRel {
 
     StringBuilder query = new StringBuilder();
     if (scriptFields.isEmpty()) {
-      List<String> newList = Lists.transform(fields, new Function<String, String>() {
-        @Nullable
-        @Override public String apply(@Nullable String input) {
-          return ElasticsearchRules.quote(input);
-        }
-      });
+      List<String> newList = Lists.transform(fields, ElasticsearchRules::quote);
 
       final String findString = String.join(", ", newList);
       query.append("\"_source\" : [").append(findString).append("]");
@@ -102,11 +94,13 @@ public class ElasticsearchProject extends Project implements ElasticsearchRel {
       // if scripted fields are present, ES ignores _source attribute
       for (String field: fields) {
         scriptFields.add(ElasticsearchRules.quote(field) + ":{\"script\": "
-                // _source (ES2) vs params._source (ES5)
-                + "\"" + implementor.elasticsearchTable.scriptedFieldPrefix() + "."
-                + field + "\"}");
+            // _source (ES2) vs params._source (ES5)
+            + "\"" + implementor.elasticsearchTable.scriptedFieldPrefix() + "."
+            + field + "\"}");
       }
-      query.append("\"script_fields\": {" + String.join(", ", scriptFields) + "}");
+      query.append("\"script_fields\": {")
+          .append(String.join(", ", scriptFields))
+          .append("}");
     }
 
     for (String opfield : implementor.list) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchTableScan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchTableScan.java b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchTableScan.java
index 33ca14f..1020faa 100644
--- a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchTableScan.java
+++ b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchTableScan.java
@@ -27,9 +27,8 @@ import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.calcite.rel.type.RelDataType;
 
-import com.google.common.base.Preconditions;
-
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Relational expression representing a scan of an Elasticsearch type.
@@ -54,7 +53,7 @@ public class ElasticsearchTableScan extends TableScan implements ElasticsearchRe
        RelOptTable table, AbstractElasticsearchTable elasticsearchTable,
        RelDataType projectRowType) {
     super(cluster, traitSet, table);
-    this.elasticsearchTable = Preconditions.checkNotNull(elasticsearchTable);
+    this.elasticsearchTable = Objects.requireNonNull(elasticsearchTable);
     this.projectRowType = projectRowType;
 
     assert getConvention() == ElasticsearchRel.CONVENTION;

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverter.java b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverter.java
index 768f4e5..3cebd3c 100644
--- a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverter.java
+++ b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverter.java
@@ -21,7 +21,6 @@ import org.apache.calcite.adapter.enumerable.EnumerableRelImplementor;
 import org.apache.calcite.adapter.enumerable.JavaRowFormat;
 import org.apache.calcite.adapter.enumerable.PhysType;
 import org.apache.calcite.adapter.enumerable.PhysTypeImpl;
-
 import org.apache.calcite.linq4j.tree.BlockBuilder;
 import org.apache.calcite.linq4j.tree.Expression;
 import org.apache.calcite.linq4j.tree.Expressions;
@@ -40,12 +39,10 @@ import org.apache.calcite.runtime.Hook;
 import org.apache.calcite.util.BuiltInMethod;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Lists;
 
 import java.util.AbstractList;
 import java.util.List;
-import javax.annotation.Nullable;
 
 /**
  * Relational expression representing a scan of a table in an Elasticsearch data source.
@@ -111,13 +108,7 @@ public class ElasticsearchToEnumerableConverter extends ConverterImpl implements
   /** E.g. {@code constantList("x", "y")} returns
    * {@code {ConstantExpression("x"), ConstantExpression("y")}}. */
   private static <T> List<Expression> constantList(List<T> values) {
-    return Lists.transform(values,
-        new Function<T, Expression>() {
-          @Nullable
-          @Override public Expression apply(@Nullable T t) {
-            return Expressions.constant(t);
-          }
-        });
+    return Lists.transform(values, Expressions::constant);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverterRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverterRule.java b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverterRule.java
index 9575d4f..756c078 100644
--- a/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverterRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchToEnumerableConverterRule.java
@@ -23,7 +23,7 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
+import java.util.function.Predicate;
 
 /**
  * Rule to convert a relational expression from
@@ -40,7 +40,7 @@ public class ElasticsearchToEnumerableConverterRule extends ConverterRule {
    */
   public ElasticsearchToEnumerableConverterRule(
       RelBuilderFactory relBuilderFactory) {
-    super(RelNode.class, Predicates.<RelNode>alwaysTrue(),
+    super(RelNode.class, (Predicate<RelNode>) r -> true,
         ElasticsearchRel.CONVENTION, EnumerableConvention.INSTANCE,
         relBuilderFactory, "ElasticsearchToEnumerableConverterRule");
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumUtils.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumUtils.java
index 60408c6..889c8c5 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumUtils.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumUtils.java
@@ -31,10 +31,9 @@ import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.Util;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -49,13 +48,6 @@ import java.util.List;
  */
 public class EnumUtils {
 
-  private static final Function<RexNode, Type> REX_TO_INTERNAL_TYPE =
-      new Function<RexNode, Type>() {
-        public Type apply(RexNode node) {
-          return toInternal(node.getType());
-        }
-      };
-
   private EnumUtils() {}
 
   static final boolean BRIDGE_METHODS = true;
@@ -233,7 +225,7 @@ public class EnumUtils {
   }
 
   static List<Type> internalTypes(List<? extends RexNode> operandList) {
-    return Lists.transform(operandList, REX_TO_INTERNAL_TYPE);
+    return Util.transform(operandList, node -> toInternal(node.getType()));
   }
 
   static Expression enforce(final Type storageType,

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
index 4d6fb05..56f3d95 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
@@ -48,7 +48,6 @@ import org.apache.calcite.util.Util;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -368,7 +367,7 @@ public class EnumerableAggregate extends Aggregate implements EnumerableRel {
     }
     resultBlock.add(physType.record(results));
     if (getGroupType() != Group.SIMPLE) {
-      final List<Expression> list = Lists.newArrayList();
+      final List<Expression> list = new ArrayList<>();
       for (ImmutableBitSet set : groupSets) {
         list.add(
             inputPhysType.generateSelector(parameter, groupSet.asList(),

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBindable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBindable.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBindable.java
index 820be91..62a3b7f 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBindable.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBindable.java
@@ -35,10 +35,10 @@ import org.apache.calcite.runtime.ArrayBindable;
 import org.apache.calcite.runtime.Bindable;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableMap;
 
 import java.util.List;
+import java.util.function.Predicate;
 
 /**
  * Relational expression that converts an enumerable input to interpretable
@@ -71,15 +71,13 @@ public class EnumerableBindable extends ConverterImpl implements BindableRel {
   }
 
   public Node implement(final InterpreterImplementor implementor) {
-    return new Node() {
-      public void run() throws InterruptedException {
-        final Sink sink =
-            implementor.relSinks.get(EnumerableBindable.this).get(0);
-        final Enumerable<Object[]> enumerable = bind(implementor.dataContext);
-        final Enumerator<Object[]> enumerator = enumerable.enumerator();
-        while (enumerator.moveNext()) {
-          sink.send(Row.asCopy(enumerator.current()));
-        }
+    return () -> {
+      final Sink sink =
+          implementor.relSinks.get(EnumerableBindable.this).get(0);
+      final Enumerable<Object[]> enumerable = bind(implementor.dataContext);
+      final Enumerator<Object[]> enumerator = enumerable.enumerator();
+      while (enumerator.moveNext()) {
+        sink.send(Row.asCopy(enumerator.current()));
       }
     };
   }
@@ -98,7 +96,7 @@ public class EnumerableBindable extends ConverterImpl implements BindableRel {
      */
     public EnumerableToBindableConverterRule(
         RelBuilderFactory relBuilderFactory) {
-      super(EnumerableRel.class, Predicates.<RelNode>alwaysTrue(),
+      super(EnumerableRel.class, (Predicate<RelNode>) r -> true,
           EnumerableConvention.INSTANCE, BindableConvention.INSTANCE,
           relBuilderFactory, "EnumerableToBindableConverterRule");
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
index 9e2018b..4b043c5 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalc.java
@@ -32,7 +32,6 @@ import org.apache.calcite.plan.RelOptPredicateList;
 import org.apache.calcite.plan.RelTraitSet;
 import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistribution;
 import org.apache.calcite.rel.RelDistributionTraitDef;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.core.Calc;
@@ -47,7 +46,6 @@ import org.apache.calcite.util.BuiltInMethod;
 import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 
 import java.lang.reflect.Modifier;
@@ -95,17 +93,9 @@ public class EnumerableCalc extends Calc implements EnumerableRel {
     final RelTraitSet traitSet = cluster.traitSet()
         .replace(EnumerableConvention.INSTANCE)
         .replaceIfs(RelCollationTraitDef.INSTANCE,
-            new Supplier<List<RelCollation>>() {
-              public List<RelCollation> get() {
-                return RelMdCollation.calc(mq, input, program);
-              }
-            })
+            () -> RelMdCollation.calc(mq, input, program))
         .replaceIf(RelDistributionTraitDef.INSTANCE,
-            new Supplier<RelDistribution>() {
-              public RelDistribution get() {
-                return RelMdDistribution.calc(mq, input, program);
-              }
-            });
+            () -> RelMdDistribution.calc(mq, input, program));
     return new EnumerableCalc(cluster, traitSet, input, program);
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
index c85985b..35db0c9 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
@@ -20,9 +20,12 @@ import org.apache.calcite.plan.Convention;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Calc;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.logical.LogicalCalc;
 
+import java.util.function.Predicate;
+
 /**
  * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalCalc} to an
  * {@link EnumerableCalc}.
@@ -31,9 +34,10 @@ class EnumerableCalcRule extends ConverterRule {
   EnumerableCalcRule() {
     // The predicate ensures that if there's a multiset, FarragoMultisetSplitter
     // will work on it first.
-    super(LogicalCalc.class, RelOptUtil.CALC_PREDICATE, Convention.NONE,
-        EnumerableConvention.INSTANCE, RelFactories.LOGICAL_BUILDER,
-        "EnumerableCalcRule");
+    super(LogicalCalc.class,
+        (Predicate<Calc>) RelOptUtil::containsMultisetOrWindowedAgg,
+        Convention.NONE, EnumerableConvention.INSTANCE,
+        RelFactories.LOGICAL_BUILDER, "EnumerableCalcRule");
   }
 
   public RelNode convert(RelNode rel) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
index 9c7bc71..2b543a2 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
@@ -23,7 +23,7 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.logical.LogicalCorrelate;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
+import java.util.function.Predicate;
 
 /**
  * Implementation of nested loops over enumerable inputs.
@@ -35,7 +35,7 @@ public class EnumerableCorrelateRule extends ConverterRule {
    * @param relBuilderFactory Builder for relational expressions
    */
   public EnumerableCorrelateRule(RelBuilderFactory relBuilderFactory) {
-    super(LogicalCorrelate.class, Predicates.<RelNode>alwaysTrue(),
+    super(LogicalCorrelate.class, (Predicate<RelNode>) r -> true,
         Convention.NONE, EnumerableConvention.INSTANCE, relBuilderFactory,
         "EnumerableCorrelateRule");
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java
index da1cefa..514c8ad 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java
@@ -18,9 +18,7 @@ package org.apache.calcite.adapter.enumerable;
 
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistribution;
 import org.apache.calcite.rel.RelDistributionTraitDef;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.core.Filter;
@@ -29,10 +27,6 @@ import org.apache.calcite.rel.metadata.RelMdDistribution;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.calcite.rex.RexNode;
 
-import com.google.common.base.Supplier;
-
-import java.util.List;
-
 /** Implementation of {@link org.apache.calcite.rel.core.Filter} in
  * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention enumerable calling convention}. */
 public class EnumerableFilter
@@ -59,17 +53,9 @@ public class EnumerableFilter
         cluster.traitSetOf(EnumerableConvention.INSTANCE)
             .replaceIfs(
                 RelCollationTraitDef.INSTANCE,
-                new Supplier<List<RelCollation>>() {
-                  public List<RelCollation> get() {
-                    return RelMdCollation.filter(mq, input);
-                  }
-                })
+                () -> RelMdCollation.filter(mq, input))
             .replaceIf(RelDistributionTraitDef.INSTANCE,
-                new Supplier<RelDistribution>() {
-                  public RelDistribution get() {
-                    return RelMdDistribution.filter(mq, input);
-                  }
-                });
+                () -> RelMdDistribution.filter(mq, input));
     return new EnumerableFilter(cluster, traitSet, input, condition);
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
index 65b80f1..e10daa6 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
@@ -23,15 +23,18 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.logical.LogicalFilter;
 
+import java.util.function.Predicate;
+
 /**
  * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalFilter} to an
  * {@link EnumerableFilter}.
  */
 class EnumerableFilterRule extends ConverterRule {
   EnumerableFilterRule() {
-    super(LogicalFilter.class, RelOptUtil.FILTER_PREDICATE, Convention.NONE,
-        EnumerableConvention.INSTANCE, RelFactories.LOGICAL_BUILDER,
-        "EnumerableFilterRule");
+    super(LogicalFilter.class,
+        (Predicate<LogicalFilter>) RelOptUtil::containsMultisetOrWindowedAgg,
+        Convention.NONE, EnumerableConvention.INSTANCE,
+        RelFactories.LOGICAL_BUILDER, "EnumerableFilterRule");
   }
 
   public RelNode convert(RelNode rel) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreterRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreterRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreterRule.java
index 5462004..ca1ae06 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreterRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreterRule.java
@@ -22,7 +22,7 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
+import java.util.function.Predicate;
 
 /**
  * Planner rule that converts {@link org.apache.calcite.interpreter.BindableRel}
@@ -39,7 +39,7 @@ public class EnumerableInterpreterRule extends ConverterRule {
    * @param relBuilderFactory Builder for relational expressions
    */
   public EnumerableInterpreterRule(RelBuilderFactory relBuilderFactory) {
-    super(RelNode.class, Predicates.<RelNode>alwaysTrue(),
+    super(RelNode.class, (Predicate<RelNode>) r -> true,
         BindableConvention.INSTANCE, EnumerableConvention.INSTANCE,
         relBuilderFactory, "EnumerableInterpreterRule");
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimit.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimit.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimit.java
index 577a5a4..825aa7d 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimit.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimit.java
@@ -22,9 +22,7 @@ import org.apache.calcite.linq4j.tree.Expression;
 import org.apache.calcite.linq4j.tree.Expressions;
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelDistribution;
 import org.apache.calcite.rel.RelDistributionTraitDef;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.RelWriter;
@@ -37,8 +35,6 @@ import org.apache.calcite.rex.RexLiteral;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.BuiltInMethod;
 
-import com.google.common.base.Supplier;
-
 import java.util.List;
 
 /** Relational expression that applies a limit and/or offset to its input. */
@@ -71,17 +67,9 @@ public class EnumerableLimit extends SingleRel implements EnumerableRel {
         cluster.traitSetOf(EnumerableConvention.INSTANCE)
             .replaceIfs(
                 RelCollationTraitDef.INSTANCE,
-                new Supplier<List<RelCollation>>() {
-                  public List<RelCollation> get() {
-                    return RelMdCollation.limit(mq, input);
-                  }
-                })
+                () -> RelMdCollation.limit(mq, input))
             .replaceIf(RelDistributionTraitDef.INSTANCE,
-                new Supplier<RelDistribution>() {
-                  public RelDistribution get() {
-                    return RelMdDistribution.limit(mq, input);
-                  }
-                });
+                () -> RelMdDistribution.limit(mq, input));
     return new EnumerableLimit(cluster, traitSet, input, offset, fetch);
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java
index 975665d..7851484 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java
@@ -96,7 +96,7 @@ public class EnumerableMergeJoin extends EquiJoin implements EnumerableRel {
       traitSet = traitSet.replace(collations);
     }
     return new EnumerableMergeJoin(cluster, traitSet, left, right, condition,
-        leftKeys, rightKeys, ImmutableSet.<CorrelationId>of(), joinType);
+        leftKeys, rightKeys, ImmutableSet.of(), joinType);
   }
 
   @Override public EnumerableMergeJoin copy(RelTraitSet traitSet,