You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2023/03/01 04:24:25 UTC

[calcite] 01/01: [CALCITE-5546] Code style: Break long assignment expressions after '='

This is an automated email from the ASF dual-hosted git repository.

jhyde pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git

commit 2dba40e7a0a5651eac5a30d9e0a72f178bd9bff2
Author: Julian Hyde <jh...@apache.org>
AuthorDate: Sat Feb 25 19:10:50 2023 -0800

    [CALCITE-5546] Code style: Break long assignment expressions after '='
    
    Specifically, we disallow lines that contain ' = ' and end
    in '(' and ',', and break up the line by moving the
    right-hand side of the assignment to the next line. For
    example,
    
      int x = foo(
          bar());
      int y = baz(1,
          buzz());
    
    becomes
    
      int x =
          foo(bar());
      int y =
          baz(1, buzz());
    
    The rule looks for '(' or ',' at the end of lines that
    contain '=' and do not contain '/' or '*' (which would
    suggest a comment), '"' (which would suggest a string
    literal), or '@' (which would suggest use in annotation
    parameters).
    
    Also remove spaces before '),' ');', ')),', etc.
---
 build.gradle.kts                                   |   6 +-
 .../adapter/cassandra/CassandraEnumerator.java     |   7 +-
 .../calcite/adapter/cassandra/CassandraSchema.java |   8 +-
 .../adapter/cassandra/CassandraSchemaFactory.java  |   4 +-
 .../calcite/adapter/cassandra/CassandraTable.java  |   9 +-
 .../test/CassandraAdapterDataTypesTest.java        |   7 +-
 .../apache/calcite/adapter/clone/ColumnLoader.java |   9 +-
 .../calcite/adapter/enumerable/EnumUtils.java      |  53 ++-
 .../adapter/enumerable/EnumerableAggregate.java    |   4 +-
 .../enumerable/EnumerableAggregateBase.java        |  18 +-
 .../enumerable/EnumerableBatchNestedLoopJoin.java  |  28 +-
 .../adapter/enumerable/EnumerableBindable.java     |   5 +-
 .../calcite/adapter/enumerable/EnumerableCalc.java |   8 +-
 .../adapter/enumerable/EnumerableConvention.java   |   6 +-
 .../adapter/enumerable/EnumerableCorrelate.java    |   5 +-
 .../adapter/enumerable/EnumerableHashJoin.java     |  22 +-
 .../enumerable/EnumerableInterpretable.java        |   6 +-
 .../adapter/enumerable/EnumerableInterpreter.java  |   8 +-
 .../adapter/enumerable/EnumerableLimit.java        |  29 +-
 .../adapter/enumerable/EnumerableLimitRule.java    |   8 +-
 .../adapter/enumerable/EnumerableLimitSort.java    |  14 +-
 .../enumerable/EnumerableLimitSortRule.java        |  17 +-
 .../adapter/enumerable/EnumerableMatch.java        |  57 +--
 .../adapter/enumerable/EnumerableMergeJoin.java    |  30 +-
 .../enumerable/EnumerableMergeJoinRule.java        |  11 +-
 .../adapter/enumerable/EnumerableMergeUnion.java   |  68 ++--
 .../enumerable/EnumerableMergeUnionRule.java       |   5 +-
 .../enumerable/EnumerableRelImplementor.java       |  30 +-
 .../adapter/enumerable/EnumerableRepeatUnion.java  |  51 +--
 .../adapter/enumerable/EnumerableRules.java        |  48 +--
 .../enumerable/EnumerableSortedAggregate.java      |  31 +-
 .../enumerable/EnumerableSortedAggregateRule.java  |   7 +-
 .../enumerable/EnumerableTableFunctionScan.java    |  18 +-
 .../adapter/enumerable/EnumerableTableModify.java  |   4 +-
 .../adapter/enumerable/EnumerableTableScan.java    |  11 +-
 .../adapter/enumerable/EnumerableTableSpool.java   |  34 +-
 .../adapter/enumerable/EnumerableTraitsUtils.java  |   3 +-
 .../enumerable/EnumerableUncollectRule.java        |   5 +-
 .../adapter/enumerable/EnumerableUnionRule.java    |   4 +-
 .../adapter/enumerable/EnumerableValuesRule.java   |   5 +-
 .../adapter/enumerable/EnumerableWindow.java       | 229 +++++------
 .../calcite/adapter/enumerable/JavaRowFormat.java  |  26 +-
 .../calcite/adapter/enumerable/PhysTypeImpl.java   |  14 +-
 .../calcite/adapter/enumerable/RexImpTable.java    | 131 ++++---
 .../adapter/enumerable/RexToLixTranslator.java     | 434 +++++++++++----------
 .../adapter/enumerable/StrictAggImplementor.java   |   9 +-
 .../calcite/adapter/java/ReflectiveSchema.java     |  20 +-
 .../calcite/adapter/jdbc/JdbcCatalogSchema.java    |   6 +-
 .../org/apache/calcite/adapter/jdbc/JdbcRules.java |  15 +-
 .../apache/calcite/adapter/jdbc/JdbcSchema.java    |  18 +-
 .../adapter/jdbc/JdbcToEnumerableConverter.java    |  57 +--
 .../calcite/config/CalciteSystemProperty.java      |   6 +-
 .../apache/calcite/interpreter/AggregateNode.java  |   8 +-
 .../apache/calcite/interpreter/Interpreter.java    |  11 +-
 .../calcite/interpreter/JaninoRexCompiler.java     |  13 +-
 .../org/apache/calcite/interpreter/JoinNode.java   |   5 +-
 .../apache/calcite/interpreter/ProjectNode.java    |   4 +-
 .../apache/calcite/interpreter/TableScanNode.java  |  28 +-
 .../apache/calcite/jdbc/CachingCalciteSchema.java  |  51 +--
 .../org/apache/calcite/jdbc/CalciteMetaImpl.java   |  28 +-
 .../apache/calcite/jdbc/JavaTypeFactoryImpl.java   |  12 +-
 .../apache/calcite/jdbc/SimpleCalciteSchema.java   |  22 +-
 .../CachingLatticeStatisticProvider.java           |   6 +-
 .../org/apache/calcite/materialize/Lattice.java    |  10 +-
 .../calcite/materialize/LatticeSuggester.java      |   5 +-
 .../materialize/MaterializationService.java        |   4 +-
 .../apache/calcite/materialize/MutableNode.java    |  12 +-
 .../org/apache/calcite/model/ModelHandler.java     |  20 +-
 .../apache/calcite/plan/ConventionTraitDef.java    |   5 +-
 .../apache/calcite/plan/RelOptMaterialization.java |  46 ++-
 .../calcite/plan/RelOptMaterializations.java       |  11 +-
 .../java/org/apache/calcite/plan/RelOptRules.java  | 169 ++++----
 .../java/org/apache/calcite/plan/RelOptUtil.java   |  34 +-
 .../java/org/apache/calcite/plan/RelTraitSet.java  |   4 +-
 .../apache/calcite/plan/SubstitutionVisitor.java   | 152 ++++----
 .../org/apache/calcite/plan/volcano/Dumpers.java   |   5 +-
 .../org/apache/calcite/plan/volcano/RelSet.java    |  20 +-
 .../calcite/plan/volcano/TopDownRuleDriver.java    |   9 +-
 .../calcite/plan/volcano/VolcanoPlanner.java       |  16 +-
 .../plan/volcano/VolcanoRelMetadataProvider.java   |   9 +-
 .../calcite/plan/volcano/VolcanoRuleCall.java      |   6 +-
 .../calcite/prepare/CalciteCatalogReader.java      |   4 +-
 .../calcite/prepare/CalciteMaterializer.java       |   9 +-
 .../apache/calcite/prepare/CalcitePrepareImpl.java |  30 +-
 .../org/apache/calcite/prepare/PlannerImpl.java    |  25 +-
 .../java/org/apache/calcite/prepare/Prepare.java   |   5 +-
 .../org/apache/calcite/profile/ProfilerImpl.java   |  21 +-
 .../org/apache/calcite/profile/SimpleProfiler.java |  16 +-
 .../java/org/apache/calcite/rel/RelCollations.java |   4 +-
 .../main/java/org/apache/calcite/rel/RelNodes.java |  11 +-
 .../java/org/apache/calcite/rel/core/Collect.java  |  13 +-
 .../java/org/apache/calcite/rel/core/Match.java    |   5 +-
 .../java/org/apache/calcite/rel/core/Project.java  |   4 +-
 .../apache/calcite/rel/externalize/RelJson.java    |  12 +-
 .../calcite/rel/externalize/RelJsonReader.java     |  37 +-
 .../apache/calcite/rel/hint/HintStrategyTable.java |  10 +-
 .../apache/calcite/rel/logical/LogicalWindow.java  |  20 +-
 .../calcite/rel/metadata/BuiltInMetadata.java      | 125 +++---
 .../rel/metadata/CachingRelMetadataProvider.java   |   7 +-
 .../metadata/ProxyingMetadataHandlerProvider.java  |  47 ++-
 .../calcite/rel/metadata/RelMdAllPredicates.java   |  36 +-
 .../rel/metadata/RelMdColumnUniqueness.java        |   6 +-
 .../calcite/rel/metadata/RelMdDistribution.java    |   4 +-
 .../rel/metadata/RelMdExpressionLineage.java       |  55 +--
 .../rel/metadata/RelMdPercentageOriginalRows.java  |   4 +-
 .../calcite/rel/metadata/RelMdPredicates.java      | 109 +++---
 .../calcite/rel/metadata/RelMdTableReferences.java |  15 +-
 .../calcite/rel/metadata/RelMdUniqueKeys.java      |  14 +-
 .../org/apache/calcite/rel/metadata/RelMdUtil.java |  11 +-
 .../calcite/rel/metadata/RelMetadataQuery.java     |   4 +-
 .../apache/calcite/rel/mutable/MutableRels.java    |   5 +-
 .../calcite/rel/rel2sql/RelToSqlConverter.java     | 103 +++--
 .../apache/calcite/rel/rel2sql/SqlImplementor.java |  59 +--
 .../rel/rules/AggregateCaseToFilterRule.java       |   6 +-
 .../AggregateExpandDistinctAggregatesRule.java     |  17 +-
 .../rules/AggregateExpandWithinDistinctRule.java   |  18 +-
 .../rel/rules/AggregateFilterTransposeRule.java    |  12 +-
 .../rel/rules/AggregateJoinJoinRemoveRule.java     |   4 +-
 .../calcite/rel/rules/AggregateJoinRemoveRule.java |   7 +-
 .../rel/rules/AggregateJoinTransposeRule.java      |  23 +-
 .../rel/rules/AggregateReduceFunctionsRule.java    | 105 +++--
 .../calcite/rel/rules/AggregateStarTableRule.java  |   5 +-
 .../rel/rules/AggregateUnionTransposeRule.java     |   6 +-
 .../apache/calcite/rel/rules/DateRangeRules.java   |  29 +-
 .../rel/rules/ExchangeRemoveConstantKeysRule.java  |   8 +-
 .../rel/rules/FilterMultiJoinMergeRule.java        |   5 +-
 .../calcite/rel/rules/FilterTableScanRule.java     |   4 +-
 .../rel/rules/JoinProjectTransposeRule.java        |  10 +-
 .../rules/JoinPushTransitivePredicatesRule.java    |   5 +-
 .../calcite/rel/rules/JoinToMultiJoinRule.java     |   5 +-
 .../apache/calcite/rel/rules/LoptMultiJoin.java    |   7 +-
 .../calcite/rel/rules/LoptOptimizeJoinRule.java    |  22 +-
 .../calcite/rel/rules/LoptSemiJoinOptimizer.java   |  14 +-
 .../org/apache/calcite/rel/rules/MatchRule.java    |  15 +-
 .../rel/rules/MaterializedViewFilterScanRule.java  |   4 +-
 .../rel/rules/ProjectCorrelateTransposeRule.java   |   9 +-
 .../rel/rules/ProjectJoinJoinRemoveRule.java       |  13 +-
 .../calcite/rel/rules/ProjectJoinRemoveRule.java   |   5 +-
 .../calcite/rel/rules/ProjectRemoveRule.java       |   7 +-
 .../calcite/rel/rules/ProjectTableScanRule.java    |   5 +-
 .../calcite/rel/rules/ProjectToWindowRule.java     |  46 +--
 .../rel/rules/ProjectWindowTransposeRule.java      |  10 +-
 .../calcite/rel/rules/ReduceDecimalsRule.java      |  12 +-
 .../calcite/rel/rules/ReduceExpressionsRule.java   |  12 +-
 .../org/apache/calcite/rel/rules/SemiJoinRule.java |   3 +-
 .../apache/calcite/rel/rules/SortJoinCopyRule.java |  58 ++-
 .../calcite/rel/rules/SortJoinTransposeRule.java   |  24 +-
 .../calcite/rel/rules/SortUnionTransposeRule.java  |  10 +-
 .../org/apache/calcite/rel/rules/SpatialRules.java |   6 +-
 .../calcite/rel/rules/SubQueryRemoveRule.java      | 138 +++----
 .../apache/calcite/rel/rules/ValuesReduceRule.java |   6 +-
 .../materialize/MaterializedViewAggregateRule.java |  77 ++--
 .../materialize/MaterializedViewJoinRule.java      |  32 +-
 .../rules/materialize/MaterializedViewRule.java    | 183 +++++----
 .../org/apache/calcite/rel/stream/StreamRules.java |  26 +-
 .../calcite/rel/type/RelDataTypeFactory.java       |   5 +-
 .../calcite/rel/type/RelDataTypeFactoryImpl.java   |  35 +-
 .../apache/calcite/rel/type/RelDataTypeHolder.java |   9 +-
 .../apache/calcite/rel/type/RelDataTypeSystem.java |  72 ++--
 .../calcite/rel/type/RelDataTypeSystemImpl.java    |  14 +-
 .../java/org/apache/calcite/rex/RexBuilder.java    |  89 +++--
 .../org/apache/calcite/rex/RexExecutorImpl.java    |  16 +-
 .../java/org/apache/calcite/rex/RexLiteral.java    |   6 +-
 .../main/java/org/apache/calcite/rex/RexOver.java  |   5 +-
 .../java/org/apache/calcite/rex/RexProgram.java    |   8 +-
 .../org/apache/calcite/rex/RexProgramBuilder.java  |  11 +-
 .../java/org/apache/calcite/rex/RexSimplify.java   |  65 +--
 .../main/java/org/apache/calcite/rex/RexUtil.java  |  38 +-
 .../java/org/apache/calcite/runtime/HttpUtils.java |   4 +-
 .../org/apache/calcite/runtime/JsonFunctions.java  |  64 +--
 .../main/java/org/apache/calcite/runtime/Like.java |   8 +-
 .../java/org/apache/calcite/runtime/Matcher.java   |  10 +-
 .../calcite/runtime/ResultSetEnumerable.java       |   4 +-
 .../calcite/runtime/SpatialTypeFunctions.java      |  11 +-
 .../org/apache/calcite/runtime/SqlFunctions.java   |  19 +-
 .../org/apache/calcite/runtime/XmlFunctions.java   |   5 +-
 .../java/org/apache/calcite/schema/Schemas.java    |  26 +-
 .../calcite/schema/impl/AggregateFunctionImpl.java |   4 +-
 .../calcite/schema/impl/MaterializedViewTable.java |  12 +-
 .../calcite/schema/impl/ModifiableViewTable.java   |  12 +-
 .../calcite/schema/impl/TableFunctionImpl.java     |  32 +-
 .../org/apache/calcite/schema/impl/ViewTable.java  |   4 +-
 .../main/java/org/apache/calcite/sql/SqlCall.java  |   6 +-
 .../org/apache/calcite/sql/SqlCallBinding.java     |  10 +-
 .../java/org/apache/calcite/sql/SqlFunction.java   |  15 +-
 .../apache/calcite/sql/SqlJdbcFunctionCall.java    |  38 +-
 .../main/java/org/apache/calcite/sql/SqlKind.java  |   2 +-
 .../org/apache/calcite/sql/SqlLateralOperator.java |   6 +-
 .../java/org/apache/calcite/sql/SqlLiteral.java    |   5 +-
 .../java/org/apache/calcite/sql/SqlOperator.java   |   4 +-
 .../calcite/sql/SqlSpatialTypeOperatorTable.java   |  10 +-
 .../calcite/sql/SqlSplittableAggFunction.java      |   4 +-
 .../org/apache/calcite/sql/advise/SqlAdvisor.java  |  14 +-
 .../sql/advise/SqlAdvisorGetHintsFunction.java     |   4 +-
 .../sql/advise/SqlAdvisorGetHintsFunction2.java    |   4 +-
 .../calcite/sql/dialect/BigQuerySqlDialect.java    |   8 +-
 .../calcite/sql/dialect/FireboltSqlDialect.java    |   5 +-
 .../apache/calcite/sql/dialect/HiveSqlDialect.java |   5 +-
 .../calcite/sql/dialect/HsqldbSqlDialect.java      |  10 +-
 .../calcite/sql/dialect/JethroDataSqlDialect.java  |  20 +-
 .../calcite/sql/dialect/MysqlSqlDialect.java       |   7 +-
 .../calcite/sql/dialect/OracleSqlDialect.java      |   5 +-
 .../calcite/sql/dialect/PostgresqlSqlDialect.java  |   5 +-
 .../calcite/sql/dialect/SparkSqlDialect.java       |   5 +-
 .../apache/calcite/sql/fun/SqlBetweenOperator.java |   4 +-
 .../apache/calcite/sql/fun/SqlCaseOperator.java    |   5 +-
 .../org/apache/calcite/sql/fun/SqlDotOperator.java |  11 +-
 .../apache/calcite/sql/fun/SqlFloorFunction.java   |   7 +-
 .../apache/calcite/sql/fun/SqlItemOperator.java    |   4 +-
 .../sql/fun/SqlJsonObjectAggAggFunction.java       |   9 +-
 .../calcite/sql/fun/SqlJsonObjectFunction.java     |   4 +-
 .../calcite/sql/fun/SqlJsonValueFunction.java      |  22 +-
 .../org/apache/calcite/sql/fun/SqlLibrary.java     |  12 +-
 .../sql/fun/SqlLibraryOperatorTableFactory.java    |   5 +-
 .../org/apache/calcite/sql/fun/SqlRowOperator.java |  22 +-
 .../apache/calcite/sql/parser/SqlParserUtil.java   |  57 +--
 .../apache/calcite/sql/pretty/SqlPrettyWriter.java |  12 +-
 .../org/apache/calcite/sql/type/ReturnTypes.java   |  15 +-
 .../calcite/sql/type/SetopOperandTypeChecker.java  |   7 +-
 .../org/apache/calcite/sql/type/SqlTypeUtil.java   |  17 +-
 .../sql/validate/AggregatingSelectScope.java       |  14 +-
 .../calcite/sql/validate/DelegatingScope.java      |  27 +-
 .../apache/calcite/sql/validate/EmptyScope.java    |   8 +-
 .../calcite/sql/validate/SchemaNamespace.java      |  11 +-
 .../calcite/sql/validate/SelectNamespace.java      |  12 +-
 .../apache/calcite/sql/validate/SelectScope.java   |  16 +-
 .../calcite/sql/validate/SetopNamespace.java       |  16 +-
 .../apache/calcite/sql/validate/SqlMoniker.java    |   5 +-
 .../calcite/sql/validate/SqlNameMatchers.java      |   9 +-
 .../calcite/sql/validate/SqlValidatorImpl.java     | 226 ++++++-----
 .../calcite/sql/validate/SqlValidatorUtil.java     |  80 ++--
 .../calcite/sql/validate/TableNamespace.java       |  13 +-
 .../validate/implicit/AbstractTypeCoercion.java    |  36 +-
 .../sql/validate/implicit/TypeCoercionImpl.java    |  28 +-
 .../sql2rel/DeduplicateCorrelateVariables.java     |   5 +-
 .../calcite/sql2rel/ReflectiveConvertletTable.java |  17 +-
 .../apache/calcite/sql2rel/RelDecorrelator.java    |  54 ++-
 .../apache/calcite/sql2rel/RelFieldTrimmer.java    |  52 ++-
 .../sql2rel/RelStructuredTypeFlattener.java        |  15 +-
 .../apache/calcite/sql2rel/SqlToRelConverter.java  | 244 ++++++------
 .../calcite/sql2rel/StandardConvertletTable.java   | 211 +++++-----
 .../main/java/org/apache/calcite/tools/Hoist.java  |  10 +-
 .../java/org/apache/calcite/tools/Programs.java    |  18 +-
 .../java/org/apache/calcite/tools/RelBuilder.java  |  25 +-
 .../main/java/org/apache/calcite/util/BitSets.java |   5 +-
 .../src/main/java/org/apache/calcite/util/Bug.java |  17 +-
 .../java/org/apache/calcite/util/ChunkList.java    |   4 +-
 .../apache/calcite/util/DateTimeStringUtils.java   |   4 +-
 .../calcite/util/DelegatingInvocationHandler.java  |  36 +-
 .../apache/calcite/util/ImmutableNullableSet.java  |  14 +-
 .../java/org/apache/calcite/util/JsonBuilder.java  |  66 ++--
 .../java/org/apache/calcite/util/ReflectUtil.java  |   5 +-
 .../apache/calcite/util/RelToSqlConverterUtil.java |  15 +-
 .../org/apache/calcite/util/SaffronProperties.java |  19 +-
 .../apache/calcite/util/SerializableCharset.java   |   5 +-
 .../main/java/org/apache/calcite/util/Sources.java |   8 +-
 .../main/java/org/apache/calcite/util/Util.java    |  17 +-
 .../java/org/apache/calcite/util/XmlOutput.java    |   9 +-
 .../java/org/apache/calcite/util/graph/Graphs.java |   5 +-
 .../util/graph/TopologicalOrderIterator.java       |  18 +-
 .../calcite/util/javac/JavaCompilerArgs.java       |   5 +-
 .../calcite/adapter/enumerable/PhysTypeTest.java   |  54 +--
 .../calcite/adapter/enumerable/TypeFinderTest.java |  15 +-
 .../calcite/jdbc/CalciteRemoteDriverTest.java      |  55 +--
 .../apache/calcite/jdbc/JavaTypeFactoryTest.java   |  23 +-
 .../materialize/NormalizationTrimFieldTest.java    |  16 +-
 .../org/apache/calcite/plan/RelOptUtilTest.java    | 137 +++----
 .../org/apache/calcite/plan/RelWriterTest.java     |  10 +-
 .../apache/calcite/plan/volcano/ComboRuleTest.java |   5 +-
 .../apache/calcite/plan/volcano/RelSetTest.java    |  38 +-
 .../calcite/plan/volcano/TraitPropagationTest.java |  66 ++--
 .../calcite/plan/volcano/VolcanoPlannerTest.java   |   5 +-
 .../rel/logical/ToLogicalConverterTest.java        |   5 +-
 .../calcite/rel/metadata/MetadataHandlerTest.java  |  13 +-
 .../RelMetadataHandlerGeneratorUtilTest.java       |   6 +-
 .../calcite/rel/rel2sql/RelToSqlConverterTest.java |  21 +-
 .../calcite/rel/rules/DateRangeRulesTest.java      |  88 +++--
 .../calcite/rel/rules/EnumerableLimitRuleTest.java |   8 +-
 .../calcite/rel/rules/SortRemoveRuleTest.java      |  12 +-
 .../org/apache/calcite/rex/RexBuilderTest.java     |  92 +++--
 .../org/apache/calcite/rex/RexExecutorTest.java    |   4 +-
 .../apache/calcite/rex/RexProgramBuilderBase.java  |   6 +-
 .../org/apache/calcite/rex/RexProgramTest.java     | 216 +++++-----
 .../rex/RexSqlStandardConvertletTableTest.java     |  32 +-
 .../apache/calcite/runtime/EnumerablesTest.java    |  58 +--
 .../calcite/sql/SqlSetOptionOperatorTest.java      |   8 +-
 .../apache/calcite/sql/test/SqlAdvisorTest.java    |  16 +-
 .../calcite/sql/type/RelDataTypeSystemTest.java    |  10 +-
 .../calcite/sql/type/SqlTypeFactoryTest.java       |  13 +-
 .../apache/calcite/sql/type/SqlTypeFixture.java    | 151 +++----
 .../calcite/sql/validate/SqlValidatorUtilTest.java |  24 +-
 .../org/apache/calcite/test/HepPlannerTest.java    |   5 +-
 .../apache/calcite/test/JdbcFrontJdbcBackTest.java |   5 +-
 .../java/org/apache/calcite/test/JdbcTest.java     | 292 +++++++-------
 .../java/org/apache/calcite/test/LatticeTest.java  |  10 +-
 .../MaterializedViewSubstitutionVisitorTest.java   |  83 ++--
 .../calcite/test/MaterializedViewTester.java       |  31 +-
 .../java/org/apache/calcite/test/ModelTest.java    |  14 +-
 .../org/apache/calcite/test/MutableRelTest.java    |  12 +-
 .../apache/calcite/test/ReflectiveSchemaTest.java  |  39 +-
 .../org/apache/calcite/test/RelBuilderTest.java    | 282 ++++++-------
 .../org/apache/calcite/test/RelMetadataTest.java   |  36 +-
 .../org/apache/calcite/test/RelOptRulesTest.java   | 147 +++----
 .../calcite/test/RexImplicationCheckerTest.java    |  53 +--
 .../apache/calcite/test/RexTransformerTest.java    |  30 +-
 .../calcite/test/RuleMatchVisualizerTest.java      |  12 +-
 .../apache/calcite/test/ScannableTableTest.java    |   4 +-
 .../apache/calcite/test/SqlHintsConverterTest.java |  79 ++--
 .../calcite/test/SqlOperatorBindingTest.java       |  20 +-
 .../test/SqlToRelConverterExtendedTest.java        |   5 +-
 .../org/apache/calcite/test/SqlValidatorTest.java  |   2 +-
 .../org/apache/calcite/test/TypeCoercionTest.java  |  12 +-
 .../org/apache/calcite/tools/FrameworksTest.java   |  12 +-
 .../java/org/apache/calcite/tools/PlannerTest.java | 111 +++---
 .../apache/calcite/util/PermutationTestCase.java   |  23 +-
 .../java/org/apache/calcite/util/UtilTest.java     |   6 +-
 .../adapter/druid/BinaryOperatorConversion.java    |   6 +-
 .../adapter/druid/CeilOperatorConversion.java      |   6 +-
 .../adapter/druid/DirectOperatorConversion.java    |   6 +-
 .../calcite/adapter/druid/DruidExpressions.java    |  25 +-
 .../calcite/adapter/druid/DruidJsonFilter.java     |   9 +-
 .../apache/calcite/adapter/druid/DruidQuery.java   | 130 +++---
 .../apache/calcite/adapter/druid/DruidRules.java   |  42 +-
 .../apache/calcite/adapter/druid/DruidSchema.java  |  11 +-
 .../adapter/druid/DruidSqlCastConverter.java       |  21 +-
 .../calcite/adapter/druid/DruidTableFactory.java   |  17 +-
 .../adapter/druid/FloorOperatorConversion.java     |   6 +-
 .../adapter/druid/NaryOperatorConverter.java       |  10 +-
 .../adapter/druid/SubstringOperatorConversion.java |  28 +-
 .../adapter/druid/TimeExtractionFunction.java      |  36 +-
 .../druid/UnaryPrefixOperatorConversion.java       |   6 +-
 .../druid/UnarySuffixOperatorConversion.java       |  11 +-
 .../adapter/druid/DruidQueryFilterTest.java        |   5 +-
 .../org/apache/calcite/test/DruidAdapter2IT.java   |   4 +-
 .../calcite/test/DruidDateRangeRulesTest.java      |  17 +-
 .../elasticsearch/ElasticsearchAggregate.java      |  11 +-
 .../adapter/elasticsearch/ElasticsearchJson.java   |  10 +-
 .../elasticsearch/ElasticsearchMapping.java        |   5 +-
 .../adapter/elasticsearch/ElasticsearchSchema.java |   4 +-
 .../elasticsearch/ElasticsearchSchemaFactory.java  |  16 +-
 .../elasticsearch/ElasticsearchSearchResult.java   |  15 +-
 .../adapter/elasticsearch/ElasticsearchTable.java  |  11 +-
 .../ElasticsearchToEnumerableConverter.java        |  55 +--
 .../elasticsearch/ElasticsearchTransport.java      |  29 +-
 .../adapter/elasticsearch/PredicateAnalyzer.java   |  21 +-
 .../calcite/adapter/elasticsearch/Scrolling.java   |  11 +-
 .../adapter/elasticsearch/AggregationTest.java     |  20 +-
 .../adapter/elasticsearch/BooleanLogicTest.java    |   9 +-
 .../elasticsearch/ElasticSearchAdapterTest.java    |  13 +-
 .../elasticsearch/EmbeddedElasticsearchPolicy.java |  18 +-
 .../calcite/adapter/elasticsearch/MatchTest.java   |  29 +-
 .../adapter/elasticsearch/Projection2Test.java     |  15 +-
 .../adapter/elasticsearch/ProjectionTest.java      |  10 +-
 .../org/apache/calcite/adapter/csv/CsvTable.java   |   5 +-
 .../test/java/org/apache/calcite/test/CsvTest.java |  24 +-
 .../apache/calcite/adapter/file/CsvEnumerator.java |   4 +-
 .../calcite/adapter/file/CsvStreamReader.java      |  10 +-
 .../org/apache/calcite/adapter/file/CsvTable.java  |   5 +-
 .../calcite/adapter/file/FileAdapterTest.java      |  24 +-
 .../calcite/adapter/geode/rel/GeodeAggregate.java  |   4 +-
 .../calcite/adapter/geode/rel/GeodeRules.java      |   7 +-
 .../calcite/adapter/geode/rel/GeodeTable.java      |  17 +-
 .../geode/rel/GeodeToEnumerableConverter.java      |  10 +-
 .../adapter/geode/simple/GeodeSimpleSchema.java    |  15 +-
 .../adapter/geode/rel/RelationalJdbcExample.java   |  22 +-
 .../calcite/adapter/innodb/InnodbEnumerator.java   |   8 +-
 .../adapter/innodb/InnodbFilterTranslator.java     |  15 +-
 .../apache/calcite/adapter/innodb/InnodbTable.java |  21 +-
 .../innodb/InnodbToEnumerableConverter.java        |  10 +-
 .../adapter/innodb/InnodbAdapterDataTypesTest.java |   7 +-
 .../calcite/adapter/innodb/InnodbAdapterTest.java  | 122 +++---
 .../calcite/adapter/kafka/KafkaTableFactory.java   |  23 +-
 .../apache/calcite/linq4j/EnumerableDefaults.java  |  28 +-
 .../java/org/apache/calcite/linq4j/LookupImpl.java |   4 +-
 .../calcite/linq4j/MergeUnionEnumerator.java       |   6 +-
 .../java/org/apache/calcite/linq4j/Nullness.java   |  15 +
 .../apache/calcite/linq4j/tree/BlockBuilder.java   |  27 +-
 .../apache/calcite/linq4j/tree/BlockStatement.java |   4 +-
 .../linq4j/tree/ClassDeclarationFinder.java        |   3 +-
 .../apache/calcite/linq4j/tree/Expressions.java    |   5 +-
 .../calcite/linq4j/tree/FunctionExpression.java    |   8 +-
 .../calcite/linq4j/tree/IndexExpression.java       |   4 +-
 .../calcite/linq4j/tree/MethodCallExpression.java  |   4 +-
 .../apache/calcite/linq4j/tree/NewExpression.java  |   8 +-
 .../calcite/linq4j/tree/OptimizeShuttle.java       |  10 +-
 .../calcite/linq4j/test/BlockBuilderTest.java      |   5 +-
 .../calcite/linq4j/test/DeterministicTest.java     |   3 +-
 .../apache/calcite/linq4j/test/ExpressionTest.java | 191 ++++-----
 .../apache/calcite/linq4j/test/InlinerTest.java    |  80 ++--
 .../calcite/linq4j/test/JoinPreserveOrderTest.java |  36 +-
 .../apache/calcite/linq4j/test/LimitSortTest.java  |  10 +-
 .../org/apache/calcite/linq4j/test/Linq4jTest.java |  68 ++--
 .../apache/calcite/linq4j/test/LookupImplTest.java |   7 +-
 .../apache/calcite/adapter/pig/PigTableScan.java   |   4 +-
 .../org/apache/calcite/piglet/PigConverter.java    |   7 +-
 .../org/apache/calcite/piglet/PigRelBuilder.java   |  25 +-
 .../org/apache/calcite/piglet/PigRelExVisitor.java |  15 +-
 .../calcite/piglet/PigRelOpInnerVisitor.java       |  13 +-
 .../org/apache/calcite/piglet/PigRelOpVisitor.java |  16 +-
 .../calcite/piglet/PigRelToSqlConverter.java       |  20 +-
 .../calcite/piglet/PigToSqlAggregateRule.java      |   5 +-
 .../org/apache/calcite/test/PigScriptTest.java     |   5 +-
 .../adapter/os/GitCommitsTableFunction.java        |  20 +-
 .../calcite/chinook/ChinookAvaticaServer.java      |  10 +-
 .../apache/calcite/adapter/os/OsAdapterTest.java   |  24 +-
 .../apache/calcite/adapter/tpcds/TpcdsTest.java    |   5 +-
 .../org/apache/calcite/adapter/tpch/TpchTest.java  |   8 +-
 .../calcite/adapter/redis/RedisEnumerator.java     |   5 +-
 .../apache/calcite/adapter/redis/RedisSchema.java  |   8 +-
 .../apache/calcite/adapter/redis/RedisTable.java   |   5 +-
 .../adapter/redis/RedisAdapterCaseBase.java        |   5 +-
 .../calcite/adapter/spark/SparkHandlerImpl.java    |   8 +-
 .../apache/calcite/adapter/spark/SparkRules.java   |   4 +-
 .../splunk/search/SplunkConnectionImpl.java        |   7 +-
 .../apache/calcite/sql/parser/SqlParserTest.java   |   5 +-
 .../apache/calcite/sql/test/AbstractSqlTester.java |  17 +-
 .../org/apache/calcite/test/CalciteAssert.java     |  26 +-
 .../org/apache/calcite/test/DiffRepository.java    |   7 +-
 .../apache/calcite/test/RelMetadataFixture.java    |  12 +-
 .../org/apache/calcite/test/RelOptFixture.java     |   5 +-
 .../test/RexImplicationCheckerFixtures.java        |   4 +-
 .../org/apache/calcite/test/SqlOperatorTest.java   |  13 +-
 .../org/apache/calcite/test/catalog/Fixture.java   |  77 ++--
 .../calcite/test/catalog/MockCatalogReader.java    |  38 +-
 .../test/catalog/MockCatalogReaderDynamic.java     |  25 +-
 .../test/catalog/MockCatalogReaderExtended.java    | 101 +++--
 .../test/catalog/MockCatalogReaderSimple.java      | 116 +++---
 .../enumerable/CodeGenerationBenchmark.java        |   5 +-
 .../calcite/benchmarks/MetadataBenchmark.java      |   3 +-
 429 files changed, 6023 insertions(+), 5392 deletions(-)

diff --git a/build.gradle.kts b/build.gradle.kts
index 3f9afa6201..8e27adba2d 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -582,9 +582,11 @@ allprojects {
                     replaceRegex("require message for requireNonNull", """(?<!#)requireNonNull\(\s*(\w+)\s*(?:,\s*"(?!\1")\w+"\s*)?\)""", "requireNonNull($1, \"$1\")")
                     // (?-m) disables multiline, so $ matches the very end of the file rather than end of line
                     replaceRegex("Remove '// End file.java' trailer", "(?-m)\n// End [^\n]+\\.\\w+\\s*$", "")
-                    replaceRegex("<p> should not be placed a the end of the line", "(?-m)\\s*+<p> *+\n \\* ", "\n *\n * <p>")
+                    replaceRegex("<p> should not be placed at the end of the line", "(?-m)\\s*+<p> *+\n \\* ", "\n *\n * <p>")
                     replaceRegex("Method parameter list should not end in whitespace or newline", "(?<!;)\\s+\\) \\{", ") {")
-                    replaceRegex("Method argument list should not end in whitespace or newline", "(?<!;)\\s+\\);", ");")
+                    replaceRegex("Method argument list should not end in whitespace or newline", "(?<!;)\\s+(\\)+[;,])", "$1")
+                    replaceRegex("Long assignment should be broken after '='", "^([^/*\"\\n]*) = ([^@\\n]*)\\(\n( *)", "$1 =\n$3$2(")
+                    replaceRegex("Long assignment should be broken after '='", "^([^/*\"\\n]*) = ([^@\\n]*)\\((.*,)\n( *)", "$1 =\n$4$2($3 ")
                     // Assume developer copy-pasted the link, and updated text only, so the url is old, and we replace it with the proper one
                     replaceRegex(">[CALCITE-...] link styles: 1", "<a(?:(?!CALCITE-)[^>])++CALCITE-\\d+[^>]++>\\s*+\\[?(CALCITE-\\d+)\\]?", "<a href=\"https://issues.apache.org/jira/browse/\$1\">[\$1]")
                     // If the link was crafted manually, ensure it has [CALCITE-...] in the link text
diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraEnumerator.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraEnumerator.java
index 1cf187a5de..98d30664a7 100644
--- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraEnumerator.java
+++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraEnumerator.java
@@ -87,9 +87,10 @@ class CassandraEnumerator implements Enumerator<Object> {
    */
   private @Nullable Object currentRowField(int index) {
     assert current != null;
-    final Object o =  current.get(index,
-        CodecRegistry.DEFAULT.codecFor(
-            current.getColumnDefinitions().get(index).getType()));
+    final Object o =
+         current.get(index,
+             CodecRegistry.DEFAULT.codecFor(
+                 current.getColumnDefinitions().get(index).getType()));
 
     return convertToEnumeratorObject(o);
   }
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 cef74d7360..e5b4d8aa3a 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
@@ -159,16 +159,16 @@ public class CassandraSchema extends AbstractSchema {
       final String columnName = column.getName().asInternal();
 
       if (dataType instanceof ListType) {
-        SqlTypeName arrayInnerType = CQL_TO_SQL_TYPE.lookup(
-            ((ListType) dataType).getElementType());
+        SqlTypeName arrayInnerType =
+            CQL_TO_SQL_TYPE.lookup(((ListType) dataType).getElementType());
 
         fieldInfo.add(columnName,
                 typeFactory.createArrayType(
                     typeFactory.createSqlType(arrayInnerType), -1))
             .nullable(true);
       } else if (dataType instanceof SetType) {
-        SqlTypeName multiSetInnerType = CQL_TO_SQL_TYPE.lookup(
-            ((SetType) dataType).getElementType());
+        SqlTypeName multiSetInnerType =
+            CQL_TO_SQL_TYPE.lookup(((SetType) dataType).getElementType());
 
         fieldInfo.add(columnName,
             typeFactory.createMultisetType(
diff --git a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchemaFactory.java b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchemaFactory.java
index 4fba46e0f8..d392c80a6a 100644
--- a/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchemaFactory.java
+++ b/cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraSchemaFactory.java
@@ -43,8 +43,8 @@ public class CassandraSchemaFactory implements SchemaFactory {
   private static final int DEFAULT_CASSANDRA_PORT = 9042;
   private static final Map<Map<String, Object>, CqlSession> INFO_TO_SESSION =
       new ConcurrentHashMap<>();
-  private static final Set<String> SESSION_DEFINING_KEYS = ImmutableSet.of(
-      "host", "port", "keyspace", "username", "password");
+  private static final Set<String> SESSION_DEFINING_KEYS =
+      ImmutableSet.of("host", "port", "keyspace", "username", "password");
   protected static final Logger LOGGER = CalciteTrace.getPlannerTracer();
 
   public CassandraSchemaFactory() {
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 0a374b6829..b5f3c4c6bb 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
@@ -47,9 +47,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Optional;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * Table based on a Cassandra column family.
  */
@@ -138,8 +139,8 @@ public class CassandraTable extends AbstractQueryableTable
     final RelDataType rowType = getRowType(typeFactory);
 
     Function1<String, Void> addField = fieldName -> {
-      RelDataType relDataType = Objects.requireNonNull(
-              rowType.getField(fieldName, true, false)).getType();
+      RelDataType relDataType =
+          requireNonNull(rowType.getField(fieldName, true, false)).getType();
       fieldInfo.add(fieldName, relDataType).nullable(true);
       return null;
     };
@@ -266,7 +267,7 @@ public class CassandraTable extends AbstractQueryableTable
     }
 
     private CqlSession getSession() {
-      return Objects.requireNonNull(schema.unwrap(CassandraSchema.class)).session;
+      return requireNonNull(schema.unwrap(CassandraSchema.class)).session;
     }
 
     /** Called via code-generation.
diff --git a/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterDataTypesTest.java b/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterDataTypesTest.java
index ab6f950dee..a4bea38115 100644
--- a/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterDataTypesTest.java
+++ b/cassandra/src/test/java/org/apache/calcite/test/CassandraAdapterDataTypesTest.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.parallel.Execution;
 import org.junit.jupiter.api.parallel.ExecutionMode;
 
-import java.util.Objects;
+import static java.util.Objects.requireNonNull;
 
 /**
  * Tests for the {@code org.apache.calcite.adapter.cassandra} package related to data types.
@@ -195,8 +195,9 @@ class CassandraAdapterDataTypesTest {
 
   @Test void testCollectionsInnerValues() {
     // timestamp retrieval depends on the user timezone, we must compute the expected result
-    long v = Objects.requireNonNull(
-        TypeCodecs.TIMESTAMP.parse("'2015-05-03 13:30:54.234'")).toEpochMilli();
+    long v =
+        requireNonNull(TypeCodecs.TIMESTAMP.parse("'2015-05-03 13:30:54.234'"))
+            .toEpochMilli();
     String expectedTimestamp = DateTimeUtils.unixTimestampToString(v);
 
     CalciteAssert.that()
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 006698a376..3d78f3548b 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
@@ -249,8 +249,9 @@ class ColumnLoader<T> {
       switch (rep) {
       case OBJECT:
       case JAVA_SQL_TIMESTAMP:
-        final List<@Nullable Long> longs = Util.transform((List<@Nullable Timestamp>) list,
-            (Timestamp t) -> t == null ? null : t.getTime());
+        final List<@Nullable Long> longs =
+            Util.transform((List<@Nullable Timestamp>) list,
+                (Timestamp t) -> t == null ? null : t.getTime());
         return longs;
       default:
         break;
@@ -261,8 +262,8 @@ class ColumnLoader<T> {
       case OBJECT:
       case JAVA_SQL_TIME:
         return Util.<@Nullable Time, @Nullable Integer>transform(
-            (List<@Nullable Time>) list, (Time t) -> t == null
-                ? null
+            (List<@Nullable Time>) list,
+            (Time t) -> t == null ? null
                 : (int) (t.getTime() % DateTimeUtils.MILLIS_PER_DAY));
       default:
         break;
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 4680d7a8dc..a92cc98202 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
@@ -540,10 +540,11 @@ public class EnumUtils {
           // Try to call "toString()" method
           // E.g. from "Integer" to "String"
           // Generate "x == null ? null : x.toString()"
-          result = Expressions.condition(
-              Expressions.equal(operand, RexImpTable.NULL_EXPR),
-              RexImpTable.NULL_EXPR,
-              Expressions.call(operand, "toString"));
+          result =
+              Expressions.condition(
+                  Expressions.equal(operand, RexImpTable.NULL_EXPR),
+                  RexImpTable.NULL_EXPR,
+                  Expressions.call(operand, "toString"));
         } catch (RuntimeException e) {
           // For some special cases, e.g., "BuiltInMethod.LESSER",
           // its return type is generic ("Comparable"), which contains
@@ -820,31 +821,24 @@ public class EnumUtils {
     // Find the fixed window for a timestamp given a window size and an offset, and return the
     // window start.
     // wmColExprToLong - (wmColExprToLong + windowSizeMillis - offsetMillis) % windowSizeMillis
-    Expression windowStartExpr = Expressions.subtract(
-        wmColExprToLong,
-        Expressions.modulo(
-            Expressions.add(
-                wmColExprToLong,
-            Expressions.subtract(
-                windowSizeExpr,
-                offsetExpr
-            )),
+    Expression windowStartExpr =
+        Expressions.subtract(wmColExprToLong,
+            Expressions.modulo(
+                Expressions.add(wmColExprToLong,
+                    Expressions.subtract(windowSizeExpr, offsetExpr)),
             windowSizeExpr));
 
     expressions.add(windowStartExpr);
 
     // The window end equals to the window start plus window size.
     // windowStartMillis + sizeMillis
-    Expression windowEndExpr = Expressions.add(
-        windowStartExpr,
-        windowSizeExpr);
+    Expression windowEndExpr =
+        Expressions.add(windowStartExpr, windowSizeExpr);
 
     expressions.add(windowEndExpr);
 
-    return Expressions.lambda(
-        Function1.class,
-        outputPhysType.record(expressions),
-        parameter);
+    return Expressions.lambda(Function1.class,
+        outputPhysType.record(expressions), parameter);
   }
 
   /**
@@ -930,10 +924,11 @@ public class EnumUtils {
       for (@Nullable Object[] element : elements) {
         SortedMultiMap<Pair<Long, Long>, @Nullable Object[]> session =
             sessionKeyMap.computeIfAbsent(element[indexOfKeyColumn], k -> new SortedMultiMap<>());
-        Object watermark = requireNonNull(element[indexOfWatermarkedColumn],
-            "element[indexOfWatermarkedColumn]");
-        Pair<Long, Long> initWindow = computeInitWindow(
-            SqlFunctions.toLong(watermark), gap);
+        Object watermark =
+            requireNonNull(element[indexOfWatermarkedColumn],
+                "element[indexOfWatermarkedColumn]");
+        Pair<Long, Long> initWindow =
+            computeInitWindow(SqlFunctions.toLong(watermark), gap);
         session.putMulti(initWindow, element);
       }
 
@@ -1043,10 +1038,12 @@ public class EnumUtils {
         return takeOne();
       } else {
         @Nullable Object[] current = inputEnumerator.current();
-        Object watermark = requireNonNull(current[indexOfWatermarkedColumn],
-            "element[indexOfWatermarkedColumn]");
-        List<Pair<Long, Long>> windows = hopWindows(SqlFunctions.toLong(watermark),
-            emitFrequency, windowSize, offset);
+        Object watermark =
+            requireNonNull(current[indexOfWatermarkedColumn],
+                "element[indexOfWatermarkedColumn]");
+        List<Pair<Long, Long>> windows =
+            hopWindows(SqlFunctions.toLong(watermark), emitFrequency,
+                windowSize, offset);
         for (Pair<Long, Long> window : windows) {
           @Nullable Object[] curWithWindow = new Object[current.length + 2];
           System.arraycopy(current, 0, curWithWindow, 0, current.length);
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 719a39c186..d38b26c333 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
@@ -195,8 +195,8 @@ public class EnumerableAggregate extends EnumerableAggregateBase implements Enum
     final List<Expression> initExpressions = new ArrayList<>();
     final BlockBuilder initBlock = new BlockBuilder();
 
-    final List<Type> aggStateTypes = createAggStateTypes(
-        initExpressions, initBlock, aggs, typeFactory);
+    final List<Type> aggStateTypes =
+        createAggStateTypes(initExpressions, initBlock, aggs, typeFactory);
 
     final PhysType accPhysType =
         PhysTypeImpl.of(typeFactory,
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateBase.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateBase.java
index 5ce800c990..3d0ab7e895 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateBase.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateBase.java
@@ -128,8 +128,8 @@ public abstract class EnumerableAggregateBase extends Aggregate {
       Expression accumulatorInitializer, boolean hasOrderedCall,
       ParameterExpression lambdaFactory) {
     if (hasOrderedCall) {
-      ParameterExpression pe = Expressions.parameter(List.class,
-          builder.newName("lazyAccumulators"));
+      ParameterExpression pe =
+          Expressions.parameter(List.class, builder.newName("lazyAccumulators"));
       builder.add(
           Expressions.declare(0, pe, Expressions.new_(LinkedList.class)));
 
@@ -163,8 +163,8 @@ public abstract class EnumerableAggregateBase extends Aggregate {
                   accumulatorInitializer, pe)));
     } else {
       // when hasOrderedCall == false
-      ParameterExpression pe = Expressions.parameter(List.class,
-          builder.newName("accumulatorAdders"));
+      ParameterExpression pe =
+          Expressions.parameter(List.class, builder.newName("accumulatorAdders"));
       builder.add(
           Expressions.declare(0, pe, Expressions.new_(LinkedList.class)));
 
@@ -283,11 +283,13 @@ public abstract class EnumerableAggregateBase extends Aggregate {
             }
           };
 
-      agg.implementor.implementAdd(requireNonNull(agg.context, "agg.context"), addContext);
+      agg.implementor.implementAdd(requireNonNull(agg.context, "agg.context"),
+          addContext);
       builder2.add(accExpr);
-      agg.accumulatorAdder = builder.append("accumulatorAdder",
-          Expressions.lambda(Function2.class, builder2.toBlock(), accExpr,
-              inParameter));
+      agg.accumulatorAdder =
+          builder.append("accumulatorAdder",
+              Expressions.lambda(Function2.class, builder2.toBlock(), accExpr,
+                  inParameter));
     }
   }
 
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoin.java
index 15e211a154..94ef9c3213 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoin.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoin.java
@@ -175,15 +175,13 @@ public class EnumerableBatchNestedLoopJoin extends Join implements EnumerableRel
         corrArg =
             Expressions.parameter(Modifier.FINAL,
                 corrVarType, corrVar.get(c));
-        final DeclarationStatement decl = Expressions.declare(
-            Modifier.FINAL,
-            corrArg,
-            Expressions.convert_(
-                Expressions.call(
-                    corrArgList,
-                    BuiltInMethod.LIST_GET.method,
-                    Expressions.constant(c)),
-                corrVarType));
+        final DeclarationStatement decl =
+            Expressions.declare(Modifier.FINAL, corrArg,
+                Expressions.convert_(
+                    Expressions.call(corrArgList,
+                        BuiltInMethod.LIST_GET.method,
+                        Expressions.constant(c)),
+                    corrVarType));
         corrBlock.add(decl);
         implementor.registerCorrelVariable(corrVar.get(c), corrArg,
             corrBlock, leftResult.physType);
@@ -193,13 +191,11 @@ public class EnumerableBatchNestedLoopJoin extends Join implements EnumerableRel
         corrArg =
             Expressions.parameter(Modifier.FINAL,
                 Primitive.box(corrVarType), "$box" + corrVar.get(c));
-        final DeclarationStatement decl = Expressions.declare(
-            Modifier.FINAL,
-            corrArg,
-            Expressions.call(
-                corrArgList,
-                BuiltInMethod.LIST_GET.method,
-                Expressions.constant(c)));
+        final DeclarationStatement decl =
+            Expressions.declare(Modifier.FINAL, corrArg,
+                Expressions.call(corrArgList,
+                    BuiltInMethod.LIST_GET.method,
+                    Expressions.constant(c)));
         corrBlock.add(decl);
         final ParameterExpression corrRef =
             (ParameterExpression) corrBlock.append(corrVar.get(c),
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 00759f5933..666e8802d4 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
@@ -65,8 +65,9 @@ public class EnumerableBindable extends ConverterImpl implements BindableRel {
 
   @Override public Enumerable<@Nullable Object[]> bind(DataContext dataContext) {
     final ImmutableMap<String, Object> map = ImmutableMap.of();
-    final Bindable bindable = EnumerableInterpretable.toBindable(map, null,
-        (EnumerableRel) getInput(), EnumerableRel.Prefer.ARRAY);
+    final Bindable bindable =
+        EnumerableInterpretable.toBindable(map, null,
+            (EnumerableRel) getInput(), EnumerableRel.Prefer.ARRAY);
     final ArrayBindable arrayBindable = EnumerableInterpretable.box(bindable);
     return arrayBindable.bind(dataContext);
   }
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 3c872a1591..e1b1cdcb29 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
@@ -266,8 +266,8 @@ public class EnumerableCalc extends Calc implements EnumerableRel {
 
   @Override public @Nullable Pair<RelTraitSet, List<RelTraitSet>> passThroughTraits(
       final RelTraitSet required) {
-    final List<RexNode> exps = Util.transform(program.getProjectList(),
-        program::expandLocalRef);
+    final List<RexNode> exps =
+        Util.transform(program.getProjectList(), program::expandLocalRef);
 
     return EnumerableTraitsUtils.passThroughTraitsForProject(required, exps,
         input.getRowType(), input.getCluster().getTypeFactory(), traitSet);
@@ -275,8 +275,8 @@ public class EnumerableCalc extends Calc implements EnumerableRel {
 
   @Override public @Nullable Pair<RelTraitSet, List<RelTraitSet>> deriveTraits(
       final RelTraitSet childTraits, final int childId) {
-    final List<RexNode> exps = Util.transform(program.getProjectList(),
-        program::expandLocalRef);
+    final List<RexNode> exps =
+        Util.transform(program.getProjectList(), program::expandLocalRef);
 
     return EnumerableTraitsUtils.deriveTraitsForProject(childTraits, childId, exps,
         input.getRowType(), input.getCluster().getTypeFactory(), traitSet);
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableConvention.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableConvention.java
index f2dcbc5e77..38678cf298 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableConvention.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableConvention.java
@@ -60,9 +60,9 @@ public enum EnumerableConvention implements Convention {
       final RelTraitSet required) {
     RelNode rel = input;
     if (input.getConvention() != INSTANCE) {
-      rel = ConventionTraitDef.INSTANCE.convert(
-          input.getCluster().getPlanner(),
-          input, INSTANCE, true);
+      rel =
+          ConventionTraitDef.INSTANCE.convert(input.getCluster().getPlanner(),
+              input, INSTANCE, true);
       requireNonNull(rel,
           () -> "Unable to convert input to " + INSTANCE + ", input = " + input);
     }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelate.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelate.java
index efb0267995..e5adff42d9 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelate.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelate.java
@@ -128,8 +128,9 @@ public class EnumerableCorrelate extends Correlate
       corrArg =
           Expressions.parameter(Modifier.FINAL,
               Primitive.box(corrVarType), "$box" + getCorrelVariable());
-      corrRef = (ParameterExpression) corrBlock.append(getCorrelVariable(),
-          Expressions.unbox(corrArg));
+      corrRef =
+          (ParameterExpression) corrBlock.append(getCorrelVariable(),
+              Expressions.unbox(corrArg));
     }
 
     implementor.registerCorrelVariable(getCorrelVariable(), corrRef,
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableHashJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableHashJoin.java
index eb73acdf6e..259fb68503 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableHashJoin.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableHashJoin.java
@@ -200,11 +200,14 @@ public class EnumerableHashJoin extends Join implements EnumerableRel {
             joinInfo.leftKeys, JavaRowFormat.LIST);
     Expression predicate = Expressions.constant(null);
     if (!joinInfo.nonEquiConditions.isEmpty()) {
-      RexNode nonEquiCondition = RexUtil.composeConjunction(
-          getCluster().getRexBuilder(), joinInfo.nonEquiConditions, true);
+      RexNode nonEquiCondition =
+          RexUtil.composeConjunction(getCluster().getRexBuilder(),
+              joinInfo.nonEquiConditions, true);
       if (nonEquiCondition != null) {
-        predicate = EnumUtils.generatePredicate(implementor, getCluster().getRexBuilder(),
-            left, right, leftResult.physType, rightResult.physType, nonEquiCondition);
+        predicate =
+            EnumUtils.generatePredicate(implementor,
+                getCluster().getRexBuilder(), left, right, leftResult.physType,
+                rightResult.physType, nonEquiCondition);
       }
     }
     return implementor.result(
@@ -243,11 +246,14 @@ public class EnumerableHashJoin extends Join implements EnumerableRel {
             joinInfo.leftKeys, JavaRowFormat.LIST);
     Expression predicate = Expressions.constant(null);
     if (!joinInfo.nonEquiConditions.isEmpty()) {
-      RexNode nonEquiCondition = RexUtil.composeConjunction(
-          getCluster().getRexBuilder(), joinInfo.nonEquiConditions, true);
+      RexNode nonEquiCondition =
+          RexUtil.composeConjunction(getCluster().getRexBuilder(),
+              joinInfo.nonEquiConditions, true);
       if (nonEquiCondition != null) {
-        predicate = EnumUtils.generatePredicate(implementor, getCluster().getRexBuilder(),
-            left, right, leftResult.physType, rightResult.physType, nonEquiCondition);
+        predicate =
+            EnumUtils.generatePredicate(implementor,
+                getCluster().getRexBuilder(), left, right, leftResult.physType,
+                rightResult.physType, nonEquiCondition);
       }
     }
     return implementor.result(
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java
index c156652304..922687df40 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java
@@ -80,9 +80,9 @@ public class EnumerableInterpretable extends ConverterImpl
   }
 
   @Override public Node implement(final InterpreterImplementor implementor) {
-    final Bindable bindable = toBindable(implementor.internalParameters,
-            implementor.spark, (EnumerableRel) getInput(),
-        EnumerableRel.Prefer.ARRAY);
+    final Bindable bindable =
+        toBindable(implementor.internalParameters, implementor.spark,
+            (EnumerableRel) getInput(), EnumerableRel.Prefer.ARRAY);
     final ArrayBindable arrayBindable = box(bindable);
     final Enumerable<@Nullable Object[]> enumerable =
         arrayBindable.bind(implementor.dataContext);
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreter.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreter.java
index 3654e9735a..ae2c88b3e9 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreter.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpreter.java
@@ -94,10 +94,10 @@ public class EnumerableInterpreter extends SingleRel
     final BlockBuilder builder = new BlockBuilder();
     final PhysType physType =
         PhysTypeImpl.of(typeFactory, getRowType(), JavaRowFormat.ARRAY);
-    final Expression interpreter_ = builder.append("interpreter",
-        Expressions.new_(Interpreter.class,
-            implementor.getRootExpression(),
-            implementor.stash(getInput(), RelNode.class)));
+    final Expression interpreter_ =
+        builder.append("interpreter",
+            Expressions.new_(Interpreter.class, implementor.getRootExpression(),
+                implementor.stash(getInput(), RelNode.class)));
     final Expression sliced_ =
         getRowType().getFieldCount() == 1
             ? Expressions.call(BuiltInMethod.SLICE0.method, interpreter_)
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 3b1694f7f2..5958e5d633 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
@@ -97,33 +97,24 @@ public class EnumerableLimit extends SingleRel implements EnumerableRel {
     final EnumerableRel child = (EnumerableRel) getInput();
     final Result result = implementor.visitChild(this, 0, child, pref);
     final PhysType physType =
-        PhysTypeImpl.of(
-            implementor.getTypeFactory(),
-            getRowType(),
+        PhysTypeImpl.of(implementor.getTypeFactory(), getRowType(),
             result.format);
 
     Expression v = builder.append("child", result.block);
     if (offset != null) {
-      v = builder.append(
-          "offset",
-          Expressions.call(
-              v,
-              BuiltInMethod.SKIP.method,
-              getExpression(offset)));
+      v =
+          builder.append("offset",
+              Expressions.call(v, BuiltInMethod.SKIP.method,
+                  getExpression(offset)));
     }
     if (fetch != null) {
-      v = builder.append(
-          "fetch",
-          Expressions.call(
-              v,
-              BuiltInMethod.TAKE.method,
-              getExpression(fetch)));
+      v =
+          builder.append("fetch",
+              Expressions.call(v, BuiltInMethod.TAKE.method,
+                  getExpression(fetch)));
     }
 
-    builder.add(
-        Expressions.return_(
-            null,
-            v));
+    builder.add(Expressions.return_(null, v));
     return implementor.result(physType, builder.toBlock());
   }
 
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitRule.java
index 78e66d5247..4f84bd92cb 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitRule.java
@@ -52,12 +52,8 @@ public class EnumerableLimitRule
     RelNode input = sort.getInput();
     if (!sort.getCollation().getFieldCollations().isEmpty()) {
       // Create a sort with the same sort key, but no offset or fetch.
-      input = sort.copy(
-          sort.getTraitSet(),
-          input,
-          sort.getCollation(),
-          null,
-          null);
+      input =
+          sort.copy(sort.getTraitSet(), input, sort.getCollation(), null, null);
     }
     call.transformTo(
         EnumerableLimit.create(
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSort.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSort.java
index 0ae97238d9..8b7a2706fb 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSort.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSort.java
@@ -63,8 +63,8 @@ public class EnumerableLimitSort extends Sort implements EnumerableRel {
       @Nullable RexNode offset,
       @Nullable RexNode fetch) {
     final RelOptCluster cluster = input.getCluster();
-    final RelTraitSet traitSet = cluster.traitSetOf(EnumerableConvention.INSTANCE).replace(
-        collation);
+    final RelTraitSet traitSet =
+        cluster.traitSetOf(EnumerableConvention.INSTANCE).replace(collation);
     return new EnumerableLimitSort(cluster, traitSet, input, collation, offset, fetch);
   }
 
@@ -87,10 +87,9 @@ public class EnumerableLimitSort extends Sort implements EnumerableRel {
     final BlockBuilder builder = new BlockBuilder();
     final EnumerableRel child = (EnumerableRel) this.getInput();
     final Result result = implementor.visitChild(this, 0, child, pref);
-    final PhysType physType = PhysTypeImpl.of(
-        implementor.getTypeFactory(),
-        this.getRowType(),
-        result.format);
+    final PhysType physType =
+        PhysTypeImpl.of(implementor.getTypeFactory(), this.getRowType(),
+            result.format);
     final Expression childExp = builder.append("child", result.block);
 
     final PhysType inputPhysType = result.physType;
@@ -119,8 +118,7 @@ public class EnumerableLimitSort extends Sort implements EnumerableRel {
                             Expressions.constant(offsetVal)))
                     .appendIfNotNull(
                         builder.appendIfNotNull("fetch",
-                            Expressions.constant(fetchVal)))
-            )));
+                            Expressions.constant(fetchVal))))));
     return implementor.result(physType, builder.toBlock());
   }
 }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
index 4aa2ae540a..6ea7e55115 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
@@ -41,10 +41,11 @@ public class EnumerableLimitSortRule extends RelRule<EnumerableLimitSortRule.Con
   @Override public void onMatch(RelOptRuleCall call) {
     final Sort sort = call.rel(0);
     RelNode input = sort.getInput();
-    final Sort o = EnumerableLimitSort.create(
-        convert(input, input.getTraitSet().replace(EnumerableConvention.INSTANCE)),
-        sort.getCollation(),
-        sort.offset, sort.fetch);
+    final Sort o =
+        EnumerableLimitSort.create(
+            convert(input,
+                input.getTraitSet().replace(EnumerableConvention.INSTANCE)),
+            sort.getCollation(), sort.offset, sort.fetch);
 
     call.transformTo(o);
   }
@@ -52,8 +53,12 @@ public class EnumerableLimitSortRule extends RelRule<EnumerableLimitSortRule.Con
   /** Rule configuration. */
   @Value.Immutable
   public interface Config extends RelRule.Config {
-    Config DEFAULT = ImmutableEnumerableLimitSortRule.Config.of().withOperandSupplier(
-        b0 -> b0.operand(LogicalSort.class).predicate(sort -> sort.fetch != null).anyInputs());
+    Config DEFAULT =
+        ImmutableEnumerableLimitSortRule.Config.of()
+            .withOperandSupplier(b0 ->
+                b0.operand(LogicalSort.class)
+                    .predicate(sort -> sort.fetch != null)
+                    .anyInputs());
 
     @Override default EnumerableLimitSortRule toRule() {
       return new EnumerableLimitSortRule(this);
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatch.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatch.java
index 4e2e5cbdce..2fdd2b41ec 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatch.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatch.java
@@ -189,11 +189,12 @@ public class EnumerableMatch extends Match implements EnumerableRel {
       rexProgramBuilder.addProject(entry.getValue(), entry.getKey());
     }
 
-    final RexToLixTranslator translator = RexToLixTranslator.forAggregation(
-        (JavaTypeFactory) getCluster().getTypeFactory(),
-        builder2,
-        new PassedRowsInputGetter(row_, rows_, inputPhysType),
-        implementor.getConformance());
+    final RexToLixTranslator translator =
+        RexToLixTranslator.forAggregation(
+            (JavaTypeFactory) getCluster().getTypeFactory(),
+            builder2,
+            new PassedRowsInputGetter(row_, rows_, inputPhysType),
+            implementor.getConformance());
 
     final ParameterExpression result_ =
         Expressions.parameter(physType.getJavaRowType());
@@ -283,13 +284,16 @@ public class EnumerableMatch extends Match implements EnumerableRel {
 
   private Expression implementMatcher(EnumerableRelImplementor implementor,
       PhysType physType, BlockBuilder builder, ParameterExpression row_) {
-    final Expression patternBuilder_ = builder.append("patternBuilder",
-        Expressions.call(BuiltInMethod.PATTERN_BUILDER.method));
-    final Expression automaton_ = builder.append("automaton",
-        Expressions.call(implementPattern(patternBuilder_, pattern),
-            BuiltInMethod.PATTERN_TO_AUTOMATON.method));
-    Expression matcherBuilder_ = builder.append("matcherBuilder",
-        Expressions.call(BuiltInMethod.MATCHER_BUILDER.method, automaton_));
+    final Expression patternBuilder_ =
+        builder.append("patternBuilder",
+            Expressions.call(BuiltInMethod.PATTERN_BUILDER.method));
+    final Expression automaton_ =
+        builder.append("automaton",
+            Expressions.call(implementPattern(patternBuilder_, pattern),
+                BuiltInMethod.PATTERN_TO_AUTOMATON.method));
+    Expression matcherBuilder_ =
+        builder.append("matcherBuilder",
+            Expressions.call(BuiltInMethod.MATCHER_BUILDER.method, automaton_));
     final BlockBuilder builder2 = new BlockBuilder();
 
 
@@ -318,10 +322,11 @@ public class EnumerableMatch extends Match implements EnumerableRel {
       final Expression predicate_ =
           implementPredicate(physType, row_, builder2.toBlock());
 
-      matcherBuilder_ = Expressions.call(matcherBuilder_,
-          BuiltInMethod.MATCHER_BUILDER_ADD.method,
-          Expressions.constant(entry.getKey()),
-          predicate_);
+      matcherBuilder_ =
+          Expressions.call(matcherBuilder_,
+              BuiltInMethod.MATCHER_BUILDER_ADD.method,
+              Expressions.constant(entry.getKey()),
+              predicate_);
     }
     return builder.append("matcher",
         Expressions.call(matcherBuilder_,
@@ -332,8 +337,9 @@ public class EnumerableMatch extends Match implements EnumerableRel {
   private static Expression implementPredicate(PhysType physType,
       ParameterExpression rows_, BlockStatement body) {
     final List<MemberDeclaration> memberDeclarations = new ArrayList<>();
-    ParameterExpression row_ = Expressions.parameter(
-        Types.of(MemoryFactory.Memory.class,
+    ParameterExpression row_ =
+        Expressions.parameter(
+            Types.of(MemoryFactory.Memory.class,
             physType.getJavaRowType()), "row_");
     Expressions.assign(row_,
         Expressions.call(rows_, BuiltInMethod.MEMORY_GET0.method));
@@ -396,8 +402,9 @@ public class EnumerableMatch extends Match implements EnumerableRel {
       for (Ord<RexNode> operand : Ord.zip(concat.operands)) {
         patternBuilder_ = implementPattern(patternBuilder_, operand.e);
         if (operand.i > 0) {
-          patternBuilder_ = Expressions.call(patternBuilder_,
-              BuiltInMethod.PATTERN_BUILDER_SEQ.method);
+          patternBuilder_ =
+              Expressions.call(patternBuilder_,
+                  BuiltInMethod.PATTERN_BUILDER_SEQ.method);
         }
       }
       return patternBuilder_;
@@ -432,14 +439,16 @@ public class EnumerableMatch extends Match implements EnumerableRel {
       switch (call.op.kind) {
       case PREV:
         operand = (RexLiteral) call.getOperands().get(1);
-        final int prev = requireNonNull(operand.getValueAs(Integer.class),
-            () -> "operand in " + call);
+        final int prev =
+            requireNonNull(operand.getValueAs(Integer.class),
+                () -> "operand in " + call);
         this.history = Math.max(this.history, prev);
         break;
       case NEXT:
         operand = (RexLiteral) call.getOperands().get(1);
-        final int next = requireNonNull(operand.getValueAs(Integer.class),
-            () -> "operand in " + call);
+        final int next =
+            requireNonNull(operand.getValueAs(Integer.class),
+                () -> "operand in " + call);
         this.future = Math.max(this.future, next);
         break;
       default:
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 4794b4a81a..caa6509921 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
@@ -284,8 +284,8 @@ public class EnumerableMergeJoin extends Join implements EnumerableRel {
 
     ImmutableIntList sourceKeys = childId == 0 ? joinInfo.leftKeys : joinInfo.rightKeys;
     ImmutableBitSet keySet = ImmutableBitSet.of(sourceKeys);
-    ImmutableBitSet childCollationKeys = ImmutableBitSet.of(
-        RelCollations.ordinals(collation));
+    ImmutableBitSet childCollationKeys =
+        ImmutableBitSet.of(RelCollations.ordinals(collation));
     if (!childCollationKeys.equals(keySet)) {
       return null;
     }
@@ -323,9 +323,10 @@ public class EnumerableMergeJoin extends Join implements EnumerableRel {
       keyMap.put(sourceKeys.get(i), targetKeys.get(i));
     }
 
-    Mappings.TargetMapping mapping = Mappings.target(keyMap,
-        (left2Right ? left : right).getRowType().getFieldCount(),
-        (left2Right ? right : left).getRowType().getFieldCount());
+    Mappings.TargetMapping mapping =
+        Mappings.target(keyMap,
+            (left2Right ? left : right).getRowType().getFieldCount(),
+            (left2Right ? right : left).getRowType().getFieldCount());
     return mapping;
   }
 
@@ -427,9 +428,11 @@ public class EnumerableMergeJoin extends Join implements EnumerableRel {
     for (Pair<Integer, Integer> pair : Pair.zip(joinInfo.leftKeys, joinInfo.rightKeys)) {
       RelDataType leftType = left.getRowType().getFieldList().get(pair.left).getType();
       RelDataType rightType = right.getRowType().getFieldList().get(pair.right).getType();
-      final RelDataType keyType = requireNonNull(
-          typeFactory.leastRestrictive(ImmutableList.of(leftType, rightType)),
-          () -> "leastRestrictive returns null for " + leftType + " and " + rightType);
+      final RelDataType keyType =
+          requireNonNull(
+              typeFactory.leastRestrictive(ImmutableList.of(leftType, rightType)),
+              () -> "leastRestrictive returns null for " + leftType
+                  + " and " + rightType);
       final Type keyClass = typeFactory.getJavaClass(keyType);
       leftExpressions.add(
           EnumUtils.convert(
@@ -440,11 +443,14 @@ public class EnumerableMergeJoin extends Join implements EnumerableRel {
     }
     Expression predicate = Expressions.constant(null);
     if (!joinInfo.nonEquiConditions.isEmpty()) {
-      final RexNode nonEquiCondition = RexUtil.composeConjunction(
-          getCluster().getRexBuilder(), joinInfo.nonEquiConditions, true);
+      final RexNode nonEquiCondition =
+          RexUtil.composeConjunction(getCluster().getRexBuilder(),
+              joinInfo.nonEquiConditions, true);
       if (nonEquiCondition != null) {
-        predicate = EnumUtils.generatePredicate(implementor, getCluster().getRexBuilder(),
-            left, right, leftResult.physType, rightResult.physType, nonEquiCondition);
+        predicate =
+            EnumUtils.generatePredicate(implementor,
+                getCluster().getRexBuilder(), left, right, leftResult.physType,
+                rightResult.physType, nonEquiCondition);
       }
     }
     final PhysType leftKeyPhysType =
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
index f69d1c55b0..406152da6c 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
@@ -92,7 +92,6 @@ class EnumerableMergeJoinRule extends ConverterRule {
     final RelNode left = newInputs.get(0);
     final RelNode right = newInputs.get(1);
     final RelOptCluster cluster = join.getCluster();
-    RelNode newRel;
 
     RelTraitSet traitSet = join.getTraitSet()
         .replace(EnumerableConvention.INSTANCE);
@@ -111,13 +110,7 @@ class EnumerableMergeJoinRule extends ConverterRule {
       final RexNode nonEqui = RexUtil.composeConjunction(rexBuilder, info.nonEquiConditions);
       condition = RexUtil.composeConjunction(rexBuilder, Arrays.asList(equi, nonEqui));
     }
-    newRel = new EnumerableMergeJoin(cluster,
-        traitSet,
-        left,
-        right,
-        condition,
-        join.getVariablesSet(),
-        join.getJoinType());
-    return newRel;
+    return new EnumerableMergeJoin(cluster, traitSet, left, right, condition,
+        join.getVariablesSet(), join.getJoinType());
   }
 }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnion.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnion.java
index b5a617a52a..637a454c21 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnion.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnion.java
@@ -34,12 +34,13 @@ import java.util.List;
 
 /** Implementation of {@link org.apache.calcite.rel.core.Union} in
  * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention enumerable calling convention}.
- * Performs a union (or union all) of all its inputs (which must be already sorted),
- * respecting the order. */
+ *
+ * <p>Performs a union (or union all) of all its inputs (which must be already
+ * sorted), respecting the order. */
 public class EnumerableMergeUnion extends EnumerableUnion {
 
-  protected EnumerableMergeUnion(RelOptCluster cluster, RelTraitSet traitSet, List<RelNode> inputs,
-      boolean all) {
+  protected EnumerableMergeUnion(RelOptCluster cluster, RelTraitSet traitSet,
+      List<RelNode> inputs, boolean all) {
     super(cluster, traitSet, inputs, all);
     final RelCollation collation = traitSet.getCollation();
     if (collation == null || collation.getFieldCollations().isEmpty()) {
@@ -48,33 +49,37 @@ public class EnumerableMergeUnion extends EnumerableUnion {
     for (RelNode input : inputs) {
       final RelCollation inputCollation = input.getTraitSet().getCollation();
       if (inputCollation == null || !inputCollation.satisfies(collation)) {
-        throw new IllegalArgumentException("EnumerableMergeUnion input does not satisfy collation. "
-            + "EnumerableMergeUnion collation: " + collation + ". Input collation: "
-            + inputCollation + ". Input: " + input);
+        throw new IllegalArgumentException("EnumerableMergeUnion input does "
+            + "not satisfy collation. EnumerableMergeUnion collation: "
+            + collation + ". Input collation: " + inputCollation + ". Input: "
+            + input);
       }
     }
   }
 
-  public static EnumerableMergeUnion create(RelCollation collation, List<RelNode> inputs,
-      boolean all) {
+  public static EnumerableMergeUnion create(RelCollation collation,
+      List<RelNode> inputs, boolean all) {
     final RelOptCluster cluster = inputs.get(0).getCluster();
-    final RelTraitSet traitSet = cluster.traitSetOf(EnumerableConvention.INSTANCE).replace(
-        collation);
+    final RelTraitSet traitSet =
+        cluster.traitSetOf(EnumerableConvention.INSTANCE).replace(collation);
     return new EnumerableMergeUnion(cluster, traitSet, inputs, all);
   }
 
-  @Override public EnumerableMergeUnion copy(RelTraitSet traitSet, List<RelNode> inputs,
-      boolean all) {
+  @Override public EnumerableMergeUnion copy(RelTraitSet traitSet,
+      List<RelNode> inputs, boolean all) {
     return new EnumerableMergeUnion(getCluster(), traitSet, inputs, all);
   }
 
-  @Override public Result implement(EnumerableRelImplementor implementor, Prefer pref) {
+  @Override public Result implement(EnumerableRelImplementor implementor,
+      Prefer pref) {
     final BlockBuilder builder = new BlockBuilder();
 
-    final ParameterExpression inputListExp = Expressions.parameter(
-        List.class,
-        builder.newName("mergeUnionInputs" + Integer.toUnsignedString(this.getId())));
-    builder.add(Expressions.declare(0, inputListExp, Expressions.new_(ArrayList.class)));
+    final ParameterExpression inputListExp =
+        Expressions.parameter(List.class,
+            builder.newName("mergeUnionInputs"
+                + Integer.toUnsignedString(this.getId())));
+    builder.add(
+        Expressions.declare(0, inputListExp, Expressions.new_(ArrayList.class)));
 
     for (Ord<RelNode> ord : Ord.zip(inputs)) {
       final EnumerableRel input = (EnumerableRel) ord.e;
@@ -82,13 +87,13 @@ public class EnumerableMergeUnion extends EnumerableUnion {
       final Expression childExp = builder.append("child" + ord.i, result.block);
       builder.add(
           Expressions.statement(
-              Expressions.call(inputListExp, BuiltInMethod.COLLECTION_ADD.method, childExp)));
+              Expressions.call(inputListExp,
+                  BuiltInMethod.COLLECTION_ADD.method, childExp)));
     }
 
-    final PhysType physType = PhysTypeImpl.of(
-        implementor.getTypeFactory(),
-        getRowType(),
-        pref.prefer(JavaRowFormat.CUSTOM));
+    final PhysType physType =
+        PhysTypeImpl.of(implementor.getTypeFactory(), getRowType(),
+            pref.prefer(JavaRowFormat.CUSTOM));
 
     final RelCollation collation = getTraitSet().getCollation();
     if (collation == null || collation.getFieldCollations().isEmpty()) {
@@ -100,17 +105,14 @@ public class EnumerableMergeUnion extends EnumerableUnion {
     final Expression sortKeySelector = pair.left;
     final Expression sortComparator = pair.right;
 
-    final Expression equalityComparator = Util.first(
-        physType.comparer(),
-        Expressions.call(BuiltInMethod.IDENTITY_COMPARER.method));
+    final Expression equalityComparator =
+        Util.first(physType.comparer(),
+            Expressions.call(BuiltInMethod.IDENTITY_COMPARER.method));
 
-    final Expression unionExp = Expressions.call(
-        BuiltInMethod.MERGE_UNION.method,
-        inputListExp,
-        sortKeySelector,
-        sortComparator,
-        Expressions.constant(all, boolean.class),
-        equalityComparator);
+    final Expression unionExp =
+        Expressions.call(BuiltInMethod.MERGE_UNION.method, inputListExp,
+            sortKeySelector, sortComparator,
+            Expressions.constant(all, boolean.class), equalityComparator);
     builder.add(unionExp);
 
     return implementor.result(physType, builder.toBlock());
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnionRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnionRule.java
index 2976f3e6dc..47982dde83 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnionRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeUnionRule.java
@@ -91,8 +91,9 @@ public class EnumerableMergeUnionRule extends RelRule<EnumerableMergeUnionRule.C
       if (sort.offset == null) {
         inputFetch = sort.fetch;
       } else if (sort.fetch instanceof RexLiteral && sort.offset instanceof RexLiteral) {
-        inputFetch = call.builder().literal(
-            RexLiteral.intValue(sort.fetch) + RexLiteral.intValue(sort.offset));
+        inputFetch =
+            call.builder().literal(RexLiteral.intValue(sort.fetch)
+                + RexLiteral.intValue(sort.offset));
       }
     }
 
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 2c82febd37..53d0296f7a 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
@@ -126,8 +126,10 @@ public class EnumerableRelImplementor extends JavaRelImplementor {
         Expression e = null;
         for (Statement statement : result.block.statements) {
           if (statement instanceof GotoStatement) {
-            e = bb.append("v",
-                requireNonNull(((GotoStatement) statement).expression, "expression"));
+            final GotoStatement gotoStatement = (GotoStatement) statement;
+            e =
+                bb.append("v",
+                    requireNonNull(gotoStatement.expression, "expression"));
           } else {
             bb.add(statement);
           }
@@ -137,8 +139,9 @@ public class EnumerableRelImplementor extends JavaRelImplementor {
               Expressions.return_(null,
                   Expressions.call(null, BuiltInMethod.SLICE0.method, e)));
         }
-        result = new EnumerableRel.Result(bb.toBlock(), result.physType,
-            JavaRowFormat.SCALAR);
+        result =
+            new EnumerableRel.Result(bb.toBlock(), result.physType,
+                JavaRowFormat.SCALAR);
       }
       break;
     default:
@@ -160,14 +163,11 @@ public class EnumerableRelImplementor extends JavaRelImplementor {
                         Expressions.constant(input.name)),
                     input.type)));
 
-    final BlockStatement block = Expressions.block(
-        Iterables.concat(
-            stashed,
-            result.block.statements));
+    final BlockStatement block =
+        Expressions.block(
+            Iterables.concat(stashed, result.block.statements));
     memberDeclarations.add(
-        Expressions.methodDecl(
-            Modifier.PUBLIC,
-            Enumerable.class,
+        Expressions.methodDecl(Modifier.PUBLIC, Enumerable.class,
             BuiltInMethod.BINDABLE_BIND.method.getName(),
             Expressions.list(DataContext.ROOT),
             block));
@@ -333,10 +333,10 @@ public class EnumerableRelImplementor extends JavaRelImplementor {
         final Method method = (field.nullable()
             ? BuiltInMethod.COMPARE_NULLS_LAST
             : BuiltInMethod.COMPARE).method;
-        compareCall = Expressions.call(method.getDeclaringClass(),
-            method.getName(),
-            Expressions.field(thisParameter, field),
-            Expressions.field(thatParameter, field));
+        compareCall =
+            Expressions.call(method.getDeclaringClass(), method.getName(),
+                Expressions.field(thisParameter, field),
+                Expressions.field(thatParameter, field));
       } catch (RuntimeException e) {
         if (e.getCause() instanceof NoSuchMethodException) {
           // Just ignore the field in compareTo
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnion.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnion.java
index c6e3fda0be..2cee0be2c4 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnion.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnion.java
@@ -33,7 +33,10 @@ import org.apache.calcite.util.Util;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
 import java.util.List;
-import java.util.Objects;
+
+import static org.apache.calcite.util.Util.last;
+
+import static java.util.Objects.requireNonNull;
 
 /**
  * Implementation of {@link RepeatUnion} in
@@ -71,11 +74,11 @@ public class EnumerableRepeatUnion extends RepeatUnion implements EnumerableRel
     Expression cleanUpFunctionExp = Expressions.constant(null);
     if (transientTable != null) {
       // root.getRootSchema().add(tableName, table);
-      Expression tableExp = implementor.stash(
-          Objects.requireNonNull(transientTable.unwrap(TransientTable.class)),
-          TransientTable.class);
-      String tableName =
-          transientTable.getQualifiedName().get(transientTable.getQualifiedName().size() - 1);
+      Expression tableExp =
+          implementor.stash(
+              requireNonNull(transientTable.unwrap(TransientTable.class)),
+              TransientTable.class);
+      String tableName = last(transientTable.getQualifiedName());
       Expression tableNameExp = Expressions.constant(tableName, String.class);
       builder.append(
           Expressions.call(
@@ -86,12 +89,12 @@ public class EnumerableRepeatUnion extends RepeatUnion implements EnumerableRel
               tableNameExp,
               tableExp));
       // root.getRootSchema().removeTable(tableName);
-      cleanUpFunctionExp = Expressions.lambda(Function0.class,
-          Expressions.call(
+      cleanUpFunctionExp =
+          Expressions.lambda(Function0.class,
               Expressions.call(
-                  implementor.getRootExpression(),
-                  BuiltInMethod.DATA_CONTEXT_GET_ROOT_SCHEMA.method),
-              BuiltInMethod.SCHEMA_PLUS_REMOVE_TABLE.method, tableNameExp));
+                  Expressions.call(implementor.getRootExpression(),
+                      BuiltInMethod.DATA_CONTEXT_GET_ROOT_SCHEMA.method),
+                  BuiltInMethod.SCHEMA_PLUS_REMOVE_TABLE.method, tableNameExp));
     }
 
     Result seedResult = implementor.visitChild(this, 0, (EnumerableRel) seed, pref);
@@ -100,19 +103,19 @@ public class EnumerableRepeatUnion extends RepeatUnion implements EnumerableRel
     Expression seedExp = builder.append("seed", seedResult.block);
     Expression iterativeExp = builder.append("iteration", iterationResult.block);
 
-    PhysType physType = PhysTypeImpl.of(
-        implementor.getTypeFactory(),
-        getRowType(),
-        pref.prefer(seedResult.format));
-
-    Expression unionExp = Expressions.call(
-        BuiltInMethod.REPEAT_UNION.method,
-        seedExp,
-        iterativeExp,
-        Expressions.constant(iterationLimit, int.class),
-        Expressions.constant(all, boolean.class),
-        Util.first(physType.comparer(), Expressions.call(BuiltInMethod.IDENTITY_COMPARER.method)),
-        cleanUpFunctionExp);
+    PhysType physType =
+        PhysTypeImpl.of(implementor.getTypeFactory(), getRowType(),
+            pref.prefer(seedResult.format));
+
+    Expression unionExp =
+        Expressions.call(BuiltInMethod.REPEAT_UNION.method,
+            seedExp,
+            iterativeExp,
+            Expressions.constant(iterationLimit, int.class),
+            Expressions.constant(all, boolean.class),
+            Util.first(physType.comparer(),
+                Expressions.call(BuiltInMethod.IDENTITY_COMPARER.method)),
+            cleanUpFunctionExp);
     builder.add(unionExp);
 
     return implementor.result(physType, builder.toBlock());
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
index 17a7465c06..d12a31e717 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
@@ -203,30 +203,30 @@ public class EnumerableRules {
       EnumerableInterpreterRule.DEFAULT_CONFIG
           .toRule(EnumerableInterpreterRule.class);
 
-  public static final List<RelOptRule> ENUMERABLE_RULES = ImmutableList.of(
-      EnumerableRules.ENUMERABLE_JOIN_RULE,
-      EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE,
-      EnumerableRules.ENUMERABLE_CORRELATE_RULE,
-      EnumerableRules.ENUMERABLE_PROJECT_RULE,
-      EnumerableRules.ENUMERABLE_FILTER_RULE,
-      EnumerableRules.ENUMERABLE_CALC_RULE,
-      EnumerableRules.ENUMERABLE_AGGREGATE_RULE,
-      EnumerableRules.ENUMERABLE_SORT_RULE,
-      EnumerableRules.ENUMERABLE_LIMIT_RULE,
-      EnumerableRules.ENUMERABLE_COLLECT_RULE,
-      EnumerableRules.ENUMERABLE_UNCOLLECT_RULE,
-      EnumerableRules.ENUMERABLE_MERGE_UNION_RULE,
-      EnumerableRules.ENUMERABLE_UNION_RULE,
-      EnumerableRules.ENUMERABLE_REPEAT_UNION_RULE,
-      EnumerableRules.ENUMERABLE_TABLE_SPOOL_RULE,
-      EnumerableRules.ENUMERABLE_INTERSECT_RULE,
-      EnumerableRules.ENUMERABLE_MINUS_RULE,
-      EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE,
-      EnumerableRules.ENUMERABLE_VALUES_RULE,
-      EnumerableRules.ENUMERABLE_WINDOW_RULE,
-      EnumerableRules.ENUMERABLE_TABLE_SCAN_RULE,
-      EnumerableRules.ENUMERABLE_TABLE_FUNCTION_SCAN_RULE,
-      EnumerableRules.ENUMERABLE_MATCH_RULE);
+  public static final List<RelOptRule> ENUMERABLE_RULES =
+      ImmutableList.of(EnumerableRules.ENUMERABLE_JOIN_RULE,
+          EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE,
+          EnumerableRules.ENUMERABLE_CORRELATE_RULE,
+          EnumerableRules.ENUMERABLE_PROJECT_RULE,
+          EnumerableRules.ENUMERABLE_FILTER_RULE,
+          EnumerableRules.ENUMERABLE_CALC_RULE,
+          EnumerableRules.ENUMERABLE_AGGREGATE_RULE,
+          EnumerableRules.ENUMERABLE_SORT_RULE,
+          EnumerableRules.ENUMERABLE_LIMIT_RULE,
+          EnumerableRules.ENUMERABLE_COLLECT_RULE,
+          EnumerableRules.ENUMERABLE_UNCOLLECT_RULE,
+          EnumerableRules.ENUMERABLE_MERGE_UNION_RULE,
+          EnumerableRules.ENUMERABLE_UNION_RULE,
+          EnumerableRules.ENUMERABLE_REPEAT_UNION_RULE,
+          EnumerableRules.ENUMERABLE_TABLE_SPOOL_RULE,
+          EnumerableRules.ENUMERABLE_INTERSECT_RULE,
+          EnumerableRules.ENUMERABLE_MINUS_RULE,
+          EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE,
+          EnumerableRules.ENUMERABLE_VALUES_RULE,
+          EnumerableRules.ENUMERABLE_WINDOW_RULE,
+          EnumerableRules.ENUMERABLE_TABLE_SCAN_RULE,
+          EnumerableRules.ENUMERABLE_TABLE_FUNCTION_SCAN_RULE,
+          EnumerableRules.ENUMERABLE_MATCH_RULE);
 
   public static List<RelOptRule> rules() {
     return ENUMERABLE_RULES;
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregate.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregate.java
index 2f03b3552c..f28a6bbd87 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregate.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregate.java
@@ -78,13 +78,14 @@ public class EnumerableSortedAggregate extends EnumerableAggregateBase implement
     }
 
     RelTraitSet inputTraits = getInput().getTraitSet();
-    RelCollation collation = requireNonNull(required.getCollation(),
-        () -> "collation trait is null, required traits are " + required);
+    RelCollation collation =
+        requireNonNull(required.getCollation(),
+            () -> "collation trait is null, required traits are " + required);
     ImmutableBitSet requiredKeys = ImmutableBitSet.of(RelCollations.ordinals(collation));
     ImmutableBitSet groupKeys = ImmutableBitSet.range(groupSet.cardinality());
 
-    Mappings.TargetMapping mapping = Mappings.source(groupSet.toList(),
-        input.getRowType().getFieldCount());
+    Mappings.TargetMapping mapping =
+        Mappings.source(groupSet.toList(), input.getRowType().getFieldCount());
 
     if (requiredKeys.equals(groupKeys)) {
       RelCollation inputCollation = RexUtil.apply(mapping, collation);
@@ -147,8 +148,8 @@ public class EnumerableSortedAggregate extends EnumerableAggregateBase implement
     final List<Expression> initExpressions = new ArrayList<>();
     final BlockBuilder initBlock = new BlockBuilder();
 
-    final List<Type> aggStateTypes = createAggStateTypes(
-        initExpressions, initBlock, aggs, typeFactory);
+    final List<Type> aggStateTypes =
+        createAggStateTypes(initExpressions, initBlock, aggs, typeFactory);
 
     final PhysType accPhysType =
         PhysTypeImpl.of(typeFactory,
@@ -208,21 +209,20 @@ public class EnumerableSortedAggregate extends EnumerableAggregateBase implement
 
     final Expression keySelector_ =
         builder.append("keySelector",
-            inputPhysType.generateSelector(parameter,
-                groupSet.asList(),
+            inputPhysType.generateSelector(parameter, groupSet.asList(),
                 keyPhysType.getFormat()));
     // Generate the appropriate key Comparator. In the case of NULL values
     // in group keys, the comparator must be able to support NULL values by giving a
     // consistent sort ordering.
-    final Expression comparator = keyPhysType.generateComparator(
-        requireNonNull(getTraitSet().getCollation(),
-            () -> "getTraitSet().getCollation() is null, current traits are " + getTraitSet()));
+    final Expression comparator =
+        keyPhysType.generateComparator(
+            requireNonNull(getTraitSet().getCollation(),
+                () -> "getTraitSet().getCollation() is null; traits are "
+                    + getTraitSet()));
 
     final Expression resultSelector_ =
         builder.append("resultSelector",
-            Expressions.lambda(Function2.class,
-                resultBlock.toBlock(),
-                key_,
+            Expressions.lambda(Function2.class, resultBlock.toBlock(), key_,
                 acc_));
 
     builder.add(
@@ -236,8 +236,7 @@ public class EnumerableSortedAggregate extends EnumerableAggregateBase implement
                         BuiltInMethod.AGG_LAMBDA_FACTORY_ACC_ADDER.method),
                     Expressions.call(lambdaFactory,
                         BuiltInMethod.AGG_LAMBDA_FACTORY_ACC_RESULT_SELECTOR.method,
-                        resultSelector_), comparator)
-                    )));
+                        resultSelector_), comparator))));
 
     return implementor.result(physType, builder.toBlock());
   }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
index 31e401dc7b..30f76e28de 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
@@ -56,9 +56,10 @@ class EnumerableSortedAggregateRule extends ConverterRule {
             RelCollations.of(
                 ImmutableIntList.copyOf(
             agg.getGroupSet().asList())));
-    final RelTraitSet selfTraits = inputTraits.replace(
-        RelCollations.of(
-        ImmutableIntList.identity(agg.getGroupSet().cardinality())));
+    final RelTraitSet selfTraits =
+        inputTraits.replace(
+            RelCollations.of(
+                ImmutableIntList.identity(agg.getGroupSet().cardinality())));
     return new EnumerableSortedAggregate(
         rel.getCluster(),
         selfTraits,
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScan.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScan.java
index c2f8a066d9..c9a74e8ae6 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScan.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScan.java
@@ -122,9 +122,10 @@ public class EnumerableTableFunctionScan extends TableFunctionScan
     final PhysType physType =
         PhysTypeImpl.of(implementor.getTypeFactory(), getRowType(), format,
             false);
-    RexToLixTranslator t = RexToLixTranslator.forAggregation(
-        (JavaTypeFactory) getCluster().getTypeFactory(), bb, null,
-        implementor.getConformance());
+    RexToLixTranslator t =
+        RexToLixTranslator.forAggregation(
+            (JavaTypeFactory) getCluster().getTypeFactory(),
+            bb, null, implementor.getConformance());
     t = t.setCorrelates(implementor.allCorrelateVariables);
     bb.add(Expressions.return_(null, t.translate(getCall())));
     return implementor.result(physType, bb.toBlock());
@@ -137,10 +138,10 @@ public class EnumerableTableFunctionScan extends TableFunctionScan
     final EnumerableRel child = (EnumerableRel) getInputs().get(0);
     final Result result =
         implementor.visitChild(this, 0, child, pref);
-    final PhysType physType = PhysTypeImpl.of(
-        typeFactory, getRowType(), pref.prefer(result.format));
-    final Expression inputEnumerable = builder.append(
-        "_input", result.block, false);
+    final PhysType physType =
+        PhysTypeImpl.of(typeFactory, getRowType(), pref.prefer(result.format));
+    final Expression inputEnumerable =
+        builder.append("_input", result.block, false);
     final SqlConformance conformance =
         (SqlConformance) implementor.map.getOrDefault("_conformance",
             SqlConformanceEnum.DEFAULT);
@@ -154,8 +155,7 @@ public class EnumerableTableFunctionScan extends TableFunctionScan
             (RexCall) getCall(),
             inputEnumerable,
             result.physType,
-            physType
-        ));
+            physType));
 
     return implementor.result(physType, builder.toBlock());
   }
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 d0084fc747..d6c90083f0 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
@@ -74,8 +74,8 @@ public class EnumerableTableModify extends TableModify
 
   @Override public Result implement(EnumerableRelImplementor implementor, Prefer pref) {
     final BlockBuilder builder = new BlockBuilder();
-    final Result result = implementor.visitChild(
-        this, 0, (EnumerableRel) getInput(), pref);
+    final Result result =
+        implementor.visitChild(this, 0, (EnumerableRel) getInput(), pref);
     Expression childExp =
         builder.append(
             "child", result.block);
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScan.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScan.java
index 3f3d95f9f2..9df232f59d 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScan.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScan.java
@@ -266,8 +266,9 @@ public class EnumerableTableScan
     switch (relFieldType.getSqlTypeName()) {
     case ARRAY:
     case MULTISET:
-      final RelDataType fieldType = requireNonNull(relFieldType.getComponentType(),
-          () -> "relFieldType.getComponentType() for " + relFieldType);
+      final RelDataType fieldType =
+          requireNonNull(relFieldType.getComponentType(),
+              () -> "relFieldType.getComponentType() for " + relFieldType);
       if (fieldType.isStruct()) {
         // We can't represent a multiset or array as a List<Employee>, because
         // the consumer does not know the element type.
@@ -275,10 +276,10 @@ public class EnumerableTableScan
         // We need to convert to a List<List>.
         final JavaTypeFactory typeFactory =
                 (JavaTypeFactory) getCluster().getTypeFactory();
-        final PhysType elementPhysType = PhysTypeImpl.of(
-                typeFactory, fieldType, JavaRowFormat.CUSTOM);
+        final PhysType elementPhysType =
+            PhysTypeImpl.of(typeFactory, fieldType, JavaRowFormat.CUSTOM);
         final MethodCallExpression e2 =
-                Expressions.call(BuiltInMethod.AS_ENUMERABLE2.method, e);
+            Expressions.call(BuiltInMethod.AS_ENUMERABLE2.method, e);
         final Expression e3 = elementPhysType.convertTo(e2, JavaRowFormat.LIST);
         return Expressions.call(e3, BuiltInMethod.ENUMERABLE_TO_LIST.method);
       } else {
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpool.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpool.java
index ecee69ac60..f272376cad 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpool.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpool.java
@@ -78,30 +78,28 @@ public class EnumerableTableSpool extends TableSpool implements EnumerableRel {
     Result inputResult = implementor.visitChild(this, 0, (EnumerableRel) input, pref);
 
     String tableName = table.getQualifiedName().get(table.getQualifiedName().size() - 1);
-    Expression tableExp = Expressions.convert_(
-        Expressions.call(
+    Expression tableExp =
+        Expressions.convert_(
             Expressions.call(
-                implementor.getRootExpression(),
-                BuiltInMethod.DATA_CONTEXT_GET_ROOT_SCHEMA.method),
-            BuiltInMethod.SCHEMA_GET_TABLE.method,
-            Expressions.constant(tableName, String.class)),
-        ModifiableTable.class);
-    Expression collectionExp = Expressions.call(
-        tableExp,
-        BuiltInMethod.MODIFIABLE_TABLE_GET_MODIFIABLE_COLLECTION.method);
+                Expressions.call(implementor.getRootExpression(),
+                    BuiltInMethod.DATA_CONTEXT_GET_ROOT_SCHEMA.method),
+                BuiltInMethod.SCHEMA_GET_TABLE.method,
+                Expressions.constant(tableName, String.class)),
+            ModifiableTable.class);
+    Expression collectionExp =
+        Expressions.call(tableExp,
+            BuiltInMethod.MODIFIABLE_TABLE_GET_MODIFIABLE_COLLECTION.method);
 
     Expression inputExp = builder.append("input", inputResult.block);
 
-    Expression spoolExp = Expressions.call(
-        BuiltInMethod.LAZY_COLLECTION_SPOOL.method,
-        collectionExp,
-        inputExp);
+    Expression spoolExp =
+        Expressions.call(BuiltInMethod.LAZY_COLLECTION_SPOOL.method,
+            collectionExp, inputExp);
     builder.add(spoolExp);
 
-    PhysType physType = PhysTypeImpl.of(
-        implementor.getTypeFactory(),
-        getRowType(),
-        pref.prefer(inputResult.format));
+    PhysType physType =
+        PhysTypeImpl.of(implementor.getTypeFactory(),
+            getRowType(), pref.prefer(inputResult.format));
     return implementor.result(physType, builder.toBlock());
   }
 
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTraitsUtils.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTraitsUtils.java
index 3fddfbd2fd..b716cb5546 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTraitsUtils.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTraitsUtils.java
@@ -117,8 +117,7 @@ class EnumerableTraitsUtils {
       return null;
     }
 
-    final int maxField = Math.max(exps.size(),
-        inputRowType.getFieldCount());
+    final int maxField = Math.max(exps.size(), inputRowType.getFieldCount());
     Mappings.TargetMapping mapping = Mappings
         .create(MappingType.FUNCTION, maxField, maxField);
     for (Ord<RexNode> node : Ord.zip(exps)) {
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUncollectRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUncollectRule.java
index 9f33b71140..9079964897 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUncollectRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUncollectRule.java
@@ -45,8 +45,9 @@ class EnumerableUncollectRule extends ConverterRule {
     final RelTraitSet traitSet =
         uncollect.getTraitSet().replace(EnumerableConvention.INSTANCE);
     final RelNode input = uncollect.getInput();
-    final RelNode newInput = convert(input,
-        input.getTraitSet().replace(EnumerableConvention.INSTANCE));
+    final RelNode newInput =
+        convert(input,
+            input.getTraitSet().replace(EnumerableConvention.INSTANCE));
     return EnumerableUncollect.create(traitSet, newInput,
         uncollect.withOrdinality);
   }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
index fc0b94dc4f..7a3dddbd5d 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
@@ -48,8 +48,8 @@ class EnumerableUnionRule extends ConverterRule {
     final Union union = (Union) rel;
     final EnumerableConvention out = EnumerableConvention.INSTANCE;
     final RelTraitSet traitSet = rel.getCluster().traitSet().replace(out);
-    final List<RelNode> newInputs = Util.transform(
-        union.getInputs(), n -> convert(n, traitSet));
+    final List<RelNode> newInputs =
+        Util.transform(union.getInputs(), n -> convert(n, traitSet));
     return new EnumerableUnion(rel.getCluster(), traitSet,
         newInputs, union.all);
   }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
index 9314b2e973..c8edd864e7 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
@@ -40,8 +40,9 @@ public class EnumerableValuesRule extends ConverterRule {
 
   @Override public RelNode convert(RelNode rel) {
     final Values logicalValues = (Values) rel;
-    final EnumerableValues enumerableValues = EnumerableValues.create(
-        logicalValues.getCluster(), logicalValues.getRowType(), logicalValues.getTuples());
+    final EnumerableValues enumerableValues =
+        EnumerableValues.create(logicalValues.getCluster(),
+            logicalValues.getRowType(), logicalValues.getTuples());
     return enumerableValues.copy(
         logicalValues.getTraitSet().replace(EnumerableConvention.INSTANCE),
         enumerableValues.getInputs());
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 337301aed9..8b00799c04 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
@@ -207,10 +207,8 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       //      }
       //    };
       final Expression comparator_ =
-          builder.append(
-              "comparator",
-              inputPhysType.generateComparator(
-                  group.collation()));
+          builder.append("comparator",
+              inputPhysType.generateComparator(group.collation()));
 
       Pair<Expression, Expression> partitionIterator =
           getPartitionIterator(builder, source_, inputPhysType, group,
@@ -232,23 +230,21 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       final RelDataTypeFactory.Builder typeBuilder = typeFactory.builder();
       typeBuilder.addAll(inputPhysType.getRowType().getFieldList());
       for (AggImpState agg : aggs) {
-        // CALCITE-4326
-        String name = requireNonNull(agg.call.name,
-            () -> "agg.call.name for " + agg.call);
+        // [CALCITE-4326] NullPointerException possible in EnumerableWindow when
+        // agg.call.name is null
+        String name =
+            requireNonNull(agg.call.name, () -> "agg.call.name for " + agg.call);
         typeBuilder.add(name, agg.call.type);
       }
       RelDataType outputRowType = typeBuilder.build();
       final PhysType outputPhysType =
-          PhysTypeImpl.of(
-              typeFactory, outputRowType, pref.prefer(result.format));
+          PhysTypeImpl.of(typeFactory, outputRowType, pref.prefer(result.format));
 
       final Expression list_ =
-          builder.append(
-              "list",
-              Expressions.new_(
-                  ArrayList.class,
-                  Expressions.call(
-                      collectionExpr, BuiltInMethod.COLLECTION_SIZE.method)),
+          builder.append("list",
+              Expressions.new_(ArrayList.class,
+                  Expressions.call(collectionExpr,
+                      BuiltInMethod.COLLECTION_SIZE.method)),
               false);
 
       Pair<@Nullable Expression, @Nullable Expression> collationKey =
@@ -257,11 +253,9 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       Expression keyComparator = collationKey.right;
       final BlockBuilder builder3 = new BlockBuilder();
       final Expression rows_ =
-          builder3.append(
-              "rows",
+          builder3.append("rows",
               Expressions.convert_(
-                  Expressions.call(
-                      iterator_, BuiltInMethod.ITERATOR_NEXT.method),
+                  Expressions.call(iterator_, BuiltInMethod.ITERATOR_NEXT.method),
                   Object[].class),
               false);
 
@@ -279,10 +273,8 @@ public class EnumerableWindow extends Window implements EnumerableRel {
           Expressions.parameter(int.class, builder4.newName("i"));
 
       final Expression row_ =
-          builder4.append(
-              "row",
-              EnumUtils.convert(
-                  Expressions.arrayIndex(rows_, i_),
+          builder4.append("row",
+              EnumUtils.convert(Expressions.arrayIndex(rows_, i_),
                   inputPhysType.getJavaRowType()));
 
       final RexToLixTranslator.InputGetter inputGetter =
@@ -299,8 +291,7 @@ public class EnumerableWindow extends Window implements EnumerableRel {
           inputPhysType.getRowType().getFieldCount();
       for (int i = 0; i < fieldCountWithAggResults; i++) {
         outputRow.add(
-            inputPhysType.fieldReference(
-                row_, i,
+            inputPhysType.fieldReference(row_, i,
                 outputPhysType.getJavaFieldType(i)));
       }
 
@@ -312,16 +303,18 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       final Expression minX = Expressions.constant(0);
       final Expression partitionRowCount =
           builder3.append("partRows", Expressions.field(rows_, "length"));
-      final Expression maxX = builder3.append("maxX",
-          Expressions.subtract(
-              partitionRowCount, Expressions.constant(1)));
-
-      final Expression startUnchecked = builder4.append("start",
-          translateBound(translator, i_, row_, minX, maxX, rows_,
-              group, true, inputPhysType, keySelector, keyComparator));
-      final Expression endUnchecked = builder4.append("end",
-          translateBound(translator, i_, row_, minX, maxX, rows_,
-              group, false, inputPhysType, keySelector, keyComparator));
+      final Expression maxX =
+          builder3.append("maxX",
+              Expressions.subtract(partitionRowCount, Expressions.constant(1)));
+
+      final Expression startUnchecked =
+          builder4.append("start",
+              translateBound(translator, i_, row_, minX, maxX, rows_,
+                  group, true, inputPhysType, keySelector, keyComparator));
+      final Expression endUnchecked =
+          builder4.append("end",
+              translateBound(translator, i_, row_, minX, maxX, rows_,
+                  group, false, inputPhysType, keySelector, keyComparator));
 
       final Expression startX;
       final Expression endX;
@@ -344,15 +337,15 @@ public class EnumerableWindow extends Window implements EnumerableRel {
                     Expressions.call(null, BuiltInMethod.MATH_MIN.method,
                         endUnchecked, maxX));
 
-        ParameterExpression startPe = Expressions.parameter(0, int.class,
-            builder4.newName("startChecked"));
-        ParameterExpression endPe = Expressions.parameter(0, int.class,
-            builder4.newName("endChecked"));
+        ParameterExpression startPe =
+            Expressions.parameter(0, int.class, builder4.newName("startChecked"));
+        ParameterExpression endPe =
+            Expressions.parameter(0, int.class, builder4.newName("endChecked"));
         builder4.add(Expressions.declare(Modifier.FINAL, startPe, null));
         builder4.add(Expressions.declare(Modifier.FINAL, endPe, null));
 
-        hasRows = builder4.append("hasRows",
-            Expressions.lessThanOrEqual(startTmp, endTmp));
+        hasRows =
+            builder4.append("hasRows", Expressions.lessThanOrEqual(startTmp, endTmp));
         builder4.add(
             Expressions.ifThenElse(hasRows,
                 Expressions.block(
@@ -371,9 +364,9 @@ public class EnumerableWindow extends Window implements EnumerableRel {
 
       final BlockBuilder builder5 = new BlockBuilder(true, builder4);
 
-      BinaryExpression rowCountWhenNonEmpty = Expressions.add(
-          startX == minX ? endX : Expressions.subtract(endX, startX),
-          Expressions.constant(1));
+      BinaryExpression rowCountWhenNonEmpty =
+          Expressions.add(startX == minX ? endX : Expressions.subtract(endX, startX),
+              Expressions.constant(1));
 
       final Expression frameRowCount;
 
@@ -387,8 +380,8 @@ public class EnumerableWindow extends Window implements EnumerableRel {
                     Expressions.constant(0)));
       }
 
-      ParameterExpression actualStart = Expressions.parameter(
-          0, int.class, builder5.newName("actualStart"));
+      ParameterExpression actualStart =
+          Expressions.parameter(0, int.class, builder5.newName("actualStart"));
 
       final BlockBuilder builder6 = new BlockBuilder(true, builder5);
       builder6.add(
@@ -405,9 +398,9 @@ public class EnumerableWindow extends Window implements EnumerableRel {
           group.lowerBound.isUnbounded() && group.lowerBound.isPreceding()
           ? Expressions.constant(false)
           : Expressions.notEqual(startX, prevStart);
-      Expression needRecomputeWindow = Expressions.orElse(
-          lowerBoundCanChange,
-          Expressions.lessThan(endX, prevEnd));
+      Expression needRecomputeWindow =
+          Expressions.orElse(lowerBoundCanChange,
+              Expressions.lessThan(endX, prevEnd));
 
       BlockStatement resetWindowState = builder6.toBlock();
       if (resetWindowState.statements.size() == 1) {
@@ -423,7 +416,7 @@ public class EnumerableWindow extends Window implements EnumerableRel {
                 resetWindowState,
                 Expressions.statement(
                     Expressions.assign(actualStart,
-                    Expressions.add(prevEnd, Expressions.constant(1))))));
+                        Expressions.add(prevEnd, Expressions.constant(1))))));
       }
 
       if (lowerBoundCanChange instanceof BinaryExpression) {
@@ -449,9 +442,7 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       final Function<AggImpState, List<RexNode>> rexArguments = agg -> {
         List<Integer> argList = agg.call.getArgList();
         List<RelDataType> inputTypes =
-            EnumUtils.fieldRowTypes(
-                result.physType.getRowType(),
-                constants,
+            EnumUtils.fieldRowTypes(result.physType.getRowType(), constants,
                 argList);
         List<RexNode> args = new ArrayList<>(inputTypes.size());
         for (int i = 0; i < argList.size(); i++) {
@@ -466,11 +457,11 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       BlockStatement forBlock = builder7.toBlock();
       if (!forBlock.statements.isEmpty()) {
         // For instance, row_number does not use for loop to compute the value
-        Statement forAggLoop = Expressions.for_(
-            Arrays.asList(jDecl),
-            Expressions.lessThanOrEqual(jDecl.parameter, endX),
-            Expressions.preIncrementAssign(jDecl.parameter),
-            forBlock);
+        Statement forAggLoop =
+            Expressions.for_(Arrays.asList(jDecl),
+                Expressions.lessThanOrEqual(jDecl.parameter, endX),
+                Expressions.preIncrementAssign(jDecl.parameter),
+                forBlock);
         if (!hasRows.equals(Expressions.constant(true))) {
           forAggLoop = Expressions.ifThen(hasRows, forAggLoop);
         }
@@ -491,39 +482,29 @@ public class EnumerableWindow extends Window implements EnumerableRel {
 
       builder4.add(
           Expressions.statement(
-              Expressions.call(
-                  list_,
-                  BuiltInMethod.COLLECTION_ADD.method,
+              Expressions.call(list_, BuiltInMethod.COLLECTION_ADD.method,
                   outputPhysType.record(outputRow))));
 
       builder3.add(
           Expressions.for_(
               Expressions.declare(0, i_, Expressions.constant(0)),
-              Expressions.lessThan(
-                  i_,
-                  Expressions.field(rows_, "length")),
+              Expressions.lessThan(i_, Expressions.field(rows_, "length")),
               Expressions.preIncrementAssign(i_),
               builder4.toBlock()));
 
       builder.add(
           Expressions.while_(
-              Expressions.call(
-                  iterator_,
-                  BuiltInMethod.ITERATOR_HAS_NEXT.method),
+              Expressions.call(iterator_, BuiltInMethod.ITERATOR_HAS_NEXT.method),
               builder3.toBlock()));
       builder.add(
           Expressions.statement(
-              Expressions.call(
-                  collectionExpr,
-                  BuiltInMethod.MAP_CLEAR.method)));
+              Expressions.call(collectionExpr, BuiltInMethod.MAP_CLEAR.method)));
 
       // We're not assigning to "source". For each group, create a new
       // final variable called "source" or "sourceN".
       source_ =
-          builder.append(
-              "source",
-              Expressions.call(
-                  BuiltInMethod.AS_ENUMERABLE.method, list_));
+          builder.append("source",
+              Expressions.call(BuiltInMethod.AS_ENUMERABLE.method, list_));
 
       inputPhysType = outputPhysType;
     }
@@ -587,14 +568,11 @@ public class EnumerableWindow extends Window implements EnumerableRel {
           return hasRows;
         }
 
-        //noinspection UnnecessaryLocalVariable
-        Expression res = block.append("rowInFrame",
+        return block.append("rowInFrame",
             Expressions.foldAnd(
                 ImmutableList.of(hasRows,
                     Expressions.greaterThanOrEqual(rowIndex, minIndex),
                     Expressions.lessThanOrEqual(rowIndex, maxIndex))));
-
-        return res;
       }
 
       @Override public Expression rowInFrame(Expression rowIndex) {
@@ -612,8 +590,7 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       }
 
       public Expression getRow(Expression rowIndex) {
-        return block.append(
-            "jRow",
+        return block.append("jRow",
             EnumUtils.convert(
                 Expressions.arrayIndex(rows_, rowIndex),
                 inputPhysType.getJavaRowType()));
@@ -674,26 +651,23 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       //       SortedMultiMap.singletonArrayIterator(comparator, tempList);
       //   final List<Xxx> list = new ArrayList<Xxx>(tempList.size());
 
-      final Expression tempList_ = builder.append(
-          "tempList",
-          Expressions.convert_(
-              Expressions.call(
-                  source_,
-                  BuiltInMethod.INTO.method,
-                  Expressions.new_(ArrayList.class)),
-              List.class), false);
+      final Expression tempList_ =
+          builder.append("tempList",
+              Expressions.convert_(
+                  Expressions.call(source_,
+                      BuiltInMethod.INTO.method,
+                      Expressions.new_(ArrayList.class)),
+                  List.class),
+              false);
       return Pair.of(tempList_,
-          builder.append(
-            "iterator",
-            Expressions.call(
-                null,
-                BuiltInMethod.SORTED_MULTI_MAP_SINGLETON.method,
-                comparator_,
-                tempList_)));
+          builder.append("iterator",
+              Expressions.call(null,
+                  BuiltInMethod.SORTED_MULTI_MAP_SINGLETON.method,
+                  comparator_,
+                  tempList_)));
     }
     Expression multiMap_ =
-        builder.append(
-            "multiMap", Expressions.new_(SortedMultiMap.class));
+        builder.append("multiMap", Expressions.new_(SortedMultiMap.class));
     final BlockBuilder builder2 = new BlockBuilder();
     final ParameterExpression v_ =
         Expressions.parameter(inputPhysType.getJavaRowType(),
@@ -726,29 +700,19 @@ public class EnumerableWindow extends Window implements EnumerableRel {
     }
     builder2.add(
         Expressions.statement(
-            Expressions.call(
-                multiMap_,
-                BuiltInMethod.SORTED_MULTI_MAP_PUT_MULTI.method,
-                key_,
-                v_)));
+            Expressions.call(multiMap_,
+                BuiltInMethod.SORTED_MULTI_MAP_PUT_MULTI.method, key_, v_)));
     builder2.add(
-        Expressions.return_(
-            null, Expressions.constant(null)));
+        Expressions.return_(null, Expressions.constant(null)));
 
     builder.add(
         Expressions.statement(
-            Expressions.call(
-                source_,
-                BuiltInMethod.ENUMERABLE_FOREACH.method,
-                Expressions.lambda(
-                    builder2.toBlock(), v_))));
+            Expressions.call(source_, BuiltInMethod.ENUMERABLE_FOREACH.method,
+                Expressions.lambda(builder2.toBlock(), v_))));
 
     return Pair.of(multiMap_,
-      builder.append(
-        "iterator",
-        Expressions.call(
-            multiMap_,
-            BuiltInMethod.SORTED_MULTI_MAP_ARRAYS.method,
+      builder.append("iterator",
+        Expressions.call(multiMap_, BuiltInMethod.SORTED_MULTI_MAP_ARRAYS.method,
             comparator_)));
   }
 
@@ -837,9 +801,9 @@ public class EnumerableWindow extends Window implements EnumerableRel {
       if (Primitive.is(aggHolderType) && !Primitive.is(aggStorageType)) {
         aggHolderType = Primitive.box(aggHolderType);
       }
-      ParameterExpression aggRes = Expressions.parameter(0,
-          aggHolderType,
-          builder.newName(aggName + "w" + windowIdx));
+      ParameterExpression aggRes =
+          Expressions.parameter(0, aggHolderType,
+              builder.newName(aggName + "w" + windowIdx));
 
       builder.add(
           Expressions.declare(0, aggRes,
@@ -899,19 +863,22 @@ public class EnumerableWindow extends Window implements EnumerableRel {
         continue;
       }
       nonEmpty = true;
-      Expression res = agg.implementor.implementResult(requireNonNull(agg.context, "agg.context"),
-          new WinAggResultContextImpl(builder, requireNonNull(agg.state, "agg.state"), frame) {
-            @Override public List<RexNode> rexArguments() {
-              return rexArguments.apply(agg);
-            }
-          });
+      Expression res =
+          agg.implementor.implementResult(
+              requireNonNull(agg.context, "agg.context"),
+              new WinAggResultContextImpl(builder,
+                  requireNonNull(agg.state, "agg.state"), frame) {
+                @Override public List<RexNode> rexArguments() {
+                  return rexArguments.apply(agg);
+                }
+              });
       // Several count(a) and count(b) might share the result
-      Expression result = requireNonNull(agg.result,
-          () -> "agg.result for " + agg.call);
-      Expression aggRes = builder.append("a" + agg.aggIdx + "res",
-          EnumUtils.convert(res, result.getType()));
-      builder.add(
-          Expressions.statement(Expressions.assign(result, aggRes)));
+      Expression result =
+          requireNonNull(agg.result, () -> "agg.result for " + agg.call);
+      Expression aggRes =
+          builder.append("a" + agg.aggIdx + "res",
+              EnumUtils.convert(res, result.getType()));
+      builder.add(Expressions.statement(Expressions.assign(result, aggRes)));
     }
     return nonEmpty;
   }
@@ -976,8 +943,8 @@ public class EnumerableWindow extends Window implements EnumerableRel {
     if (bound.getOffset() == null) {
       desiredKeyType = Primitive.box(desiredKeyType);
     }
-    Expression val = translator.translate(
-        new RexInputRef(orderKey, keyType), desiredKeyType);
+    Expression val =
+        translator.translate(new RexInputRef(orderKey, keyType), desiredKeyType);
     if (!bound.isCurrentRow()) {
       RexNode node = bound.getOffset();
       Expression offs = translator.translate(node);
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/JavaRowFormat.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/JavaRowFormat.java
index e94869749a..4810b04dea 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/JavaRowFormat.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/JavaRowFormat.java
@@ -185,10 +185,11 @@ public enum JavaRowFormat {
       }
     }
 
-    @Override public Expression field(Expression expression, int field, @Nullable Type fromType,
-        Type fieldType) {
-      final MethodCallExpression e = Expressions.call(expression,
-          BuiltInMethod.LIST_GET.method, Expressions.constant(field));
+    @Override public Expression field(Expression expression, int field,
+        @Nullable Type fromType, Type fieldType) {
+      final MethodCallExpression e =
+          Expressions.call(expression, BuiltInMethod.LIST_GET.method,
+              Expressions.constant(field));
       if (fromType == null) {
         fromType = e.getType();
       }
@@ -214,10 +215,11 @@ public enum JavaRowFormat {
       return Expressions.call(BuiltInMethod.ROW_AS_COPY.method, expressions);
     }
 
-    @Override public Expression field(Expression expression, int field, @Nullable Type fromType,
-        Type fieldType) {
-      final Expression e = Expressions.call(expression,
-          BuiltInMethod.ROW_VALUE.method, Expressions.constant(field));
+    @Override public Expression field(Expression expression, int field,
+        @Nullable Type fromType, Type fieldType) {
+      final Expression e =
+          Expressions.call(expression,
+              BuiltInMethod.ROW_VALUE.method, Expressions.constant(field));
       if (fromType == null) {
         fromType = e.getType();
       }
@@ -245,10 +247,10 @@ public enum JavaRowFormat {
       return Expressions.call(BuiltInMethod.ARRAY_COMPARER.method);
     }
 
-    @Override public Expression field(Expression expression, int field, @Nullable Type fromType,
-        Type fieldType) {
-      final IndexExpression e = Expressions.arrayIndex(expression,
-          Expressions.constant(field));
+    @Override public Expression field(Expression expression, int field,
+        @Nullable Type fromType, Type fieldType) {
+      final IndexExpression e =
+          Expressions.arrayIndex(expression, Expressions.constant(field));
       if (fromType == null) {
         fromType = e.getType();
       }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/PhysTypeImpl.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/PhysTypeImpl.java
index ad57cf3dc7..966b0503bf 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/PhysTypeImpl.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/PhysTypeImpl.java
@@ -258,9 +258,12 @@ public class PhysTypeImpl implements PhysType {
     // The conversion must be strict so optimizations of the targetFormat should not be performed
     // by the code that follows. If necessary the target format can be optimized before calling
     // this method.
-    PhysType targetPhysType = PhysTypeImpl.of(typeFactory, rowType, targetFormat, false);
-    final Expression selector = Expressions.lambda(Function1.class,
-        targetPhysType.record(fieldReferences(o_, Util.range(fieldCount))), o_);
+    PhysType targetPhysType =
+        PhysTypeImpl.of(typeFactory, rowType, targetFormat, false);
+    final Expression selector =
+        Expressions.lambda(Function1.class,
+            targetPhysType.record(fieldReferences(o_, Util.range(fieldCount))),
+            o_);
     return Expressions.call(exp, BuiltInMethod.SELECT.method, selector);
   }
 
@@ -522,8 +525,9 @@ public class PhysTypeImpl implements PhysType {
 
   @Override public PhysType component(int fieldOrdinal) {
     final RelDataTypeField field = rowType.getFieldList().get(fieldOrdinal);
-    RelDataType componentType = requireNonNull(field.getType().getComponentType(),
-        () -> "field.getType().getComponentType() for " + field);
+    RelDataType componentType =
+        requireNonNull(field.getType().getComponentType(),
+            () -> "field.getType().getComponentType() for " + field);
     return PhysTypeImpl.of(typeFactory,
         toStruct(componentType), format, false);
   }
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexImpTable.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexImpTable.java
index fa71552e23..3a03c67e68 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexImpTable.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexImpTable.java
@@ -1189,8 +1189,8 @@ public class RexImpTable {
       if (info.returnType() == BigDecimal.class) {
         next = Expressions.call(acc, "add", add.arguments().get(0));
       } else {
-        next = Expressions.add(acc,
-            EnumUtils.convert(add.arguments().get(0), acc.type));
+        final Expression arg = EnumUtils.convert(add.arguments().get(0), acc.type);
+        next = Expressions.add(acc, arg);
       }
       accAdvance(add, acc, next);
     }
@@ -1223,11 +1223,9 @@ public class RexImpTable {
       final Method method = (isMin
           ? BuiltInMethod.LESSER
           : BuiltInMethod.GREATER).method;
-      Expression next = Expressions.call(
-          method.getDeclaringClass(),
-          method.getName(),
-          acc,
-          Expressions.unbox(arg));
+      Expression next =
+          Expressions.call(method.getDeclaringClass(), method.getName(),
+              acc, Expressions.unbox(arg));
       accAdvance(add, acc, next);
     }
   }
@@ -1372,11 +1370,11 @@ public class RexImpTable {
       final Expression arg0 = add.arguments().get(0);
       final Expression arg1 = add.arguments().size() == 2
           ? add.arguments().get(1) : COMMA_EXPR;
-      final Expression result = Expressions.condition(
-          Expressions.equal(NULL_EXPR, accValue),
-          arg0,
-          Expressions.call(BuiltInMethod.STRING_CONCAT.method, accValue,
-              Expressions.call(BuiltInMethod.STRING_CONCAT.method, arg1, arg0)));
+      final Expression result =
+          Expressions.condition(Expressions.equal(NULL_EXPR, accValue),
+              arg0,
+              Expressions.call(BuiltInMethod.STRING_CONCAT.method, accValue,
+                  Expressions.call(BuiltInMethod.STRING_CONCAT.method, arg1, arg0)));
 
       add.currentBlock().add(Expressions.statement(Expressions.assign(accValue, result)));
     }
@@ -1405,8 +1403,7 @@ public class RexImpTable {
           Expressions.statement(
               Expressions.call(add.accumulator().get(0),
                   BuiltInMethod.COLLECTION_RETAIN_ALL.method,
-                  add.arguments().get(0))
-          ));
+                  add.arguments().get(0))));
 
       add.currentBlock().add(
           Expressions.ifThenElse(
@@ -1449,8 +1446,9 @@ public class RexImpTable {
           Expressions.call(accMap, BuiltInMethod.MAP_GET_OR_DEFAULT.method, currentArg,
               Expressions.constant(0, Long.class));
       // declare and assign the occurrences number about current value
-      ParameterExpression currentNumber = Expressions.parameter(
-          Long.class, add.currentBlock().newName("currentNumber"));
+      ParameterExpression currentNumber =
+          Expressions.parameter(Long.class,
+              add.currentBlock().newName("currentNumber"));
       add.currentBlock().add(Expressions.declare(0, currentNumber, null));
       add.currentBlock().add(
           Expressions.statement(
@@ -1555,11 +1553,9 @@ public class RexImpTable {
             + ". Only support bit_and, bit_or and bit_xor for bit aggregation function");
       }
       final Method method = builtInMethod.method;
-      Expression next = Expressions.call(
-          method.getDeclaringClass(),
-          method.getName(),
-          acc,
-          Expressions.unbox(arg));
+      Expression next =
+          Expressions.call(method.getDeclaringClass(), method.getName(),
+              acc, Expressions.unbox(arg));
       accAdvance(add, acc, next);
     }
   }
@@ -1835,17 +1831,19 @@ public class RexImpTable {
 
       List<RexNode> rexArgs = winResult.rexArguments();
 
-      ParameterExpression res = Expressions.parameter(0, info.returnType(),
-          result.currentBlock().newName("nth"));
+      ParameterExpression res =
+          Expressions.parameter(0, info.returnType(),
+              result.currentBlock().newName("nth"));
 
       RexToLixTranslator currentRowTranslator =
           winResult.rowTranslator(
               winResult.computeIndex(Expressions.constant(0), SeekType.START));
 
-      Expression dstIndex = winResult.computeIndex(
-          Expressions.subtract(
-              currentRowTranslator.translate(rexArgs.get(1), int.class),
-              Expressions.constant(1)), SeekType.START);
+      Expression dstIndex =
+          winResult.computeIndex(
+              Expressions.subtract(
+                  currentRowTranslator.translate(rexArgs.get(1), int.class),
+                  Expressions.constant(1)), SeekType.START);
 
       Expression rowInRange = winResult.rowInPartition(dstIndex);
 
@@ -1897,8 +1895,9 @@ public class RexImpTable {
 
       List<RexNode> rexArgs = winResult.rexArguments();
 
-      ParameterExpression res = Expressions.parameter(0, info.returnType(),
-          result.currentBlock().newName(isLead ? "lead" : "lag"));
+      ParameterExpression res =
+          Expressions.parameter(0, info.returnType(),
+              result.currentBlock().newName(isLead ? "lead" : "lag"));
 
       Expression offset;
       RexToLixTranslator currentRowTranslator =
@@ -1906,8 +1905,7 @@ public class RexImpTable {
               winResult.computeIndex(Expressions.constant(0), SeekType.SET));
       if (rexArgs.size() >= 2) {
         // lead(x, offset) or lead(x, offset, default)
-        offset = currentRowTranslator.translate(
-            rexArgs.get(1), int.class);
+        offset = currentRowTranslator.translate(rexArgs.get(1), int.class);
       } else {
         offset = Expressions.constant(1);
       }
@@ -1919,8 +1917,8 @@ public class RexImpTable {
       Expression rowInRange = winResult.rowInPartition(dstIndex);
 
       BlockBuilder thenBlock = result.nestBlock();
-      Expression lagResult = winResult.rowTranslator(dstIndex).translate(
-          rexArgs.get(0), res.type);
+      Expression lagResult =
+          winResult.rowTranslator(dstIndex).translate(rexArgs.get(0), res.type);
       thenBlock.add(Expressions.statement(Expressions.assign(res, lagResult)));
       result.exitBlock();
       BlockStatement thenBranch = thenBlock.toBlock();
@@ -2245,10 +2243,11 @@ public class RexImpTable {
         Expression operand0 = argValueList.get(0);
         switch (call.getType().getSqlTypeName()) {
         case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-          operand0 = Expressions.call(
-              BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
-              operand0,
-              Expressions.call(BuiltInMethod.TIME_ZONE.method, translator.getRoot()));
+          operand0 =
+              Expressions.call(BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+                  operand0,
+                  Expressions.call(BuiltInMethod.TIME_ZONE.method,
+                      translator.getRoot()));
           // fall through
         case TIMESTAMP:
           type = long.class;
@@ -2760,14 +2759,16 @@ public class RexImpTable {
         case INTERVAL_SECOND:
           break;
         case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-          operand = Expressions.call(
-              BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
-              operand,
-              Expressions.call(BuiltInMethod.TIME_ZONE.method, translator.getRoot()));
+          operand =
+              Expressions.call(BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+                  operand,
+                  Expressions.call(BuiltInMethod.TIME_ZONE.method,
+                      translator.getRoot()));
           // fall through
         case TIMESTAMP:
-          operand = Expressions.call(BuiltInMethod.FLOOR_DIV.method,
-              operand, Expressions.constant(TimeUnit.DAY.multiplier.longValue()));
+          operand =
+              Expressions.call(BuiltInMethod.FLOOR_DIV.method, operand,
+                  Expressions.constant(TimeUnit.DAY.multiplier.longValue()));
           // fall through
         case DATE:
           return Expressions.call(BuiltInMethod.UNIX_DATE_EXTRACT.method,
@@ -2789,18 +2790,20 @@ public class RexImpTable {
         switch (sqlTypeName) {
         case DATE:
           // convert to milliseconds
-          operand = Expressions.multiply(operand,
-              Expressions.constant(TimeUnit.DAY.multiplier.longValue()));
+          operand =
+              Expressions.multiply(operand,
+                  Expressions.constant(TimeUnit.DAY.multiplier.longValue()));
           // fall through
         case TIMESTAMP:
           // convert to seconds
           return Expressions.divide(operand,
               Expressions.constant(TimeUnit.SECOND.multiplier.longValue()));
         case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-          operand = Expressions.call(
-              BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
-              operand,
-              Expressions.call(BuiltInMethod.TIME_ZONE.method, translator.getRoot()));
+          operand =
+              Expressions.call(BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+                  operand,
+                  Expressions.call(BuiltInMethod.TIME_ZONE.method,
+                      translator.getRoot()));
           return Expressions.divide(operand,
               Expressions.constant(TimeUnit.SECOND.multiplier.longValue()));
         case INTERVAL_YEAR:
@@ -2838,8 +2841,9 @@ public class RexImpTable {
       if (unit == TimeUnit.QUARTER) {
         operand = Expressions.subtract(operand, Expressions.constant(1L));
       }
-      operand = Expressions.divide(operand,
-          Expressions.constant(unit.multiplier.longValue()));
+      operand =
+          Expressions.divide(operand,
+              Expressions.constant(unit.multiplier.longValue()));
       if (unit == TimeUnit.QUARTER) {
         operand = Expressions.add(operand, Expressions.constant(1L));
       }
@@ -3202,10 +3206,11 @@ public class RexImpTable {
       case DATE:
         switch (typeName) {
         case TIMESTAMP:
-          trop0 = Expressions.convert_(
-              Expressions.multiply(trop0,
-                  Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
-              long.class);
+          trop0 =
+              Expressions.convert_(
+                  Expressions.multiply(trop0,
+                      Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
+                  long.class);
           break;
         default:
           switch (typeName1) {
@@ -3219,10 +3224,11 @@ public class RexImpTable {
           case INTERVAL_MINUTE:
           case INTERVAL_MINUTE_SECOND:
           case INTERVAL_SECOND:
-            trop1 = Expressions.convert_(
-                Expressions.divide(trop1,
-                    Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
-                int.class);
+            trop1 =
+                Expressions.convert_(
+                    Expressions.divide(trop1,
+                        Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
+                    int.class);
             break;
           default:
             break;
@@ -3333,9 +3339,10 @@ public class RexImpTable {
 
       // TODO: verify if the variable is needed
       @SuppressWarnings("unused")
-      final BinaryExpression lastIndex = Expressions.subtract(
-          Expressions.call(rows, BuiltInMethod.COLLECTION_SIZE.method),
-          Expressions.constant(1));
+      final BinaryExpression lastIndex =
+          Expressions.subtract(
+              Expressions.call(rows, BuiltInMethod.COLLECTION_SIZE.method),
+              Expressions.constant(1));
 
       // Just take the last one, if exists
       if ("*".equals(alpha)) {
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
index b958f06744..35a691be0d 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/RexToLixTranslator.java
@@ -220,14 +220,18 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
       SqlConformance conformance, BlockBuilder list,
       Expression root, RexCall rexCall, Expression inputEnumerable,
       PhysType inputPhysType, PhysType outputPhysType) {
-    return new RexToLixTranslator(null, typeFactory, root, null, list,
-        null, new RexBuilder(typeFactory), conformance, null)
-        .translateTableFunction(rexCall, inputEnumerable, inputPhysType, outputPhysType);
+    final RexToLixTranslator translator =
+        new RexToLixTranslator(null, typeFactory, root, null, list,
+            null, new RexBuilder(typeFactory), conformance, null);
+    return translator
+        .translateTableFunction(rexCall, inputEnumerable, inputPhysType,
+            outputPhysType);
   }
 
   /** Creates a translator for translating aggregate functions. */
   public static RexToLixTranslator forAggregation(JavaTypeFactory typeFactory,
-      BlockBuilder list, @Nullable InputGetter inputGetter, SqlConformance conformance) {
+      BlockBuilder list, @Nullable InputGetter inputGetter,
+      SqlConformance conformance) {
     final ParameterExpression root = DataContext.ROOT;
     return new RexToLixTranslator(null, typeFactory, root, inputGetter, list,
         null, new RexBuilder(typeFactory), conformance, null);
@@ -293,34 +297,36 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
       case CHAR:
       case VARCHAR:
         convert =
-            Expressions.call(BuiltInMethod.STRING_TO_TIME_WITH_LOCAL_TIME_ZONE.method, operand);
+            Expressions.call(BuiltInMethod.STRING_TO_TIME_WITH_LOCAL_TIME_ZONE.method,
+                operand);
         break;
       case TIME:
-        convert = Expressions.call(
-            BuiltInMethod.TIME_STRING_TO_TIME_WITH_LOCAL_TIME_ZONE.method,
-            RexImpTable.optimize2(
-                operand,
-                Expressions.call(
-                    BuiltInMethod.UNIX_TIME_TO_STRING.method,
-                    operand)),
-            Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
+        convert =
+            Expressions.call(
+                BuiltInMethod.TIME_STRING_TO_TIME_WITH_LOCAL_TIME_ZONE.method,
+                RexImpTable.optimize2(operand,
+                    Expressions.call(BuiltInMethod.UNIX_TIME_TO_STRING.method,
+                        operand)),
+                Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
         break;
       case TIMESTAMP:
-        convert = Expressions.call(
-            BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
-            RexImpTable.optimize2(
-                operand,
-                Expressions.call(
-                    BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
-                    operand)),
-            Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
+        convert =
+            Expressions.call(
+                BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
+                RexImpTable.optimize2(operand,
+                    Expressions.call(
+                        BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
+                        operand)),
+                Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
         break;
       case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIME_WITH_LOCAL_TIME_ZONE.method,
-                operand));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod
+                        .TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIME_WITH_LOCAL_TIME_ZONE
+                        .method,
+                    operand));
         break;
       default:
         break;
@@ -334,9 +340,9 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
             Expressions.call(BuiltInMethod.STRING_TO_TIMESTAMP.method, operand);
         break;
       case DATE:
-        convert = Expressions.multiply(
-            Expressions.convert_(operand, long.class),
-            Expressions.constant(DateTimeUtils.MILLIS_PER_DAY));
+        convert =
+            Expressions.multiply(Expressions.convert_(operand, long.class),
+                Expressions.constant(DateTimeUtils.MILLIS_PER_DAY));
         break;
       case TIME:
         convert =
@@ -349,23 +355,22 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
                 Expressions.convert_(operand, long.class));
         break;
       case TIME_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+        convert =
+            RexImpTable.optimize2(operand,
                 Expressions.call(
-                    BuiltInMethod.UNIX_DATE_TO_STRING.method,
-                    Expressions.call(BuiltInMethod.CURRENT_DATE.method, root)),
-                operand,
-                Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+                    BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+                    Expressions.call(BuiltInMethod.UNIX_DATE_TO_STRING.method,
+                        Expressions.call(BuiltInMethod.CURRENT_DATE.method, root)),
+                    operand,
+                    Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
         break;
       case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
-                operand,
-                Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP.method,
+                    operand,
+                    Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
         break;
       default:
         break;
@@ -381,52 +386,53 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
                 operand);
         break;
       case DATE:
-        convert = Expressions.call(
-            BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
-            RexImpTable.optimize2(
-                operand,
-                Expressions.call(
-                    BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
-                    Expressions.multiply(
-                        Expressions.convert_(operand, long.class),
-                        Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)))),
-            Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
+        convert =
+            Expressions.call(
+                BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
+                RexImpTable.optimize2(operand,
+                    Expressions.call(
+                        BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
+                        Expressions.multiply(
+                            Expressions.convert_(operand, long.class),
+                            Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)))),
+                Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
         break;
       case TIME:
-        convert = Expressions.call(
-            BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
-            RexImpTable.optimize2(
-                operand,
-                Expressions.call(
-                    BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
-                    Expressions.add(
-                        Expressions.multiply(
-                            Expressions.convert_(
-                                Expressions.call(BuiltInMethod.CURRENT_DATE.method, root),
-                                long.class),
-                            Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
-                        Expressions.convert_(operand, long.class)))),
-            Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
+        convert =
+            Expressions.call(
+                BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
+                RexImpTable.optimize2(operand,
+                    Expressions.call(
+                        BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
+                        Expressions.add(
+                            Expressions.multiply(
+                                Expressions.convert_(
+                                    Expressions.call(BuiltInMethod.CURRENT_DATE.method, root),
+                                    long.class),
+                                Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
+                            Expressions.convert_(operand, long.class)))),
+                Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
         break;
       case TIME_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
+        convert =
+            RexImpTable.optimize2(operand,
                 Expressions.call(
-                    BuiltInMethod.UNIX_DATE_TO_STRING.method,
-                    Expressions.call(BuiltInMethod.CURRENT_DATE.method, root)),
-                operand));
+                    BuiltInMethod
+                        .TIME_WITH_LOCAL_TIME_ZONE_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE
+                        .method,
+                    Expressions.call(BuiltInMethod.UNIX_DATE_TO_STRING.method,
+                        Expressions.call(BuiltInMethod.CURRENT_DATE.method, root)),
+                    operand));
         break;
       case TIMESTAMP:
-        convert = Expressions.call(
-            BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
-            RexImpTable.optimize2(
-                operand,
-                Expressions.call(
-                    BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
-                    operand)),
-            Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
+        convert =
+            Expressions.call(
+                BuiltInMethod.TIMESTAMP_STRING_TO_TIMESTAMP_WITH_LOCAL_TIME_ZONE.method,
+                RexImpTable.optimize2(operand,
+                    Expressions.call(
+                        BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
+                        operand)),
+                Expressions.call(BuiltInMethod.TIME_ZONE.method, root));
         break;
       default:
         break;
@@ -436,9 +442,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
       switch (sourceType.getSqlTypeName()) {
       case CHAR:
       case VARCHAR:
-        convert = Expressions.call(
-            BuiltInMethod.STRING_TO_BOOLEAN.method,
-            operand);
+        convert =
+            Expressions.call(BuiltInMethod.STRING_TO_BOOLEAN.method, operand);
         break;
       default:
         break;
@@ -450,51 +455,49 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
           sourceType.getIntervalQualifier();
       switch (sourceType.getSqlTypeName()) {
       case DATE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.UNIX_DATE_TO_STRING.method,
-                operand));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(BuiltInMethod.UNIX_DATE_TO_STRING.method,
+                    operand));
         break;
       case TIME:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.UNIX_TIME_TO_STRING.method,
-                operand));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(BuiltInMethod.UNIX_TIME_TO_STRING.method,
+                    operand));
         break;
       case TIME_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_STRING.method,
-                operand,
-                Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_STRING.method,
+                    operand,
+                    Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
         break;
       case TIMESTAMP:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
-                operand));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(BuiltInMethod.UNIX_TIMESTAMP_TO_STRING.method,
+                    operand));
         break;
       case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_STRING.method,
-                operand,
-                Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_STRING.method,
+                    operand,
+                    Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
         break;
       case INTERVAL_YEAR:
       case INTERVAL_YEAR_MONTH:
       case INTERVAL_MONTH:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.INTERVAL_YEAR_MONTH_TO_STRING.method,
-                operand,
-                Expressions.constant(requireNonNull(interval, "interval").timeUnitRange)));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod.INTERVAL_YEAR_MONTH_TO_STRING.method,
+                    operand,
+                    Expressions.constant(
+                        requireNonNull(interval, "interval").timeUnitRange)));
         break;
       case INTERVAL_DAY:
       case INTERVAL_DAY_HOUR:
@@ -506,22 +509,22 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
       case INTERVAL_MINUTE:
       case INTERVAL_MINUTE_SECOND:
       case INTERVAL_SECOND:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.INTERVAL_DAY_TIME_TO_STRING.method,
-                operand,
-                Expressions.constant(requireNonNull(interval, "interval").timeUnitRange),
-                Expressions.constant(
-                    interval.getFractionalSecondPrecision(
-                        typeFactory.getTypeSystem()))));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(
+                    BuiltInMethod.INTERVAL_DAY_TIME_TO_STRING.method,
+                    operand,
+                    Expressions.constant(
+                        requireNonNull(interval, "interval").timeUnitRange),
+                    Expressions.constant(
+                        interval.getFractionalSecondPrecision(
+                            typeFactory.getTypeSystem()))));
         break;
       case BOOLEAN:
-        convert = RexImpTable.optimize2(
-            operand,
-            Expressions.call(
-                BuiltInMethod.BOOLEAN_TO_STRING.method,
-                operand));
+        convert =
+            RexImpTable.optimize2(operand,
+                Expressions.call(BuiltInMethod.BOOLEAN_TO_STRING.method,
+                    operand));
         break;
       default:
         break;
@@ -607,7 +610,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
           () -> "null SqlTypeFamily for " + sourceType + ", SqlTypeName "
               + sourceType.getSqlTypeName())) {
       case NUMERIC:
-        final BigDecimal multiplier = targetType.getSqlTypeName().getEndUnit().multiplier;
+        final BigDecimal multiplier =
+            targetType.getSqlTypeName().getEndUnit().multiplier;
         final BigDecimal divider = BigDecimal.ONE;
         convert = RexImpTable.multiplyDivide(convert, multiplier, divider);
         break;
@@ -621,7 +625,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
     return scaleIntervalToNumber(sourceType, targetType, convert);
   }
 
-  private @Nullable Expression translateCastToTime(RelDataType sourceType, Expression operand) {
+  private @Nullable Expression translateCastToTime(RelDataType sourceType,
+      Expression operand) {
     Expression convert = null;
     switch (sourceType.getSqlTypeName()) {
     case CHAR:
@@ -630,28 +635,28 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
           Expressions.call(BuiltInMethod.STRING_TO_TIME.method, operand);
       break;
     case TIME_WITH_LOCAL_TIME_ZONE:
-      convert = RexImpTable.optimize2(
-          operand,
-          Expressions.call(
-              BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_TIME.method,
-              operand,
-              Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+      convert =
+          RexImpTable.optimize2(operand,
+              Expressions.call(
+                  BuiltInMethod.TIME_WITH_LOCAL_TIME_ZONE_TO_TIME.method,
+                  operand,
+                  Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
       break;
     case TIMESTAMP:
-      convert = Expressions.convert_(
-          Expressions.call(
-              BuiltInMethod.FLOOR_MOD.method,
-              operand,
-              Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
-          int.class);
+      convert =
+          Expressions.convert_(
+              Expressions.call(BuiltInMethod.FLOOR_MOD.method,
+                  operand,
+                  Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
+              int.class);
       break;
     case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-      convert = RexImpTable.optimize2(
-          operand,
-          Expressions.call(
-              BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIME.method,
-              operand,
-              Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
+      convert =
+          RexImpTable.optimize2(operand,
+              Expressions.call(
+                  BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_TIME.method,
+                  operand,
+                  Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
       break;
     default:
       break;
@@ -659,32 +664,29 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
     return convert;
   }
 
-  private @Nullable Expression translateCastToDate(RelDataType sourceType, Expression operand) {
-    Expression convert = null;
+  private @Nullable Expression translateCastToDate(RelDataType sourceType,
+      Expression operand) {
     switch (sourceType.getSqlTypeName()) {
     case CHAR:
     case VARCHAR:
-      convert =
-          Expressions.call(BuiltInMethod.STRING_TO_DATE.method, operand);
-      break;
+      return Expressions.call(BuiltInMethod.STRING_TO_DATE.method, operand);
+
     case TIMESTAMP:
-      convert = Expressions.convert_(
+      return Expressions.convert_(
           Expressions.call(BuiltInMethod.FLOOR_DIV.method,
               operand, Expressions.constant(DateTimeUtils.MILLIS_PER_DAY)),
           int.class);
-      break;
+
     case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
-      convert = RexImpTable.optimize2(
-          operand,
+      return RexImpTable.optimize2(operand,
           Expressions.call(
               BuiltInMethod.TIMESTAMP_WITH_LOCAL_TIME_ZONE_TO_DATE.method,
               operand,
               Expressions.call(BuiltInMethod.TIME_ZONE.method, root)));
-      break;
+
     default:
-      break;
+      return null;
     }
-    return convert;
   }
 
   /**
@@ -701,8 +703,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
    */
   Expression handleMethodCheckedExceptions(Expression callExpr) {
     // Try statement
-    ParameterExpression methodCall = Expressions.parameter(
-        callExpr.getType(), list.newName("method_call"));
+    ParameterExpression methodCall =
+        Expressions.parameter(callExpr.getType(), list.newName("method_call"));
     list.add(Expressions.declare(Modifier.FINAL, methodCall, null));
     Statement st = Expressions.statement(Expressions.assign(methodCall, callExpr));
     // Catch Block, wrap checked exception in unchecked exception
@@ -812,14 +814,16 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
               literal.getValueAs(byte[].class),
               byte[].class));
     case GEOMETRY:
-      final Geometry geom = requireNonNull(literal.getValueAs(Geometry.class),
-          () -> "getValueAs(Geometries.Geom) for " + literal);
+      final Geometry geom =
+          requireNonNull(literal.getValueAs(Geometry.class),
+              () -> "getValueAs(Geometries.Geom) for " + literal);
       final String wkt = SpatialTypeFunctions.ST_AsWKT(geom);
       return Expressions.call(null, BuiltInMethod.ST_GEOM_FROM_EWKT.method,
           Expressions.constant(wkt));
     case SYMBOL:
-      value2 = requireNonNull(literal.getValueAs(Enum.class),
-          () -> "getValueAs(Enum.class) for " + literal);
+      value2 =
+          requireNonNull(literal.getValueAs(Enum.class),
+              () -> "getValueAs(Enum.class) for " + literal);
       javaClass = value2.getClass();
       break;
     default:
@@ -1021,8 +1025,9 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
     }
     // Generate one line of code to get the input, e.g.,
     // "final Employee current =(Employee) inputEnumerator.current();"
-    final Expression valueExpression = requireNonNull(inputGetter, "inputGetter").field(
-        list, inputRef.getIndex(), currentStorageType);
+    final Expression valueExpression =
+        requireNonNull(inputGetter, "inputGetter")
+            .field(list, inputRef.getIndex(), currentStorageType);
 
     // Generate one line of code for the value of RexInputRef, e.g.,
     // "final Integer input_value = current.commission;"
@@ -1092,8 +1097,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
     // "final boolean literal_isNull = false;"
     final Expression isNullExpression =
         literal.isNull() ? RexImpTable.TRUE_EXPR : RexImpTable.FALSE_EXPR;
-    final ParameterExpression isNullVariable = Expressions.parameter(
-        Boolean.TYPE, list.newName("literal_isNull"));
+    final ParameterExpression isNullVariable =
+        Expressions.parameter(Boolean.TYPE, list.newName("literal_isNull"));
     list.add(Expressions.declare(Modifier.FINAL, isNullVariable, isNullExpression));
 
     // Maintain the map from valueVariable (ParameterExpression) to real Expression
@@ -1208,8 +1213,8 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
   private Result implementPrev(RexCall call) {
     final RexNode node = call.getOperands().get(0);
     final RexNode offset = call.getOperands().get(1);
-    final Expression offs = Expressions.multiply(translate(offset),
-            Expressions.constant(-1));
+    final Expression offs =
+        Expressions.multiply(translate(offset), Expressions.constant(-1));
     requireNonNull((EnumerableMatch.PrevInputGetter) inputGetter, "inputGetter")
         .setOffset(offs);
     return node.accept(this);
@@ -1270,14 +1275,17 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
    *      }
    * }</pre></blockquote>
    */
-  private static void implementRecursively(final RexToLixTranslator currentTranslator,
-      final List<RexNode> operandList, final ParameterExpression valueVariable, int pos) {
-    final BlockBuilder currentBlockBuilder = currentTranslator.getBlockBuilder();
-    final List<@Nullable Type> storageTypes = EnumUtils.internalTypes(operandList);
+  private static void implementRecursively(RexToLixTranslator currentTranslator,
+      List<RexNode> operandList, ParameterExpression valueVariable, int pos) {
+    final BlockBuilder currentBlockBuilder =
+        currentTranslator.getBlockBuilder();
+    final List<@Nullable Type> storageTypes =
+        EnumUtils.internalTypes(operandList);
     // [ELSE] clause
     if (pos == operandList.size() - 1) {
-      Expression res = implementCallOperand2(operandList.get(pos),
-          storageTypes.get(pos), currentTranslator);
+      Expression res =
+          implementCallOperand2(operandList.get(pos), storageTypes.get(pos),
+              currentTranslator);
       currentBlockBuilder.add(
           Expressions.statement(
               Expressions.assign(valueVariable,
@@ -1286,19 +1294,21 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
     }
     // Condition code: !a_isNull && a_value
     final RexNode testerNode = operandList.get(pos);
-    final Result testerResult = implementCallOperand(testerNode,
-        storageTypes.get(pos), currentTranslator);
-    final Expression tester = Expressions.andAlso(
-        Expressions.not(testerResult.isNullVariable),
-        testerResult.valueVariable);
+    final Result testerResult =
+        implementCallOperand(testerNode, storageTypes.get(pos),
+            currentTranslator);
+    final Expression tester =
+        Expressions.andAlso(Expressions.not(testerResult.isNullVariable),
+            testerResult.valueVariable);
     // Code for {if} branch
     final RexNode ifTrueNode = operandList.get(pos + 1);
     final BlockBuilder ifTrueBlockBuilder =
         new BlockBuilder(true, currentBlockBuilder);
     final RexToLixTranslator ifTrueTranslator =
         currentTranslator.setBlock(ifTrueBlockBuilder);
-    final Expression ifTrueRes = implementCallOperand2(ifTrueNode,
-        storageTypes.get(pos + 1), ifTrueTranslator);
+    final Expression ifTrueRes =
+        implementCallOperand2(ifTrueNode, storageTypes.get(pos + 1),
+            ifTrueTranslator);
     // Assign the value: case_when_value = ifTrueRes
     ifTrueBlockBuilder.add(
         Expressions.statement(
@@ -1322,7 +1332,7 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
         Expressions.ifThenElse(tester, ifTrue, ifFalse));
   }
 
-  private Result toInnerStorageType(final Result result, final Type storageType) {
+  private Result toInnerStorageType(Result result, Type storageType) {
     final Expression valueExpression =
         EnumUtils.toInternal(result.valueVariable, storageType);
     if (valueExpression.equals(result.valueVariable)) {
@@ -1338,29 +1348,35 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
   }
 
   @Override public Result visitDynamicParam(RexDynamicParam dynamicParam) {
-    final Pair<RexNode, @Nullable Type> key = Pair.of(dynamicParam, currentStorageType);
+    final Pair<RexNode, @Nullable Type> key =
+        Pair.of(dynamicParam, currentStorageType);
     if (rexWithStorageTypeResultMap.containsKey(key)) {
       return rexWithStorageTypeResultMap.get(key);
     }
     final Type storageType = currentStorageType != null
         ? currentStorageType : typeFactory.getJavaClass(dynamicParam.getType());
-    final Expression valueExpression = EnumUtils.convert(
-        Expressions.call(root, BuiltInMethod.DATA_CONTEXT_GET.method,
-            Expressions.constant("?" + dynamicParam.getIndex())),
-        storageType);
+    final Expression valueExpression =
+        EnumUtils.convert(
+            Expressions.call(root, BuiltInMethod.DATA_CONTEXT_GET.method,
+                Expressions.constant("?" + dynamicParam.getIndex())),
+            storageType);
     final ParameterExpression valueVariable =
-        Expressions.parameter(valueExpression.getType(), list.newName("value_dynamic_param"));
+        Expressions.parameter(valueExpression.getType(),
+            list.newName("value_dynamic_param"));
     list.add(Expressions.declare(Modifier.FINAL, valueVariable, valueExpression));
     final ParameterExpression isNullVariable =
         Expressions.parameter(Boolean.TYPE, list.newName("isNull_dynamic_param"));
-    list.add(Expressions.declare(Modifier.FINAL, isNullVariable, checkNull(valueVariable)));
+    list.add(
+        Expressions.declare(Modifier.FINAL, isNullVariable,
+            checkNull(valueVariable)));
     final Result result = new Result(isNullVariable, valueVariable);
     rexWithStorageTypeResultMap.put(key, result);
     return result;
   }
 
   @Override public Result visitFieldAccess(RexFieldAccess fieldAccess) {
-    final Pair<RexNode, @Nullable Type> key = Pair.of(fieldAccess, currentStorageType);
+    final Pair<RexNode, @Nullable Type> key =
+        Pair.of(fieldAccess, currentStorageType);
     if (rexWithStorageTypeResultMap.containsKey(key)) {
       return rexWithStorageTypeResultMap.get(key);
     }
@@ -1375,19 +1391,20 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
       }
       final RexToLixTranslator.InputGetter getter =
           correlates.apply(((RexCorrelVariable) target).getName());
-      final Expression input = getter.field(
-          list, fieldIndex, currentStorageType);
+      final Expression input =
+          getter.field(list, fieldIndex, currentStorageType);
       final Expression condition = checkNull(input);
       final ParameterExpression valueVariable =
           Expressions.parameter(input.getType(), list.newName("corInp_value"));
       list.add(Expressions.declare(Modifier.FINAL, valueVariable, input));
       final ParameterExpression isNullVariable =
           Expressions.parameter(Boolean.TYPE, list.newName("corInp_isNull"));
-      final Expression isNullExpression = Expressions.condition(
-          condition,
-          RexImpTable.TRUE_EXPR,
-          checkNull(valueVariable));
-      list.add(Expressions.declare(Modifier.FINAL, isNullVariable, isNullExpression));
+      final Expression isNullExpression =
+          Expressions.condition(condition,
+              RexImpTable.TRUE_EXPR,
+              checkNull(valueVariable));
+      list.add(
+          Expressions.declare(Modifier.FINAL, isNullVariable, isNullExpression));
       final Result result1 = new Result(isNullVariable, valueVariable);
       rexWithStorageTypeResultMap.put(key, result1);
       return result1;
@@ -1396,9 +1413,10 @@ public class RexToLixTranslator implements RexVisitor<RexToLixTranslator.Result>
           builder.makeLiteral(fieldIndex, typeFactory.createType(int.class), true);
       RexNode rxName =
           builder.makeLiteral(fieldName, typeFactory.createType(String.class), true);
-      RexCall accessCall = (RexCall) builder.makeCall(
-          fieldAccess.getType(), SqlStdOperatorTable.STRUCT_ACCESS,
-          ImmutableList.of(target, rxIndex, rxName));
+      RexCall accessCall =
+          (RexCall) builder.makeCall(fieldAccess.getType(),
+              SqlStdOperatorTable.STRUCT_ACCESS,
+              ImmutableList.of(target, rxIndex, rxName));
       final Result result2 = accessCall.accept(this);
       rexWithStorageTypeResultMap.put(key, result2);
       return result2;
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/StrictAggImplementor.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/StrictAggImplementor.java
index cc07a30a2b..105c8ac9c6 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/StrictAggImplementor.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/StrictAggImplementor.java
@@ -165,13 +165,14 @@ public abstract class StrictAggImplementor implements AggImplementor {
     String tmpName = result.accumulator().isEmpty()
         ? "ar"
         : (result.accumulator().get(0) + "$Res");
-    ParameterExpression res = Expressions.parameter(0, info.returnType(),
-        result.currentBlock().newName(tmpName));
+    ParameterExpression res =
+        Expressions.parameter(0, info.returnType(),
+            result.currentBlock().newName(tmpName));
 
     List<Expression> acc = result.accumulator();
     final BlockBuilder thenBlock = result.nestBlock();
-    Expression nonNull = EnumUtils.convert(
-        implementNotNullResult(info, result), info.returnType());
+    Expression nonNull =
+        EnumUtils.convert(implementNotNullResult(info, result), info.returnType());
     result.exitBlock();
     thenBlock.add(Expressions.statement(Expressions.assign(res, nonNull)));
     BlockStatement thenBranch = thenBlock.toBlock();
diff --git a/core/src/main/java/org/apache/calcite/adapter/java/ReflectiveSchema.java b/core/src/main/java/org/apache/calcite/adapter/java/ReflectiveSchema.java
index cec684e03c..ba1f9f70fa 100644
--- a/core/src/main/java/org/apache/calcite/adapter/java/ReflectiveSchema.java
+++ b/core/src/main/java/org/apache/calcite/adapter/java/ReflectiveSchema.java
@@ -141,11 +141,11 @@ public class ReflectiveSchema
           // This enables to keep the same Statistics.of below
           referentialConstraints = ImmutableList.of();
         }
-        table.statistic = Statistics.of(
-            ImmutableList.copyOf(
-                Iterables.concat(
-                    referentialConstraints,
-                    Collections.singleton(rc))));
+        table.statistic =
+            Statistics.of(
+                ImmutableList.copyOf(
+                    Iterables.concat(referentialConstraints,
+                        Collections.singleton(rc))));
       }
     }
     return tableMap;
@@ -362,8 +362,8 @@ public class ReflectiveSchema
 
     @Override public TranslatableTable apply(final List<? extends @Nullable Object> arguments) {
       try {
-        final Object o = requireNonNull(
-            method.invoke(schema.getTarget(), arguments.toArray()),
+        final Object o = method.invoke(schema.getTarget(), arguments.toArray());
+        requireNonNull(o,
             () -> "method " + method + " returned null for arguments " + arguments);
         return (TranslatableTable) o;
       } catch (IllegalAccessException | InvocationTargetException e) {
@@ -400,9 +400,9 @@ public class ReflectiveSchema
 
     @Override public Expression getExpression(SchemaPlus schema,
         String tableName, Class clazz) {
-      ReflectiveSchema reflectiveSchema = requireNonNull(
-          schema.unwrap(ReflectiveSchema.class),
-          () -> "schema.unwrap(ReflectiveSchema.class) for " + schema);
+      ReflectiveSchema reflectiveSchema =
+          requireNonNull(schema.unwrap(ReflectiveSchema.class),
+              () -> "schema.unwrap(ReflectiveSchema.class) for " + schema);
       return Expressions.field(
           reflectiveSchema.getTargetExpression(
               schema.getParentSchema(), schema.getName()), field);
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcCatalogSchema.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcCatalogSchema.java
index eeb347d963..cd1e8cf51b 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcCatalogSchema.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcCatalogSchema.java
@@ -111,9 +111,9 @@ public class JdbcCatalogSchema extends AbstractSchema {
              connection.getMetaData().getSchemas(catalog, null)) {
       defaultSchemaName = connection.getSchema();
       while (resultSet.next()) {
-        final String schemaName = requireNonNull(
-            resultSet.getString(1),
-            () -> "got null schemaName from the database");
+        final String schemaName =
+            requireNonNull(resultSet.getString(1),
+                "got null schemaName from the database");
         builder.put(schemaName,
             new JdbcSchema(dataSource, dialect, convention, catalog, schemaName));
       }
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
index 2a97773614..9c60fd15b4 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
@@ -119,8 +119,9 @@ public class JdbcRules {
   static final RelFactories.JoinFactory JOIN_FACTORY =
       (left, right, hints, condition, variablesSet, joinType, semiJoinDone) -> {
         final RelOptCluster cluster = left.getCluster();
-        final RelTraitSet traitSet = cluster.traitSetOf(
-            requireNonNull(left.getConvention(), "left.getConvention()"));
+        final RelTraitSet traitSet =
+            cluster.traitSetOf(
+                requireNonNull(left.getConvention(), "left.getConvention()"));
         try {
           return new JdbcJoin(cluster, traitSet, left, right, condition,
               variablesSet, joinType);
@@ -152,8 +153,9 @@ public class JdbcRules {
   public static final RelFactories.AggregateFactory AGGREGATE_FACTORY =
       (input, hints, groupSet, groupSets, aggCalls) -> {
         final RelOptCluster cluster = input.getCluster();
-        final RelTraitSet traitSet = cluster.traitSetOf(
-            requireNonNull(input.getConvention(), "input.getConvention()"));
+        final RelTraitSet traitSet =
+            cluster.traitSetOf(
+                requireNonNull(input.getConvention(), "input.getConvention()"));
         try {
           return new JdbcAggregate(cluster, traitSet, input, groupSet,
               groupSets, aggCalls);
@@ -173,8 +175,9 @@ public class JdbcRules {
       (kind, inputs, all) -> {
         RelNode input = inputs.get(0);
         RelOptCluster cluster = input.getCluster();
-        final RelTraitSet traitSet = cluster.traitSetOf(
-            requireNonNull(input.getConvention(), "input.getConvention()"));
+        final RelTraitSet traitSet =
+            cluster.traitSetOf(
+                requireNonNull(input.getConvention(), "input.getConvention()"));
         switch (kind) {
         case UNION:
           return new JdbcUnion(cluster, traitSet, inputs, all);
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
index 5d5205add7..2f3e4e302a 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcSchema.java
@@ -179,10 +179,11 @@ public class JdbcSchema implements Schema {
       return JdbcSchema.create(
           parentSchema, name, dataSource, jdbcCatalog, jdbcSchema);
     } else {
-      SqlDialectFactory factory = AvaticaUtils.instantiatePlugin(
-          SqlDialectFactory.class, sqlDialectFactory);
-      return JdbcSchema.create(
-          parentSchema, name, dataSource, factory, jdbcCatalog, jdbcSchema);
+      SqlDialectFactory factory =
+          AvaticaUtils.instantiatePlugin(SqlDialectFactory.class,
+              sqlDialectFactory);
+      return JdbcSchema.create(parentSchema, name, dataSource, factory,
+          jdbcCatalog, jdbcSchema);
     }
   }
 
@@ -422,13 +423,14 @@ public class JdbcSchema implements Schema {
       if (typeString != null && typeString.endsWith(" ARRAY")) {
         // E.g. hsqldb gives "INTEGER ARRAY", so we deduce the component type
         // "INTEGER".
-        final String remaining = typeString.substring(0,
-            typeString.length() - " ARRAY".length());
+        final String remaining =
+            typeString.substring(0, typeString.length() - " ARRAY".length());
         component = parseTypeString(typeFactory, remaining);
       }
       if (component == null) {
-        component = typeFactory.createTypeWithNullability(
-            typeFactory.createSqlType(SqlTypeName.ANY), true);
+        component =
+            typeFactory.createTypeWithNullability(
+                typeFactory.createSqlType(SqlTypeName.ANY), true);
       }
       return typeFactory.createArrayType(component, -1);
     default:
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 442bc564b5..80cf32d992 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
@@ -181,20 +181,22 @@ public class JdbcToEnumerableConverter
                       toIndexesTableExpression(sqlString)),
                   DataContext.ROOT));
 
-      enumerable = builder0.append("enumerable",
-          Expressions.call(
-              BuiltInMethod.RESULT_SET_ENUMERABLE_OF_PREPARED.method,
-              Schemas.unwrap(jdbcConvention.expression, DataSource.class),
-              sql_,
-              rowBuilderFactory_,
-              preparedStatementConsumer_));
+      enumerable =
+          builder0.append("enumerable",
+              Expressions.call(
+                  BuiltInMethod.RESULT_SET_ENUMERABLE_OF_PREPARED.method,
+                  Schemas.unwrap(jdbcConvention.expression, DataSource.class),
+                  sql_,
+                  rowBuilderFactory_,
+                  preparedStatementConsumer_));
     } else {
-      enumerable = builder0.append("enumerable",
-          Expressions.call(
-              BuiltInMethod.RESULT_SET_ENUMERABLE_OF.method,
-              Schemas.unwrap(jdbcConvention.expression, DataSource.class),
-              sql_,
-              rowBuilderFactory_));
+      enumerable =
+          builder0.append("enumerable",
+              Expressions.call(
+                  BuiltInMethod.RESULT_SET_ENUMERABLE_OF.method,
+                  Schemas.unwrap(jdbcConvention.expression, DataSource.class),
+                  sql_,
+                  rowBuilderFactory_));
     }
     builder0.add(
         Expressions.statement(
@@ -264,27 +266,30 @@ public class JdbcToEnumerableConverter
     case DATE:
     case TIME:
     case TIMESTAMP:
-      source = Expressions.call(
-          getMethod(sqlTypeName, fieldType.isNullable(), offset),
-          Expressions.<Expression>list()
-              .append(
-                  Expressions.call(resultSet_,
-                      getMethod2(sqlTypeName), dateTimeArgs))
-          .appendIf(offset, getTimeZoneExpression(implementor)));
+      source =
+          Expressions.call(
+              getMethod(sqlTypeName, fieldType.isNullable(), offset),
+              Expressions.<Expression>list()
+                  .append(
+                      Expressions.call(resultSet_,
+                          getMethod2(sqlTypeName), dateTimeArgs))
+                  .appendIf(offset, getTimeZoneExpression(implementor)));
       break;
     case ARRAY:
-      final Expression x = Expressions.convert_(
-          Expressions.call(resultSet_, jdbcGetMethod(primitive),
-              Expressions.constant(i + 1)),
-          java.sql.Array.class);
+      final Expression x =
+          Expressions.convert_(
+              Expressions.call(resultSet_, jdbcGetMethod(primitive),
+                  Expressions.constant(i + 1)),
+              java.sql.Array.class);
       source = Expressions.call(BuiltInMethod.JDBC_ARRAY_TO_LIST.method, x);
       break;
     case NULL:
       source = RexImpTable.NULL_EXPR;
       break;
     default:
-      source = Expressions.call(
-          resultSet_, jdbcGetMethod(primitive), Expressions.constant(i + 1));
+      source =
+          Expressions.call(resultSet_, jdbcGetMethod(primitive),
+              Expressions.constant(i + 1));
     }
     builder.add(
         Expressions.statement(
diff --git a/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java b/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java
index baab8e5092..29140dab4b 100644
--- a/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java
+++ b/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java
@@ -443,9 +443,9 @@ public final class CalciteSystemProperty<T> {
 
   private static Properties loadProperties() {
     Properties saffronProperties = new Properties();
-    ClassLoader classLoader = firstNonEmpty(
-        Thread.currentThread().getContextClassLoader(),
-        CalciteSystemProperty.class.getClassLoader());
+    ClassLoader classLoader =
+        firstNonEmpty(Thread.currentThread().getContextClassLoader(),
+            CalciteSystemProperty.class.getClassLoader());
     // Read properties from the file "saffron.properties", if it exists in classpath
     try (InputStream stream = requireNonNull(classLoader, "classLoader")
         .getResourceAsStream("saffron.properties")) {
diff --git a/core/src/main/java/org/apache/calcite/interpreter/AggregateNode.java b/core/src/main/java/org/apache/calcite/interpreter/AggregateNode.java
index f5b2cf9693..f1aea70823 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/AggregateNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/AggregateNode.java
@@ -347,8 +347,8 @@ public class AggregateNode extends AbstractSingleNode<Aggregate> {
     }
 
     @Override public void send(Row row) {
-      @Nullable Object[] sendValues = requireNonNull(def.sendContext.values,
-          "def.sendContext.values");
+      @Nullable Object[] sendValues =
+          requireNonNull(def.sendContext.values, "def.sendContext.values");
       System.arraycopy(row.getValues(), 0, sendValues, 0,
           def.rowLength);
       System.arraycopy(this.values, 0, sendValues, def.rowLength,
@@ -763,8 +763,8 @@ public class AggregateNode extends AbstractSingleNode<Aggregate> {
       }
       final @Nullable Object[] args = {value};
       try {
-        AggregateFunctionImpl aggFunction = requireNonNull(factory.aggFunction,
-            "factory.aggFunction");
+        AggregateFunctionImpl aggFunction =
+            requireNonNull(factory.aggFunction, "factory.aggFunction");
         return requireNonNull(aggFunction.resultMethod, "aggFunction.resultMethod")
             .invoke(factory.instance, args);
       } catch (IllegalAccessException | InvocationTargetException e) {
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 6dd41c282a..85569d65b6 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
@@ -107,8 +107,8 @@ public class Interpreter extends AbstractEnumerable<@Nullable Object[]>
 
   @Override public Enumerator<@Nullable Object[]> enumerator() {
     start();
-    final NodeInfo nodeInfo = requireNonNull(nodes.get(rootRel),
-        () -> "nodeInfo for " + rootRel);
+    final NodeInfo nodeInfo =
+        requireNonNull(nodes.get(rootRel), () -> "nodeInfo for " + rootRel);
     final Enumerator<Row> rows;
     if (nodeInfo.rowEnumerable != null) {
       rows = nodeInfo.rowEnumerable.enumerator();
@@ -359,9 +359,10 @@ public class Interpreter extends AbstractEnumerable<@Nullable Object[]>
       if (!found) {
         if (p instanceof InterpretableRel) {
           InterpretableRel interpretableRel = (InterpretableRel) p;
-          node = interpretableRel.implement(
-              new InterpretableRel.InterpreterImplementor(this, null,
-                  DataContexts.EMPTY));
+          node =
+              interpretableRel.implement(
+                  new InterpretableRel.InterpreterImplementor(this, null,
+                      DataContexts.EMPTY));
         } else {
           // Probably need to add a visit(XxxRel) method to CoreCompiler.
           throw new AssertionError("interpreter: no implementation for "
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 cc7274209d..bc0bf81649 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
@@ -149,8 +149,7 @@ public class JaninoRexCompiler implements Interpreter.ScalarCompiler {
     declarations.add(
         Expressions.methodDecl(Modifier.PUBLIC, Object.class,
             BuiltInMethod.FUNCTION_APPLY.method.getName(),
-            ImmutableList.of(
-                objectRoot),
+            ImmutableList.of(objectRoot),
             Expressions.block(
                 Expressions.return_(null,
                     Expressions.call(
@@ -167,13 +166,13 @@ public class JaninoRexCompiler implements Interpreter.ScalarCompiler {
 
     // public Object execute(Context)
     final BlockBuilder builder = new BlockBuilder();
-    final Expression values_ = builder.append("values",
-        Expressions.newArrayBounds(Object.class, 1,
-            Expressions.constant(1)));
+    final Expression values_ =
+        builder.append("values",
+            Expressions.newArrayBounds(Object.class, 1,
+                Expressions.constant(1)));
     builder.add(
         Expressions.statement(
-            Expressions.call(
-                Expressions.parameter(Scalar.class, "this"),
+            Expressions.call(Expressions.parameter(Scalar.class, "this"),
                 BuiltInMethod.SCALAR_EXECUTE2.method, context_, values_)));
     builder.add(
         Expressions.return_(null,
diff --git a/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java b/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
index 9fc63f7cfa..d7057c7db0 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
@@ -46,8 +46,9 @@ public class JoinNode implements Node {
     this.leftSource = compiler.source(rel, 0);
     this.rightSource = compiler.source(rel, 1);
     this.sink = compiler.sink(rel);
-    this.condition = compiler.compile(ImmutableList.of(rel.getCondition()),
-        compiler.combinedRowType(rel.getInputs()));
+    this.condition =
+        compiler.compile(ImmutableList.of(rel.getCondition()),
+            compiler.combinedRowType(rel.getInputs()));
     this.rel = rel;
     this.context = compiler.createContext();
 
diff --git a/core/src/main/java/org/apache/calcite/interpreter/ProjectNode.java b/core/src/main/java/org/apache/calcite/interpreter/ProjectNode.java
index dda0d9fe27..8db41bd38a 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/ProjectNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/ProjectNode.java
@@ -30,8 +30,8 @@ public class ProjectNode extends AbstractSingleNode<Project> {
   public ProjectNode(Compiler compiler, Project rel) {
     super(compiler, rel);
     this.projectCount = rel.getProjects().size();
-    this.scalar = compiler.compile(rel.getProjects(),
-        rel.getInput().getRowType());
+    this.scalar =
+        compiler.compile(rel.getProjects(), rel.getInput().getRowType());
     this.context = compiler.createContext();
   }
 
diff --git a/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java b/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
index ece2008dd0..343d10174e 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
@@ -19,7 +19,6 @@ package org.apache.calcite.interpreter;
 import org.apache.calcite.DataContext;
 import org.apache.calcite.linq4j.Enumerable;
 import org.apache.calcite.linq4j.Queryable;
-import org.apache.calcite.linq4j.function.Function1;
 import org.apache.calcite.plan.RelOptTable;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.rel.core.TableScan;
@@ -137,9 +136,9 @@ public class TableScanNode implements Node {
     final Enumerable<Row> rowEnumerable;
     if (elementType instanceof Class) {
       //noinspection unchecked
-      final Queryable<Object> queryable = Schemas.queryable(root,
-          (Class) elementType,
-          relOptTable.getQualifiedName());
+      final Queryable<Object> queryable =
+          Schemas.queryable(root, (Class) elementType,
+              relOptTable.getQualifiedName());
       ImmutableList.Builder<Field> fieldBuilder = ImmutableList.builder();
       Class type = (Class) elementType;
       for (Field field : type.getFields()) {
@@ -256,8 +255,9 @@ public class TableScanNode implements Node {
         filter2 = filter;
         inputRowType = rel.getRowType();
       } else {
-        final Mapping mapping = Mappings.target(acceptedProjects,
-            rel.getTable().getRowType().getFieldCount());
+        final Mapping mapping =
+            Mappings.target(acceptedProjects,
+                rel.getTable().getRowType().getFieldCount());
         filter2 = RexUtil.apply(mapping, filter);
         final RelDataTypeFactory.Builder builder =
             rel.getCluster().getTypeFactory().builder();
@@ -278,16 +278,14 @@ public class TableScanNode implements Node {
       });
     }
     if (rejectedProjects != null) {
-      enumerable = enumerable.select(
-          new Function1<Row, Row>() {
-            final @Nullable Object[] values = new Object[rejectedProjects.size()];
-            @Override public Row apply(Row row) {
-              final @Nullable Object[] inValues = row.getValues();
-              for (int i = 0; i < rejectedProjects.size(); i++) {
-                values[i] = inValues[rejectedProjects.get(i)];
-              }
-              return Row.asCopy(values);
+      final @Nullable Object[] values = new Object[rejectedProjects.size()];
+      enumerable =
+          enumerable.select(row -> {
+            final @Nullable Object[] inValues = row.getValues();
+            for (int i = 0; i < rejectedProjects.size(); i++) {
+              values[i] = inValues[rejectedProjects.get(i)];
             }
+            return Row.asCopy(values);
           });
     }
     return new TableScanNode(compiler, rel, enumerable);
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CachingCalciteSchema.java b/core/src/main/java/org/apache/calcite/jdbc/CachingCalciteSchema.java
index 1c62d913ab..19b204aafa 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CachingCalciteSchema.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CachingCalciteSchema.java
@@ -54,7 +54,8 @@ class CachingCalciteSchema extends CalciteSchema {
   private boolean cache = true;
 
   /** Creates a CachingCalciteSchema. */
-  CachingCalciteSchema(@Nullable CalciteSchema parent, Schema schema, String name) {
+  CachingCalciteSchema(@Nullable CalciteSchema parent, Schema schema,
+      String name) {
     this(parent, schema, name, null, null, null, null, null, null, null, null);
   }
 
@@ -119,9 +120,7 @@ class CachingCalciteSchema extends CalciteSchema {
   @Override protected @Nullable CalciteSchema getImplicitSubSchema(String schemaName,
       boolean caseSensitive) {
     final long now = System.currentTimeMillis();
-    final SubSchemaCache subSchemaCache =
-        implicitSubSchemaCache.get(now);
-    //noinspection LoopStatementThatDoesntLoop
+    final SubSchemaCache subSchemaCache = implicitSubSchemaCache.get(now);
     for (String schemaName2
         : subSchemaCache.names.range(schemaName, caseSensitive)) {
       return subSchemaCache.cache.getUnchecked(schemaName2);
@@ -151,7 +150,8 @@ class CachingCalciteSchema extends CalciteSchema {
     return null;
   }
 
-  @Override protected @Nullable TypeEntry getImplicitType(String name, boolean caseSensitive) {
+  @Override protected @Nullable TypeEntry getImplicitType(String name,
+      boolean caseSensitive) {
     final long now = System.currentTimeMillis();
     final NameSet implicitTypeNames = implicitTypeCache.get(now);
     for (String typeName
@@ -166,7 +166,8 @@ class CachingCalciteSchema extends CalciteSchema {
 
   @Override protected void addImplicitSubSchemaToBuilder(
       ImmutableSortedMap.Builder<String, CalciteSchema> builder) {
-    ImmutableSortedMap<String, CalciteSchema> explicitSubSchemas = builder.build();
+    ImmutableSortedMap<String, CalciteSchema> explicitSubSchemas =
+        builder.build();
     final long now = System.currentTimeMillis();
     final SubSchemaCache subSchemaCache = implicitSubSchemaCache.get(now);
     for (String name : subSchemaCache.names.iterable()) {
@@ -237,8 +238,8 @@ class CachingCalciteSchema extends CalciteSchema {
     }
   }
 
-  @Override protected @Nullable TableEntry getImplicitTableBasedOnNullaryFunction(String tableName,
-      boolean caseSensitive) {
+  @Override protected @Nullable TableEntry getImplicitTableBasedOnNullaryFunction(
+      String tableName, boolean caseSensitive) {
     final long now = System.currentTimeMillis();
     final NameSet set = implicitFunctionCache.get(now);
     for (String s : set.range(tableName, caseSensitive)) {
@@ -256,9 +257,10 @@ class CachingCalciteSchema extends CalciteSchema {
 
   @Override protected CalciteSchema snapshot(@Nullable CalciteSchema parent,
       SchemaVersion version) {
-    CalciteSchema snapshot = new CachingCalciteSchema(parent,
-        schema.snapshot(version), name, null, tableMap, latticeMap, typeMap,
-        functionMap, functionNames, nullaryFunctionMap, getPath());
+    CalciteSchema snapshot =
+        new CachingCalciteSchema(parent, schema.snapshot(version), name, null,
+            tableMap, latticeMap, typeMap,
+            functionMap, functionNames, nullaryFunctionMap, getPath());
     for (CalciteSchema subSchema : subSchemaMap.map().values()) {
       CalciteSchema subSchemaSnapshot = subSchema.snapshot(snapshot, version);
       snapshot.subSchemaMap.put(subSchema.name, subSchemaSnapshot);
@@ -338,19 +340,20 @@ class CachingCalciteSchema extends CalciteSchema {
     private SubSchemaCache(final CalciteSchema calciteSchema,
         Set<String> names) {
       this.names = NameSet.immutableCopyOf(names);
-      this.cache = CacheBuilder.newBuilder().build(
-          new CacheLoader<String, CalciteSchema>() {
-            @SuppressWarnings("NullableProblems")
-            @Override public CalciteSchema load(String schemaName) {
-              final Schema subSchema =
-                  calciteSchema.schema.getSubSchema(schemaName);
-              if (subSchema == null) {
-                throw new RuntimeException("sub-schema " + schemaName
-                    + " not found");
-              }
-              return new CachingCalciteSchema(calciteSchema, subSchema, schemaName);
-            }
-          });
+      this.cache =
+          CacheBuilder.newBuilder()
+              .build(new CacheLoader<String, CalciteSchema>() {
+                @Override public CalciteSchema load(String schemaName) {
+                  final Schema subSchema =
+                      calciteSchema.schema.getSubSchema(schemaName);
+                  if (subSchema == null) {
+                    throw new RuntimeException("sub-schema " + schemaName
+                        + " not found");
+                  }
+                  return new CachingCalciteSchema(calciteSchema, subSchema,
+                      schemaName);
+                }
+              });
     }
   }
 }
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
index b465b68056..460b9e2029 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
@@ -381,9 +381,10 @@ public class CalciteMetaImpl extends MetaImpl {
     final CalciteMetaSchema schema = (CalciteMetaSchema) schema_;
     return Linq4j.asEnumerable(schema.calciteSchema.getTableNames())
         .select((Function1<String, MetaTable>) name -> {
-          final Table table = requireNonNull(
-              schema.calciteSchema.getTable(name, true),
-              () -> "table " + name + " is not found (case sensitive)").getTable();
+          final Table table =
+              requireNonNull(schema.calciteSchema.getTable(name, true),
+                  () -> "table " + name + " is not found (case sensitive)")
+                  .getTable();
           return new CalciteMetaTable(table,
               schema.tableCatalog,
               schema.tableSchem,
@@ -509,8 +510,7 @@ public class CalciteMetaImpl extends MetaImpl {
             .selectMany(schema -> functions(schema, catalog, matcher(functionNamePattern)))
             .orderBy(x ->
                 (Comparable) FlatLists.of(
-                    x.functionCat, x.functionSchem, x.functionName, x.specificName
-                )),
+                    x.functionCat, x.functionSchem, x.functionName, x.specificName)),
         MetaFunction.class,
         "FUNCTION_CAT",
         "FUNCTION_SCHEM",
@@ -535,8 +535,7 @@ public class CalciteMetaImpl extends MetaImpl {
                   schema.getName(),
                   op.getName(),
                   (short) DatabaseMetaData.functionResultUnknown,
-                  op.getName()
-              ));
+                  op.getName()));
     }
     return Linq4j.asEnumerable(schema.calciteSchema.getFunctionNames())
         .selectMany(name ->
@@ -663,8 +662,9 @@ public class CalciteMetaImpl extends MetaImpl {
       int fetchMaxRowCount) throws NoSuchStatementException {
     final CalciteConnectionImpl calciteConnection = getConnection();
     CalciteServerStatement stmt = calciteConnection.server.getStatement(h);
-    final Signature signature = requireNonNull(stmt.getSignature(),
-        () -> "stmt.getSignature() is null for " + stmt);
+    final Signature signature =
+        requireNonNull(stmt.getSignature(),
+            () -> "stmt.getSignature() is null for " + stmt);
     final Iterator<Object> iterator;
     Iterator<Object> stmtResultSet = stmt.getResultSet();
     if (stmtResultSet == null) {
@@ -696,8 +696,9 @@ public class CalciteMetaImpl extends MetaImpl {
       throws NoSuchStatementException {
     final CalciteConnectionImpl calciteConnection = getConnection();
     CalciteServerStatement stmt = calciteConnection.server.getStatement(h);
-    final Signature signature = requireNonNull(stmt.getSignature(),
-        () -> "stmt.getSignature() is null for " + stmt);
+    final Signature signature =
+        requireNonNull(stmt.getSignature(),
+            () -> "stmt.getSignature() is null for " + stmt);
 
     MetaResultSet metaResultSet;
     if (signature.statementType.canUpdate()) {
@@ -705,8 +706,9 @@ public class CalciteMetaImpl extends MetaImpl {
           _createIterable(h, signature, parameterValues, null);
       final Iterator<Object> iterator = iterable.iterator();
       stmt.setResultSet(iterator);
-      metaResultSet = MetaResultSet.count(h.connectionId, h.id,
-          ((Number) iterator.next()).intValue());
+      metaResultSet =
+          MetaResultSet.count(h.connectionId, h.id,
+              ((Number) iterator.next()).intValue());
     } else {
       // Don't populate the first frame.
       // It's not worth saving a round-trip, since we're local.
diff --git a/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java b/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
index 6a12cc2378..d689759c75 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
@@ -270,14 +270,14 @@ public class JavaTypeFactoryImpl
         // 1. type.getJavaClass() is collection with erased generic type
         // 2. ElementType returned by JavaType is also of JavaType,
         // and needs conversion using typeFactory
-        final RelDataType elementType = toSqlTypeWithNullToAny(
-            typeFactory, type.getComponentType());
+        final RelDataType elementType =
+            toSqlTypeWithNullToAny(typeFactory, type.getComponentType());
         relDataType = typeFactory.createArrayType(elementType, -1);
       } else if (SqlTypeUtil.isMap(type)) {
-        final RelDataType keyType = toSqlTypeWithNullToAny(
-            typeFactory, type.getKeyType());
-        final RelDataType valueType = toSqlTypeWithNullToAny(
-            typeFactory, type.getValueType());
+        final RelDataType keyType =
+            toSqlTypeWithNullToAny(typeFactory, type.getKeyType());
+        final RelDataType valueType =
+            toSqlTypeWithNullToAny(typeFactory, type.getValueType());
         relDataType = typeFactory.createMapType(keyType, valueType);
       } else {
         relDataType = typeFactory.createSqlType(sqlTypeName);
diff --git a/core/src/main/java/org/apache/calcite/jdbc/SimpleCalciteSchema.java b/core/src/main/java/org/apache/calcite/jdbc/SimpleCalciteSchema.java
index 9630bc4b51..032b6d88ea 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/SimpleCalciteSchema.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/SimpleCalciteSchema.java
@@ -103,8 +103,9 @@ class SimpleCalciteSchema extends CalciteSchema {
   @Override protected @Nullable CalciteSchema getImplicitSubSchema(String schemaName,
       boolean caseSensitive) {
     // Check implicit schemas.
-    final String schemaName2 = caseSensitive ? schemaName : caseInsensitiveLookup(
-        schema.getSubSchemaNames(), schemaName);
+    final String schemaName2 =
+        caseSensitive ? schemaName
+            : caseInsensitiveLookup(schema.getSubSchemaNames(), schemaName);
     if (schemaName2 == null) {
       return null;
     }
@@ -118,8 +119,9 @@ class SimpleCalciteSchema extends CalciteSchema {
   @Override protected @Nullable TableEntry getImplicitTable(String tableName,
       boolean caseSensitive) {
     // Check implicit tables.
-    final String tableName2 = caseSensitive ? tableName : caseInsensitiveLookup(
-        schema.getTableNames(), tableName);
+    final String tableName2 =
+        caseSensitive ? tableName
+            : caseInsensitiveLookup(schema.getTableNames(), tableName);
     if (tableName2 == null) {
       return null;
     }
@@ -132,8 +134,9 @@ class SimpleCalciteSchema extends CalciteSchema {
 
   @Override protected @Nullable TypeEntry getImplicitType(String name, boolean caseSensitive) {
     // Check implicit types.
-    final String name2 = caseSensitive ? name : caseInsensitiveLookup(
-        schema.getTypeNames(), name);
+    final String name2 =
+        caseSensitive ? name
+            : caseInsensitiveLookup(schema.getTypeNames(), name);
     if (name2 == null) {
       return null;
     }
@@ -219,9 +222,10 @@ class SimpleCalciteSchema extends CalciteSchema {
 
   @Override protected CalciteSchema snapshot(@Nullable CalciteSchema parent,
       SchemaVersion version) {
-    CalciteSchema snapshot = new SimpleCalciteSchema(parent,
-        schema.snapshot(version), name, null, tableMap, latticeMap, typeMap,
-        functionMap, functionNames, nullaryFunctionMap, getPath());
+    CalciteSchema snapshot =
+        new SimpleCalciteSchema(parent, schema.snapshot(version), name, null,
+            tableMap, latticeMap, typeMap,
+            functionMap, functionNames, nullaryFunctionMap, getPath());
     for (CalciteSchema subSchema : subSchemaMap.map().values()) {
       CalciteSchema subSchemaSnapshot = subSchema.snapshot(snapshot, version);
       snapshot.subSchemaMap.put(subSchema.name, subSchemaSnapshot);
diff --git a/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java b/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
index 2a3d59cc2c..1f13e47172 100644
--- a/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
+++ b/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
@@ -40,8 +40,10 @@ class CachingLatticeStatisticProvider implements LatticeStatisticProvider {
   CachingLatticeStatisticProvider(final Lattice lattice,
       final LatticeStatisticProvider provider) {
     this.lattice = lattice;
-    cache = CacheBuilder.newBuilder().build(
-        CacheLoader.from(key -> provider.cardinality(ImmutableList.of(key))));
+    cache =
+        CacheBuilder.newBuilder().build(
+            CacheLoader.from(key ->
+                provider.cardinality(ImmutableList.of(key))));
   }
 
   @Override public double cardinality(List<Lattice.Column> columns) {
diff --git a/core/src/main/java/org/apache/calcite/materialize/Lattice.java b/core/src/main/java/org/apache/calcite/materialize/Lattice.java
index 23f5a2fa17..596b17769e 100644
--- a/core/src/main/java/org/apache/calcite/materialize/Lattice.java
+++ b/core/src/main/java/org/apache/calcite/materialize/Lattice.java
@@ -1117,12 +1117,14 @@ public class Lattice {
         if (node.alias == null) {
           node.alias = Util.last(node.table.t.getQualifiedName());
         }
-        node.alias = SqlValidatorUtil.uniquify(node.alias, aliases,
-            SqlValidatorUtil.ATTEMPT_SUGGESTER);
+        node.alias =
+            SqlValidatorUtil.uniquify(node.alias, aliases,
+                SqlValidatorUtil.ATTEMPT_SUGGESTER);
         node.startCol = c;
         for (String name : node.table.t.getRowType().getFieldNames()) {
-          final String alias = SqlValidatorUtil.uniquify(name,
-              columnAliases, SqlValidatorUtil.ATTEMPT_SUGGESTER);
+          final String alias =
+              SqlValidatorUtil.uniquify(name, columnAliases,
+                  SqlValidatorUtil.ATTEMPT_SUGGESTER);
           final BaseColumn column =
               new BaseColumn(c++, castNonNull(node.alias), name, alias);
           columnList.add(column);
diff --git a/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java b/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java
index 093980b019..67045320fa 100644
--- a/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java
+++ b/core/src/main/java/org/apache/calcite/materialize/LatticeSuggester.java
@@ -248,8 +248,9 @@ public class LatticeSuggester {
                     final DerivedColRef derivedColRef =
                         (DerivedColRef) colRef;
                     final String alias = deriveAlias(measure, derivedColRef);
-                    column = latticeBuilder.expression(derivedColRef.e, alias,
-                        derivedColRef.tableAliases());
+                    column =
+                        latticeBuilder.expression(derivedColRef.e, alias,
+                            derivedColRef.tableAliases());
                   } else {
                     throw new AssertionError("expression in measure");
                   }
diff --git a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
index 2997d9d1dc..91cdeca0c0 100644
--- a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
+++ b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
@@ -142,8 +142,8 @@ public class MaterializationService {
     RelDataType rowType = null;
     if (tableEntry == null) {
       Table table = tableFactory.createTable(schema, viewSql, viewSchemaPath);
-      final String tableName = Schemas.uniqueTableName(schema,
-          Util.first(suggestedTableName, "m"));
+      final String tableName =
+          Schemas.uniqueTableName(schema, Util.first(suggestedTableName, "m"));
       tableEntry = schema.add(tableName, table, ImmutableList.of(viewSql));
       Hook.CREATE_MATERIALIZATION.run(tableName);
       rowType = table.getRowType(connection.getTypeFactory());
diff --git a/core/src/main/java/org/apache/calcite/materialize/MutableNode.java b/core/src/main/java/org/apache/calcite/materialize/MutableNode.java
index 081a6ea991..1d9faa9b32 100644
--- a/core/src/main/java/org/apache/calcite/materialize/MutableNode.java
+++ b/core/src/main/java/org/apache/calcite/materialize/MutableNode.java
@@ -46,13 +46,17 @@ class MutableNode {
       Ordering.from(
           new Comparator<MutableNode>() {
             @Override public int compare(MutableNode o1, MutableNode o2) {
-              int c = Ordering.<String>natural().lexicographical().compare(
-                  o1.table.t.getQualifiedName(), o2.table.t.getQualifiedName());
+              int c =
+                  Ordering.<String>natural().lexicographical()
+                      .compare(o1.table.t.getQualifiedName(),
+                          o2.table.t.getQualifiedName());
               if (c == 0 && o1.step != null && o2.step != null) {
                 // The nodes have the same table. Now compare them based on the
                 // columns they use as foreign key.
-                c = Ordering.<Integer>natural().lexicographical().compare(
-                    IntPair.left(o1.step.keys), IntPair.left(o2.step.keys));
+                c =
+                    Ordering.<Integer>natural().lexicographical()
+                        .compare(IntPair.left(o1.step.keys),
+                            IntPair.left(o2.step.keys));
               }
               return c;
             }
diff --git a/core/src/main/java/org/apache/calcite/model/ModelHandler.java b/core/src/main/java/org/apache/calcite/model/ModelHandler.java
index acab4b8608..e464ab1dae 100644
--- a/core/src/main/java/org/apache/calcite/model/ModelHandler.java
+++ b/core/src/main/java/org/apache/calcite/model/ModelHandler.java
@@ -330,8 +330,9 @@ public class ModelHandler {
           JdbcSchema.create(parentSchema, jsonSchema.name, dataSource,
               jsonSchema.jdbcCatalog, jsonSchema.jdbcSchema);
     } else {
-      SqlDialectFactory factory = AvaticaUtils.instantiatePlugin(
-          SqlDialectFactory.class, jsonSchema.sqlDialectFactory);
+      SqlDialectFactory factory =
+          AvaticaUtils.instantiatePlugin(SqlDialectFactory.class,
+              jsonSchema.sqlDialectFactory);
       schema =
           JdbcSchema.create(parentSchema, jsonSchema.name, dataSource,
               factory, jsonSchema.jdbcCatalog, jsonSchema.jdbcSchema);
@@ -478,15 +479,16 @@ public class ModelHandler {
         } else {
           final RelDataTypeFactory.Builder builder = typeFactory.builder();
           for (JsonTypeAttribute jsonTypeAttribute : jsonType.attributes) {
-            final SqlTypeName typeName = requireNonNull(
-                SqlTypeName.get(jsonTypeAttribute.type),
-                () -> "SqlTypeName.get for " + jsonTypeAttribute.type);
+            final SqlTypeName typeName =
+                requireNonNull(SqlTypeName.get(jsonTypeAttribute.type),
+                    () -> "SqlTypeName.get for " + jsonTypeAttribute.type);
             RelDataType type = typeFactory.createSqlType(typeName);
             if (type == null) {
-              type = requireNonNull(currentSchema().getType(jsonTypeAttribute.type),
-                  () -> "type " + jsonTypeAttribute.type + " is not found in schema "
-                      + currentSchemaName())
-                  .apply(typeFactory);
+              type =
+                  requireNonNull(currentSchema().getType(jsonTypeAttribute.type),
+                      () -> "type " + jsonTypeAttribute.type
+                          + " is not found in schema " + currentSchemaName())
+                      .apply(typeFactory);
             }
             builder.add(jsonTypeAttribute.name, type);
           }
diff --git a/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java b/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
index ddb844b97d..a68f5a22bc 100644
--- a/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
+++ b/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
@@ -135,8 +135,9 @@ public class ConventionTraitDef extends RelTraitDef<Convention> {
     final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
     final ConversionData conversionData = getConversionData(planner);
 
-    final Convention fromConvention = requireNonNull(rel.getConvention(),
-        () -> "convention is null for rel " + rel);
+    final Convention fromConvention =
+        requireNonNull(rel.getConvention(),
+            () -> "convention is null for rel " + rel);
 
     List<List<Convention>> conversionPaths =
         conversionData.getPaths(fromConvention, toConvention);
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptMaterialization.java b/core/src/main/java/org/apache/calcite/plan/RelOptMaterialization.java
index 59d47676a4..62e4df7649 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptMaterialization.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptMaterialization.java
@@ -89,8 +89,8 @@ public class RelOptMaterialization {
   public static @Nullable RelNode tryUseStar(RelNode rel,
       final RelOptTable starRelOptTable) {
     final StarTable starTable = starRelOptTable.unwrapOrThrow(StarTable.class);
-    RelNode rel2 = rel.accept(
-        new RelShuttleImpl() {
+    RelNode rel2 =
+        rel.accept(new RelShuttleImpl() {
           @Override public RelNode visit(TableScan scan) {
             RelOptTable relOptTable = scan.getTable();
             final Table table = relOptTable.unwrap(Table.class);
@@ -154,9 +154,10 @@ public class RelOptMaterialization {
                       Mappings.offsetTarget(
                           Mappings.offsetSource(rightMapping, offset),
                           leftMapping.getTargetCount()));
-              final RelNode project = RelOptUtil.createProject(
-                  leftRelOptTable.toRel(ViewExpanders.simpleContext(cluster)),
-                  Mappings.asListNonNull(mapping.inverse()));
+              final RelNode project =
+                  RelOptUtil.createProject(
+                      leftRelOptTable.toRel(ViewExpanders.simpleContext(cluster)),
+                      Mappings.asListNonNull(mapping.inverse()));
               final List<RexNode> conditions = new ArrayList<>();
               if (left.condition != null) {
                 conditions.add(left.condition);
@@ -179,9 +180,10 @@ public class RelOptMaterialization {
                   Mappings.merge(
                       Mappings.offsetSource(leftMapping, offset),
                       Mappings.offsetTarget(rightMapping, leftCount));
-              final RelNode project = RelOptUtil.createProject(
-                  rightRelOptTable.toRel(ViewExpanders.simpleContext(cluster)),
-                  Mappings.asListNonNull(mapping.inverse()));
+              final RelNode project =
+                  RelOptUtil.createProject(
+                      rightRelOptTable.toRel(ViewExpanders.simpleContext(cluster)),
+                      Mappings.asListNonNull(mapping.inverse()));
               final List<RexNode> conditions = new ArrayList<>();
               if (left.condition != null) {
                 conditions.add(
@@ -201,10 +203,11 @@ public class RelOptMaterialization {
       // No rewrite happened.
       return null;
     }
-    final Program program = Programs.hep(
-        ImmutableList.of(
-            CoreRules.PROJECT_FILTER_TRANSPOSE, CoreRules.AGGREGATE_PROJECT_MERGE,
-            CoreRules.AGGREGATE_FILTER_TRANSPOSE),
+    final Program program =
+        Programs.hep(
+            ImmutableList.of(CoreRules.PROJECT_FILTER_TRANSPOSE,
+                CoreRules.AGGREGATE_PROJECT_MERGE,
+                CoreRules.AGGREGATE_FILTER_TRANSPOSE),
         false,
         DefaultRelMetadataProvider.INSTANCE);
     return program.run(castNonNull(null), rel2, castNonNull(null),
@@ -270,12 +273,13 @@ public class RelOptMaterialization {
    * as close to leaves as possible.
    */
   public static RelNode toLeafJoinForm(RelNode rel) {
-    final Program program = Programs.hep(
-        ImmutableList.of(CoreRules.JOIN_PROJECT_RIGHT_TRANSPOSE,
-            CoreRules.JOIN_PROJECT_LEFT_TRANSPOSE,
-            CoreRules.FILTER_INTO_JOIN,
-            CoreRules.PROJECT_REMOVE,
-            CoreRules.PROJECT_MERGE),
+    final Program program =
+        Programs.hep(
+            ImmutableList.of(CoreRules.JOIN_PROJECT_RIGHT_TRANSPOSE,
+                CoreRules.JOIN_PROJECT_LEFT_TRANSPOSE,
+                CoreRules.FILTER_INTO_JOIN,
+                CoreRules.PROJECT_REMOVE,
+                CoreRules.PROJECT_MERGE),
         false,
         DefaultRelMetadataProvider.INSTANCE);
     if (CalciteSystemProperty.DEBUG.value()) {
@@ -283,9 +287,9 @@ public class RelOptMaterialization {
           RelOptUtil.dumpPlan("before", rel, SqlExplainFormat.TEXT,
               SqlExplainLevel.DIGEST_ATTRIBUTES));
     }
-    final RelNode rel2 = program.run(castNonNull(null), rel, castNonNull(null),
-        ImmutableList.of(),
-        ImmutableList.of());
+    final RelNode rel2 =
+        program.run(castNonNull(null), rel, castNonNull(null),
+            ImmutableList.of(), ImmutableList.of());
     if (CalciteSystemProperty.DEBUG.value()) {
       System.out.println(
           RelOptUtil.dumpPlan("after", rel2, SqlExplainFormat.TEXT,
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java b/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java
index a75909c877..71246f860d 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptMaterializations.java
@@ -192,8 +192,8 @@ public abstract class RelOptMaterializations {
     // First, if the materialization is in terms of a star table, rewrite
     // the query in terms of the star table.
     if (materialization.starRelOptTable != null) {
-      RelNode newRoot = RelOptMaterialization.tryUseStar(root,
-          materialization.starRelOptTable);
+      RelNode newRoot =
+          RelOptMaterialization.tryUseStar(root, materialization.starRelOptTable);
       if (newRoot != null) {
         root = newRoot;
       }
@@ -248,11 +248,10 @@ public abstract class RelOptMaterializations {
     if (relOptTables.size() != 0) {
       relOptSchema = relOptTables.get(0).getRelOptSchema();
     }
-    final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(
-        relNode.getCluster(), relOptSchema);
+    final RelBuilder relBuilder =
+        RelFactories.LOGICAL_BUILDER.create(relNode.getCluster(), relOptSchema);
     final RelFieldTrimmer relFieldTrimmer = new RelFieldTrimmer(null, relBuilder);
-    final RelNode rel = relFieldTrimmer.trim(relNode);
-    return rel;
+    return relFieldTrimmer.trim(relNode);
   }
 
   /**
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptRules.java b/core/src/main/java/org/apache/calcite/plan/RelOptRules.java
index a875ce85d5..3829c3c434 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptRules.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptRules.java
@@ -47,8 +47,7 @@ public class RelOptRules {
   /** Calc rule set; public so that {@link org.apache.calcite.tools.Programs} can
    * use it. */
   public static final ImmutableList<RelOptRule> CALC_RULES =
-      ImmutableList.of(
-          Bindables.FROM_NONE_RULE,
+      ImmutableList.of(Bindables.FROM_NONE_RULE,
           EnumerableRules.ENUMERABLE_CALC_RULE,
           EnumerableRules.ENUMERABLE_FILTER_TO_CALC_RULE,
           EnumerableRules.ENUMERABLE_PROJECT_TO_CALC_RULE,
@@ -62,91 +61,91 @@ public class RelOptRules {
           CoreRules.FILTER_CALC_MERGE,
           CoreRules.PROJECT_CALC_MERGE);
 
-  static final List<RelOptRule> BASE_RULES = ImmutableList.of(
-      CoreRules.AGGREGATE_STAR_TABLE,
-      CoreRules.AGGREGATE_PROJECT_STAR_TABLE,
-      CalciteSystemProperty.COMMUTE.value()
-          ? CoreRules.JOIN_ASSOCIATE
-          : CoreRules.PROJECT_MERGE,
-      CoreRules.FILTER_SCAN,
-      CoreRules.PROJECT_FILTER_TRANSPOSE,
-      CoreRules.FILTER_PROJECT_TRANSPOSE,
-      CoreRules.FILTER_INTO_JOIN,
-      CoreRules.JOIN_PUSH_EXPRESSIONS,
-      CoreRules.AGGREGATE_EXPAND_DISTINCT_AGGREGATES,
-      CoreRules.AGGREGATE_EXPAND_WITHIN_DISTINCT,
-      CoreRules.AGGREGATE_CASE_TO_FILTER,
-      CoreRules.AGGREGATE_REDUCE_FUNCTIONS,
-      CoreRules.FILTER_AGGREGATE_TRANSPOSE,
-      CoreRules.PROJECT_WINDOW_TRANSPOSE,
-      CoreRules.MATCH,
-      CoreRules.JOIN_COMMUTE,
-      JoinPushThroughJoinRule.RIGHT,
-      JoinPushThroughJoinRule.LEFT,
-      CoreRules.SORT_PROJECT_TRANSPOSE,
-      CoreRules.SORT_JOIN_TRANSPOSE,
-      CoreRules.SORT_REMOVE_CONSTANT_KEYS,
-      CoreRules.SORT_UNION_TRANSPOSE,
-      CoreRules.EXCHANGE_REMOVE_CONSTANT_KEYS,
-      CoreRules.SORT_EXCHANGE_REMOVE_CONSTANT_KEYS);
+  static final List<RelOptRule> BASE_RULES =
+      ImmutableList.of(CoreRules.AGGREGATE_STAR_TABLE,
+          CoreRules.AGGREGATE_PROJECT_STAR_TABLE,
+          CalciteSystemProperty.COMMUTE.value()
+              ? CoreRules.JOIN_ASSOCIATE
+              : CoreRules.PROJECT_MERGE,
+          CoreRules.FILTER_SCAN,
+          CoreRules.PROJECT_FILTER_TRANSPOSE,
+          CoreRules.FILTER_PROJECT_TRANSPOSE,
+          CoreRules.FILTER_INTO_JOIN,
+          CoreRules.JOIN_PUSH_EXPRESSIONS,
+          CoreRules.AGGREGATE_EXPAND_DISTINCT_AGGREGATES,
+          CoreRules.AGGREGATE_EXPAND_WITHIN_DISTINCT,
+          CoreRules.AGGREGATE_CASE_TO_FILTER,
+          CoreRules.AGGREGATE_REDUCE_FUNCTIONS,
+          CoreRules.FILTER_AGGREGATE_TRANSPOSE,
+          CoreRules.PROJECT_WINDOW_TRANSPOSE,
+          CoreRules.MATCH,
+          CoreRules.JOIN_COMMUTE,
+          JoinPushThroughJoinRule.RIGHT,
+          JoinPushThroughJoinRule.LEFT,
+          CoreRules.SORT_PROJECT_TRANSPOSE,
+          CoreRules.SORT_JOIN_TRANSPOSE,
+          CoreRules.SORT_REMOVE_CONSTANT_KEYS,
+          CoreRules.SORT_UNION_TRANSPOSE,
+          CoreRules.EXCHANGE_REMOVE_CONSTANT_KEYS,
+          CoreRules.SORT_EXCHANGE_REMOVE_CONSTANT_KEYS);
 
-  static final List<RelOptRule> ABSTRACT_RULES = ImmutableList.of(
-      CoreRules.AGGREGATE_ANY_PULL_UP_CONSTANTS,
-      CoreRules.UNION_PULL_UP_CONSTANTS,
-      PruneEmptyRules.UNION_INSTANCE,
-      PruneEmptyRules.INTERSECT_INSTANCE,
-      PruneEmptyRules.MINUS_INSTANCE,
-      PruneEmptyRules.PROJECT_INSTANCE,
-      PruneEmptyRules.FILTER_INSTANCE,
-      PruneEmptyRules.SORT_INSTANCE,
-      PruneEmptyRules.AGGREGATE_INSTANCE,
-      PruneEmptyRules.JOIN_LEFT_INSTANCE,
-      PruneEmptyRules.JOIN_RIGHT_INSTANCE,
-      PruneEmptyRules.SORT_FETCH_ZERO_INSTANCE,
-      PruneEmptyRules.EMPTY_TABLE_INSTANCE,
-      CoreRules.UNION_MERGE,
-      CoreRules.INTERSECT_MERGE,
-      CoreRules.MINUS_MERGE,
-      CoreRules.PROJECT_TO_LOGICAL_PROJECT_AND_WINDOW,
-      CoreRules.FILTER_MERGE,
-      DateRangeRules.FILTER_INSTANCE,
-      CoreRules.INTERSECT_TO_DISTINCT);
+  static final List<RelOptRule> ABSTRACT_RULES =
+      ImmutableList.of(CoreRules.AGGREGATE_ANY_PULL_UP_CONSTANTS,
+          CoreRules.UNION_PULL_UP_CONSTANTS,
+          PruneEmptyRules.UNION_INSTANCE,
+          PruneEmptyRules.INTERSECT_INSTANCE,
+          PruneEmptyRules.MINUS_INSTANCE,
+          PruneEmptyRules.PROJECT_INSTANCE,
+          PruneEmptyRules.FILTER_INSTANCE,
+          PruneEmptyRules.SORT_INSTANCE,
+          PruneEmptyRules.AGGREGATE_INSTANCE,
+          PruneEmptyRules.JOIN_LEFT_INSTANCE,
+          PruneEmptyRules.JOIN_RIGHT_INSTANCE,
+          PruneEmptyRules.SORT_FETCH_ZERO_INSTANCE,
+          PruneEmptyRules.EMPTY_TABLE_INSTANCE,
+          CoreRules.UNION_MERGE,
+          CoreRules.INTERSECT_MERGE,
+          CoreRules.MINUS_MERGE,
+          CoreRules.PROJECT_TO_LOGICAL_PROJECT_AND_WINDOW,
+          CoreRules.FILTER_MERGE,
+          DateRangeRules.FILTER_INSTANCE,
+          CoreRules.INTERSECT_TO_DISTINCT);
 
-  static final List<RelOptRule> ABSTRACT_RELATIONAL_RULES = ImmutableList.of(
-      CoreRules.FILTER_INTO_JOIN,
-      CoreRules.JOIN_CONDITION_PUSH,
-      AbstractConverter.ExpandConversionRule.INSTANCE,
-      CoreRules.JOIN_COMMUTE,
-      CoreRules.PROJECT_TO_SEMI_JOIN,
-      CoreRules.JOIN_ON_UNIQUE_TO_SEMI_JOIN,
-      CoreRules.JOIN_TO_SEMI_JOIN,
-      CoreRules.AGGREGATE_REMOVE,
-      CoreRules.UNION_TO_DISTINCT,
-      CoreRules.PROJECT_REMOVE,
-      CoreRules.PROJECT_AGGREGATE_MERGE,
-      CoreRules.AGGREGATE_JOIN_TRANSPOSE,
-      CoreRules.AGGREGATE_MERGE,
-      CoreRules.AGGREGATE_PROJECT_MERGE,
-      CoreRules.CALC_REMOVE,
-      CoreRules.SORT_REMOVE);
+  static final List<RelOptRule> ABSTRACT_RELATIONAL_RULES =
+      ImmutableList.of(CoreRules.FILTER_INTO_JOIN,
+          CoreRules.JOIN_CONDITION_PUSH,
+          AbstractConverter.ExpandConversionRule.INSTANCE,
+          CoreRules.JOIN_COMMUTE,
+          CoreRules.PROJECT_TO_SEMI_JOIN,
+          CoreRules.JOIN_ON_UNIQUE_TO_SEMI_JOIN,
+          CoreRules.JOIN_TO_SEMI_JOIN,
+          CoreRules.AGGREGATE_REMOVE,
+          CoreRules.UNION_TO_DISTINCT,
+          CoreRules.PROJECT_REMOVE,
+          CoreRules.PROJECT_AGGREGATE_MERGE,
+          CoreRules.AGGREGATE_JOIN_TRANSPOSE,
+          CoreRules.AGGREGATE_MERGE,
+          CoreRules.AGGREGATE_PROJECT_MERGE,
+          CoreRules.CALC_REMOVE,
+          CoreRules.SORT_REMOVE);
 
-  static final List<RelOptRule> CONSTANT_REDUCTION_RULES = ImmutableList.of(
-      CoreRules.PROJECT_REDUCE_EXPRESSIONS,
-      CoreRules.FILTER_REDUCE_EXPRESSIONS,
-      CoreRules.CALC_REDUCE_EXPRESSIONS,
-      CoreRules.WINDOW_REDUCE_EXPRESSIONS,
-      CoreRules.JOIN_REDUCE_EXPRESSIONS,
-      CoreRules.FILTER_VALUES_MERGE,
-      CoreRules.PROJECT_FILTER_VALUES_MERGE,
-      CoreRules.PROJECT_VALUES_MERGE,
-      CoreRules.AGGREGATE_VALUES);
+  static final List<RelOptRule> CONSTANT_REDUCTION_RULES =
+      ImmutableList.of(CoreRules.PROJECT_REDUCE_EXPRESSIONS,
+          CoreRules.FILTER_REDUCE_EXPRESSIONS,
+          CoreRules.CALC_REDUCE_EXPRESSIONS,
+          CoreRules.WINDOW_REDUCE_EXPRESSIONS,
+          CoreRules.JOIN_REDUCE_EXPRESSIONS,
+          CoreRules.FILTER_VALUES_MERGE,
+          CoreRules.PROJECT_FILTER_VALUES_MERGE,
+          CoreRules.PROJECT_VALUES_MERGE,
+          CoreRules.AGGREGATE_VALUES);
 
-  public static final List<RelOptRule> MATERIALIZATION_RULES = ImmutableList.of(
-      MaterializedViewRules.FILTER_SCAN,
-      MaterializedViewRules.PROJECT_FILTER,
-      MaterializedViewRules.FILTER,
-      MaterializedViewRules.PROJECT_JOIN,
-      MaterializedViewRules.JOIN,
-      MaterializedViewRules.PROJECT_AGGREGATE,
-      MaterializedViewRules.AGGREGATE);
+  public static final List<RelOptRule> MATERIALIZATION_RULES =
+      ImmutableList.of(MaterializedViewRules.FILTER_SCAN,
+          MaterializedViewRules.PROJECT_FILTER,
+          MaterializedViewRules.FILTER,
+          MaterializedViewRules.PROJECT_JOIN,
+          MaterializedViewRules.JOIN,
+          MaterializedViewRules.PROJECT_AGGREGATE,
+          MaterializedViewRules.AGGREGATE);
 }
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
index 98894db7b3..b3e9552dac 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
@@ -427,9 +427,10 @@ public abstract class RelOptUtil {
         || ((Hintable) originalRel).getHints().size() == 0) {
       return equiv;
     }
-    final RelShuttle shuttle = new SubTreeHintPropagateShuttle(
-        originalRel.getCluster().getHintStrategies(),
-        ((Hintable) originalRel).getHints());
+    final RelShuttle shuttle =
+        new SubTreeHintPropagateShuttle(
+            originalRel.getCluster().getHintStrategies(),
+            ((Hintable) originalRel).getHints());
     return equiv.accept(shuttle);
   }
 
@@ -896,18 +897,15 @@ public abstract class RelOptUtil {
       // No need to create another project node if the rel
       // is already a project.
       final Project project = (Project) rel;
-      castExps = RexUtil.generateCastExpressions(
-          rexBuilder,
-          castRowType,
-          ((Project) rel).getProjects());
+      castExps =
+          RexUtil.generateCastExpressions(rexBuilder, castRowType,
+              ((Project) rel).getProjects());
       input = rel.getInput(0);
       hints = project.getHints();
       correlationVariables = project.getVariablesSet();
     } else {
-      castExps = RexUtil.generateCastExpressions(
-          rexBuilder,
-          castRowType,
-          rowType);
+      castExps =
+          RexUtil.generateCastExpressions(rexBuilder, castRowType, rowType);
       input = rel;
       correlationVariables = ImmutableSet.of();
     }
@@ -3198,8 +3196,9 @@ public abstract class RelOptUtil {
   }
 
   private static RexShuttle pushShuttle(final Calc calc) {
-    final List<RexNode> projects = Util.transform(calc.getProgram().getProjectList(),
-        calc.getProgram()::expandLocalRef);
+    final List<RexNode> projects =
+        Util.transform(calc.getProgram().getProjectList(),
+            calc.getProgram()::expandLocalRef);
     return new RexShuttle() {
       @Override public RexNode visitInputRef(RexInputRef ref) {
         return projects.get(ref.getIndex());
@@ -3741,8 +3740,9 @@ public abstract class RelOptUtil {
     // yet.
     if (!containsGet(joinCond)
         && RexUtil.SubQueryFinder.find(joinCond) == null) {
-      joinCond = pushDownEqualJoinConditions(joinCond, leftCount, rightCount, extraLeftExprs,
-          extraRightExprs, relBuilder.getRexBuilder());
+      joinCond =
+          pushDownEqualJoinConditions(joinCond, leftCount, rightCount,
+              extraLeftExprs, extraRightExprs, relBuilder.getRexBuilder());
     }
 
     relBuilder.push(originalJoin.getLeft());
@@ -3896,8 +3896,8 @@ public abstract class RelOptUtil {
       for (int i = 0; i < operands.size(); i++) {
         RexNode operand = operands.get(i);
         if (operand instanceof RexCall) {
-          operand = collapseExpandedIsNotDistinctFromExpr(
-              (RexCall) operand, builder);
+          operand =
+              collapseExpandedIsNotDistinctFromExpr((RexCall) operand, builder);
         }
         if (node.getKind() == SqlKind.AND
             && operand.getKind() != SqlKind.EQUALS
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 955d0e945f..9e7e3d5a9f 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelTraitSet.java
@@ -693,8 +693,8 @@ public final class RelTraitSet extends AbstractList<RelTrait> {
     for (int i = 0; i < traits.length; i++) {
       final RelTrait trait = traits[i];
       if (trait instanceof RelCompositeTrait) {
-        x = x.replace(i,
-            ((RelCompositeTrait) trait).size() == 1
+        x =
+            x.replace(i, ((RelCompositeTrait) trait).size() == 1
                 ? ((RelCompositeTrait) trait).trait(0)
                 : trait.getTraitDef().getDefault());
       }
diff --git a/core/src/main/java/org/apache/calcite/plan/SubstitutionVisitor.java b/core/src/main/java/org/apache/calcite/plan/SubstitutionVisitor.java
index 8044fca689..9e7cddbd71 100644
--- a/core/src/main/java/org/apache/calcite/plan/SubstitutionVisitor.java
+++ b/core/src/main/java/org/apache/calcite/plan/SubstitutionVisitor.java
@@ -307,10 +307,11 @@ public class SubstitutionVisitor {
 
     RexNode x = andNot(rexBuilder, target2, condition2);
     if (mayBeSatisfiable(x)) {
-      RexNode x2 = RexUtil.composeConjunction(rexBuilder,
-          ImmutableList.of(condition2, target2));
-      RexNode r = canonizeNode(rexBuilder,
-          simplify.simplifyUnknownAsFalse(x2));
+      RexNode x2 =
+          RexUtil.composeConjunction(rexBuilder,
+              ImmutableList.of(condition2, target2));
+      RexNode r =
+          canonizeNode(rexBuilder, simplify.simplifyUnknownAsFalse(x2));
       if (!r.isAlwaysFalse() && isEquivalent(condition2, r)) {
         List<RexNode> conjs = RelOptUtil.conjunctions(r);
         for (RexNode e : RelOptUtil.conjunctions(target2)) {
@@ -410,10 +411,10 @@ public class SubstitutionVisitor {
     //  e: x = 1 AND y = 2 AND z = 3 AND NOT (x = 1 AND y = 2)
     //  disjunctions: {x = 1, y = 2, z = 3}
     //  notDisjunctions: {x = 1 AND y = 2}
-    final Set<String> conditionDisjunctions = new HashSet<>(
-        RexUtil.strings(RelOptUtil.conjunctions(condition)));
-    final Set<String> targetDisjunctions = new HashSet<>(
-        RexUtil.strings(RelOptUtil.conjunctions(target)));
+    final Set<String> conditionDisjunctions =
+        new HashSet<>(RexUtil.strings(RelOptUtil.conjunctions(condition)));
+    final Set<String> targetDisjunctions =
+        new HashSet<>(RexUtil.strings(RelOptUtil.conjunctions(target)));
     if (conditionDisjunctions.equals(targetDisjunctions)) {
       return true;
     }
@@ -605,8 +606,8 @@ public class SubstitutionVisitor {
                   // Meanwhile we stop matching the descendants and jump
                   // to the next subtree in pre-order traversal.
                   if (!target.equals(replacement)) {
-                    Replacement r = replace(
-                        query.getInput(), target, replacement.clone());
+                    Replacement r =
+                        replace(query.getInput(), target, replacement.clone());
                     assert r != null
                         : rule + "should have returned a result containing the target.";
                     attempted.add(r);
@@ -1098,16 +1099,16 @@ public class SubstitutionVisitor {
       final RexShuttle shuttle = getRexShuttle(targetProjs);
       final List<RexNode> compenProjs;
       try {
-        compenProjs = shuttle.apply(
-            rexBuilder.identityProjects(query.rowType));
+        compenProjs = shuttle.apply(rexBuilder.identityProjects(query.rowType));
       } catch (MatchFailed e) {
         return null;
       }
       if (RexUtil.isIdentity(compenProjs, target.rowType)) {
         return call.result(target);
       } else {
-        RexProgram compenRexProgram = RexProgram.create(
-            target.rowType, compenProjs, null, query.rowType, rexBuilder);
+        RexProgram compenRexProgram =
+            RexProgram.create(target.rowType, compenProjs, null, query.rowType,
+                rexBuilder);
         MutableCalc compenCalc = MutableCalc.of(target, compenRexProgram);
         return tryMergeParentCalcAndGenResult(call, compenCalc);
       }
@@ -1172,9 +1173,9 @@ public class SubstitutionVisitor {
             && RexUtil.isIdentity(compenProjs, target.rowType)) {
           return call.result(target);
         } else {
-          final RexProgram compenRexProgram = RexProgram.create(
-              target.rowType, compenProjs, compenCond,
-              query.rowType, rexBuilder);
+          final RexProgram compenRexProgram =
+              RexProgram.create(target.rowType, compenProjs, compenCond,
+                  query.rowType, rexBuilder);
           final MutableCalc compenCalc = MutableCalc.of(target, compenRexProgram);
           return tryMergeParentCalcAndGenResult(call, compenCalc);
         }
@@ -1257,9 +1258,9 @@ public class SubstitutionVisitor {
                 new RexInputRef(newIdx, query.rowType.getFieldList().get(i).getType()));
           }
         }
-        final RexProgram compenRexProgram = RexProgram.create(
-            target.rowType, compenProjs, compenCond,
-            query.rowType, rexBuilder);
+        final RexProgram compenRexProgram =
+            RexProgram.create(target.rowType, compenProjs, compenCond,
+                query.rowType, rexBuilder);
         final MutableCalc compenCalc = MutableCalc.of(target, compenRexProgram);
         return tryMergeParentCalcAndGenResult(call, compenCalc);
       }
@@ -1338,14 +1339,15 @@ public class SubstitutionVisitor {
             compenProjs.add(
                 new RexInputRef(i, query.rowType.getFieldList().get(i).getType()));
           } else {
-            final RexNode shifted = RexUtil.shift(qInput1Projs.get(i - fieldCnt(qInput0)),
-                qInput0.rowType.getFieldCount());
+            final RexNode shifted =
+                RexUtil.shift(qInput1Projs.get(i - fieldCnt(qInput0)),
+                    qInput0.rowType.getFieldCount());
             compenProjs.add(shifted);
           }
         }
-        final RexProgram compensatingRexProgram = RexProgram.create(
-            target.rowType, compenProjs, compenCond,
-            query.rowType, rexBuilder);
+        final RexProgram compensatingRexProgram =
+            RexProgram.create(target.rowType, compenProjs, compenCond,
+                query.rowType, rexBuilder);
         final MutableCalc compenCalc = MutableCalc.of(target, compensatingRexProgram);
         return tryMergeParentCalcAndGenResult(call, compenCalc);
       }
@@ -1418,22 +1420,24 @@ public class SubstitutionVisitor {
       if (splitted != null && splitted.isAlwaysTrue()) {
         final RexNode qInput1CondShifted =
             RexUtil.shift(qInput1Cond, fieldCnt(qInput0.getInput()));
-        final RexNode compenCond = RexUtil.composeConjunction(rexBuilder,
-            ImmutableList.of(qInput0Cond, qInput1CondShifted));
+        final RexNode compenCond =
+            RexUtil.composeConjunction(rexBuilder,
+                ImmutableList.of(qInput0Cond, qInput1CondShifted));
 
         final List<RexNode> compenProjs = new ArrayList<>();
         for (int i = 0; i < query.rowType.getFieldCount(); i++) {
           if (i < fieldCnt(qInput0)) {
             compenProjs.add(qInput0Projs.get(i));
           } else {
-            RexNode shifted = RexUtil.shift(qInput1Projs.get(i - fieldCnt(qInput0)),
-                fieldCnt(qInput0.getInput()));
+            RexNode shifted =
+                RexUtil.shift(qInput1Projs.get(i - fieldCnt(qInput0)),
+                    fieldCnt(qInput0.getInput()));
             compenProjs.add(shifted);
           }
         }
-        final RexProgram compensatingRexProgram = RexProgram.create(
-            target.rowType, compenProjs, compenCond,
-            query.rowType, rexBuilder);
+        final RexProgram compensatingRexProgram =
+            RexProgram.create(target.rowType, compenProjs, compenCond,
+                query.rowType, rexBuilder);
         final MutableCalc compensatingCalc =
             MutableCalc.of(target, compensatingRexProgram);
         return tryMergeParentCalcAndGenResult(call, compensatingCalc);
@@ -1497,10 +1501,10 @@ public class SubstitutionVisitor {
       final MutableAggregate aggregate2 =
           permute(query, qInput.getInput(), inverseMapping);
 
-      final Mappings.TargetMapping mappingForQueryCond = Mappings.target(
-          target.groupSet::indexOf,
-          target.getInput().rowType.getFieldCount(),
-          target.groupSet.cardinality());
+      final Mappings.TargetMapping mappingForQueryCond =
+          Mappings.target(target.groupSet::indexOf,
+              target.getInput().rowType.getFieldCount(),
+              target.groupSet.cardinality());
       final RexNode targetCond = RexUtil.apply(mappingForQueryCond, qInputCond);
 
       final MutableRel unifiedAggregate =
@@ -1524,9 +1528,9 @@ public class SubstitutionVisitor {
         }
         final List<RexNode> compenProjs =
             MutableRels.createProjectExprs(unifiedAggregate, posList);
-        final RexProgram compensatingRexProgram = RexProgram.create(
-            unifiedAggregate.rowType, compenProjs, null,
-            query.rowType, rexBuilder);
+        final RexProgram compensatingRexProgram =
+            RexProgram.create(unifiedAggregate.rowType, compenProjs, null,
+                query.rowType, rexBuilder);
         final MutableCalc compenCalc =
             MutableCalc.of(unifiedAggregate, compensatingRexProgram);
         if (unifiedAggregate instanceof MutableCalc) {
@@ -1708,8 +1712,9 @@ public class SubstitutionVisitor {
         final Pair<RexNode, List<RexNode>> queryInputExplained =
             explainCalc(queryInputs.get(i));
         // Matching fails when filtering conditions are not equal or projects are not equal.
-        RexNode residue = splitFilter(call.getSimplify(), queryInputExplained0.left,
-            queryInputExplained.left);
+        RexNode residue =
+            splitFilter(call.getSimplify(), queryInputExplained0.left,
+                queryInputExplained.left);
         if (residue == null || !residue.isAlwaysTrue()) {
           return null;
         }
@@ -1721,11 +1726,11 @@ public class SubstitutionVisitor {
         }
       }
 
-      List<RexNode> projectExprs = MutableRels.createProjects(target,
-          queryInputExplained0.right);
-      final RexProgram compenRexProgram = RexProgram.create(
-          target.rowType, projectExprs, queryInputExplained0.left,
-          query.rowType, rexBuilder);
+      List<RexNode> projectExprs =
+          MutableRels.createProjects(target, queryInputExplained0.right);
+      final RexProgram compenRexProgram =
+          RexProgram.create(target.rowType, projectExprs,
+              queryInputExplained0.left, query.rowType, rexBuilder);
       final MutableCalc compenCalc = MutableCalc.of(target, compenRexProgram);
       return tryMergeParentCalcAndGenResult(call, compenCalc);
     }
@@ -1777,8 +1782,9 @@ public class SubstitutionVisitor {
       UnifyRuleCall call, MutableRel child) {
     final MutableRel parent = call.query.getParent();
     if (child instanceof MutableCalc && parent instanceof MutableCalc) {
-      final MutableCalc mergedCalc = mergeCalc(call.getCluster().getRexBuilder(),
-          (MutableCalc) parent, (MutableCalc) child);
+      final MutableCalc mergedCalc =
+          mergeCalc(call.getCluster().getRexBuilder(), (MutableCalc) parent,
+              (MutableCalc) child);
       if (mergedCalc != null) {
         // Note that property of stopTrying in the result is false
         // and this query node deserves further matching iterations.
@@ -1911,8 +1917,8 @@ public class SubstitutionVisitor {
       for (AggregateCall aggregateCall : query.aggCalls) {
         int i = target.aggCalls.indexOf(aggregateCall);
         if (i < 0) {
-          final AggregateCall newAggCall = genAggCallWithTargetGrouping(
-              aggregateCall, targetGroupByIndexList);
+          final AggregateCall newAggCall =
+              genAggCallWithTargetGrouping(aggregateCall, targetGroupByIndexList);
           if (newAggCall == null) {
             return null;
           } else {
@@ -1933,12 +1939,14 @@ public class SubstitutionVisitor {
 
       if (targetGroupGenAggCalls.isEmpty()) {
         List<RexNode> compenProjs = MutableRels.createProjectExprs(target, projects);
-        RexProgram compenRexProgram = RexProgram.create(
-            target.rowType, compenProjs, targetCond, query.rowType, rexBuilder);
+        RexProgram compenRexProgram =
+            RexProgram.create(target.rowType, compenProjs, targetCond,
+                query.rowType, rexBuilder);
         result = MutableCalc.of(target, compenRexProgram);
       } else {
-        result = MutableAggregate.of(target,
-            target.groupSet, target.groupSets, targetGroupGenAggCalls);
+        result =
+            MutableAggregate.of(target, target.groupSet, target.groupSets,
+                targetGroupGenAggCalls);
       }
     } else if (target.getGroupType() == Aggregate.Group.SIMPLE) {
       // Query is coarser level of aggregation. Generate an aggregate.
@@ -1952,8 +1960,9 @@ public class SubstitutionVisitor {
       final ImmutableBitSet groupSet = query.groupSet.permute(map);
       ImmutableList<ImmutableBitSet> groupSets = null;
       if (query.getGroupType() != Aggregate.Group.SIMPLE) {
-        groupSets = ImmutableBitSet.ORDERING.immutableSortedCopy(
-            ImmutableBitSet.permute(query.groupSets, map));
+        groupSets =
+            ImmutableBitSet.ORDERING.immutableSortedCopy(
+                ImmutableBitSet.permute(query.groupSets, map));
       }
       final List<AggregateCall> aggregateCalls = new ArrayList<>();
       for (AggregateCall aggregateCall : query.aggCalls) {
@@ -1967,12 +1976,12 @@ public class SubstitutionVisitor {
             // and the materialization recognition will fail.
             final SqlAggFunction aggFunction = aggregateCall.getAggregation().getRollup();
             if (aggFunction != null) {
-              newAggCall = AggregateCall.create(aggFunction,
-                  aggregateCall.isDistinct(), aggregateCall.isApproximate(),
-                  aggregateCall.ignoreNulls(),
-                  ImmutableList.of(target.groupSet.cardinality() + i), -1,
-                  aggregateCall.distinctKeys, aggregateCall.collation,
-                  aggregateCall.type, aggregateCall.name);
+              newAggCall =
+                  AggregateCall.create(aggFunction, aggregateCall.isDistinct(),
+                      aggregateCall.isApproximate(), aggregateCall.ignoreNulls(),
+                      ImmutableList.of(target.groupSet.cardinality() + i), -1,
+                      aggregateCall.distinctKeys, aggregateCall.collation,
+                      aggregateCall.type, aggregateCall.name);
             }
           }
         }
@@ -1987,16 +1996,17 @@ public class SubstitutionVisitor {
         aggregateCalls.add(newAggCall);
       }
       if (targetCond != null && !targetCond.isAlwaysTrue()) {
-        RexProgram compenRexProgram = RexProgram.create(
-            target.rowType, rexBuilder.identityProjects(target.rowType),
-            targetCond, target.rowType, rexBuilder);
-
-        result = MutableAggregate.of(
-            MutableCalc.of(target, compenRexProgram),
-            groupSet, groupSets, aggregateCalls);
+        RexProgram compenRexProgram =
+            RexProgram.create(target.rowType,
+                rexBuilder.identityProjects(target.rowType),
+                targetCond, target.rowType, rexBuilder);
+
+        result =
+            MutableAggregate.of(MutableCalc.of(target, compenRexProgram),
+                groupSet, groupSets, aggregateCalls);
       } else {
-        result = MutableAggregate.of(
-            target, groupSet, groupSets, aggregateCalls);
+        result =
+            MutableAggregate.of(target, groupSet, groupSets, aggregateCalls);
       }
     } else {
       return null;
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/Dumpers.java b/core/src/main/java/org/apache/calcite/plan/volcano/Dumpers.java
index 0e25bce5b8..4664a19434 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/Dumpers.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/Dumpers.java
@@ -178,8 +178,9 @@ class Dumpers {
     }
     pw.println("digraph G {");
     pw.println("\troot [style=filled,label=\"Root\"];");
-    PartiallyOrderedSet<RelSubset> subsetPoset = new PartiallyOrderedSet<>(
-        (e1, e2) -> e1.getTraitSet().satisfies(e2.getTraitSet()));
+    PartiallyOrderedSet<RelSubset> subsetPoset =
+        new PartiallyOrderedSet<>(
+            (e1, e2) -> e1.getTraitSet().satisfies(e2.getTraitSet()));
     Set<RelSubset> nonEmptySubsets = new HashSet<>();
     for (RelSet set : ordering.immutableSortedCopy(planner.allSets)) {
       pw.print("\tsubgraph cluster");
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/RelSet.java b/core/src/main/java/org/apache/calcite/plan/volcano/RelSet.java
index 7142a68d5c..1fd6ed9229 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/RelSet.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/RelSet.java
@@ -178,8 +178,8 @@ class RelSet {
   public RelSubset add(RelNode rel) {
     assert equivalentSet == null : "adding to a dead set";
     final RelTraitSet traitSet = rel.getTraitSet().simplify();
-    final RelSubset subset = getOrCreateSubset(
-        rel.getCluster(), traitSet, rel.isEnforcer());
+    final RelSubset subset =
+        getOrCreateSubset(rel.getCluster(), traitSet, rel.isEnforcer());
     subset.add(rel);
     return subset;
   }
@@ -192,9 +192,10 @@ class RelSet {
   void addConverters(RelSubset subset, boolean required,
       boolean useAbstractConverter) {
     RelOptCluster cluster = subset.getCluster();
-    List<RelSubset> others = subsets.stream().filter(
-        n -> required ? n.isDelivered() : n.isRequired())
-        .collect(Collectors.toList());
+    List<RelSubset> others =
+        subsets.stream()
+            .filter(n -> required ? n.isDelivered() : n.isRequired())
+            .collect(Collectors.toList());
 
     for (RelSubset other : others) {
       assert other.getTraitSet().size() == subset.getTraitSet().size();
@@ -242,12 +243,11 @@ class RelSet {
       if (needsConverter) {
         final RelNode enforcer;
         if (useAbstractConverter) {
-          enforcer = new AbstractConverter(
-              cluster, from, null, to.getTraitSet());
+          enforcer = new AbstractConverter(cluster, from, null, to.getTraitSet());
         } else {
-          Convention convention = requireNonNull(
-              subset.getConvention(),
-              () -> "convention is null for " + subset);
+          Convention convention =
+              requireNonNull(subset.getConvention(),
+                  () -> "convention is null for " + subset);
           enforcer = convention.enforce(from, to.getTraitSet());
         }
 
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/TopDownRuleDriver.java b/core/src/main/java/org/apache/calcite/plan/volcano/TopDownRuleDriver.java
index 35a1ca2f72..02a3a8d9fc 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/TopDownRuleDriver.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/TopDownRuleDriver.java
@@ -596,10 +596,11 @@ class TopDownRuleDriver implements RuleDriver {
             rel, group.upperBound);
       }
     }
-    VolcanoRuleMatch match = ruleQueue.popMatch(
-        Pair.of(rel,
-            m -> m.getRule() instanceof ConverterRule
-                && ((ConverterRule) m.getRule()).getOutTrait().satisfies(
+    VolcanoRuleMatch match =
+        ruleQueue.popMatch(
+            Pair.of(rel,
+                m -> m.getRule() instanceof ConverterRule
+                    && ((ConverterRule) m.getRule()).getOutTrait().satisfies(
                     requireNonNull(group.getTraitSet().getConvention(),
                         () -> "convention for " + group))));
     if (match != null) {
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 c40a980ab7..ad57236c47 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
@@ -1173,8 +1173,9 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
     // Was the set we merged with the root? If so, the result is the new
     // root.
     if (set2 == getSet(root)) {
-      root = set1.getOrCreateSubset(
-          root.getCluster(), root.getTraitSet(), root.isRequired());
+      root =
+          set1.getOrCreateSubset(root.getCluster(), root.getTraitSet(),
+              root.isRequired());
       ensureRootConverters();
     }
 
@@ -1346,12 +1347,11 @@ public class VolcanoPlanner extends AbstractRelOptPlanner {
 
     // Place the expression in the appropriate equivalence set.
     if (set == null) {
-      set = new RelSet(
-          nextSetId++,
-          Util.minus(
-              RelOptUtil.getVariablesSet(rel),
-              rel.getVariablesSet()),
-          RelOptUtil.getVariablesUsed(rel));
+      set =
+          new RelSet(nextSetId++,
+              Util.minus(RelOptUtil.getVariablesSet(rel),
+                  rel.getVariablesSet()),
+              RelOptUtil.getVariablesUsed(rel));
       this.allSets.add(set);
     }
 
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRelMetadataProvider.java
index 499b4fc407..266aec0a14 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRelMetadataProvider.java
@@ -31,7 +31,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 
 import java.lang.reflect.Method;
 import java.util.List;
-import java.util.Objects;
+
+import static java.util.Objects.requireNonNull;
 
 /**
  * VolcanoRelMetadataProvider implements the {@link RelMetadataProvider}
@@ -60,9 +61,9 @@ public class VolcanoRelMetadataProvider implements RelMetadataProvider {
 
     return (rel, mq) -> {
       final RelSubset subset = (RelSubset) rel;
-      final RelMetadataProvider provider = Objects.requireNonNull(
-          rel.getCluster().getMetadataProvider(),
-          "metadataProvider");
+      final RelMetadataProvider provider =
+          requireNonNull(rel.getCluster().getMetadataProvider(),
+              "metadataProvider");
 
       // REVIEW jvs 29-Mar-2006: I'm not sure what the correct precedence
       // should be here.  Letting the current best plan take the first shot is
diff --git a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRuleCall.java b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRuleCall.java
index 8582a0c1a6..a4b8490712 100644
--- a/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRuleCall.java
+++ b/core/src/main/java/org/apache/calcite/plan/volcano/VolcanoRuleCall.java
@@ -302,9 +302,9 @@ public class VolcanoRuleCall extends RelOptRuleCall {
         final RelSubset subset = volcanoPlanner.getSubsetNonNull(previous);
         successors = subset.getParentRels();
       } else {
-        parentOperand = requireNonNull(
-            operand.getParent(),
-            () -> "operand.getParent() for " + operand);
+        parentOperand =
+            requireNonNull(operand.getParent(),
+                () -> "operand.getParent() for " + operand);
         final RelNode parentRel = rels[parentOperand.ordinalInRule];
         final List<RelNode> inputs = parentRel.getInputs();
         // if the child is unordered, then add all rels in all input subsets to the successors list
diff --git a/core/src/main/java/org/apache/calcite/prepare/CalciteCatalogReader.java b/core/src/main/java/org/apache/calcite/prepare/CalciteCatalogReader.java
index e6271d23ec..9c60635184 100644
--- a/core/src/main/java/org/apache/calcite/prepare/CalciteCatalogReader.java
+++ b/core/src/main/java/org/apache/calcite/prepare/CalciteCatalogReader.java
@@ -382,8 +382,8 @@ public class CalciteCatalogReader implements Prepare.CatalogReader {
       final RelDataTypeFactory typeFactory = opBinding.getTypeFactory();
       final RelDataType type;
       if (function instanceof ScalarFunctionImpl) {
-        type = ((ScalarFunctionImpl) function).getReturnType(typeFactory,
-            opBinding);
+        type =
+            ((ScalarFunctionImpl) function).getReturnType(typeFactory, opBinding);
       } else {
         type = function.getReturnType(typeFactory);
       }
diff --git a/core/src/main/java/org/apache/calcite/prepare/CalciteMaterializer.java b/core/src/main/java/org/apache/calcite/prepare/CalciteMaterializer.java
index 03dff8a4f2..4bbae5c59f 100644
--- a/core/src/main/java/org/apache/calcite/prepare/CalciteMaterializer.java
+++ b/core/src/main/java/org/apache/calcite/prepare/CalciteMaterializer.java
@@ -85,10 +85,11 @@ class CalciteMaterializer extends CalcitePrepareImpl.CalcitePreparingStmt {
     useStar(schema, materialization);
 
     List<String> tableName = materialization.materializedTable.path();
-    RelOptTable table = requireNonNull(
-        this.catalogReader.getTable(tableName),
-        () -> "table " + tableName + " is not found");
-    materialization.tableRel = sqlToRelConverter2.toRel(table, ImmutableList.of());
+    RelOptTable table =
+        requireNonNull(this.catalogReader.getTable(tableName),
+            () -> "table " + tableName + " is not found");
+    materialization.tableRel =
+        sqlToRelConverter2.toRel(table, ImmutableList.of());
   }
 
   /** Converts a relational expression to use a
diff --git a/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java b/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
index ad0fff75f5..4da377b366 100644
--- a/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
+++ b/core/src/main/java/org/apache/calcite/prepare/CalcitePrepareImpl.java
@@ -648,8 +648,8 @@ public class CalcitePrepareImpl implements CalcitePrepare {
       final SqlValidator validator =
           createSqlValidator(context, catalogReader);
 
-      preparedResult = preparingStmt.prepareSql(
-          sqlNode, Object.class, validator, true);
+      preparedResult =
+          preparingStmt.prepareSql(sqlNode, Object.class, validator, true);
       switch (sqlNode.getKind()) {
       case INSERT:
       case DELETE:
@@ -1006,8 +1006,9 @@ public class CalcitePrepareImpl implements CalcitePrepare {
           rel instanceof Sort
               ? ((Sort) rel).collation
               : RelCollations.EMPTY;
-      RelRoot root = new RelRoot(rel, resultType, SqlKind.SELECT, fields,
-          collation, new ArrayList<>());
+      RelRoot root =
+          new RelRoot(rel, resultType, SqlKind.SELECT, fields, collation,
+              new ArrayList<>());
 
       if (timingTracer != null) {
         timingTracer.traceTime("end sql2rel");
@@ -1122,8 +1123,9 @@ public class CalcitePrepareImpl implements CalcitePrepare {
           for (int field : Pair.left(root.fields)) {
             projects.add(rexBuilder.makeInputRef(enumerable, field));
           }
-          RexProgram program = RexProgram.create(enumerable.getRowType(),
-              projects, null, root.validatedRowType, rexBuilder);
+          RexProgram program =
+              RexProgram.create(enumerable.getRowType(), projects, null,
+                  root.validatedRowType, rexBuilder);
           enumerable = EnumerableCalc.create(enumerable, program);
         }
 
@@ -1131,9 +1133,10 @@ public class CalcitePrepareImpl implements CalcitePrepare {
           CatalogReader.THREAD_LOCAL.set(catalogReader);
           final SqlConformance conformance = context.config().conformance();
           internalParameters.put("_conformance", conformance);
-          bindable = EnumerableInterpretable.toBindable(internalParameters,
-              context.spark(), enumerable,
-              requireNonNull(prefer, "EnumerableRel.Prefer prefer"));
+          bindable =
+              EnumerableInterpretable.toBindable(internalParameters,
+                  context.spark(), enumerable,
+                  requireNonNull(prefer, "EnumerableRel.Prefer prefer"));
         } finally {
           CatalogReader.THREAD_LOCAL.remove();
         }
@@ -1262,10 +1265,11 @@ public class CalcitePrepareImpl implements CalcitePrepare {
         // Case-sensitive name match because name was previously resolved.
         MemberExpression memberExpression = (MemberExpression) expression;
         PseudoField field = memberExpression.field;
-        Expression targetExpression = requireNonNull(memberExpression.expression,
-            () -> "static field access is not implemented yet."
-                + " field.name=" + field.getName()
-                + ", field.declaringClass=" + field.getDeclaringClass());
+        Expression targetExpression =
+            requireNonNull(memberExpression.expression,
+                () -> "static field access is not implemented yet."
+                    + " field.name=" + field.getName()
+                    + ", field.declaringClass=" + field.getDeclaringClass());
         return rexBuilder.makeFieldAccess(
             toRex(targetExpression),
             field.getName(),
diff --git a/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java b/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
index a845129135..6792a87de8 100644
--- a/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
+++ b/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
@@ -129,12 +129,14 @@ public class PlannerImpl implements Planner, ViewExpander {
         context.maybeUnwrap(CalciteConnectionConfigImpl.class)
             .orElse(CalciteConnectionConfig.DEFAULT);
     if (!config.isSet(CalciteConnectionProperty.CASE_SENSITIVE)) {
-      config = config.set(CalciteConnectionProperty.CASE_SENSITIVE,
-          String.valueOf(parserConfig.caseSensitive()));
+      config =
+          config.set(CalciteConnectionProperty.CASE_SENSITIVE,
+              String.valueOf(parserConfig.caseSensitive()));
     }
     if (!config.isSet(CalciteConnectionProperty.CONFORMANCE)) {
-      config = config.set(CalciteConnectionProperty.CONFORMANCE,
-          String.valueOf(parserConfig.conformance()));
+      config =
+          config.set(CalciteConnectionProperty.CONFORMANCE,
+              String.valueOf(parserConfig.conformance()));
     }
     return config;
   }
@@ -253,12 +255,13 @@ public class PlannerImpl implements Planner, ViewExpander {
 
   @Override public RelRoot rel(SqlNode sql) {
     ensure(State.STATE_4_VALIDATED);
-    SqlNode validatedSqlNode = requireNonNull(this.validatedSqlNode,
-        "validatedSqlNode is null. Need to call #validate() first");
+    SqlNode validatedSqlNode =
+        requireNonNull(this.validatedSqlNode,
+            "validatedSqlNode is null. Need to call #validate() first");
     final RexBuilder rexBuilder = createRexBuilder();
-    final RelOptCluster cluster = RelOptCluster.create(
-        requireNonNull(planner, "planner"),
-        rexBuilder);
+    final RelOptCluster cluster =
+        RelOptCluster.create(requireNonNull(planner, "planner"),
+            rexBuilder);
     final SqlToRelConverter.Config config =
         sqlToRelConverterConfig.withTrimUnusedFields(false);
     final SqlToRelConverter sqlToRelConverter =
@@ -269,8 +272,8 @@ public class PlannerImpl implements Planner, ViewExpander {
     root = root.withRel(sqlToRelConverter.flattenTypes(root.rel, true));
     final RelBuilder relBuilder =
         config.getRelBuilderFactory().create(cluster, null);
-    root = root.withRel(
-        RelDecorrelator.decorrelateQuery(root.rel, relBuilder));
+    root =
+        root.withRel(RelDecorrelator.decorrelateQuery(root.rel, relBuilder));
     state = State.STATE_5_CONVERTED;
     return root;
   }
diff --git a/core/src/main/java/org/apache/calcite/prepare/Prepare.java b/core/src/main/java/org/apache/calcite/prepare/Prepare.java
index f664cb1aba..695181bfc6 100644
--- a/core/src/main/java/org/apache/calcite/prepare/Prepare.java
+++ b/core/src/main/java/org/apache/calcite/prepare/Prepare.java
@@ -173,8 +173,9 @@ public abstract class Prepare {
     final RelTraitSet desiredTraits = getDesiredRootTraitSet(root);
 
     final Program program = getProgram();
-    final RelNode rootRel4 = program.run(
-        planner, root.rel, desiredTraits, materializationList, latticeList);
+    final RelNode rootRel4 =
+        program.run(planner, root.rel, desiredTraits, materializationList,
+            latticeList);
     if (LOGGER.isDebugEnabled()) {
       LOGGER.debug("Plan after physical tweaks:\n{}",
           RelOptUtil.toString(rootRel4, SqlExplainLevel.ALL_ATTRIBUTES));
diff --git a/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java b/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java
index 237f18e463..0c60f278f1 100644
--- a/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java
+++ b/core/src/main/java/org/apache/calcite/profile/ProfilerImpl.java
@@ -189,8 +189,9 @@ public class ProfilerImpl implements Profiler {
       }
       // The surprise queue must have enough room for all singleton groups
       // plus all initial groups.
-      surprises = new SurpriseQueue(1 + columns.size() + initialGroups.size(),
-          interestingCount);
+      surprises =
+          new SurpriseQueue(1 + columns.size() + initialGroups.size(),
+              interestingCount);
     }
 
     Profile profile(Iterable<List<Comparable>> rows) {
@@ -421,8 +422,10 @@ public class ProfilerImpl implements Profiler {
         return rowCount;
       default:
         double c = rowCount;
-        List<ImmutableBitSet> parents = requireNonNull(keyPoset.getParents(columns, true),
-            () -> "keyPoset.getParents(columns, true) is null for " + columns);
+        List<ImmutableBitSet> parents =
+            requireNonNull(keyPoset.getParents(columns, true),
+                () -> "keyPoset.getParents(columns, true) is null for "
+                    + columns);
         for (ImmutableBitSet bitSet : parents) {
           if (bitSet.isEmpty()) {
             // If the parent is the empty group (i.e. "GROUP BY ()", the grand
@@ -431,11 +434,15 @@ public class ProfilerImpl implements Profiler {
           }
           final Distribution d1 = distributions.get(bitSet);
           final double c2 = cardinality(rowCount, columns.except(bitSet));
-          final double d = Lattice.getRowCount(rowCount, requireNonNull(d1, "d1").cardinality, c2);
+          final double d =
+              Lattice.getRowCount(rowCount,
+                  requireNonNull(d1, "d1").cardinality, c2);
           c = Math.min(c, d);
         }
-        List<ImmutableBitSet> children = requireNonNull(keyPoset.getChildren(columns, true),
-            () -> "keyPoset.getChildren(columns, true) is null for " + columns);
+        List<ImmutableBitSet> children =
+            requireNonNull(keyPoset.getChildren(columns, true),
+                () -> "keyPoset.getChildren(columns, true) is null for "
+                    + columns);
         for (ImmutableBitSet bitSet : children) {
           final Distribution d1 = distributions.get(bitSet);
           c = Math.min(c, requireNonNull(d1, "d1").cardinality);
diff --git a/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java b/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java
index ffe92171c6..2b4c413c5e 100644
--- a/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java
+++ b/core/src/main/java/org/apache/calcite/profile/SimpleProfiler.java
@@ -196,8 +196,9 @@ public class SimpleProfiler implements Profiler {
             }
             space.dependencies.or(dependents.toBitSet());
             for (int d : dependents) {
-              Space spaceD = requireNonNull(singletonSpaces.get(d),
-                  () -> "singletonSpaces.get(d) is null for " + d);
+              Space spaceD =
+                  requireNonNull(singletonSpaces.get(d),
+                      () -> "singletonSpaces.get(d) is null for " + d);
               spaceD.dependents.add(s.columnOrdinals);
             }
           }
@@ -207,8 +208,9 @@ public class SimpleProfiler implements Profiler {
         final SortedSet<Comparable> valueSet;
         if (space.columns.size() == 1) {
           nullCount = space.nullCount;
-          valueSet = ImmutableSortedSet.copyOf(
-              Util.transform(space.values, Iterables::getOnlyElement));
+          valueSet =
+              ImmutableSortedSet.copyOf(
+                  Util.transform(space.values, Iterables::getOnlyElement));
         } else {
           nullCount = -1;
           valueSet = null;
@@ -280,8 +282,10 @@ public class SimpleProfiler implements Profiler {
 
     private boolean hasNull(ImmutableBitSet columnOrdinals) {
       for (Integer columnOrdinal : columnOrdinals) {
-        Space space = requireNonNull(singletonSpaces.get(columnOrdinal),
-            () -> "singletonSpaces.get(columnOrdinal) is null for " + columnOrdinal);
+        Space space =
+            requireNonNull(singletonSpaces.get(columnOrdinal),
+                () -> "singletonSpaces.get(columnOrdinal) is null for "
+                    + columnOrdinal);
         if (space.nullCount > 0) {
           return true;
         }
diff --git a/core/src/main/java/org/apache/calcite/rel/RelCollations.java b/core/src/main/java/org/apache/calcite/rel/RelCollations.java
index 189b776e66..feea59687e 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelCollations.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelCollations.java
@@ -209,8 +209,8 @@ public class RelCollations {
     if (colKeys.size() < distinctKeys.size()) {
       return false;
     } else {
-      ImmutableBitSet bitset = ImmutableBitSet.of(
-          colKeys.subList(0, distinctKeys.size()));
+      ImmutableBitSet bitset =
+          ImmutableBitSet.of(colKeys.subList(0, distinctKeys.size()));
       return bitset.equals(keysBitSet);
     }
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/RelNodes.java b/core/src/main/java/org/apache/calcite/rel/RelNodes.java
index dab3b5e5f6..8f5397cf0e 100644
--- a/core/src/main/java/org/apache/calcite/rel/RelNodes.java
+++ b/core/src/main/java/org/apache/calcite/rel/RelNodes.java
@@ -16,8 +16,6 @@
  */
 package org.apache.calcite.rel;
 
-import org.apache.calcite.runtime.Utilities;
-
 import com.google.common.collect.Ordering;
 
 import java.util.Comparator;
@@ -38,7 +36,7 @@ public class RelNodes {
 
   /** Compares arrays of {@link RelNode}. */
   public static int compareRels(RelNode[] rels0, RelNode[] rels1) {
-    int c = Utilities.compare(rels0.length, rels1.length);
+    int c = Integer.compare(rels0.length, rels1.length);
     if (c != 0) {
       return c;
     }
@@ -56,12 +54,13 @@ public class RelNodes {
     @Override public int compare(RelNode o1, RelNode o2) {
       // Compare on field count first. It is more stable than id (when rules
       // are added to the set of active rules).
-      final int c = Utilities.compare(o1.getRowType().getFieldCount(),
-          o2.getRowType().getFieldCount());
+      final int c =
+          Integer.compare(o1.getRowType().getFieldCount(),
+              o2.getRowType().getFieldCount());
       if (c != 0) {
         return -c;
       }
-      return Utilities.compare(o1.getId(), o2.getId());
+      return Integer.compare(o1.getId(), o2.getId());
     }
   }
 }
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Collect.java b/core/src/main/java/org/apache/calcite/rel/core/Collect.java
index 50891d5a7e..d5b1e4588d 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Collect.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Collect.java
@@ -149,13 +149,16 @@ public class Collect extends SingleRel {
     switch (sqlKind) {
     case ARRAY_QUERY_CONSTRUCTOR:
     case MULTISET_QUERY_CONSTRUCTOR:
-      rowType = deriveRowType(input.getCluster().getTypeFactory(),
-          collectionType, fieldName,
-          SqlTypeUtil.deriveCollectionQueryComponentType(collectionType, input.getRowType()));
+      rowType =
+          deriveRowType(input.getCluster().getTypeFactory(), collectionType,
+              fieldName,
+              SqlTypeUtil.deriveCollectionQueryComponentType(collectionType,
+                  input.getRowType()));
       break;
     default:
-      rowType = deriveRowType(input.getCluster().getTypeFactory(), collectionType,
-          fieldName, input.getRowType());
+      rowType =
+          deriveRowType(input.getCluster().getTypeFactory(), collectionType,
+              fieldName, input.getRowType());
     }
     return create(input, rowType);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Match.java b/core/src/main/java/org/apache/calcite/rel/core/Match.java
index 40bcd54eed..abdea8e978 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Match.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Match.java
@@ -249,8 +249,9 @@ public abstract class Match extends SingleRel {
         visitEach(call.operands);
       }
       if (aggFunction != null) {
-        RexMRAggCall aggCall = new RexMRAggCall(aggFunction,
-            call.getType(), call.getOperands(), aggregateCalls.size());
+        RexMRAggCall aggCall =
+            new RexMRAggCall(aggFunction, call.getType(), call.getOperands(),
+                aggregateCalls.size());
         aggregateCalls.add(aggCall);
         Set<String> pv = new PatternVarFinder().go(call.getOperands());
         if (pv.size() == 0) {
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Project.java b/core/src/main/java/org/apache/calcite/rel/core/Project.java
index 4a1033c3de..ddcb037db9 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Project.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Project.java
@@ -144,9 +144,7 @@ public abstract class Project extends SingleRel implements Hintable {
             Util.transform(
                 Optional.ofNullable(input.getIntegerList("variablesSet"))
                     .orElse(ImmutableList.of()),
-                id -> new CorrelationId(id)
-            )
-        ));
+                id -> new CorrelationId(id))));
   }
 
   //~ Methods ----------------------------------------------------------------
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 defff01f0c..c3f8a7c2ca 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
@@ -341,9 +341,10 @@ public class RelJson {
       final boolean nullable = get(map, "nullable");
       return typeFactory.createTypeWithNullability(type, nullable);
     } else {
-      final SqlTypeName sqlTypeName = requireNonNull(
-          Util.enumVal(SqlTypeName.class, (String) o),
-          () -> "unable to find enum value " + o + " in class " + SqlTypeName.class);
+      final SqlTypeName sqlTypeName =
+          requireNonNull(Util.enumVal(SqlTypeName.class, (String) o),
+              () -> "unable to find enum value " + o
+                  + " in class " + SqlTypeName.class);
       return typeFactory.createSqlType(sqlTypeName);
     }
   }
@@ -630,8 +631,9 @@ public class RelJson {
       map.put("type", windowBound.isPreceding() ? "UNBOUNDED_PRECEDING" : "UNBOUNDED_FOLLOWING");
     } else {
       map.put("type", windowBound.isPreceding() ? "PRECEDING" : "FOLLOWING");
-      RexNode offset = requireNonNull(windowBound.getOffset(),
-          () -> "getOffset for window bound " + windowBound);
+      RexNode offset =
+          requireNonNull(windowBound.getOffset(),
+              () -> "getOffset for window bound " + windowBound);
       map.put("offset", toJson(offset));
     }
     return map;
diff --git a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
index 3c0820ad33..a98d0e8848 100644
--- a/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
+++ b/core/src/main/java/org/apache/calcite/rel/externalize/RelJsonReader.java
@@ -129,12 +129,11 @@ public class RelJsonReader {
       }
 
       @Override public RelOptTable getTable(String table) {
-        final List<String> list = requireNonNull(
-            getStringList(table),
-            () -> "getStringList for " + table);
-        return requireNonNull(
-            relOptSchema.getTableForMember(list),
-            () -> "table " + table + " is not found in schema " + relOptSchema.toString());
+        final List<String> list =
+            requireNonNull(getStringList(table),
+                () -> "getStringList for " + table);
+        return requireNonNull(relOptSchema.getTableForMember(list),
+            () -> "table " + table + " is not found in schema " + relOptSchema);
       }
 
       @Override public RelNode getInput() {
@@ -309,20 +308,22 @@ public class RelJsonReader {
 
   private AggregateCall toAggCall(Map<String, Object> jsonAggCall) {
     @SuppressWarnings("unchecked")
-    final Map<String, Object> aggMap = (Map) requireNonNull(
-        jsonAggCall.get("agg"),
-        "agg key is not found");
-    final SqlAggFunction aggregation = requireNonNull(
-        relJson.toAggregation(aggMap),
-        () -> "relJson.toAggregation output for " + aggMap);
-    final Boolean distinct = (Boolean) requireNonNull(jsonAggCall.get("distinct"),
-        "jsonAggCall.distinct");
+    final Map<String, Object> aggMap =
+        (Map) requireNonNull(jsonAggCall.get("agg"),
+            "agg key is not found");
+    final SqlAggFunction aggregation =
+        requireNonNull(relJson.toAggregation(aggMap),
+            () -> "relJson.toAggregation output for " + aggMap);
+    final boolean distinct =
+        requireNonNull((Boolean) jsonAggCall.get("distinct"),
+            "jsonAggCall.distinct");
     @SuppressWarnings("unchecked")
-    final List<Integer> operands = (List<Integer>) requireNonNull(
-        jsonAggCall.get("operands"),
-        "jsonAggCall.operands");
+    final List<Integer> operands =
+        requireNonNull((List<Integer>) jsonAggCall.get("operands"),
+            "jsonAggCall.operands");
     final Integer filterOperand = (Integer) jsonAggCall.get("filter");
-    final Object jsonAggType = requireNonNull(jsonAggCall.get("type"), "jsonAggCall.type");
+    final Object jsonAggType =
+        requireNonNull(jsonAggCall.get("type"), "jsonAggCall.type");
     final RelDataType type =
         relJson.toType(cluster.getTypeFactory(), jsonAggType);
     final String name = (String) jsonAggCall.get("name");
diff --git a/core/src/main/java/org/apache/calcite/rel/hint/HintStrategyTable.java b/core/src/main/java/org/apache/calcite/rel/hint/HintStrategyTable.java
index f2ec1a1163..a2e0a3233e 100644
--- a/core/src/main/java/org/apache/calcite/rel/hint/HintStrategyTable.java
+++ b/core/src/main/java/org/apache/calcite/rel/hint/HintStrategyTable.java
@@ -100,11 +100,11 @@ public class HintStrategyTable {
    */
   public boolean validateHint(RelHint hint) {
     final Key key = Key.of(hint.hintName);
-    boolean hintExists = this.errorHandler.check(
-        this.strategies.containsKey(key),
-        "Hint: {} should be registered in the {}",
-        hint.hintName,
-        this.getClass().getSimpleName());
+    boolean hintExists =
+        this.errorHandler.check(this.strategies.containsKey(key),
+            "Hint: {} should be registered in the {}",
+            hint.hintName,
+            this.getClass().getSimpleName());
     if (!hintExists) {
       return false;
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
index 2ebc48b858..7a1253b32e 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalWindow.java
@@ -144,8 +144,9 @@ public final class LogicalWindow extends Window {
           return ref;
         }
         constants.add(literal);
-        ref = new RexInputRef(constantPool.size() + inputFieldCount,
-            literal.getType());
+        ref =
+            new RexInputRef(constantPool.size() + inputFieldCount,
+                literal.getType());
         constantPool.put(literal, ref);
         return ref;
       }
@@ -363,13 +364,14 @@ public final class LogicalWindow extends Window {
     final RexWindow aggWindow = over.getWindow();
 
     // Look up or create a window.
-    RelCollation orderKeys = getCollation(
-        Lists.newArrayList(
-            Util.filter(aggWindow.orderKeys,
-                rexFieldCollation ->
-                    // If ORDER BY references constant (i.e. RexInputRef),
-                    // then we can ignore such ORDER BY key.
-                    rexFieldCollation.left instanceof RexLocalRef)));
+    RelCollation orderKeys =
+        getCollation(
+            Lists.newArrayList(
+                Util.filter(aggWindow.orderKeys,
+                    rexFieldCollation ->
+                        // If ORDER BY references constant (i.e. RexInputRef),
+                        // then we can ignore such ORDER BY key.
+                        rexFieldCollation.left instanceof RexLocalRef)));
     ImmutableBitSet groupSet =
         ImmutableBitSet.of(getProjectOrdinals(aggWindow.partitionKeys));
     final int groupLength = groupSet.length();
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java b/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
index a2467a458b..cbd7f38f21 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/BuiltInMetadata.java
@@ -45,8 +45,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the selectivity of a predicate. */
   public interface Selectivity extends Metadata {
-    MetadataDef<Selectivity> DEF = MetadataDef.of(Selectivity.class,
-        Selectivity.Handler.class, BuiltInMethod.SELECTIVITY.method);
+    MetadataDef<Selectivity> DEF =
+        MetadataDef.of(Selectivity.class, Selectivity.Handler.class,
+            BuiltInMethod.SELECTIVITY.method);
 
     /**
      * Estimates the percentage of an expression's output rows which satisfy a
@@ -73,8 +74,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about which combinations of columns are unique identifiers. */
   public interface UniqueKeys extends Metadata {
-    MetadataDef<UniqueKeys> DEF = MetadataDef.of(UniqueKeys.class,
-        UniqueKeys.Handler.class, BuiltInMethod.UNIQUE_KEYS.method);
+    MetadataDef<UniqueKeys> DEF =
+        MetadataDef.of(UniqueKeys.class, UniqueKeys.Handler.class,
+            BuiltInMethod.UNIQUE_KEYS.method);
 
     /**
      * Determines the set of unique minimal keys for this expression. A key is
@@ -105,8 +107,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about whether a set of columns uniquely identifies a row. */
   public interface ColumnUniqueness extends Metadata {
-    MetadataDef<ColumnUniqueness> DEF = MetadataDef.of(ColumnUniqueness.class,
-        ColumnUniqueness.Handler.class, BuiltInMethod.COLUMN_UNIQUENESS.method);
+    MetadataDef<ColumnUniqueness> DEF =
+        MetadataDef.of(ColumnUniqueness.class, ColumnUniqueness.Handler.class,
+            BuiltInMethod.COLUMN_UNIQUENESS.method);
 
     /**
      * Determines whether a specified set of columns from a specified relational
@@ -146,8 +149,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about which columns are sorted. */
   public interface Collation extends Metadata {
-    MetadataDef<Collation> DEF = MetadataDef.of(Collation.class,
-        Collation.Handler.class, BuiltInMethod.COLLATIONS.method);
+    MetadataDef<Collation> DEF =
+        MetadataDef.of(Collation.class, Collation.Handler.class,
+            BuiltInMethod.COLLATIONS.method);
 
     /** Determines which columns are sorted. */
     ImmutableList<RelCollation> collations();
@@ -175,8 +179,9 @@ public abstract class BuiltInMetadata {
    * among nodes, but it may be partitioned among threads running on the same
    * node. */
   public interface Distribution extends Metadata {
-    MetadataDef<Distribution> DEF = MetadataDef.of(Distribution.class,
-        Distribution.Handler.class, BuiltInMethod.DISTRIBUTION.method);
+    MetadataDef<Distribution> DEF =
+        MetadataDef.of(Distribution.class, Distribution.Handler.class,
+            BuiltInMethod.DISTRIBUTION.method);
 
     /** Determines how the rows are distributed. */
     RelDistribution distribution();
@@ -200,8 +205,9 @@ public abstract class BuiltInMetadata {
    * multimap only once.
    */
   public interface NodeTypes extends Metadata {
-    MetadataDef<NodeTypes> DEF = MetadataDef.of(NodeTypes.class,
-        NodeTypes.Handler.class, BuiltInMethod.NODE_TYPES.method);
+    MetadataDef<NodeTypes> DEF =
+        MetadataDef.of(NodeTypes.class, NodeTypes.Handler.class,
+            BuiltInMethod.NODE_TYPES.method);
 
     /**
      * Returns a multimap from the class to the nodes instantiating that
@@ -224,8 +230,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the number of rows returned by a relational expression. */
   public interface RowCount extends Metadata {
-    MetadataDef<RowCount> DEF = MetadataDef.of(RowCount.class,
-        RowCount.Handler.class, BuiltInMethod.ROW_COUNT.method);
+    MetadataDef<RowCount> DEF =
+        MetadataDef.of(RowCount.class, RowCount.Handler.class,
+            BuiltInMethod.ROW_COUNT.method);
 
     /**
      * Estimates the number of rows which will be returned by a relational
@@ -252,8 +259,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the maximum number of rows returned by a relational
    * expression. */
   public interface MaxRowCount extends Metadata {
-    MetadataDef<MaxRowCount> DEF = MetadataDef.of(MaxRowCount.class,
-        MaxRowCount.Handler.class, BuiltInMethod.MAX_ROW_COUNT.method);
+    MetadataDef<MaxRowCount> DEF =
+        MetadataDef.of(MaxRowCount.class, MaxRowCount.Handler.class,
+            BuiltInMethod.MAX_ROW_COUNT.method);
 
     /**
      * Estimates the max number of rows which will be returned by a relational
@@ -281,8 +289,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the minimum number of rows returned by a relational
    * expression. */
   public interface MinRowCount extends Metadata {
-    MetadataDef<MinRowCount> DEF = MetadataDef.of(MinRowCount.class,
-        MinRowCount.Handler.class, BuiltInMethod.MIN_ROW_COUNT.method);
+    MetadataDef<MinRowCount> DEF =
+        MetadataDef.of(MinRowCount.class, MinRowCount.Handler.class,
+            BuiltInMethod.MIN_ROW_COUNT.method);
 
     /**
      * Estimates the minimum number of rows which will be returned by a
@@ -309,8 +318,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the number of distinct rows returned by a set of columns
    * in a relational expression. */
   public interface DistinctRowCount extends Metadata {
-    MetadataDef<DistinctRowCount> DEF = MetadataDef.of(DistinctRowCount.class,
-        DistinctRowCount.Handler.class, BuiltInMethod.DISTINCT_ROW_COUNT.method);
+    MetadataDef<DistinctRowCount> DEF =
+        MetadataDef.of(DistinctRowCount.class, DistinctRowCount.Handler.class,
+            BuiltInMethod.DISTINCT_ROW_COUNT.method);
 
     /**
      * Estimates the number of rows which would be produced by a GROUP BY on the
@@ -370,8 +380,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the number of distinct values in the original source of a
    * column or set of columns. */
   public interface PopulationSize extends Metadata {
-    MetadataDef<PopulationSize> DEF = MetadataDef.of(PopulationSize.class,
-        PopulationSize.Handler.class, BuiltInMethod.POPULATION_SIZE.method);
+    MetadataDef<PopulationSize> DEF =
+        MetadataDef.of(PopulationSize.class, PopulationSize.Handler.class,
+            BuiltInMethod.POPULATION_SIZE.method);
 
     /**
      * Estimates the distinct row count in the original source for the given
@@ -400,9 +411,10 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the size of rows and columns. */
   public interface Size extends Metadata {
-    MetadataDef<Size> DEF = MetadataDef.of(Size.class, Size.Handler.class,
-        BuiltInMethod.AVERAGE_ROW_SIZE.method,
-        BuiltInMethod.AVERAGE_COLUMN_SIZES.method);
+    MetadataDef<Size> DEF =
+        MetadataDef.of(Size.class, Size.Handler.class,
+            BuiltInMethod.AVERAGE_ROW_SIZE.method,
+            BuiltInMethod.AVERAGE_COLUMN_SIZES.method);
 
     /**
      * Determines the average size (in bytes) of a row from this relational
@@ -442,8 +454,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the origins of columns. */
   public interface ColumnOrigin extends Metadata {
-    MetadataDef<ColumnOrigin> DEF = MetadataDef.of(ColumnOrigin.class,
-        ColumnOrigin.Handler.class, BuiltInMethod.COLUMN_ORIGIN.method);
+    MetadataDef<ColumnOrigin> DEF =
+        MetadataDef.of(ColumnOrigin.class, ColumnOrigin.Handler.class,
+            BuiltInMethod.COLUMN_ORIGIN.method);
 
     /**
      * For a given output column of an expression, determines all columns of
@@ -473,8 +486,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the origins of expressions. */
   public interface ExpressionLineage extends Metadata {
-    MetadataDef<ExpressionLineage> DEF = MetadataDef.of(ExpressionLineage.class,
-        ExpressionLineage.Handler.class, BuiltInMethod.EXPRESSION_LINEAGE.method);
+    MetadataDef<ExpressionLineage> DEF =
+        MetadataDef.of(ExpressionLineage.class, ExpressionLineage.Handler.class,
+            BuiltInMethod.EXPRESSION_LINEAGE.method);
 
     /**
      * Given the input expression applied on the given {@link RelNode}, this
@@ -515,8 +529,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata to obtain references to tables used by a given expression. */
   public interface TableReferences extends Metadata {
-    MetadataDef<TableReferences> DEF = MetadataDef.of(TableReferences.class,
-        TableReferences.Handler.class, BuiltInMethod.TABLE_REFERENCES.method);
+    MetadataDef<TableReferences> DEF =
+        MetadataDef.of(TableReferences.class, TableReferences.Handler.class,
+            BuiltInMethod.TABLE_REFERENCES.method);
 
     /**
      * This provider returns the tables used by a given plan.
@@ -550,8 +565,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the cost of evaluating a relational expression, including
    * all of its inputs. */
   public interface CumulativeCost extends Metadata {
-    MetadataDef<CumulativeCost> DEF = MetadataDef.of(CumulativeCost.class,
-        CumulativeCost.Handler.class, BuiltInMethod.CUMULATIVE_COST.method);
+    MetadataDef<CumulativeCost> DEF =
+        MetadataDef.of(CumulativeCost.class, CumulativeCost.Handler.class,
+            BuiltInMethod.CUMULATIVE_COST.method);
 
     /**
      * Estimates the cost of executing a relational expression, including the
@@ -580,9 +596,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the cost of evaluating a relational expression, not
    * including its inputs. */
   public interface NonCumulativeCost extends Metadata {
-    MetadataDef<NonCumulativeCost> DEF = MetadataDef.of(NonCumulativeCost.class,
-        NonCumulativeCost.Handler.class,
-        BuiltInMethod.NON_CUMULATIVE_COST.method);
+    MetadataDef<NonCumulativeCost> DEF =
+        MetadataDef.of(NonCumulativeCost.class, NonCumulativeCost.Handler.class,
+            BuiltInMethod.NON_CUMULATIVE_COST.method);
 
     /**
      * Estimates the cost of executing a relational expression, not counting the
@@ -612,9 +628,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about whether a relational expression should appear in a plan. */
   public interface ExplainVisibility extends Metadata {
-    MetadataDef<ExplainVisibility> DEF = MetadataDef.of(ExplainVisibility.class,
-        ExplainVisibility.Handler.class,
-        BuiltInMethod.EXPLAIN_VISIBILITY.method);
+    MetadataDef<ExplainVisibility> DEF =
+        MetadataDef.of(ExplainVisibility.class, ExplainVisibility.Handler.class,
+            BuiltInMethod.EXPLAIN_VISIBILITY.method);
 
     /**
      * Determines whether a relational expression should be visible in EXPLAIN
@@ -641,8 +657,9 @@ public abstract class BuiltInMetadata {
   /** Metadata about the predicates that hold in the rows emitted from a
    * relational expression. */
   public interface Predicates extends Metadata {
-    MetadataDef<Predicates> DEF = MetadataDef.of(Predicates.class,
-        Predicates.Handler.class, BuiltInMethod.PREDICATES.method);
+    MetadataDef<Predicates> DEF =
+        MetadataDef.of(Predicates.class, Predicates.Handler.class,
+            BuiltInMethod.PREDICATES.method);
 
     /**
      * Derives the predicates that hold on rows emitted from a relational
@@ -674,8 +691,9 @@ public abstract class BuiltInMetadata {
    * {@link org.apache.calcite.rel.core.TableScan} for the result predicates.
    */
   public interface AllPredicates extends Metadata {
-    MetadataDef<AllPredicates> DEF = MetadataDef.of(AllPredicates.class,
-            AllPredicates.Handler.class, BuiltInMethod.ALL_PREDICATES.method);
+    MetadataDef<AllPredicates> DEF =
+            MetadataDef.of(AllPredicates.class, AllPredicates.Handler.class,
+                BuiltInMethod.ALL_PREDICATES.method);
 
     /**
      * Derives the predicates that hold on rows emitted from a relational
@@ -702,9 +720,10 @@ public abstract class BuiltInMetadata {
    * how its operators are assigned to processes with independent resource
    * pools. */
   public interface Parallelism extends Metadata {
-    MetadataDef<Parallelism> DEF = MetadataDef.of(Parallelism.class,
-        Parallelism.Handler.class, BuiltInMethod.IS_PHASE_TRANSITION.method,
-        BuiltInMethod.SPLIT_COUNT.method);
+    MetadataDef<Parallelism> DEF =
+        MetadataDef.of(Parallelism.class, Parallelism.Handler.class,
+            BuiltInMethod.IS_PHASE_TRANSITION.method,
+            BuiltInMethod.SPLIT_COUNT.method);
 
     /** Returns whether each physical operator implementing this relational
      * expression belongs to a different process than its inputs.
@@ -741,8 +760,9 @@ public abstract class BuiltInMetadata {
 
   /** Metadata to get the lower bound cost of a RelNode. */
   public interface LowerBoundCost extends Metadata {
-    MetadataDef<LowerBoundCost> DEF = MetadataDef.of(LowerBoundCost.class,
-        LowerBoundCost.Handler.class, BuiltInMethod.LOWER_BOUND_COST.method);
+    MetadataDef<LowerBoundCost> DEF =
+        MetadataDef.of(LowerBoundCost.class, LowerBoundCost.Handler.class,
+            BuiltInMethod.LOWER_BOUND_COST.method);
 
     /** Returns the lower bound cost of a RelNode. */
     RelOptCost getLowerBoundCost(VolcanoPlanner planner);
@@ -762,10 +782,11 @@ public abstract class BuiltInMetadata {
 
   /** Metadata about the memory use of an operator. */
   public interface Memory extends Metadata {
-    MetadataDef<Memory> DEF = MetadataDef.of(Memory.class,
-        Memory.Handler.class, BuiltInMethod.MEMORY.method,
-        BuiltInMethod.CUMULATIVE_MEMORY_WITHIN_PHASE.method,
-        BuiltInMethod.CUMULATIVE_MEMORY_WITHIN_PHASE_SPLIT.method);
+    MetadataDef<Memory> DEF =
+        MetadataDef.of(Memory.class, Memory.Handler.class,
+            BuiltInMethod.MEMORY.method,
+            BuiltInMethod.CUMULATIVE_MEMORY_WITHIN_PHASE.method,
+            BuiltInMethod.CUMULATIVE_MEMORY_WITHIN_PHASE_SPLIT.method);
 
     /** Returns the expected amount of memory, in bytes, required by a physical
      * operator implementing this relational expression, across all splits.
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
index 01e53a7362..399c4b67ab 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/CachingRelMetadataProvider.java
@@ -73,9 +73,10 @@ public class CachingRelMetadataProvider implements RelMetadataProvider {
     // TODO jvs 30-Mar-2006: Use meta-metadata to decide which metadata
     // query results can stay fresh until the next Ice Age.
     return (rel, mq) -> {
-      final Metadata metadata = requireNonNull(function.bind(rel, mq),
-          () -> "metadata must not be null, relClass=" + relClass
-              + ", metadataClass=" + metadataClass);
+      final Metadata metadata =
+          requireNonNull(function.bind(rel, mq),
+              () -> "metadata must not be null, relClass=" + relClass
+                  + ", metadataClass=" + metadataClass);
       return metadataClass.cast(
           Proxy.newProxyInstance(metadataClass.getClassLoader(),
               new Class[]{metadataClass},
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/ProxyingMetadataHandlerProvider.java b/core/src/main/java/org/apache/calcite/rel/metadata/ProxyingMetadataHandlerProvider.java
index fc426c3ad2..9c84cbf323 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/ProxyingMetadataHandlerProvider.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/ProxyingMetadataHandlerProvider.java
@@ -29,9 +29,10 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * A MetadataHandlerProvider built on a RelMetadataProvider.
  *
@@ -66,8 +67,9 @@ public class ProxyingMetadataHandlerProvider implements MetadataHandlerProvider
     final MetadataDef<?> def;
     try {
       field = metadataType.getField("DEF");
-      def = Objects.requireNonNull((MetadataDef<?>) field.get(null),
-          () -> "Unexpected failure. " + handlerClass);
+      def =
+          requireNonNull((MetadataDef<?>) field.get(null),
+              () -> "Unexpected failure. " + handlerClass);
     } catch (NoSuchFieldException | IllegalAccessException e) {
       throw new RuntimeException(e);
     }
@@ -76,30 +78,35 @@ public class ProxyingMetadataHandlerProvider implements MetadataHandlerProvider
     Map<String, Method> methodMap = methods.stream()
         .collect(Collectors.toMap(Method::getName, f -> f));
     InvocationHandler handler = (proxy, method, args) -> {
-      Method metadataMethod = Objects.requireNonNull(methodMap.get(method.getName()),
-          () -> "Not supported: " + method);
-      RelNode rel = Objects.requireNonNull((RelNode) args[0], "rel must be non null");
-      RelMetadataQuery mq = Objects.requireNonNull((RelMetadataQuery) args[1],
-          "mq must be non null");
+      Method metadataMethod =
+          requireNonNull(methodMap.get(method.getName()),
+              () -> "Not supported: " + method);
+      RelNode rel = requireNonNull((RelNode) args[0], "rel must be non null");
+      RelMetadataQuery mq =
+          requireNonNull((RelMetadataQuery) args[1], "mq must be non null");
 
       // using deprecated RelMetadataProvider method here as the non-deprecated methods completely
       // sidestep the purpose of RelMetadataProvider reflection-based functionality.
-      UnboundMetadata metadata = provider.apply(
-          (Class<? extends RelNode>) rel.getClass(),
-          (Class<? extends Metadata>) metadataType);
+      @SuppressWarnings({"unchecked", "rawtypes"})
+      UnboundMetadata metadata =
+          provider.apply(rel.getClass(),
+              (Class<? extends Metadata>) metadataType);
 
       if (metadata == null) {
-        Method handlerMethod = Arrays.stream(handlerClass.getMethods())
-            .filter(m -> m.getName().equals(metadataMethod.getName()))
-            .findFirst()
-            .orElseThrow(() -> new IllegalArgumentException("Unable to find method."));
+        Method handlerMethod =
+            Arrays.stream(handlerClass.getMethods())
+                .filter(m -> m.getName().equals(metadataMethod.getName()))
+                .findFirst()
+                .orElseThrow(()
+                    -> new IllegalArgumentException("Unable to find method."));
         throw new IllegalArgumentException(
-            String.format(Locale.ROOT, "No handler for "
-            + "method [%s] applied to argument of type [%s]; we recommend you create a "
-            + "catch-all (RelNode) handler", handlerMethod, rel.getClass()));
+            String.format(Locale.ROOT, "No handler for method [%s] applied to "
+                + "argument of type [%s]; we recommend you create a catch-all "
+                + "(RelNode) handler", handlerMethod, rel.getClass()));
       }
-      Metadata bound = Objects.requireNonNull(metadata, "expected defined metadata")
-          .bind(rel, mq);
+      Metadata bound =
+          requireNonNull(metadata, "expected defined metadata")
+              .bind(rel, mq);
 
       Object[] abbreviatedArgs = new Object[args.length - 2];
       System.arraycopy(args, 2, abbreviatedArgs, 0, abbreviatedArgs.length);
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
index 0ca61be941..715a83dab3 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
@@ -224,8 +224,8 @@ public class RelMdAllPredicates
         final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>();
         for (RelTableRef rightRef : tableRefs) {
           int shift = 0;
-          Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get(
-              rightRef.getQualifiedName());
+          Collection<RelTableRef> lRefs =
+              qualifiedNamesToRefs.get(rightRef.getQualifiedName());
           if (lRefs != null) {
             shift = lRefs.size();
           }
@@ -236,8 +236,9 @@ public class RelMdAllPredicates
             Util.transform(inputPreds.pulledUpPredicates,
                 e -> RexUtil.swapTableReferences(rexBuilder, e,
                     currentTablesMapping));
-        newPreds = newPreds.union(rexBuilder,
-            RelOptPredicateList.of(rexBuilder, updatedPreds));
+        newPreds =
+            newPreds.union(rexBuilder,
+                RelOptPredicateList.of(rexBuilder, updatedPreds));
       }
     }
 
@@ -249,12 +250,12 @@ public class RelMdAllPredicates
 
     // Infer column origin expressions for given references
     final Map<RexInputRef, Set<RexNode>> mapping = new LinkedHashMap<>();
-    final RelDataType fullRowType = SqlValidatorUtil.createJoinType(
-        rexBuilder.getTypeFactory(),
-        join.getLeft().getRowType(),
-        join.getRight().getRowType(),
-        null,
-        ImmutableList.of());
+    final RelDataType fullRowType =
+        SqlValidatorUtil.createJoinType(rexBuilder.getTypeFactory(),
+            join.getLeft().getRowType(),
+            join.getRight().getRowType(),
+            null,
+            ImmutableList.of());
     for (int idx : inputFieldsUsed) {
       final RexInputRef inputRef = RexInputRef.of(idx, fullRowType.getFieldList());
       final Set<RexNode> originalExprs = mq.getExpressionLineage(join, inputRef);
@@ -322,13 +323,14 @@ public class RelMdAllPredicates
         final Map<RelTableRef, RelTableRef> currentTablesMapping = new HashMap<>();
         for (RelTableRef rightRef : tableRefs) {
           int shift = 0;
-          Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get(
-              rightRef.getQualifiedName());
+          Collection<RelTableRef> lRefs =
+              qualifiedNamesToRefs.get(rightRef.getQualifiedName());
           if (lRefs != null) {
             shift = lRefs.size();
           }
           currentTablesMapping.put(rightRef,
-              RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber()));
+              RelTableRef.of(rightRef.getTable(),
+                  shift + rightRef.getEntityNumber()));
         }
         // Add to existing qualified names
         for (RelTableRef newRef : currentTablesMapping.values()) {
@@ -339,8 +341,9 @@ public class RelMdAllPredicates
             Util.transform(inputPreds.pulledUpPredicates,
                 e -> RexUtil.swapTableReferences(rexBuilder, e,
                     currentTablesMapping));
-        newPreds = newPreds.union(rexBuilder,
-            RelOptPredicateList.of(rexBuilder, updatedPreds));
+        newPreds =
+            newPreds.union(rexBuilder,
+                RelOptPredicateList.of(rexBuilder, updatedPreds));
       }
     }
     return newPreds;
@@ -349,7 +352,8 @@ public class RelMdAllPredicates
   /**
    * Extracts predicates for a Sort.
    */
-  public @Nullable RelOptPredicateList getAllPredicates(Sort sort, RelMetadataQuery mq) {
+  public @Nullable RelOptPredicateList getAllPredicates(Sort sort,
+      RelMetadataQuery mq) {
     return mq.getAllPredicates(sort.getInput());
   }
 
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
index 50217699c3..91be369434 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnUniqueness.java
@@ -253,9 +253,9 @@ public class RelMdColumnUniqueness
         RelDataType castType =
             typeFactory.createTypeWithNullability(
                 projExpr.getType(), true);
-        RelDataType origType = typeFactory.createTypeWithNullability(
-            castOperand.getType(),
-            true);
+        RelDataType origType =
+            typeFactory.createTypeWithNullability(castOperand.getType(),
+                true);
         if (castType.equals(origType)) {
           childColumns.set(((RexInputRef) castOperand).getIndex());
         }
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistribution.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistribution.java
index a0fdf630d6..92aa73c243 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistribution.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdDistribution.java
@@ -150,8 +150,8 @@ public class RelMdDistribution
     assert program.getCondition() != null || !program.getProjectList().isEmpty();
     final RelDistribution inputDistribution = mq.distribution(input);
     if (!program.getProjectList().isEmpty()) {
-      final Mappings.TargetMapping mapping = program.getPartialMapping(
-          input.getRowType().getFieldCount());
+      final Mappings.TargetMapping mapping =
+          program.getPartialMapping(input.getRowType().getFieldCount());
       return inputDistribution.apply(mapping);
     }
     return inputDistribution;
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 fe9ef70b90..16215e7c0b 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
@@ -134,9 +134,9 @@ public class RelMdExpressionLineage
     // Infer column origin expressions for given references
     final Map<RexInputRef, Set<RexNode>> mapping = new LinkedHashMap<>();
     for (int idx : inputFieldsUsed) {
-      final RexNode inputRef = RexTableInputRef.of(
-          RelTableRef.of(rel.getTable(), 0),
-          RexInputRef.of(idx, rel.getRowType().getFieldList()));
+      final RexNode inputRef =
+          RexTableInputRef.of(RelTableRef.of(rel.getTable(), 0),
+              RexInputRef.of(idx, rel.getRowType().getFieldList()));
       final RexInputRef ref = RexInputRef.of(idx, rel.getRowType().getFieldList());
       mapping.put(ref, ImmutableSet.of(inputRef));
     }
@@ -169,8 +169,9 @@ public class RelMdExpressionLineage
     // Infer column origin expressions for given references
     final Map<RexInputRef, Set<RexNode>> mapping = new LinkedHashMap<>();
     for (int idx : inputFieldsUsed) {
-      final RexInputRef inputRef = RexInputRef.of(rel.getGroupSet().nth(idx),
-          input.getRowType().getFieldList());
+      final RexInputRef inputRef =
+          RexInputRef.of(rel.getGroupSet().nth(idx),
+              input.getRowType().getFieldList());
       final Set<RexNode> originalExprs = mq.getExpressionLineage(input, inputRef);
       if (originalExprs == null) {
         // Bail out
@@ -202,15 +203,14 @@ public class RelMdExpressionLineage
     if (rel.getJoinType().isOuterJoin()) {
       // If we reference the inner side, we will bail out
       if (rel.getJoinType() == JoinRelType.LEFT) {
-        ImmutableBitSet rightFields = ImmutableBitSet.range(
-            nLeftColumns, rel.getRowType().getFieldCount());
+        ImmutableBitSet rightFields =
+            ImmutableBitSet.range(nLeftColumns, rel.getRowType().getFieldCount());
         if (inputFieldsUsed.intersects(rightFields)) {
           // We cannot map origin of this expression.
           return null;
         }
       } else if (rel.getJoinType() == JoinRelType.RIGHT) {
-        ImmutableBitSet leftFields = ImmutableBitSet.range(
-            0, nLeftColumns);
+        ImmutableBitSet leftFields = ImmutableBitSet.range(0, nLeftColumns);
         if (inputFieldsUsed.intersects(leftFields)) {
           // We cannot map origin of this expression.
           return null;
@@ -239,8 +239,8 @@ public class RelMdExpressionLineage
     }
     for (RelTableRef rightRef : rightTableRefs) {
       int shift = 0;
-      Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get(
-          rightRef.getQualifiedName());
+      Collection<RelTableRef> lRefs =
+          qualifiedNamesToRefs.get(rightRef.getQualifiedName());
       if (lRefs != null) {
         shift = lRefs.size();
       }
@@ -262,7 +262,8 @@ public class RelMdExpressionLineage
         mapping.put(RexInputRef.of(idx, rel.getRowType().getFieldList()), originalExprs);
       } else {
         // Right input.
-        final RexInputRef inputRef = RexInputRef.of(idx - nLeftColumns,
+        final RexInputRef inputRef =
+            RexInputRef.of(idx - nLeftColumns,
                 rightInput.getRowType().getFieldList());
         final Set<RexNode> originalExprs = mq.getExpressionLineage(rightInput, inputRef);
         if (originalExprs == null) {
@@ -271,16 +272,17 @@ public class RelMdExpressionLineage
         }
         // Right input references might need to be updated if there are
         // table names clashes with left input
-        final RelDataType fullRowType = SqlValidatorUtil.createJoinType(
-            rexBuilder.getTypeFactory(),
-            rel.getLeft().getRowType(),
-            rel.getRight().getRowType(),
-            null,
-            ImmutableList.of());
-        final Set<RexNode> updatedExprs = ImmutableSet.copyOf(
-            Util.transform(originalExprs, e ->
-                RexUtil.swapTableReferences(rexBuilder, e,
-                    currentTablesMapping)));
+        final RelDataType fullRowType =
+            SqlValidatorUtil.createJoinType(rexBuilder.getTypeFactory(),
+                rel.getLeft().getRowType(),
+                rel.getRight().getRowType(),
+                null,
+                ImmutableList.of());
+        final Set<RexNode> updatedExprs =
+            ImmutableSet.copyOf(
+                Util.transform(originalExprs, e ->
+                    RexUtil.swapTableReferences(rexBuilder, e,
+                        currentTablesMapping)));
         mapping.put(RexInputRef.of(idx, fullRowType), updatedExprs);
       }
     }
@@ -315,8 +317,8 @@ public class RelMdExpressionLineage
       }
       for (RelTableRef tableRef : tableRefs) {
         int shift = 0;
-        Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get(
-            tableRef.getQualifiedName());
+        Collection<RelTableRef> lRefs =
+            qualifiedNamesToRefs.get(tableRef.getQualifiedName());
         if (lRefs != null) {
           shift = lRefs.size();
         }
@@ -490,8 +492,9 @@ public class RelMdExpressionLineage
       RexNode expr, ImmutableBitSet predFieldsUsed, Map<RexInputRef, Set<RexNode>> mapping,
       Map<RexInputRef, RexNode> singleMapping) {
     final @KeyFor("mapping") RexInputRef inputRef = mapping.keySet().iterator().next();
-    final Set<RexNode> replacements = requireNonNull(mapping.remove(inputRef),
-        () -> "mapping.remove(inputRef) is null for " + inputRef);
+    final Set<RexNode> replacements =
+        requireNonNull(mapping.remove(inputRef),
+            () -> "mapping.remove(inputRef) is null for " + inputRef);
     Set<RexNode> result = new HashSet<>();
     assert !replacements.isEmpty();
     if (predFieldsUsed.indexOf(inputRef.getIndex()) != -1) {
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
index e69cd5646d..e64514def1 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPercentageOriginalRows.java
@@ -48,9 +48,7 @@ public class RelMdPercentageOriginalRows {
                   BuiltInMetadata.CumulativeCost.Handler.class),
               ReflectiveRelMetadataProvider.reflectiveSource(
                   new RelMdNonCumulativeCost(),
-                  BuiltInMetadata.NonCumulativeCost.Handler.class
-              )
-          ));
+                  BuiltInMetadata.NonCumulativeCost.Handler.class)));
 
   //~ Methods ----------------------------------------------------------------
 
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
index 969e8a5e5d..c530b38653 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
@@ -187,9 +187,10 @@ public class RelMdPredicates
     final List<RexNode> projectPullUpPredicates = new ArrayList<>();
 
     ImmutableBitSet.Builder columnsMappedBuilder = ImmutableBitSet.builder();
-    Mapping m = Mappings.create(MappingType.PARTIAL_FUNCTION,
-        input.getRowType().getFieldCount(),
-        project.getRowType().getFieldCount());
+    Mapping m =
+        Mappings.create(MappingType.PARTIAL_FUNCTION,
+            input.getRowType().getFieldCount(),
+            project.getRowType().getFieldCount());
 
     for (Ord<RexNode> expr : Ord.zip(project.getProjects())) {
       if (expr.e instanceof RexInputRef) {
@@ -355,8 +356,10 @@ public class RelMdPredicates
       // no rows!) but not on the output (there is one row).
       return RelOptPredicateList.EMPTY;
     }
-    Mapping m = Mappings.create(MappingType.PARTIAL_FUNCTION,
-        input.getRowType().getFieldCount(), agg.getRowType().getFieldCount());
+    Mapping m =
+        Mappings.create(MappingType.PARTIAL_FUNCTION,
+            input.getRowType().getFieldCount(),
+            agg.getRowType().getFieldCount());
 
     int i = 0;
     for (int j : groupKeys) {
@@ -571,12 +574,13 @@ public class RelMdPredicates
       nFieldsLeft = joinRel.getLeft().getRowType().getFieldList().size();
       nFieldsRight = joinRel.getRight().getRowType().getFieldList().size();
       nSysFields = joinRel.getSystemFieldList().size();
-      leftFieldsBitSet = ImmutableBitSet.range(nSysFields,
-          nSysFields + nFieldsLeft);
-      rightFieldsBitSet = ImmutableBitSet.range(nSysFields + nFieldsLeft,
-          nSysFields + nFieldsLeft + nFieldsRight);
-      allFieldsBitSet = ImmutableBitSet.range(0,
-          nSysFields + nFieldsLeft + nFieldsRight);
+      leftFieldsBitSet =
+          ImmutableBitSet.range(nSysFields, nSysFields + nFieldsLeft);
+      rightFieldsBitSet =
+          ImmutableBitSet.range(nSysFields + nFieldsLeft,
+              nSysFields + nFieldsLeft + nFieldsRight);
+      allFieldsBitSet =
+          ImmutableBitSet.range(0, nSysFields + nFieldsLeft + nFieldsRight);
 
       exprFields = new HashMap<>();
       allExprs = new HashSet<>();
@@ -584,10 +588,12 @@ public class RelMdPredicates
       if (leftPredicates == null) {
         leftChildPredicates = null;
       } else {
-        Mappings.TargetMapping leftMapping = Mappings.createShiftMapping(
-            nSysFields + nFieldsLeft, nSysFields, 0, nFieldsLeft);
-        leftChildPredicates = leftPredicates.accept(
-            new RexPermuteInputsShuttle(leftMapping, joinRel.getInput(0)));
+        Mappings.TargetMapping leftMapping =
+            Mappings.createShiftMapping(nSysFields + nFieldsLeft, nSysFields, 0,
+                nFieldsLeft);
+        leftChildPredicates =
+            leftPredicates.accept(
+                new RexPermuteInputsShuttle(leftMapping, joinRel.getInput(0)));
 
         allExprs.add(leftChildPredicates);
         for (RexNode r : RelOptUtil.conjunctions(leftChildPredicates)) {
@@ -598,11 +604,12 @@ public class RelMdPredicates
       if (rightPredicates == null) {
         rightChildPredicates = null;
       } else {
-        Mappings.TargetMapping rightMapping = Mappings.createShiftMapping(
-            nSysFields + nFieldsLeft + nFieldsRight,
-            nSysFields + nFieldsLeft, 0, nFieldsRight);
-        rightChildPredicates = rightPredicates.accept(
-            new RexPermuteInputsShuttle(rightMapping, joinRel.getInput(1)));
+        Mappings.TargetMapping rightMapping =
+            Mappings.createShiftMapping(nSysFields + nFieldsLeft + nFieldsRight,
+                nSysFields + nFieldsLeft, 0, nFieldsRight);
+        rightChildPredicates =
+            rightPredicates.accept(
+                new RexPermuteInputsShuttle(rightMapping, joinRel.getInput(1)));
 
         allExprs.add(rightChildPredicates);
         for (RexNode r : RelOptUtil.conjunctions(rightChildPredicates)) {
@@ -671,13 +678,14 @@ public class RelMdPredicates
         break;
       }
 
-      Mappings.TargetMapping rightMapping = Mappings.createShiftMapping(
-          nSysFields + nFieldsLeft + nFieldsRight,
-          0, nSysFields + nFieldsLeft, nFieldsRight);
+      Mappings.TargetMapping rightMapping =
+          Mappings.createShiftMapping(nSysFields + nFieldsLeft + nFieldsRight,
+              0, nSysFields + nFieldsLeft, nFieldsRight);
       final RexPermuteInputsShuttle rightPermute =
           new RexPermuteInputsShuttle(rightMapping, joinRel);
-      Mappings.TargetMapping leftMapping = Mappings.createShiftMapping(
-          nSysFields + nFieldsLeft, 0, nSysFields, nFieldsLeft);
+      Mappings.TargetMapping leftMapping =
+          Mappings.createShiftMapping(nSysFields + nFieldsLeft, 0, nSysFields,
+              nFieldsLeft);
       final RexPermuteInputsShuttle leftPermute =
           new RexPermuteInputsShuttle(leftMapping, joinRel);
       final List<RexNode> leftInferredPredicates = new ArrayList<>();
@@ -696,18 +704,18 @@ public class RelMdPredicates
       switch (joinType) {
       case SEMI:
         Iterable<RexNode> pulledUpPredicates;
-        pulledUpPredicates = Iterables.concat(
-            RelOptUtil.conjunctions(leftChildPredicates),
-            leftInferredPredicates);
+        pulledUpPredicates =
+            Iterables.concat(RelOptUtil.conjunctions(leftChildPredicates),
+                leftInferredPredicates);
         return RelOptPredicateList.of(rexBuilder, pulledUpPredicates,
             leftInferredPredicates, rightInferredPredicates);
       case INNER:
-        pulledUpPredicates = Iterables.concat(
-            RelOptUtil.conjunctions(leftChildPredicates),
-            RelOptUtil.conjunctions(rightChildPredicates),
-            RexUtil.retainDeterministic(
-                RelOptUtil.conjunctions(joinRel.getCondition())),
-            inferredPredicates);
+        pulledUpPredicates =
+            Iterables.concat(RelOptUtil.conjunctions(leftChildPredicates),
+                RelOptUtil.conjunctions(rightChildPredicates),
+                RexUtil.retainDeterministic(
+                    RelOptUtil.conjunctions(joinRel.getCondition())),
+                inferredPredicates);
         return RelOptPredicateList.of(rexBuilder, pulledUpPredicates,
           leftInferredPredicates, rightInferredPredicates);
       case LEFT:
@@ -741,8 +749,9 @@ public class RelMdPredicates
           continue;
         }
         for (Mapping m : mappings(r)) {
-          RexNode tr = r.accept(
-              new RexPermuteInputsShuttle(m, joinRel.getInput(0),
+          RexNode tr =
+              r.accept(
+                  new RexPermuteInputsShuttle(m, joinRel.getInput(0),
                   joinRel.getInput(1)));
           // Filter predicates can be already simplified, so we should work with
           // simplified RexNode versions as well. It also allows prevent of having
@@ -762,8 +771,9 @@ public class RelMdPredicates
     }
 
     Iterable<Mapping> mappings(final RexNode predicate) {
-      final ImmutableBitSet fields = requireNonNull(exprFields.get(predicate),
-          () -> "exprFields.get(predicate) is null for " + predicate);
+      final ImmutableBitSet fields =
+          requireNonNull(exprFields.get(predicate),
+              () -> "exprFields.get(predicate) is null for " + predicate);
       if (fields.cardinality() == 0) {
         return Collections.emptyList();
       }
@@ -779,12 +789,14 @@ public class RelMdPredicates
 
     @SuppressWarnings("JdkObsolete")
     private void markAsEquivalent(int p1, int p2) {
-      BitSet b = requireNonNull(equivalence.get(p1),
-          () -> "equivalence.get(p1) for " + p1);
+      BitSet b =
+          requireNonNull(equivalence.get(p1),
+              () -> "equivalence.get(p1) for " + p1);
       b.set(p2);
 
-      b = requireNonNull(equivalence.get(p2),
-          () -> "equivalence.get(p2) for " + p2);
+      b =
+          requireNonNull(equivalence.get(p2),
+              () -> "equivalence.get(p2) for " + p2);
       b.set(p1);
     }
 
@@ -860,8 +872,10 @@ public class RelMdPredicates
             .nextSetBit(i + 1), j++) {
           columns[j] = i;
           int fieldIndex = i;
-          columnSets[j] = requireNonNull(equivalence.get(i),
-              () -> "equivalence.get(i) is null for " + fieldIndex + ", " + equivalence);
+          columnSets[j] =
+              requireNonNull(equivalence.get(i),
+                  () -> "equivalence.get(i) is null for " + fieldIndex
+                      + ", " + equivalence);
           iterationIdx[j] = 0;
         }
         firstCall = true;
@@ -906,9 +920,10 @@ public class RelMdPredicates
       }
 
       private void initializeMapping() {
-        nextMapping = Mappings.create(MappingType.PARTIAL_FUNCTION,
-            nSysFields + nFieldsLeft + nFieldsRight,
-            nSysFields + nFieldsLeft + nFieldsRight);
+        nextMapping =
+            Mappings.create(MappingType.PARTIAL_FUNCTION,
+                nSysFields + nFieldsLeft + nFieldsRight,
+                nSysFields + nFieldsLeft + nFieldsRight);
         for (int i = 0; i < columnSets.length; i++) {
           BitSet c = columnSets[i];
           int t = c.nextSetBit(iterationIdx[i]);
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
index 4c78ab1b6c..ebcbdc187d 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdTableReferences.java
@@ -137,12 +137,13 @@ public class RelMdTableReferences
     }
     for (RelTableRef rightRef : rightTableRefs) {
       int shift = 0;
-      Collection<RelTableRef> lRefs = leftQualifiedNamesToRefs.get(rightRef.getQualifiedName());
+      Collection<RelTableRef> lRefs =
+          leftQualifiedNamesToRefs.get(rightRef.getQualifiedName());
       if (lRefs != null) {
         shift = lRefs.size();
       }
-      RelTableRef shiftTableRef = RelTableRef.of(
-          rightRef.getTable(), shift + rightRef.getEntityNumber());
+      RelTableRef shiftTableRef =
+          RelTableRef.of(rightRef.getTable(), shift + rightRef.getEntityNumber());
       assert !result.contains(shiftTableRef);
       result.add(shiftTableRef);
     }
@@ -171,13 +172,13 @@ public class RelMdTableReferences
       }
       for (RelTableRef tableRef : inputTableRefs) {
         int shift = 0;
-        Collection<RelTableRef> lRefs = qualifiedNamesToRefs.get(
-            tableRef.getQualifiedName());
+        Collection<RelTableRef> lRefs =
+            qualifiedNamesToRefs.get(tableRef.getQualifiedName());
         if (lRefs != null) {
           shift = lRefs.size();
         }
-        RelTableRef shiftTableRef = RelTableRef.of(
-            tableRef.getTable(), shift + tableRef.getEntityNumber());
+        RelTableRef shiftTableRef =
+            RelTableRef.of(tableRef.getTable(), shift + tableRef.getEntityNumber());
         assert !result.contains(shiftTableRef);
         result.add(shiftTableRef);
         currentTablesMapping.put(tableRef, shiftTableRef);
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
index 13374cc208..447619cef2 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUniqueKeys.java
@@ -157,12 +157,14 @@ public class RelMdUniqueKeys
       // select id, id, id, unique2, unique2
       // the resulting unique keys would be {{0},{3}}, {{0},{4}}, {{0},{1},{4}}, ...
 
-      Iterable<List<ImmutableBitSet>> product = Linq4j.product(
-          Util.transform(colMask,
-              in -> Util.filter(
-                  requireNonNull(mapInToOutPos.get(in),
-                      () -> "no entry for column " + in + " in mapInToOutPos: " + mapInToOutPos)
-                      .powerSet(), bs -> !bs.isEmpty())));
+      Iterable<List<ImmutableBitSet>> product =
+          Linq4j.product(
+              Util.transform(colMask, in ->
+                  Util.filter(
+                      requireNonNull(mapInToOutPos.get(in),
+                          () -> "no entry for column " + in
+                              + " in mapInToOutPos: " + mapInToOutPos).powerSet(),
+                      bs -> !bs.isEmpty())));
 
       resultBuilder.addAll(Util.transform(product, ImmutableBitSet::union));
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
index d53a2b81c2..36b2c3ded1 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
@@ -755,9 +755,10 @@ public class RelMdUtil {
     }
 
     if (useMaxNdv) {
-      distRowCount = NumberUtil.max(
-          mq.getDistinctRowCount(left, leftMask.build(), leftPred),
-          mq.getDistinctRowCount(right, rightMask.build(), rightPred));
+      distRowCount =
+          NumberUtil.max(
+              mq.getDistinctRowCount(left, leftMask.build(), leftPred),
+              mq.getDistinctRowCount(right, rightMask.build(), rightPred));
     } else {
       distRowCount =
         multiply(
@@ -858,8 +859,8 @@ public class RelMdUtil {
   public static double estimateFilteredRows(RelNode child, @Nullable RexNode condition,
       RelMetadataQuery mq) {
     @SuppressWarnings("unboxing.of.nullable")
-    double result = multiply(mq.getRowCount(child),
-        mq.getSelectivity(child, condition));
+    double result =
+        multiply(mq.getRowCount(child), mq.getSelectivity(child, condition));
     return result;
   }
 
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
index b1430f5a99..63976f7b3f 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMetadataQuery.java
@@ -878,8 +878,8 @@ public class RelMetadataQuery extends RelMetadataQueryBase {
       SqlExplainLevel explainLevel) {
     for (;;) {
       try {
-        Boolean b = explainVisibilityHandler.isVisibleInExplain(rel, this,
-            explainLevel);
+        Boolean b =
+            explainVisibilityHandler.isVisibleInExplain(rel, this, explainLevel);
         return b == null || b;
       } catch (MetadataHandlerProvider.NoHandler e) {
         explainVisibilityHandler = revise(BuiltInMetadata.ExplainVisibility.Handler.class);
diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
index dcaccbb480..183b7955f4 100644
--- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
+++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java
@@ -335,8 +335,9 @@ public abstract class MutableRels {
       RelSubset subset = (RelSubset) rel;
       RelNode best = subset.getBest();
       if (best == null) {
-        best = requireNonNull(subset.getOriginal(),
-            () -> "subset.getOriginal() is null for " + subset);
+        best =
+            requireNonNull(subset.getOriginal(),
+                () -> "subset.getOriginal() is null for " + subset);
       }
       return toMutable(best);
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
index efcdc0c93f..a1b2f8def4 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
@@ -128,8 +128,9 @@ public class RelToSqlConverter extends SqlImplementor
   @SuppressWarnings("argument.type.incompatible")
   public RelToSqlConverter(SqlDialect dialect) {
     super(dialect);
-    dispatcher = ReflectUtil.createMethodDispatcher(Result.class, this, "visit",
-        RelNode.class);
+    dispatcher =
+        ReflectUtil.createMethodDispatcher(Result.class, this, "visit",
+            RelNode.class);
   }
 
   /** Dispatches a call to the {@code visit(Xxx e)} method where {@code Xxx}
@@ -194,9 +195,10 @@ public class RelToSqlConverter extends SqlImplementor
         return id;
       }
       if (tableAlias.equals(id.names.get(0))) {
-        int index = requireNonNull(
-            tableType.getField(id.names.get(1), false, false),
-            () -> "field " + id.names.get(1) + " is not found in " + tableType)
+        int index =
+            requireNonNull(tableType.getField(id.names.get(1), false, false),
+                () -> "field " + id.names.get(1) + " is not found in "
+                    + tableType)
             .getIndex();
         SqlNode selectItem = source.get(index);
         if (selectItem.getKind() == SqlKind.AS) {
@@ -260,8 +262,9 @@ public class RelToSqlConverter extends SqlImplementor
     SqlNode sqlCondition =
         convertConditionToSqlNode(e.getCondition(), leftContext, rightContext);
     if (leftResult.neededAlias != null) {
-      SqlShuttle visitor = new AliasReplacementShuttle(leftResult.neededAlias,
-          e.getLeft().getRowType(), sqlSelect.getSelectList());
+      SqlShuttle visitor =
+          new AliasReplacementShuttle(leftResult.neededAlias,
+              e.getLeft().getRowType(), sqlSelect.getSelectList());
       sqlCondition = sqlCondition.accept(visitor);
     }
     SqlNode fromPart = rightResult.asFrom();
@@ -271,9 +274,9 @@ public class RelToSqlConverter extends SqlImplementor
       existsSqlSelect.setSelectList(
           new SqlNodeList(ImmutableList.of(ONE), POS));
       if (existsSqlSelect.getWhere() != null) {
-        sqlCondition = SqlStdOperatorTable.AND.createCall(POS,
-            existsSqlSelect.getWhere(),
-            sqlCondition);
+        sqlCondition =
+            SqlStdOperatorTable.AND.createCall(POS, existsSqlSelect.getWhere(),
+                sqlCondition);
       }
       existsSqlSelect.setWhere(sqlCondition);
     } else {
@@ -289,9 +292,9 @@ public class RelToSqlConverter extends SqlImplementor
       sqlCondition = SqlStdOperatorTable.NOT.createCall(POS, sqlCondition);
     }
     if (sqlSelect.getWhere() != null) {
-      sqlCondition = SqlStdOperatorTable.AND.createCall(POS,
-          sqlSelect.getWhere(),
-          sqlCondition);
+      sqlCondition =
+          SqlStdOperatorTable.AND.createCall(POS, sqlSelect.getWhere(),
+              sqlCondition);
     }
     sqlSelect.setWhere(sqlCondition);
     final SqlNode resultNode =
@@ -416,8 +419,9 @@ public class RelToSqlConverter extends SqlImplementor
     if (input instanceof Aggregate) {
       final Aggregate aggregate = (Aggregate) input;
       final boolean ignoreClauses = aggregate.getInput() instanceof Project;
-      final Result x = visitInput(e, 0, isAnon(), ignoreClauses,
-          ImmutableSet.of(Clause.HAVING));
+      final Result x =
+          visitInput(e, 0, isAnon(), ignoreClauses,
+              ImmutableSet.of(Clause.HAVING));
       parseCorrelTable(e, x);
       final Builder builder = x.builder(e);
       x.asSelect().setHaving(
@@ -668,9 +672,12 @@ public class RelToSqlConverter extends SqlImplementor
     final ImmutableList<RelHint> hints = e.getHints();
     if (!hints.isEmpty()) {
       SqlParserPos pos = identifier.getParserPosition();
-      node = new SqlTableRef(pos, identifier,
-          SqlNodeList.of(pos, hints.stream().map(h -> RelToSqlConverter.toSqlHint(h, pos))
-              .collect(Collectors.toList())));
+      node =
+          new SqlTableRef(pos, identifier,
+              SqlNodeList.of(pos,
+                  hints.stream()
+                      .map(h -> RelToSqlConverter.toSqlHint(h, pos))
+                      .collect(Collectors.toList())));
     } else {
       node = identifier;
     }
@@ -790,20 +797,23 @@ public class RelToSqlConverter extends SqlImplementor
         }
         final SqlIdentifier dual = getDual();
         if (dual == null) {
-          query = new SqlSelect(POS, null,
-              new SqlNodeList(nullColumnNames, POS), null, null, null, null,
-              null, null, null, null, null, null);
+          query =
+              new SqlSelect(POS, null,
+                  new SqlNodeList(nullColumnNames, POS), null, null, null, null,
+                  null, null, null, null, null, null);
 
           // Wrap "SELECT 1 AS x"
           // as "SELECT * FROM (SELECT 1 AS x) AS t WHERE false"
-          query = new SqlSelect(POS, null, SqlNodeList.SINGLETON_STAR,
-              as(query, "t"), createAlwaysFalseCondition(), null, null,
-              null, null, null, null, null, null);
+          query =
+              new SqlSelect(POS, null, SqlNodeList.SINGLETON_STAR,
+                  as(query, "t"), createAlwaysFalseCondition(), null, null,
+                  null, null, null, null, null, null);
         } else {
-          query = new SqlSelect(POS, null,
-              new SqlNodeList(nullColumnNames, POS),
-              dual, createAlwaysFalseCondition(), null,
-              null, null, null, null, null, null, null);
+          query =
+              new SqlSelect(POS, null,
+                  new SqlNodeList(nullColumnNames, POS),
+                  dual, createAlwaysFalseCondition(), null,
+                  null, null, null, null, null, null, null);
         }
       } else if (list.size() == 1) {
         query = list.get(0);
@@ -936,8 +946,8 @@ public class RelToSqlConverter extends SqlImplementor
         }
       }
     }
-    final Result x = visitInput(e, 0, Clause.ORDER_BY, Clause.OFFSET,
-        Clause.FETCH);
+    final Result x =
+        visitInput(e, 0, Clause.ORDER_BY, Clause.OFFSET, Clause.FETCH);
     final Builder builder = x.builder(e);
     if (stack.size() != 1
         && builder.select.getSelectList().equals(SqlNodeList.SINGLETON_STAR)) {
@@ -1079,20 +1089,23 @@ public class RelToSqlConverter extends SqlImplementor
     if (e.getOrderKeys() != null) {
       for (RelFieldCollation fc : e.getOrderKeys().getFieldCollations()) {
         if (fc.nullDirection != RelFieldCollation.NullDirection.UNSPECIFIED) {
-          boolean first = fc.nullDirection == RelFieldCollation.NullDirection.FIRST;
+          boolean first =
+              fc.nullDirection == RelFieldCollation.NullDirection.FIRST;
           SqlNode nullDirectionNode =
               dialect.emulateNullDirection(context.field(fc.getFieldIndex()),
                   first, fc.direction.isDescending());
           if (nullDirectionNode != null) {
             orderBySqlList.add(nullDirectionNode);
-            fc = new RelFieldCollation(fc.getFieldIndex(), fc.getDirection(),
-                RelFieldCollation.NullDirection.UNSPECIFIED);
+            fc =
+                new RelFieldCollation(fc.getFieldIndex(), fc.getDirection(),
+                    RelFieldCollation.NullDirection.UNSPECIFIED);
           }
         }
         orderBySqlList.add(context.toSql(fc));
       }
     }
-    final SqlNodeList orderByList = new SqlNodeList(orderBySqlList, SqlParserPos.ZERO);
+    final SqlNodeList orderByList =
+        new SqlNodeList(orderBySqlList, SqlParserPos.ZERO);
 
     final SqlLiteral rowsPerMatch = e.isAllRows()
         ? SqlMatchRecognize.RowsPerMatchOption.ALL_ROWS.symbol(POS)
@@ -1105,8 +1118,10 @@ public class RelToSqlConverter extends SqlImplementor
       after = SqlLiteral.createSymbol(value, POS);
     } else {
       RexCall call = (RexCall) e.getAfter();
-      String operand = requireNonNull(stringValue(call.getOperands().get(0)),
-          () -> "non-null string value expected for 0th operand of AFTER call " + call);
+      String operand =
+          requireNonNull(stringValue(call.getOperands().get(0)),
+              () -> "non-null string expected for 0th operand of AFTER call "
+                  + call);
       after = call.getOperator().createCall(POS, new SqlIdentifier(operand, POS));
     }
 
@@ -1147,9 +1162,10 @@ public class RelToSqlConverter extends SqlImplementor
       patternDefList.add(as(sqlNode, alias));
     }
 
-    final SqlNode matchRecognize = new SqlMatchRecognize(POS, tableRef,
-        pattern, strictStart, strictEnd, patternDefList, measureList, after,
-        subsetList, rowsPerMatch, partitionList, orderByList, interval);
+    final SqlNode matchRecognize =
+        new SqlMatchRecognize(POS, tableRef,
+            pattern, strictStart, strictEnd, patternDefList, measureList, after,
+            subsetList, rowsPerMatch, partitionList, orderByList, interval);
     return result(matchRecognize, Expressions.list(Clause.FROM), e, null);
   }
 
@@ -1160,9 +1176,12 @@ public class RelToSqlConverter extends SqlImplementor
 
   public Result visit(Uncollect e) {
     final Result x = visitInput(e, 0);
-    final SqlNode unnestNode = SqlStdOperatorTable.UNNEST.createCall(POS, x.asStatement());
-    final List<SqlNode> operands = createAsFullOperands(e.getRowType(), unnestNode,
-        requireNonNull(x.neededAlias, () -> "x.neededAlias is null, node is " + x.node));
+    final SqlNode unnestNode =
+        SqlStdOperatorTable.UNNEST.createCall(POS, x.asStatement());
+    final List<SqlNode> operands =
+        createAsFullOperands(e.getRowType(), unnestNode,
+            requireNonNull(x.neededAlias,
+                () -> "x.neededAlias is null, node is " + x.node));
     final SqlNode asNode = SqlStdOperatorTable.AS.createCall(POS, operands);
     return result(asNode, ImmutableList.of(Clause.FROM), e, null);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
index 52266cb6f9..6af0bd989e 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
@@ -799,8 +799,9 @@ public abstract class SqlImplementor {
         break;
       }
       if (not) {
-        op = requireNonNull(getInverseOperator(call),
-            () -> "unable to negate " + call.getKind());
+        op =
+            requireNonNull(getInverseOperator(call),
+                () -> "unable to negate " + call.getKind());
       }
       final List<SqlNode> nodeList = toSql(program, call.getOperands());
       switch (call.getKind()) {
@@ -951,9 +952,11 @@ public abstract class SqlImplementor {
 
       for (Window.RexWinAggCall winAggCall: group.aggCalls) {
         SqlAggFunction aggFunction = (SqlAggFunction) winAggCall.getOperator();
-        final SqlWindow sqlWindow = SqlWindow.create(null, null,
-                new SqlNodeList(partitionKeys, POS), new SqlNodeList(orderByKeys, POS),
-                isRows, lowerBound, upperBound, allowPartial, POS);
+        final SqlWindow sqlWindow =
+                SqlWindow.create(null, null,
+                    new SqlNodeList(partitionKeys, POS),
+                    new SqlNodeList(orderByKeys, POS),
+                    isRows, lowerBound, upperBound, allowPartial, POS);
         if (aggFunction.allowsFraming()) {
           lowerBound = createSqlWindowBound(group.lowerBound);
           upperBound = createSqlWindowBound(group.upperBound);
@@ -986,8 +989,8 @@ public abstract class SqlImplementor {
 
     private SqlCall toSql(@Nullable RexProgram program, RexOver rexOver) {
       final RexWindow rexWindow = rexOver.getWindow();
-      final SqlNodeList partitionList = new SqlNodeList(
-          toSql(program, rexWindow.partitionKeys), POS);
+      final SqlNodeList partitionList =
+          new SqlNodeList(toSql(program, rexWindow.partitionKeys), POS);
 
       List<SqlNode> orderNodes = Expressions.list();
       if (rexWindow.orderKeys != null) {
@@ -1018,8 +1021,9 @@ public abstract class SqlImplementor {
         upperBound = createSqlWindowBound(rexWindow.getUpperBound());
       }
 
-      final SqlWindow sqlWindow = SqlWindow.create(null, null, partitionList,
-          orderList, isRows, lowerBound, upperBound, allowPartial, POS);
+      final SqlWindow sqlWindow =
+          SqlWindow.create(null, null, partitionList,
+              orderList, isRows, lowerBound, upperBound, allowPartial, POS);
 
       final List<SqlNode> nodeList = toSql(program, rexOver.getOperands());
       return createOverCall(sqlAggregateFunction, nodeList, sqlWindow, rexOver.isDistinct());
@@ -1035,10 +1039,8 @@ public abstract class SqlImplementor {
       }
       SqlCall aggFunctionCall;
       if (isDistinct) {
-        aggFunctionCall = op.createCall(
-            SqlSelectKeyword.DISTINCT.symbol(POS),
-            POS,
-            operands);
+        aggFunctionCall =
+            op.createCall(SqlSelectKeyword.DISTINCT.symbol(POS), POS, operands);
       } else {
         aggFunctionCall = op.createCall(POS, operands);
       }
@@ -1126,9 +1128,9 @@ public abstract class SqlImplementor {
                 first, field.direction.isDescending());
         if (nullDirectionNode != null) {
           orderByList.add(nullDirectionNode);
-          field = new RelFieldCollation(field.getFieldIndex(),
-              field.getDirection(),
-              RelFieldCollation.NullDirection.UNSPECIFIED);
+          field =
+              new RelFieldCollation(field.getFieldIndex(), field.getDirection(),
+                  RelFieldCollation.NullDirection.UNSPECIFIED);
         }
       }
       orderByList.add(toSql(field));
@@ -1141,9 +1143,10 @@ public abstract class SqlImplementor {
       SqlNode nullDirectionNode = null;
       if (field.getNullDirection() != RelFieldCollation.NullDirection.UNSPECIFIED) {
         final boolean first =
-                  field.getNullDirection() == RelFieldCollation.NullDirection.FIRST;
-        nullDirectionNode = dialect.emulateNullDirection(
-                node, first, field.getDirection().isDescending());
+            field.getNullDirection() == RelFieldCollation.NullDirection.FIRST;
+        nullDirectionNode =
+            dialect.emulateNullDirection(node, first,
+                field.getDirection().isDescending());
       }
       if (nullDirectionNode != null) {
         orderByList.add(nullDirectionNode);
@@ -1171,12 +1174,14 @@ public abstract class SqlImplementor {
     /** Converts a call to an aggregate function, with a given list of operands,
      * to an expression. */
     private SqlCall toSql(SqlOperator op, boolean distinct,
-        List<SqlNode> operandList, int filterArg, RelCollation collation, boolean approximate) {
+        List<SqlNode> operandList, int filterArg, RelCollation collation,
+        boolean approximate) {
       final SqlLiteral qualifier =
           distinct ? SqlSelectKeyword.DISTINCT.symbol(POS) : null;
       if (op instanceof SqlSumEmptyIsZeroAggFunction) {
-        final SqlNode node = toSql(SqlStdOperatorTable.SUM, distinct,
-            operandList, filterArg, collation, approximate);
+        final SqlNode node =
+            toSql(SqlStdOperatorTable.SUM, distinct, operandList, filterArg,
+                collation, approximate);
         return SqlStdOperatorTable.COALESCE.createCall(POS, node, ZERO);
       }
 
@@ -1219,8 +1224,8 @@ public abstract class SqlImplementor {
         call2 = call;
       } else {
         assert dialect.supportsAggregateFunctionFilter(); // we checked above
-        call2 = SqlStdOperatorTable.FILTER.createCall(POS, call,
-            field(filterArg));
+        call2 =
+            SqlStdOperatorTable.FILTER.createCall(POS, call, field(filterArg));
       }
 
       // Handle collation
@@ -1388,8 +1393,10 @@ public abstract class SqlImplementor {
     default:
       break;
     }
-    SqlTypeFamily family = requireNonNull(typeName.getFamily(),
-        () -> "literal " + literal + " has null SqlTypeFamily, and is SqlTypeName is " + typeName);
+    SqlTypeFamily family =
+        requireNonNull(typeName.getFamily(),
+            () -> "literal " + literal
+                + " has null SqlTypeFamily, and is SqlTypeName is " + typeName);
     switch (family) {
     case CHARACTER:
       return SqlLiteral.createCharString((String) castNonNull(literal.getValue2()), POS);
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java
index d2056894c0..1ebe303a5c 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java
@@ -167,8 +167,10 @@ public class AggregateCaseToFilterRule
     // latter is present.
     final RexNode filter;
     if (aggregateCall.filterArg >= 0) {
-      filter = rexBuilder.makeCall(SqlStdOperatorTable.AND,
-          project.getProjects().get(aggregateCall.filterArg), filterFromCase);
+      filter =
+          rexBuilder.makeCall(SqlStdOperatorTable.AND,
+              project.getProjects().get(aggregateCall.filterArg),
+              filterFromCase);
     } else {
       filter = filterFromCase;
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
index ae2ce09efb..51e1132ba6 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
@@ -491,9 +491,10 @@ public final class AggregateExpandDistinctAggregatesRule
         RexNode expr = relBuilder.equals(nodeZ, relBuilder.literal(v));
         if (distinctFilterArg > -1) {
           // 'AND' the filter of the distinct aggregate call and the group value.
-          expr = relBuilder.and(expr,
-              relBuilder.call(SqlStdOperatorTable.IS_TRUE,
-                  relBuilder.field(distinctFilterArg)));
+          expr =
+              relBuilder.and(expr,
+                  relBuilder.call(SqlStdOperatorTable.IS_TRUE,
+                      relBuilder.field(distinctFilterArg)));
         }
         // "f" means filter.
         nodes.add(
@@ -513,16 +514,18 @@ public final class AggregateExpandDistinctAggregatesRule
       if (!aggCall.isDistinct()) {
         aggregation = SqlStdOperatorTable.MIN;
         newArgList = ImmutableIntList.of(x++);
-        newFilterArg = requireNonNull(filters.get(Pair.of(groupSet, -1)),
-            "filters.get(Pair.of(groupSet, -1))");
+        newFilterArg =
+            requireNonNull(filters.get(Pair.of(groupSet, -1)),
+                "filters.get(Pair.of(groupSet, -1))");
       } else {
         aggregation = aggCall.getAggregation();
         newArgList = remap(fullGroupSet, aggCall.getArgList());
         final ImmutableBitSet newGroupSet = ImmutableBitSet.of(aggCall.getArgList())
             .setIf(aggCall.filterArg, aggCall.filterArg >= 0)
             .union(groupSet);
-        newFilterArg = requireNonNull(filters.get(Pair.of(newGroupSet, aggCall.filterArg)),
-            "filters.get(of(newGroupSet, aggCall.filterArg))");
+        newFilterArg =
+            requireNonNull(filters.get(Pair.of(newGroupSet, aggCall.filterArg)),
+                "filters.get(of(newGroupSet, aggCall.filterArg))");
       }
       final AggregateCall newCall =
           AggregateCall.create(aggregation, false,
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java
index f6a8c2ee5a..1089285489 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java
@@ -398,13 +398,15 @@ public class AggregateExpandWithinDistinctRule
             b.equals(
                 b.field(grouping),
                 b.literal(
-                    groupValue(fullGroupList, union(aggregate.getGroupSet(), c.distinctKeys))));
+                    groupValue(fullGroupList,
+                        union(aggregate.getGroupSet(), c.distinctKeys))));
         filters.add(groupFilter);
       }
       RelBuilder.AggCall aggCall;
       if (c.distinctKeys == null) {
-        aggCall = b.aggregateCall(SqlStdOperatorTable.MIN,
-            b.field(registrar.getAgg(i)));
+        aggCall =
+            b.aggregateCall(SqlStdOperatorTable.MIN,
+                b.field(registrar.getAgg(i)));
       } else {
         // The inputs to this aggregate are outputs from MIN() calls from the
         // inner agg, and MIN() returns null iff it has no non-null inputs,
@@ -415,12 +417,13 @@ public class AggregateExpandWithinDistinctRule
         // ignore null inputs, we add a filter based on a COUNT() in the inner
         // aggregate.
         aggCall =
-            b.aggregateCall(
-                c.getAggregation(),
+            b.aggregateCall(c.getAggregation(),
                 b.fields(registrar.fields(c.getArgList(), c.filterArg)));
 
         if (mustBeCounted(c)) {
-          filters.add(b.greaterThan(b.field(registrar.getCount(c.filterArg)), b.literal(0)));
+          filters.add(
+              b.greaterThan(b.field(registrar.getCount(c.filterArg)),
+                  b.literal(0)));
         }
 
         if (config.throwIfNotUnique()) {
@@ -434,7 +437,8 @@ public class AggregateExpandWithinDistinctRule
             }
             String message = "more than one distinct value in agg UNIQUE_VALUE";
             filters.add(
-                b.call(SqlInternalOperators.THROW_UNLESS, isUniqueCondition, b.literal(message)));
+                b.call(SqlInternalOperators.THROW_UNLESS, isUniqueCondition,
+                    b.literal(message)));
           }
         }
       }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
index c253abc67e..9fe4bcc194 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
@@ -98,14 +98,14 @@ public class AggregateFilterTransposeRule
     final Aggregate newAggregate =
         aggregate.copy(aggregate.getTraitSet(), input,
             newGroupSet, null, aggregate.getAggCallList());
-    final Mappings.TargetMapping mapping = Mappings.target(
-        newGroupSet::indexOf,
-        input.getRowType().getFieldCount(),
-        newGroupSet.cardinality());
+    final Mappings.TargetMapping mapping =
+        Mappings.target(newGroupSet::indexOf,
+            input.getRowType().getFieldCount(),
+            newGroupSet.cardinality());
     final RexNode newCondition =
         RexUtil.apply(mapping, filter.getCondition());
-    final Filter newFilter = filter.copy(filter.getTraitSet(),
-        newAggregate, newCondition);
+    final Filter newFilter =
+        filter.copy(filter.getTraitSet(), newAggregate, newCondition);
     if (allColumnsInAggregate && aggregate.getGroupType() == Group.SIMPLE) {
       // Everything needed by the filter is returned by the aggregate.
       assert newGroupSet.equals(aggregate.getGroupSet());
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinJoinRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinJoinRemoveRule.java
index 97da6a0c60..7e524e7407 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinJoinRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinJoinRemoveRule.java
@@ -128,8 +128,8 @@ public class AggregateJoinJoinRemoveRule
 
     int offset = bottomJoin.getRight().getRowType().getFieldCount();
     final RelBuilder relBuilder = call.builder();
-    RexNode condition = RexUtil.shift(topJoin.getCondition(),
-        leftBottomChildSize, -offset);
+    RexNode condition =
+        RexUtil.shift(topJoin.getCondition(), leftBottomChildSize, -offset);
     RelNode join = relBuilder.push(bottomJoin.getLeft())
         .push(topJoin.getRight())
         .join(topJoin.getJoinType(), condition)
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
index b052f8d1b1..2440cfbb75 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
@@ -103,9 +103,10 @@ public class AggregateJoinRemoveRule
 
     RelNode node;
     if (isLeftJoin) {
-      node = aggregate.copy(aggregate.getTraitSet(), join.getLeft(),
-          aggregate.getGroupSet(), aggregate.getGroupSets(),
-          aggregate.getAggCallList());
+      node =
+          aggregate.copy(aggregate.getTraitSet(), join.getLeft(),
+              aggregate.getGroupSet(), aggregate.getGroupSets(),
+              aggregate.getAggCallList());
     } else {
       final Map<Integer, Integer> map = new HashMap<>();
       allFields.forEach(index -> map.put(index, index - upper));
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
index 43c563f9a9..01fd8b7480 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java
@@ -171,8 +171,9 @@ public class AggregateJoinTransposeRule
     // Do the columns used by the join appear in the output of the aggregate?
     final ImmutableBitSet aggregateColumns = aggregate.getGroupSet();
     final RelMetadataQuery mq = call.getMetadataQuery();
-    final ImmutableBitSet keyColumns = keyColumns(aggregateColumns,
-        mq.getPulledUpPredicates(join).pulledUpPredicates);
+    final ImmutableBitSet keyColumns =
+        keyColumns(aggregateColumns,
+            mq.getPulledUpPredicates(join).pulledUpPredicates);
     final ImmutableBitSet joinColumns =
         RelOptUtil.InputFinder.bits(join.getCondition());
     final boolean allColumnsInAggregate =
@@ -254,8 +255,9 @@ public class AggregateJoinTransposeRule
               aggregation.unwrapOrThrow(SqlSplittableAggFunction.class);
           if (!aggCall.e.getArgList().isEmpty()
               && fieldSet.contains(ImmutableBitSet.of(aggCall.e.getArgList()))) {
-            final RexNode singleton = splitter.singleton(rexBuilder,
-                joinInput.getRowType(), aggCall.e.transform(mapping));
+            final RexNode singleton =
+                splitter.singleton(rexBuilder, joinInput.getRowType(),
+                    aggCall.e.transform(mapping));
 
             if (singleton instanceof RexInputRef) {
               final int index = ((RexInputRef) singleton).getIndex();
@@ -287,8 +289,9 @@ public class AggregateJoinTransposeRule
           final AggregateCall call1;
           if (fieldSet.contains(ImmutableBitSet.of(aggCall.e.getArgList()))) {
             final AggregateCall splitCall = splitter.split(aggCall.e, mapping);
-            call1 = splitCall.adaptTo(joinInput, splitCall.getArgList(),
-                splitCall.filterArg, oldGroupKeyCount, newGroupKeyCount);
+            call1 =
+                splitCall.adaptTo(joinInput, splitCall.getArgList(),
+                    splitCall.filterArg, oldGroupKeyCount, newGroupKeyCount);
           } else {
             call1 = splitter.other(rexBuilder.getTypeFactory(), aggCall.e);
           }
@@ -315,10 +318,10 @@ public class AggregateJoinTransposeRule
     }
 
     // Update condition
-    final Mapping mapping = (Mapping) Mappings.target(
-        map::get,
-        join.getRowType().getFieldCount(),
-        belowOffset);
+    final Mapping mapping =
+        (Mapping) Mappings.target(map::get,
+            join.getRowType().getFieldCount(),
+            belowOffset);
     final RexNode newCondition =
         RexUtil.apply(mapping, join.getCondition());
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
index 6cdf849be4..f92b2a74de 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
@@ -436,8 +436,9 @@ public class AggregateReduceFunctionsRule
             oldAggRel.getInput()::fieldIsNullable);
 
     final RelDataTypeFactory typeFactory = oldAggRel.getCluster().getTypeFactory();
-    final RelDataType avgType = typeFactory.createTypeWithNullability(
-        oldCall.getType(), numeratorRef.getType().isNullable());
+    final RelDataType avgType =
+        typeFactory.createTypeWithNullability(oldCall.getType(),
+            numeratorRef.getType().isNullable());
     numeratorRef = rexBuilder.ensureType(avgType, numeratorRef, true);
     final RexNode divideRef =
         rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, numeratorRef, denominatorRef);
@@ -533,8 +534,8 @@ public class AggregateReduceFunctionsRule
     final RexNode argRef =
         rexBuilder.ensureType(oldCallType, inputExprs.get(argOrdinal), true);
 
-    final RexNode argSquared = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY,
-        argRef, argRef);
+    final RexNode argSquared =
+        rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, argRef, argRef);
     final int argSquaredOrdinal = lookupOrAdd(inputExprs, argSquared);
 
     final AggregateCall sumArgSquaredAggCall =
@@ -594,8 +595,8 @@ public class AggregateReduceFunctionsRule
             aggCallMapping,
             oldAggRel.getInput()::fieldIsNullable);
 
-    final RexNode div = divide(biased, rexBuilder, sumArgSquared, sumSquaredArg,
-        countArg);
+    final RexNode div =
+        divide(biased, rexBuilder, sumArgSquared, sumSquaredArg, countArg);
 
     final RexNode result;
     if (sqrt) {
@@ -737,35 +738,44 @@ public class AggregateReduceFunctionsRule
     final RexNode argXArgY = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, argX, argY);
     final int argSquaredOrdinal = lookupOrAdd(inputExprs, argXArgY);
 
-    final RexNode argXAndYNotNullFilter = rexBuilder.makeCall(SqlStdOperatorTable.AND,
+    final RexNode argXAndYNotNullFilter =
         rexBuilder.makeCall(SqlStdOperatorTable.AND,
-            rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argX),
-            rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argY)),
+            rexBuilder.makeCall(SqlStdOperatorTable.AND,
+                rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argX),
+                rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argY)),
         rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argNullFilter));
-    final int argXAndYNotNullFilterOrdinal = lookupOrAdd(inputExprs, argXAndYNotNullFilter);
-    final RexNode sumXY = getSumAggregatedRexNodeWithBinding(
-        oldAggRel, oldCall, newCalls, aggCallMapping, argXArgY.getType(),
-        argSquaredOrdinal, argXAndYNotNullFilterOrdinal);
+    final int argXAndYNotNullFilterOrdinal =
+        lookupOrAdd(inputExprs, argXAndYNotNullFilter);
+    final RexNode sumXY =
+        getSumAggregatedRexNodeWithBinding(oldAggRel, oldCall, newCalls,
+            aggCallMapping, argXArgY.getType(),
+            argSquaredOrdinal, argXAndYNotNullFilterOrdinal);
     final RexNode sumXYCast = rexBuilder.ensureType(oldCallType, sumXY, true);
 
-    final RexNode sumX = getSumAggregatedRexNode(oldAggRel, oldCall,
-        newCalls, aggCallMapping, rexBuilder, xIndex, argXAndYNotNullFilterOrdinal);
+    final RexNode sumX =
+        getSumAggregatedRexNode(oldAggRel, oldCall, newCalls, aggCallMapping,
+            rexBuilder, xIndex, argXAndYNotNullFilterOrdinal);
     final RexNode sumY = xIndex == yIndex
         ? sumX
         : getSumAggregatedRexNode(oldAggRel, oldCall, newCalls,
             aggCallMapping, rexBuilder, yIndex, argXAndYNotNullFilterOrdinal);
 
-    final RexNode sumXSumY = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, sumX, sumY);
+    final RexNode sumXSumY =
+        rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, sumX, sumY);
 
-    final RexNode countArg = getRegrCountRexNode(oldAggRel, oldCall, newCalls, aggCallMapping,
-        ImmutableIntList.of(xIndex), argXAndYNotNullFilterOrdinal);
+    final RexNode countArg =
+        getRegrCountRexNode(oldAggRel, oldCall, newCalls, aggCallMapping,
+            ImmutableIntList.of(xIndex), argXAndYNotNullFilterOrdinal);
 
     RexLiteral zero = rexBuilder.makeExactLiteral(BigDecimal.ZERO);
     RexNode nul = rexBuilder.makeNullLiteral(zero.getType());
-    final RexNode avgSumXSumY = rexBuilder.makeCall(SqlStdOperatorTable.CASE,
-        rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, countArg, zero), nul,
+    final RexNode avgSumXSumY =
+        rexBuilder.makeCall(SqlStdOperatorTable.CASE,
+            rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, countArg, zero),
+            nul,
             rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, sumXSumY, countArg));
-    final RexNode avgSumXSumYCast = rexBuilder.ensureType(oldCallType, avgSumXSumY, true);
+    final RexNode avgSumXSumYCast =
+        rexBuilder.ensureType(oldCallType, avgSumXSumY, true);
     final RexNode result =
         rexBuilder.makeCall(SqlStdOperatorTable.MINUS, sumXYCast, avgSumXSumYCast);
     return rexBuilder.makeCast(oldCall.getType(), result);
@@ -798,28 +808,40 @@ public class AggregateReduceFunctionsRule
                 || fieldIsNullable.test(argYOrdinal));
     final RexNode argX = rexBuilder.ensureType(oldCallType, inputExprs.get(argXOrdinal), true);
     final RexNode argY = rexBuilder.ensureType(oldCallType, inputExprs.get(argYOrdinal), true);
-    final RexNode argXAndYNotNullFilter = rexBuilder.makeCall(SqlStdOperatorTable.AND,
-        rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argX),
-        rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argY));
-    final int argXAndYNotNullFilterOrdinal = lookupOrAdd(inputExprs, argXAndYNotNullFilter);
-    final RexNode argXY = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, argX, argY);
+    final RexNode argXAndYNotNullFilter =
+        rexBuilder.makeCall(SqlStdOperatorTable.AND,
+            rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argX),
+            rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, argY));
+    final int argXAndYNotNullFilterOrdinal =
+        lookupOrAdd(inputExprs, argXAndYNotNullFilter);
+    final RexNode argXY =
+        rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, argX, argY);
     final int argXYOrdinal = lookupOrAdd(inputExprs, argXY);
-    final RexNode sumXY = getSumAggregatedRexNodeWithBinding(oldAggRel, oldCall, newCalls,
-        aggCallMapping, argXY.getType(), argXYOrdinal, argXAndYNotNullFilterOrdinal);
-    final RexNode sumX = getSumAggregatedRexNode(oldAggRel, oldCall, newCalls,
-        aggCallMapping, rexBuilder, argXOrdinal, argXAndYNotNullFilterOrdinal);
-    final RexNode sumY = getSumAggregatedRexNode(oldAggRel, oldCall, newCalls,
-        aggCallMapping, rexBuilder, argYOrdinal, argXAndYNotNullFilterOrdinal);
-    final RexNode sumXSumY = rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, sumX, sumY);
-    final RexNode countArg = getRegrCountRexNode(oldAggRel, oldCall, newCalls, aggCallMapping,
-        ImmutableIntList.of(argXOrdinal, argYOrdinal),
-        argXAndYNotNullFilterOrdinal);
-    final RexNode result = divide(biased, rexBuilder, sumXY, sumXSumY, countArg);
+    final RexNode sumXY =
+        getSumAggregatedRexNodeWithBinding(oldAggRel, oldCall, newCalls,
+            aggCallMapping, argXY.getType(), argXYOrdinal,
+            argXAndYNotNullFilterOrdinal);
+    final RexNode sumX =
+        getSumAggregatedRexNode(oldAggRel, oldCall, newCalls,
+            aggCallMapping, rexBuilder, argXOrdinal,
+            argXAndYNotNullFilterOrdinal);
+    final RexNode sumY =
+        getSumAggregatedRexNode(oldAggRel, oldCall, newCalls,
+            aggCallMapping, rexBuilder, argYOrdinal,
+            argXAndYNotNullFilterOrdinal);
+    final RexNode sumXSumY =
+        rexBuilder.makeCall(SqlStdOperatorTable.MULTIPLY, sumX, sumY);
+    final RexNode countArg =
+        getRegrCountRexNode(oldAggRel, oldCall, newCalls,
+            aggCallMapping, ImmutableIntList.of(argXOrdinal, argYOrdinal),
+            argXAndYNotNullFilterOrdinal);
+    final RexNode result =
+        divide(biased, rexBuilder, sumXY, sumXSumY, countArg);
     return rexBuilder.makeCast(oldCall.getType(), result);
   }
 
-  private static RexNode divide(boolean biased, RexBuilder rexBuilder, RexNode sumXY,
-      RexNode sumXSumY, RexNode countArg) {
+  private static RexNode divide(boolean biased, RexBuilder rexBuilder,
+      RexNode sumXY, RexNode sumXSumY, RexNode countArg) {
     final RexNode avgSumSquaredArg =
          rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, sumXSumY, countArg);
     final RexNode diff =
@@ -834,8 +856,9 @@ public class AggregateReduceFunctionsRule
           rexBuilder.makeCall(SqlStdOperatorTable.MINUS, countArg, one);
       final RexNode countEqOne =
           rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, countArg, one);
-      denominator = rexBuilder.makeCall(SqlStdOperatorTable.CASE, countEqOne,
-          nul, countMinusOne);
+      denominator =
+          rexBuilder.makeCall(SqlStdOperatorTable.CASE, countEqOne, nul,
+              countMinusOne);
     }
     return rexBuilder.makeCall(SqlStdOperatorTable.DIVIDE, diff, denominator);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
index 1084270744..3b432da412 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
@@ -105,8 +105,9 @@ public class AggregateStarTableRule
     }
     final RelOptCluster cluster = scan.getCluster();
     final RelOptTable table = scan.getTable();
-    final RelOptLattice lattice = requireNonNull(planner.getLattice(table),
-        () -> "planner.getLattice(table) is null for " + table);
+    final RelOptLattice lattice =
+        requireNonNull(planner.getLattice(table),
+            () -> "planner.getLattice(table) is null for " + table);
     final List<Lattice.Measure> measures =
         lattice.lattice.toMeasures(aggregate.getAggCallList());
     final Pair<CalciteSchema.TableEntry, TileKey> pair =
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
index 215b12af99..fda5254c20 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java
@@ -172,9 +172,9 @@ public class AggregateUnionTransposeRule
     //   Union[...]
     //     Aggregate[groupSet=$1, ...]
     ImmutableBitSet groupSet = aggRel.getGroupSet();
-    Mapping topGroupMapping = Mappings.create(MappingType.INVERSE_SURJECTION,
-        union.getRowType().getFieldCount(),
-        aggRel.getGroupCount());
+    Mapping topGroupMapping =
+        Mappings.create(MappingType.INVERSE_SURJECTION,
+            union.getRowType().getFieldCount(), aggRel.getGroupCount());
     for (int i = 0; i < groupSet.cardinality(); i++) {
       topGroupMapping.set(groupSet.nth(i), i);
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java b/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
index 36c51f586f..9c51470f0a 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/DateRangeRules.java
@@ -159,9 +159,10 @@ public abstract class DateRangeRules {
     }
     final Map<RexNode, RangeSet<Calendar>> operandRanges = new HashMap<>();
     for (TimeUnitRange timeUnit : timeUnits) {
-      e = e.accept(
-          new ExtractShuttle(rexBuilder, timeUnit, operandRanges, timeUnits,
-              timeZone));
+      e =
+          e.accept(
+              new ExtractShuttle(rexBuilder, timeUnit, operandRanges, timeUnits,
+                  timeZone));
     }
     return e;
   }
@@ -320,8 +321,9 @@ public abstract class DateRangeRules {
             assert op1 instanceof RexCall;
             final RexCall subCall = (RexCall) op1;
             final RexLiteral flag = (RexLiteral) subCall.operands.get(1);
-            final TimeUnitRange timeUnit = (TimeUnitRange) requireNonNull(flag.getValue(),
-                () -> "timeUnit is null for " + subCall);
+            final TimeUnitRange timeUnit =
+                requireNonNull((TimeUnitRange) flag.getValue(),
+                    () -> "timeUnit is null for " + subCall);
             return compareFloorCeil(call.getKind().reverse(),
                 subCall.getOperands().get(0), (RexLiteral) op0,
                 timeUnit, op1.getKind() == SqlKind.FLOOR);
@@ -345,8 +347,9 @@ public abstract class DateRangeRules {
           if (isFloorCeilCall(op0)) {
             final RexCall subCall = (RexCall) op0;
             final RexLiteral flag = (RexLiteral) subCall.operands.get(1);
-            final TimeUnitRange timeUnit = (TimeUnitRange) requireNonNull(flag.getValue(),
-                () -> "timeUnit is null for " + subCall);
+            final TimeUnitRange timeUnit =
+                requireNonNull((TimeUnitRange) flag.getValue(),
+                    () -> "timeUnit is null for " + subCall);
             return compareFloorCeil(call.getKind(),
                 subCall.getOperands().get(0), (RexLiteral) op1,
                 timeUnit, op0.getKind() == SqlKind.FLOOR);
@@ -414,9 +417,10 @@ public abstract class DateRangeRules {
         for (RexNode operand : exprs) {
           RexNode clonedOperand = operand;
           for (TimeUnitRange timeUnit : timeUnitRanges) {
-            clonedOperand = clonedOperand.accept(
-                new ExtractShuttle(rexBuilder, timeUnit, operandRanges,
-                    timeUnitRanges, timeZone));
+            clonedOperand =
+                clonedOperand.accept(
+                    new ExtractShuttle(rexBuilder, timeUnit, operandRanges,
+                        timeUnitRanges, timeZone));
           }
           if ((clonedOperand != operand) && (update != null)) {
             update[0] = true;
@@ -654,8 +658,9 @@ public abstract class DateRangeRules {
                 "timeLiteral.getValueAs(Long.class)"));
       case DATE:
         // Cast date to timestamp with local time zone
-        final DateString d = requireNonNull(timeLiteral.getValueAs(DateString.class),
-            "timeLiteral.getValueAs(DateString.class)");
+        final DateString d =
+            requireNonNull(timeLiteral.getValueAs(DateString.class),
+                "timeLiteral.getValueAs(DateString.class)");
         return Util.calendar(d.getMillisSinceEpoch());
       default:
         throw Util.unexpected(timeLiteral.getTypeName());
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.java
index 56dfe157e1..a99b7be85d 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ExchangeRemoveConstantKeysRule.java
@@ -95,8 +95,8 @@ public class ExchangeRemoveConstantKeysRule
       return;
     }
 
-    final List<Integer> distributionKeys = simplifyDistributionKeys(
-        exchange.getDistribution(), constants);
+    final List<Integer> distributionKeys =
+        simplifyDistributionKeys(exchange.getDistribution(), constants);
 
     if (distributionKeys.size() != exchange.getDistribution().getKeys()
         .size()) {
@@ -136,8 +136,8 @@ public class ExchangeRemoveConstantKeysRule
     boolean hashDistribution = sortExchange.getDistribution().getType()
         == RelDistribution.Type.HASH_DISTRIBUTED;
     if (hashDistribution) {
-      distributionKeys = simplifyDistributionKeys(
-          sortExchange.getDistribution(), constants);
+      distributionKeys =
+          simplifyDistributionKeys(sortExchange.getDistribution(), constants);
       distributionSimplified =
           distributionKeys.size() != sortExchange.getDistribution().getKeys()
               .size();
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterMultiJoinMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterMultiJoinMergeRule.java
index 6b551d1c80..b3d70b0eca 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterMultiJoinMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterMultiJoinMergeRule.java
@@ -70,9 +70,8 @@ public class FilterMultiJoinMergeRule
 
     // Create a new post-join filter condition
     // Conditions are nullable, so ImmutableList can't be used here
-    List<@Nullable RexNode> filters = Arrays.asList(
-        filter.getCondition(),
-        multiJoin.getPostJoinFilter());
+    List<@Nullable RexNode> filters =
+        Arrays.asList(filter.getCondition(), multiJoin.getPostJoinFilter());
 
     final RexBuilder rexBuilder = multiJoin.getCluster().getRexBuilder();
     MultiJoin newMultiJoin =
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
index fcb85b2c41..cccbd6ee6e 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterTableScanRule.java
@@ -117,8 +117,8 @@ public class FilterTableScanRule
       projects = scan.identity();
     }
 
-    final Mapping mapping = Mappings.target(projects,
-        scan.getTable().getRowType().getFieldCount());
+    final Mapping mapping =
+        Mappings.target(projects, scan.getTable().getRowType().getFieldCount());
     filters.add(
         RexUtil.apply(mapping.inverse(), filter.getCondition()));
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
index c7460e7016..6902a5ef80 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinProjectTransposeRule.java
@@ -357,12 +357,10 @@ public class JoinProjectTransposeRule
         RexNode e = pair.left;
         if (adjustmentAmount != 0) {
           // shift the references by the adjustment amount
-          e = e.accept(
-              new RelOptUtil.RexInputConverter(
-                  rexBuilder,
-                  childFields,
-                  joinChildrenFields,
-                  adjustments));
+          e =
+              e.accept(
+                  new RelOptUtil.RexInputConverter(rexBuilder, childFields,
+                      joinChildrenFields, adjustments));
         }
         projects.add(Pair.of(e, pair.right));
       }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinPushTransitivePredicatesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinPushTransitivePredicatesRule.java
index f1ed025c32..b112e1d9d6 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinPushTransitivePredicatesRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinPushTransitivePredicatesRule.java
@@ -97,8 +97,9 @@ public class JoinPushTransitivePredicatesRule
       call.getPlanner().onCopy(curr, right);
     }
 
-    RelNode newRel = join.copy(join.getTraitSet(), join.getCondition(),
-        left, right, join.getJoinType(), join.isSemiJoinDone());
+    RelNode newRel =
+        join.copy(join.getTraitSet(), join.getCondition(), left, right,
+            join.getJoinType(), join.isSemiJoinDone());
     call.getPlanner().onCopy(join, newRel);
 
     call.transformTo(newRel);
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
index f06593511f..4504e0ceab 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/JoinToMultiJoinRule.java
@@ -518,8 +518,9 @@ public class JoinToMultiJoinRule
             multiJoinInputs.get(currInput).getRowType().getFieldCount();
       }
       final int key = currInput;
-      int[] refCounts = requireNonNull(refCountsMap.get(key),
-          () -> "refCountsMap.get(currInput) for " + key);
+      int[] refCounts =
+          requireNonNull(refCountsMap.get(key),
+              () -> "refCountsMap.get(currInput) for " + key);
       refCounts[i - startField] += joinCondRefCounts[i];
     }
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
index ed0c28db0c..4182a120cb 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptMultiJoin.java
@@ -807,9 +807,10 @@ public class LoptMultiJoin {
    * such a column mapping exists; otherwise, null is returned
    */
   public @Nullable Integer getRightColumnMapping(int rightFactor, int rightOffset) {
-    RemovableSelfJoin selfJoin = requireNonNull(removableSelfJoinPairs.get(rightFactor),
-        () -> "removableSelfJoinPairs.get(rightFactor) is null for " + rightFactor
-            + ", map=" + removableSelfJoinPairs);
+    RemovableSelfJoin selfJoin =
+        requireNonNull(removableSelfJoinPairs.get(rightFactor),
+            () -> "removableSelfJoinPairs.get(rightFactor) is null for "
+                + rightFactor + ", map=" + removableSelfJoinPairs);
     assert selfJoin.rightFactor == rightFactor;
     return selfJoin.columnMapping.get(rightOffset);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
index 34be2e811c..0ae3e76e58 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java
@@ -535,8 +535,9 @@ public class LoptOptimizeJoinRule
       for (int fieldPos = 0;
           fieldPos < multiJoin.getNumFieldsInJoinFactor(currFactor);
           fieldPos++) {
-        int newOffset = requireNonNull(factorToOffsetMap.get(currFactor),
-            () -> "factorToOffsetMap.get(currFactor)") + fieldPos;
+        int newOffset =
+            requireNonNull(factorToOffsetMap.get(currFactor),
+                "factorToOffsetMap.get(currFactor)") + fieldPos;
         if (leftFactor != null) {
           Integer leftOffset =
               multiJoin.getRightColumnMapping(currFactor, fieldPos);
@@ -1070,8 +1071,10 @@ public class LoptOptimizeJoinRule
     // half of the self-join.
     if (selfJoin) {
       BitSet selfJoinFactor = new BitSet(multiJoin.getNumJoinFactors());
-      Integer factor = requireNonNull(multiJoin.getOtherSelfJoinFactor(factorToAdd),
-          () -> "multiJoin.getOtherSelfJoinFactor(" + factorToAdd + ") is null");
+      Integer factor =
+          requireNonNull(multiJoin.getOtherSelfJoinFactor(factorToAdd),
+              () -> "multiJoin.getOtherSelfJoinFactor(" + factorToAdd
+                  + ") is null");
       selfJoinFactor.set(factor);
       if (multiJoin.hasAllFactors(left, selfJoinFactor)) {
         childNo = 0;
@@ -1233,8 +1236,9 @@ public class LoptOptimizeJoinRule
     // outer join condition
     RexNode condition;
     if ((joinType == JoinRelType.LEFT) || (joinType == JoinRelType.RIGHT)) {
-      condition = requireNonNull(multiJoin.getOuterJoinCond(factorToAdd),
-          "multiJoin.getOuterJoinCond(factorToAdd)");
+      condition =
+          requireNonNull(multiJoin.getOuterJoinCond(factorToAdd),
+              "multiJoin.getOuterJoinCond(factorToAdd)");
     } else {
       condition =
           addFilters(
@@ -1570,8 +1574,10 @@ public class LoptOptimizeJoinRule
       return null;
     }
 
-    int factIdx = requireNonNull(multiJoin.getJoinRemovalFactor(dimIdx),
-        () -> "multiJoin.getJoinRemovalFactor(dimIdx) for " + dimIdx + ", " + multiJoin);
+    int factIdx =
+        requireNonNull(multiJoin.getJoinRemovalFactor(dimIdx),
+            () -> "multiJoin.getJoinRemovalFactor(dimIdx) for " + dimIdx
+                + ", " + multiJoin);
     final List<Integer> joinOrder = factTree.getTreeOrder();
     assert joinOrder.contains(factIdx);
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java b/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java
index ce9c5c8e32..0ddebb8ac4 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/LoptSemiJoinOptimizer.java
@@ -576,16 +576,16 @@ public class LoptSemiJoinOptimizer {
         }
       }
 
-      // if a suitable dimension table has been found, associate it
+      // If a suitable dimension table has been found, associate it
       // with the fact table in the chosenSemiJoins array; also remove
-      // the entry from possibleSemiJoins so we won't chose it again;
-      // note that we create the SemiJoin using the chosen semijoins
+      // the entry from possibleSemiJoins, so we won't choose it again;
+      // note that we create the SemiJoin using the chosen semi-joins
       // already created for each factor so any chaining of filters will
-      // be accounted for
+      // be accounted for.
       if (bestDimIdx != -1) {
-        int bestDimIdxFinal = bestDimIdx;
-        LogicalJoin semiJoin = requireNonNull(possibleDimensions.get(bestDimIdxFinal),
-            () -> "possibleDimensions.get(" + bestDimIdxFinal + ") is null");
+        LogicalJoin semiJoin =
+            requireNonNull(possibleDimensions.get(bestDimIdx),
+                "possibleDimensions.get(bestDimIdx)");
         LogicalJoin chosenSemiJoin =
             LogicalJoin.create(factRel,
                 chosenSemiJoins[bestDimIdx],
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/MatchRule.java b/core/src/main/java/org/apache/calcite/rel/rules/MatchRule.java
index e6eb70c6c3..4557590a7a 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/MatchRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/MatchRule.java
@@ -43,13 +43,14 @@ public class MatchRule extends RelRule<MatchRule.Config>
 
   @Override public void onMatch(RelOptRuleCall call) {
     final LogicalMatch oldRel = call.rel(0);
-    final RelNode match = LogicalMatch.create(oldRel.getCluster(),
-        oldRel.getTraitSet(), oldRel.getInput(), oldRel.getRowType(),
-        oldRel.getPattern(), oldRel.isStrictStart(), oldRel.isStrictEnd(),
-        oldRel.getPatternDefinitions(), oldRel.getMeasures(),
-        oldRel.getAfter(), oldRel.getSubsets(), oldRel.isAllRows(),
-        oldRel.getPartitionKeys(), oldRel.getOrderKeys(),
-        oldRel.getInterval());
+    final RelNode match =
+        LogicalMatch.create(oldRel.getCluster(), oldRel.getTraitSet(),
+            oldRel.getInput(), oldRel.getRowType(),
+            oldRel.getPattern(), oldRel.isStrictStart(), oldRel.isStrictEnd(),
+            oldRel.getPatternDefinitions(), oldRel.getMeasures(),
+            oldRel.getAfter(), oldRel.getSubsets(), oldRel.isAllRows(),
+            oldRel.getPartitionKeys(), oldRel.getOrderKeys(),
+            oldRel.getInterval());
     call.transformTo(match);
   }
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
index a11ee95430..d856b52952 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/MaterializedViewFilterScanRule.java
@@ -84,8 +84,8 @@ public class MaterializedViewFilterScanRule
     final List<RelOptMaterialization> materializations =
         planner.getMaterializations();
     if (!materializations.isEmpty()) {
-      RelNode root = filter.copy(filter.getTraitSet(),
-          Collections.singletonList(scan));
+      RelNode root =
+          filter.copy(filter.getTraitSet(), Collections.singletonList(scan));
       List<RelOptMaterialization> applicableMaterializations =
           RelOptMaterializations.getApplicableMaterializations(root, materializations);
       for (RelOptMaterialization materialization : applicableMaterializations) {
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
index ad293bcc85..b80afeeb5a 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectCorrelateTransposeRule.java
@@ -118,10 +118,11 @@ public class ProjectCorrelateTransposeRule
             correlationId);
 
     // updates RexCorrelVariable and sets actual RelDataType for RexFieldAccess
-    rightProject = rightProject.accept(
-        new RelNodesExprsHandler(
-            new RexFieldAccessReplacer(correlate.getCorrelationId(),
-                rexCorrel, rexBuilder, requiredColsMap)));
+    rightProject =
+        rightProject.accept(
+            new RelNodesExprsHandler(
+                new RexFieldAccessReplacer(correlate.getCorrelationId(),
+                    rexCorrel, rexBuilder, requiredColsMap)));
 
     // create a new correlate with the projected children
     final Correlate newCorrelate =
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinJoinRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinJoinRemoveRule.java
index 870ebe697f..e59641ff06 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinJoinRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinJoinRemoveRule.java
@@ -127,12 +127,13 @@ public class ProjectJoinJoinRemoveRule
     int offset = bottomJoin.getRight().getRowType().getFieldCount();
     final RelBuilder relBuilder = call.builder();
 
-    final RexNode condition = RexUtil.shift(topJoin.getCondition(),
-        leftBottomChildSize, -offset);
-    final RelNode join = relBuilder.push(bottomJoin.getLeft())
-        .push(topJoin.getRight())
-        .join(topJoin.getJoinType(), condition)
-        .build();
+    final RexNode condition =
+        RexUtil.shift(topJoin.getCondition(), leftBottomChildSize, -offset);
+    final RelNode join =
+        relBuilder.push(bottomJoin.getLeft())
+            .push(topJoin.getRight())
+            .join(topJoin.getJoinType(), condition)
+            .build();
 
     final List<RexNode> newExprs = project.getProjects().stream()
         .map(expr -> RexUtil.shift(expr, leftBottomChildSize, -offset))
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinRemoveRule.java
index 5ecd6ccdfe..33b4a92e4c 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinRemoveRule.java
@@ -120,8 +120,9 @@ public class ProjectJoinRemoveRule
       final List<RexNode> newExprs = project.getProjects().stream()
           .map(expr -> RexUtil.shift(expr, -offset))
           .collect(Collectors.toList());
-      node = project.copy(project.getTraitSet(), join.getRight(), newExprs,
-          project.getRowType());
+      node =
+          project.copy(project.getTraitSet(), join.getRight(), newExprs,
+              project.getRowType());
     }
     call.transformTo(node);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
index 67df203162..b298f4a48c 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
@@ -62,9 +62,10 @@ public class ProjectRemoveRule
     if (stripped instanceof Project) {
       // Rename columns of child projection if desired field names are given.
       Project childProject = (Project) stripped;
-      stripped = childProject.copy(childProject.getTraitSet(),
-          childProject.getInput(), childProject.getProjects(),
-          project.getRowType());
+      stripped =
+          childProject.copy(childProject.getTraitSet(),
+              childProject.getInput(), childProject.getProjects(),
+              project.getRowType());
     }
     stripped = convert(stripped, project.getConvention());
     call.transformTo(stripped);
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
index eef5e27a23..9257bbe98c 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
@@ -128,8 +128,9 @@ public class ProjectTableScanRule
       filtersPushDown = ImmutableList.of();
       projectsPushDown = selectedColumns;
     }
-    Bindables.BindableTableScan newScan = Bindables.BindableTableScan.create(
-        scan.getCluster(), scan.getTable(), filtersPushDown, projectsPushDown);
+    Bindables.BindableTableScan newScan =
+        Bindables.BindableTableScan.create(scan.getCluster(), scan.getTable(),
+            filtersPushDown, projectsPushDown);
     Mapping mapping =
         Mappings.target(selectedColumns, scan.getRowType().getFieldCount());
     final List<RexNode> newProjectRexNodes =
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
index 0ed9d2d206..c70ab6b03c 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
@@ -156,34 +156,36 @@ public abstract class ProjectToWindowRule
               project.getCluster().getRexBuilder());
       // temporary LogicalCalc, never registered
       final LogicalCalc calc = LogicalCalc.create(input, program);
-      final CalcRelSplitter transform = new WindowedAggRelSplitter(calc,
-          call.builder()) {
-        @Override protected RelNode handle(RelNode rel) {
-          if (!(rel instanceof LogicalCalc)) {
-            return rel;
-          }
-          final LogicalCalc calc = (LogicalCalc) rel;
-          final RexProgram program = calc.getProgram();
-          relBuilder.push(calc.getInput());
-          if (program.getCondition() != null) {
-            relBuilder.filter(
-                program.expandLocalRef(program.getCondition()));
-          }
-          if (!program.projectsOnlyIdentity()) {
-            relBuilder.project(
-                Util.transform(program.getProjectList(), program::expandLocalRef),
-                calc.getRowType().getFieldNames());
-          }
-          return relBuilder.build();
-        }
-      };
+      final CalcRelSplitter transform =
+          new WindowedAggRelSplitter(calc, call.builder()) {
+            @Override protected RelNode handle(RelNode rel) {
+              if (!(rel instanceof LogicalCalc)) {
+                return rel;
+              }
+              final LogicalCalc calc = (LogicalCalc) rel;
+              final RexProgram program = calc.getProgram();
+              relBuilder.push(calc.getInput());
+              if (program.getCondition() != null) {
+                relBuilder.filter(
+                    program.expandLocalRef(program.getCondition()));
+              }
+              if (!program.projectsOnlyIdentity()) {
+                relBuilder.project(
+                    Util.transform(program.getProjectList(),
+                        program::expandLocalRef),
+                    calc.getRowType().getFieldNames());
+              }
+              return relBuilder.build();
+            }
+          };
       RelNode newRel = transform.execute();
       call.transformTo(newRel);
     }
 
     /** Rule configuration. */
     @Value.Immutable
-    public interface ProjectToLogicalProjectAndWindowRuleConfig extends ProjectToWindowRule.Config {
+    public interface ProjectToLogicalProjectAndWindowRuleConfig
+        extends ProjectToWindowRule.Config {
       ProjectToLogicalProjectAndWindowRuleConfig DEFAULT =
           ImmutableProjectToLogicalProjectAndWindowRuleConfig.of()
               .withOperandSupplier(b ->
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectWindowTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectWindowTransposeRule.java
index 770052f829..385e2dbba4 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectWindowTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectWindowTransposeRule.java
@@ -173,17 +173,15 @@ public class ProjectWindowTransposeRule
 
     final LogicalWindow newLogicalWindow =
         LogicalWindow.create(window.getTraitSet(), projectBelowWindow,
-        window.constants, outputBuilder.build(), groups);
+            window.constants, outputBuilder.build(), groups);
 
     // Modify the top LogicalProject
     final List<RexNode> topProjExps =
         indexAdjustment.visitList(project.getProjects());
 
-    final Project newTopProj = project.copy(
-        newLogicalWindow.getTraitSet(),
-        newLogicalWindow,
-        topProjExps,
-        project.getRowType());
+    final Project newTopProj =
+        project.copy(newLogicalWindow.getTraitSet(), newLogicalWindow,
+            topProjExps, project.getRowType());
 
     if (ProjectRemoveRule.isTrivial(newTopProj)) {
       call.transformTo(newLogicalWindow);
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 c942fbea96..42d8403dbc 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
@@ -842,13 +842,13 @@ public class ReduceDecimalsRule
           || SqlTypeUtil.isApproximateNumeric(typeB)) {
         List<RexNode> newOperands;
         if (SqlTypeUtil.isApproximateNumeric(typeA)) {
-          newOperands = ImmutableList.of(
-              operands.get(0),
-              ensureType(real8, operands.get(1)));
+          newOperands =
+              ImmutableList.of(operands.get(0),
+                  ensureType(real8, operands.get(1)));
         } else {
-          newOperands = ImmutableList.of(
-              ensureType(real8, operands.get(0)),
-              operands.get(1));
+          newOperands =
+              ImmutableList.of(ensureType(real8, operands.get(0)),
+                  operands.get(1));
         }
         return builder.makeCall(
             call.getOperator(),
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 b93486230f..be62c28052 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
@@ -574,9 +574,10 @@ public abstract class ReduceExpressionsRule<C extends ReduceExpressionsRule.Conf
         for (Window.RexWinAggCall aggCall : group.aggCalls) {
           final List<RexNode> expList = new ArrayList<>(aggCall.getOperands());
           if (reduceExpressions(window, expList, predicates)) {
-            aggCall = new Window.RexWinAggCall(
-                (SqlAggFunction) aggCall.getOperator(), aggCall.type, expList,
-                aggCall.ordinal, aggCall.distinct, aggCall.ignoreNulls);
+            aggCall =
+                new Window.RexWinAggCall((SqlAggFunction) aggCall.getOperator(),
+                    aggCall.type, expList,
+                    aggCall.ordinal, aggCall.distinct, aggCall.ignoreNulls);
             reduced = true;
           }
           aggCalls.add(aggCall);
@@ -706,8 +707,9 @@ public abstract class ReduceExpressionsRule<C extends ReduceExpressionsRule.Conf
 
     // Simplify predicates in place
     final RexUnknownAs unknownAs = RexUnknownAs.falseIf(unknownAsFalse);
-    final boolean reduced = reduceExpressionsInternal(rel, simplify, unknownAs,
-        expList, predicates, treatDynamicCallsAsConstant);
+    final boolean reduced =
+        reduceExpressionsInternal(rel, simplify, unknownAs,
+            expList, predicates, treatDynamicCallsAsConstant);
 
     boolean simplified = false;
     for (int i = 0; i < expList.size(); i++) {
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
index d6f8941327..2a07d7fb95 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
@@ -302,8 +302,7 @@ public abstract class SemiJoinRule
                       b4 -> b4.operand(RelNode.class)
                           // If RHS is Aggregate, it will be covered by ProjectToSemiJoinRule
                           .predicate(n -> !(n instanceof Aggregate))
-                          .anyInputs()
-                  )))
+                          .anyInputs())))
           .as(JoinOnUniqueToSemiJoinRuleConfig.class);
 
       @Override default JoinOnUniqueToSemiJoinRule toRule() {
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinCopyRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinCopyRule.java
index c6049a6983..b8dc3e5dd1 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinCopyRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinCopyRule.java
@@ -96,8 +96,9 @@ public class SortJoinCopyRule
     if (leftFieldCollation.isEmpty()) {
       newLeftInput = join.getLeft();
     } else {
-      final RelCollation leftCollation = RelCollationTraitDef.INSTANCE.canonize(
-          RelCollations.of(leftFieldCollation));
+      final RelCollation leftCollation =
+          RelCollationTraitDef.INSTANCE.canonize(
+              RelCollations.of(leftFieldCollation));
       // If left table already sorted don't add a sort
       if (RelMdUtil.checkInputForCollationAndLimit(
           metadataQuery,
@@ -107,14 +108,11 @@ public class SortJoinCopyRule
           null)) {
         newLeftInput = join.getLeft();
       } else {
-        newLeftInput = sort.copy(
-            sort.getTraitSet().replaceIf(
-                RelCollationTraitDef.INSTANCE,
-                () -> leftCollation),
-            join.getLeft(),
-            leftCollation,
-            null,
-            null);
+        newLeftInput =
+            sort.copy(
+                sort.getTraitSet().replaceIf(RelCollationTraitDef.INSTANCE,
+                    () -> leftCollation),
+                join.getLeft(), leftCollation, null, null);
       }
     }
     // Add sort to new right node only if sort collations
@@ -122,10 +120,10 @@ public class SortJoinCopyRule
     if (rightFieldCollation.isEmpty()) {
       newRightInput = join.getRight();
     } else {
-      final RelCollation rightCollation = RelCollationTraitDef.INSTANCE.canonize(
-          RelCollations.shift(
-              RelCollations.of(rightFieldCollation),
-              -join.getLeft().getRowType().getFieldCount()));
+      final RelCollation rightCollation =
+          RelCollationTraitDef.INSTANCE.canonize(
+              RelCollations.shift(RelCollations.of(rightFieldCollation),
+                  -join.getLeft().getRowType().getFieldCount()));
       // If right table already sorted don't add a sort
       if (RelMdUtil.checkInputForCollationAndLimit(
           metadataQuery,
@@ -135,14 +133,11 @@ public class SortJoinCopyRule
           null)) {
         newRightInput = join.getRight();
       } else {
-        newRightInput = sort.copy(
-            sort.getTraitSet().replaceIf(
-                RelCollationTraitDef.INSTANCE,
-                () -> rightCollation),
-            join.getRight(),
-            rightCollation,
-            null,
-            null);
+        newRightInput =
+            sort.copy(
+                sort.getTraitSet().replaceIf(RelCollationTraitDef.INSTANCE,
+                    () -> rightCollation),
+                join.getRight(), rightCollation, null, null);
       }
     }
     // If no change was made no need to apply the rule
@@ -150,19 +145,12 @@ public class SortJoinCopyRule
       return;
     }
 
-    final RelNode joinCopy = join.copy(
-        join.getTraitSet(),
-        join.getCondition(),
-        newLeftInput,
-        newRightInput,
-        join.getJoinType(),
-        join.isSemiJoinDone());
-    final RelNode sortCopy = sort.copy(
-        sort.getTraitSet(),
-        joinCopy,
-        sort.getCollation(),
-        sort.offset,
-        sort.fetch);
+    final RelNode joinCopy =
+        join.copy(join.getTraitSet(), join.getCondition(), newLeftInput,
+            newRightInput, join.getJoinType(), join.isSemiJoinDone());
+    final RelNode sortCopy =
+        sort.copy(sort.getTraitSet(), joinCopy, sort.getCollation(),
+            sort.offset, sort.fetch);
 
     call.transformTo(sortCopy);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
index 8eb6d967f2..8fd7cff880 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
@@ -77,8 +77,8 @@ public class SortJoinTransposeRule
     final Sort sort = call.rel(0);
     final Join join = call.rel(1);
     final RelMetadataQuery mq = call.getMetadataQuery();
-    final JoinInfo joinInfo = JoinInfo.of(
-        join.getLeft(), join.getRight(), join.getCondition());
+    final JoinInfo joinInfo =
+        JoinInfo.of(join.getLeft(), join.getRight(), join.getCondition());
 
     // 1) If join is not a left or right outer, we bail out
     // 2) If sort is not a trivial order-by, and if there is
@@ -139,8 +139,9 @@ public class SortJoinTransposeRule
           sort.getCollation(), sort.offset, sort.fetch)) {
         return;
       }
-      newLeftInput = sort.copy(sort.getTraitSet(), join.getLeft(), sort.getCollation(),
-          sort.offset, sort.fetch);
+      newLeftInput =
+          sort.copy(sort.getTraitSet(), join.getLeft(), sort.getCollation(),
+              sort.offset, sort.fetch);
       newRightInput = join.getRight();
     } else {
       final RelCollation rightCollation =
@@ -154,14 +155,17 @@ public class SortJoinTransposeRule
         return;
       }
       newLeftInput = join.getLeft();
-      newRightInput = sort.copy(sort.getTraitSet().replace(rightCollation),
-          join.getRight(), rightCollation, sort.offset, sort.fetch);
+      newRightInput =
+          sort.copy(sort.getTraitSet().replace(rightCollation),
+              join.getRight(), rightCollation, sort.offset, sort.fetch);
     }
     // We copy the join and the top sort operator
-    final RelNode joinCopy = join.copy(join.getTraitSet(), join.getCondition(), newLeftInput,
-        newRightInput, join.getJoinType(), join.isSemiJoinDone());
-    final RelNode sortCopy = sort.copy(sort.getTraitSet(), joinCopy, sort.getCollation(),
-        sort.offset, sort.fetch);
+    final RelNode joinCopy =
+        join.copy(join.getTraitSet(), join.getCondition(), newLeftInput,
+            newRightInput, join.getJoinType(), join.isSemiJoinDone());
+    final RelNode sortCopy =
+        sort.copy(sort.getTraitSet(), joinCopy, sort.getCollation(),
+            sort.offset, sort.fetch);
 
     call.transformTo(sortCopy);
   }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SortUnionTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SortUnionTransposeRule.java
index 078e0e3e04..0716b51440 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SortUnionTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SortUnionTransposeRule.java
@@ -86,8 +86,9 @@ public class SortUnionTransposeRule
       if (!RelMdUtil.checkInputForCollationAndLimit(mq, input,
           sort.getCollation(), sort.offset, sort.fetch)) {
         ret = false;
-        Sort branchSort = sort.copy(sort.getTraitSet(), input,
-            sort.getCollation(), sort.offset, sort.fetch);
+        Sort branchSort =
+            sort.copy(sort.getTraitSet(), input,
+                sort.getCollation(), sort.offset, sort.fetch);
         inputs.add(branchSort);
       } else {
         inputs.add(input);
@@ -100,8 +101,9 @@ public class SortUnionTransposeRule
     // create new union and sort
     Union unionCopy = (Union) union
         .copy(union.getTraitSet(), inputs, union.all);
-    Sort result = sort.copy(sort.getTraitSet(), unionCopy, sort.getCollation(),
-        sort.offset, sort.fetch);
+    Sort result =
+        sort.copy(sort.getTraitSet(), unionCopy, sort.getCollation(),
+            sort.offset, sort.fetch);
     call.transformTo(result);
   }
 
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SpatialRules.java b/core/src/main/java/org/apache/calcite/rel/rules/SpatialRules.java
index 0927c2c642..1b003de36b 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SpatialRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SpatialRules.java
@@ -207,9 +207,9 @@ public abstract class SpatialRules {
         op1 = within.operands.get(1);
         final Geometry g1 = constantGeom(op1);
         if (RexUtil.isLiteral(within.operands.get(2), true)) {
-          final Number distance = requireNonNull(
-              (Number) value(within.operands.get(2)),
-              () -> "distance for " + within);
+          final Number distance =
+              requireNonNull((Number) value(within.operands.get(2)),
+                  () -> "distance for " + within);
           switch (Double.compare(distance.doubleValue(), 0D)) {
           case -1: // negative distance
             return ImmutableList.of(builder.getRexBuilder().makeLiteral(false));
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
index 69e405b73e..c73da2625e 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
@@ -126,8 +126,8 @@ public class SubQueryRemoveRule
       RelBuilder builder, int inputCount, int offset) {
     builder.push(e.rel);
     final RelMetadataQuery mq = e.rel.getCluster().getMetadataQuery();
-    final Boolean unique = mq.areColumnsUnique(builder.peek(),
-        ImmutableBitSet.of());
+    final Boolean unique =
+        mq.areColumnsUnique(builder.peek(), ImmutableBitSet.of());
     if (unique == null || !unique) {
       builder.aggregate(builder.groupKey(),
           builder.aggregateCall(SqlStdOperatorTable.SINGLE_VALUE,
@@ -243,18 +243,19 @@ public class SubQueryRemoveRule
                 builder.count(false, "d", builder.field(0)))
             .as("q")
             .join(JoinRelType.INNER);
-        caseRexNode = builder.call(SqlStdOperatorTable.CASE,
-            builder.equals(builder.field("q", "c"), builder.literal(0)),
-            literalFalse,
-            builder.call(SqlStdOperatorTable.IS_TRUE,
+        caseRexNode =
+            builder.call(SqlStdOperatorTable.CASE,
+                builder.equals(builder.field("q", "c"), builder.literal(0)),
+                literalFalse,
+                builder.call(SqlStdOperatorTable.IS_TRUE,
+                    builder.call(RexUtil.op(op.comparisonKind),
+                        e.operands.get(0), builder.field("q", "m"))),
+                literalTrue,
+                builder.greaterThan(builder.field("q", "c"),
+                    builder.field("q", "d")),
+                literalUnknown,
                 builder.call(RexUtil.op(op.comparisonKind),
-                    e.operands.get(0), builder.field("q", "m"))),
-            literalTrue,
-            builder.greaterThan(builder.field("q", "c"),
-                builder.field("q", "d")),
-            literalUnknown,
-            builder.call(RexUtil.op(op.comparisonKind),
-                e.operands.get(0), builder.field("q", "m")));
+                    e.operands.get(0), builder.field("q", "m")));
         break;
 
       case NOT_EQUALS:
@@ -285,21 +286,22 @@ public class SubQueryRemoveRule
                 builder.max(builder.field(0)).as("m"))
             .as("q")
             .join(JoinRelType.INNER);
-        caseRexNode = builder.call(SqlStdOperatorTable.CASE,
-            builder.equals(builder.field("c"), builder.literal(0)),
-            literalFalse,
-            builder.isNull(e.getOperands().get(0)),
-            literalUnknown,
-            builder.and(
-                builder.notEquals(builder.field("d"), builder.field("c")),
-                builder.lessThanOrEqual(builder.field("d"),
-                    builder.literal(1))),
-            builder.or(
+        caseRexNode =
+            builder.call(SqlStdOperatorTable.CASE,
+                builder.equals(builder.field("c"), builder.literal(0)),
+                literalFalse,
+                builder.isNull(e.getOperands().get(0)),
+                literalUnknown,
+                builder.and(
+                    builder.notEquals(builder.field("d"), builder.field("c")),
+                    builder.lessThanOrEqual(builder.field("d"),
+                        builder.literal(1))),
+                builder.or(
+                    builder.notEquals(e.operands.get(0), builder.field("q", "m")),
+                    literalUnknown),
+                builder.equals(builder.field("d"), builder.literal(1)),
                 builder.notEquals(e.operands.get(0), builder.field("q", "m")),
-                literalUnknown),
-            builder.equals(builder.field("d"), builder.literal(1)),
-            builder.notEquals(e.operands.get(0), builder.field("q", "m")),
-            literalTrue);
+                literalTrue);
         break;
 
       default:
@@ -344,20 +346,21 @@ public class SubQueryRemoveRule
         parentQueryFields.add(builder.alias(literalTrue, indicator));
         builder.project(parentQueryFields).as("q");
         builder.join(JoinRelType.LEFT, literalTrue, variablesSet);
-        caseRexNode = builder.call(SqlStdOperatorTable.CASE,
-            builder.isNull(builder.field("q", indicator)),
-            literalFalse,
-            builder.equals(builder.field("q", "c"), builder.literal(0)),
-            literalFalse,
-            builder.call(SqlStdOperatorTable.IS_TRUE,
+        caseRexNode =
+            builder.call(SqlStdOperatorTable.CASE,
+                builder.isNull(builder.field("q", indicator)),
+                literalFalse,
+                builder.equals(builder.field("q", "c"), builder.literal(0)),
+                literalFalse,
+                builder.call(SqlStdOperatorTable.IS_TRUE,
+                    builder.call(RexUtil.op(op.comparisonKind),
+                        e.operands.get(0), builder.field("q", "m"))),
+                literalTrue,
+                builder.greaterThan(builder.field("q", "c"),
+                    builder.field("q", "d")),
+                literalUnknown,
                 builder.call(RexUtil.op(op.comparisonKind),
-                    e.operands.get(0), builder.field("q", "m"))),
-            literalTrue,
-            builder.greaterThan(builder.field("q", "c"),
-                builder.field("q", "d")),
-            literalUnknown,
-            builder.call(RexUtil.op(op.comparisonKind),
-                e.operands.get(0), builder.field("q", "m")));
+                    e.operands.get(0), builder.field("q", "m")));
         break;
 
       case NOT_EQUALS:
@@ -396,23 +399,24 @@ public class SubQueryRemoveRule
         parentQueryFields.add(builder.alias(literalTrue, indicator));
         builder.project(parentQueryFields).as("q"); // TODO use projectPlus
         builder.join(JoinRelType.LEFT, literalTrue, variablesSet);
-        caseRexNode = builder.call(SqlStdOperatorTable.CASE,
-            builder.isNull(builder.field("q", indicator)),
-            literalFalse,
-            builder.equals(builder.field("c"), builder.literal(0)),
-            literalFalse,
-            builder.isNull(e.getOperands().get(0)),
-            literalUnknown,
-            builder.and(
-                builder.notEquals(builder.field("d"), builder.field("c")),
-                builder.lessThanOrEqual(builder.field("d"),
-                    builder.literal(1))),
-            builder.or(
+        caseRexNode =
+            builder.call(SqlStdOperatorTable.CASE,
+                builder.isNull(builder.field("q", indicator)),
+                literalFalse,
+                builder.equals(builder.field("c"), builder.literal(0)),
+                literalFalse,
+                builder.isNull(e.getOperands().get(0)),
+                literalUnknown,
+                builder.and(
+                    builder.notEquals(builder.field("d"), builder.field("c")),
+                    builder.lessThanOrEqual(builder.field("d"),
+                        builder.literal(1))),
+                builder.or(
+                    builder.notEquals(e.operands.get(0), builder.field("q", "m")),
+                    literalUnknown),
+                builder.equals(builder.field("d"), builder.literal(1)),
                 builder.notEquals(e.operands.get(0), builder.field("q", "m")),
-                literalUnknown),
-            builder.equals(builder.field("d"), builder.literal(1)),
-            builder.notEquals(e.operands.get(0), builder.field("q", "m")),
-            literalTrue);
+                literalTrue);
         break;
 
       default:
@@ -658,10 +662,11 @@ public class SubQueryRemoveRule
             builder.or(
                 builder.and(conditions),
                 builder.or(isNullOperands)));
-        RexNode project = builder.and(
-            fields.stream()
-                .map(builder::isNotNull)
-                .collect(Collectors.toList()));
+        RexNode project =
+            builder.and(
+                fields.stream()
+                    .map(builder::isNotNull)
+                    .collect(Collectors.toList()));
         builder.project(builder.alias(project, "cs"));
 
         if (variablesSet.isEmpty()) {
@@ -819,8 +824,8 @@ public class SubQueryRemoveRule
     final int fieldCount = builder.peek().getRowType().getFieldCount();
     final Set<CorrelationId>  variablesSet =
         RelOptUtil.getVariablesUsed(e.rel);
-    final RexNode target = rule.apply(e, variablesSet,
-        logic, builder, 1, fieldCount);
+    final RexNode target =
+        rule.apply(e, variablesSet, logic, builder, 1, fieldCount);
     final RexShuttle shuttle = new ReplaceSubQueryShuttle(e, target);
     builder.project(shuttle.apply(project.getProjects()),
         project.getRowType().getFieldNames());
@@ -845,8 +850,9 @@ public class SubQueryRemoveRule
           LogicVisitor.find(RelOptUtil.Logic.TRUE, ImmutableList.of(c), e);
       final Set<CorrelationId>  variablesSet =
           RelOptUtil.getVariablesUsed(e.rel);
-      final RexNode target = rule.apply(e, variablesSet, logic,
-          builder, 1, builder.peek().getRowType().getFieldCount());
+      final RexNode target =
+          rule.apply(e, variablesSet, logic,
+              builder, 1, builder.peek().getRowType().getFieldCount());
       final RexShuttle shuttle = new ReplaceSubQueryShuttle(e, target);
       c = c.accept(shuttle);
     }
@@ -869,8 +875,8 @@ public class SubQueryRemoveRule
     final int fieldCount = join.getRowType().getFieldCount();
     final Set<CorrelationId>  variablesSet =
         RelOptUtil.getVariablesUsed(e.rel);
-    final RexNode target = rule.apply(e, variablesSet,
-        logic, builder, 2, fieldCount);
+    final RexNode target =
+        rule.apply(e, variablesSet, logic, builder, 2, fieldCount);
     final RexShuttle shuttle = new ReplaceSubQueryShuttle(e, target);
     builder.join(join.getJoinType(), shuttle.apply(join.getCondition()));
     builder.project(fields(builder, join.getRowType().getFieldCount()));
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
index 4426398a8c..15715f1e13 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
@@ -156,9 +156,9 @@ public class ValuesReduceRule
           ++k;
           RexNode e = projectExpr.accept(shuttle);
           if (RexLiteral.isNullLiteral(e)) {
-            e = rexBuilder.makeAbstractCast(
-                project.getRowType().getFieldList().get(k).getType(),
-                e);
+            e =
+                rexBuilder.makeAbstractCast(
+                    project.getRowType().getFieldList().get(k).getType(), e);
           }
           reducibleExps.add(e);
         }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewAggregateRule.java b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewAggregateRule.java
index 827282fc6b..225055e512 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewAggregateRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewAggregateRule.java
@@ -184,9 +184,10 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
         ImmutableBitSet.range(
             aggregateViewNode.getInput().getRowType().getFieldCount(),
             aggregateViewNode.getInput().getRowType().getFieldCount() + offset));
-    final Aggregate newViewNode = aggregateViewNode.copy(
-        aggregateViewNode.getTraitSet(), relBuilder.build(),
-        groupSet.build(), null, aggregateViewNode.getAggCallList());
+    final Aggregate newViewNode =
+        aggregateViewNode.copy(aggregateViewNode.getTraitSet(),
+            relBuilder.build(), groupSet.build(), null,
+            aggregateViewNode.getAggCallList());
 
     relBuilder.push(newViewNode);
     List<RexNode> nodes = new ArrayList<>();
@@ -194,11 +195,11 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
     if (topViewProject != null) {
       // Insert existing expressions (and shift aggregation arguments),
       // then append rest of columns
-      Mappings.TargetMapping shiftMapping = Mappings.createShiftMapping(
-          newViewNode.getRowType().getFieldCount(),
-          0, 0, aggregateViewNode.getGroupCount(),
-          newViewNode.getGroupCount(), aggregateViewNode.getGroupCount(),
-          aggregateViewNode.getAggCallList().size());
+      Mappings.TargetMapping shiftMapping =
+          Mappings.createShiftMapping(newViewNode.getRowType().getFieldCount(),
+              0, 0, aggregateViewNode.getGroupCount(),
+              newViewNode.getGroupCount(), aggregateViewNode.getGroupCount(),
+              aggregateViewNode.getAggCallList().size());
       for (int i = 0; i < topViewProject.getProjects().size(); i++) {
         nodes.add(
             topViewProject.getProjects().get(i).accept(
@@ -266,9 +267,10 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
     // are contained in the query.
     List<RexNode> queryExprs = extractReferences(rexBuilder, target);
     if (!compensationColumnsEquiPred.isAlwaysTrue()) {
-      RexNode newCompensationColumnsEquiPred = rewriteExpression(rexBuilder, mq,
-          target, target, queryExprs, queryToViewTableMapping, queryEC, false,
-          compensationColumnsEquiPred);
+      RexNode newCompensationColumnsEquiPred =
+          rewriteExpression(rexBuilder, mq, target, target, queryExprs,
+              queryToViewTableMapping, queryEC, false,
+              compensationColumnsEquiPred);
       if (newCompensationColumnsEquiPred == null) {
         // Skip it
         return null;
@@ -277,19 +279,21 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
     }
     // For the rest, we use the query equivalence classes
     if (!otherCompensationPred.isAlwaysTrue()) {
-      RexNode newOtherCompensationPred = rewriteExpression(rexBuilder, mq,
-          target, target, queryExprs, queryToViewTableMapping, viewEC, true,
-          otherCompensationPred);
+      RexNode newOtherCompensationPred =
+          rewriteExpression(rexBuilder, mq, target, target, queryExprs,
+              queryToViewTableMapping, viewEC, true,
+              otherCompensationPred);
       if (newOtherCompensationPred == null) {
         // Skip it
         return null;
       }
       otherCompensationPred = newOtherCompensationPred;
     }
-    final RexNode queryCompensationPred = RexUtil.not(
-        RexUtil.composeConjunction(rexBuilder,
-            ImmutableList.of(compensationColumnsEquiPred,
-                otherCompensationPred)));
+    final RexNode queryCompensationPred =
+        RexUtil.not(
+            RexUtil.composeConjunction(rexBuilder,
+                ImmutableList.of(compensationColumnsEquiPred,
+                    otherCompensationPred)));
 
     // Generate query rewriting.
     RelNode rewrittenPlan = relBuilder
@@ -417,9 +421,10 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
 
     // Create mapping from query columns to view columns
     final List<RexNode> rollupNodes = new ArrayList<>();
-    final Multimap<Integer, Integer> m = generateMapping(rexBuilder, simplify, mq,
-        queryAggregate.getInput(), viewAggregate.getInput(), indexes.build(),
-        queryToViewTableMapping, queryEC, rollupNodes);
+    final Multimap<Integer, Integer> m =
+        generateMapping(rexBuilder, simplify, mq,
+            queryAggregate.getInput(), viewAggregate.getInput(), indexes.build(),
+            queryToViewTableMapping, queryEC, rollupNodes);
     if (m == null) {
       // Bail out
       return null;
@@ -434,8 +439,10 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
     int viewAggregateTotalFieldCount =
         viewAggregate.getRowType().getFieldCount() + rollupNodes.size();
     boolean forceRollup = false;
-    Mapping aggregateMapping = Mappings.create(MappingType.FUNCTION,
-        queryAggregate.getRowType().getFieldCount(), viewAggregateTotalFieldCount);
+    Mapping aggregateMapping =
+        Mappings.create(MappingType.FUNCTION,
+            queryAggregate.getRowType().getFieldCount(),
+            viewAggregateTotalFieldCount);
     for (int i = 0; i < queryAggregate.getGroupCount(); i++) {
       Collection<Integer> c = m.get(queryAggregate.getGroupSet().nth(i));
       for (int j : c) {
@@ -553,10 +560,10 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
           additionalViewExprs.add(
               new RexInputRef(targetIdx, targetNode.getType()));
           // We need to create the rollup expression
-          RexNode rollupExpression = requireNonNull(
-              shuttleReferences(rexBuilder, targetNode, exprsLineage),
-              () -> "shuttleReferences produced null for targetNode="
-                  + targetNode + ", exprsLineage=" + exprsLineage);
+          RexNode rollupExpression =
+              requireNonNull(shuttleReferences(rexBuilder, targetNode, exprsLineage),
+                  () -> "shuttleReferences produced null for targetNode="
+                      + targetNode + ", exprsLineage=" + exprsLineage);
           inputViewExprs.add(rollupExpression);
         } else {
           // This expression should be referenced directly
@@ -761,10 +768,9 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
       final RexNode e = Iterables.getOnlyElement(s);
       // Rewrite expr to be expressed on query tables
       final RexNode simplified = simplify.simplifyUnknownAsFalse(e);
-      final RexNode expr = RexUtil.swapTableColumnReferences(rexBuilder,
-          simplified,
-          tableMapping.inverse(),
-          equivalenceClassesMap);
+      final RexNode expr =
+          RexUtil.swapTableColumnReferences(rexBuilder, simplified,
+              tableMapping.inverse(), equivalenceClassesMap);
       exprsLineage.put(expr, i);
       SqlTypeName sqlTypeName = expr.getType().getSqlTypeName();
       if (sqlTypeName == SqlTypeName.TIMESTAMP
@@ -779,8 +785,8 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
     // FLOOR(ts to DAY) via FLOOR(FLOOR(ts to HOUR) to DAY)
     for (RexNode timestampExpr : timestampExprs) {
       for (TimeUnitRange value : SUPPORTED_DATE_TIME_ROLLUP_UNITS) {
-        final SqlFunction[] functions = {getCeilSqlFunction(value),
-            getFloorSqlFunction(value)};
+        final SqlFunction[] functions =
+            {getCeilSqlFunction(value), getFloorSqlFunction(value)};
         for (SqlFunction function : functions) {
           final RexNode call =
               rexBuilder.makeCall(function,
@@ -816,8 +822,9 @@ public abstract class MaterializedViewAggregateRule<C extends MaterializedViewAg
       final RexNode e = Iterables.getOnlyElement(s);
       // Rewrite expr to be expressed on query tables
       final RexNode simplified = simplify.simplifyUnknownAsFalse(e);
-      RexNode targetExpr = RexUtil.swapColumnReferences(rexBuilder,
-          simplified, equivalenceClassesMap);
+      RexNode targetExpr =
+          RexUtil.swapColumnReferences(rexBuilder, simplified,
+              equivalenceClassesMap);
       final Collection<Integer> c = exprsLineage.get(targetExpr);
       if (!c.isEmpty()) {
         for (Integer j : c) {
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewJoinRule.java
index 8d30a9ea5d..803033a6cc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewJoinRule.java
@@ -180,9 +180,10 @@ public abstract class MaterializedViewJoinRule<C extends MaterializedViewRule.Co
 
 
     if (!compensationColumnsEquiPred.isAlwaysTrue()) {
-      RexNode newCompensationColumnsEquiPred = rewriteExpression(rexBuilder, mq,
-          target, target, queryExprs, viewToQueryTableMapping.inverse(), queryEC, false,
-          compensationColumnsEquiPred);
+      RexNode newCompensationColumnsEquiPred =
+          rewriteExpression(rexBuilder, mq, target, target, queryExprs,
+              viewToQueryTableMapping.inverse(), queryEC, false,
+              compensationColumnsEquiPred);
       if (newCompensationColumnsEquiPred == null) {
         // Skip it
         return null;
@@ -191,19 +192,21 @@ public abstract class MaterializedViewJoinRule<C extends MaterializedViewRule.Co
     }
     // For the rest, we use the query equivalence classes
     if (!otherCompensationPred.isAlwaysTrue()) {
-      RexNode newOtherCompensationPred = rewriteExpression(rexBuilder, mq,
-          target, target, queryExprs, viewToQueryTableMapping.inverse(), viewEC, true,
-          otherCompensationPred);
+      RexNode newOtherCompensationPred =
+          rewriteExpression(rexBuilder, mq, target, target, queryExprs,
+              viewToQueryTableMapping.inverse(), viewEC, true,
+              otherCompensationPred);
       if (newOtherCompensationPred == null) {
         // Skip it
         return null;
       }
       otherCompensationPred = newOtherCompensationPred;
     }
-    final RexNode queryCompensationPred = RexUtil.not(
-        RexUtil.composeConjunction(rexBuilder,
-            ImmutableList.of(compensationColumnsEquiPred,
-                otherCompensationPred)));
+    final RexNode queryCompensationPred =
+        RexUtil.not(
+            RexUtil.composeConjunction(rexBuilder,
+                ImmutableList.of(compensationColumnsEquiPred,
+                    otherCompensationPred)));
 
     // Generate query rewriting.
     RelNode rewrittenPlan = relBuilder
@@ -211,8 +214,8 @@ public abstract class MaterializedViewJoinRule<C extends MaterializedViewRule.Co
         .filter(simplify.simplifyUnknownAsFalse(queryCompensationPred))
         .build();
     if (unionRewritingPullProgram != null) {
-      rewrittenPlan = newNode.copy(
-          newNode.getTraitSet(), ImmutableList.of(rewrittenPlan));
+      rewrittenPlan =
+          newNode.copy(newNode.getTraitSet(), ImmutableList.of(rewrittenPlan));
     }
     if (topProject != null) {
       return topProject.copy(topProject.getTraitSet(), ImmutableList.of(rewrittenPlan));
@@ -279,8 +282,9 @@ public abstract class MaterializedViewJoinRule<C extends MaterializedViewRule.Co
     List<RexNode> viewExprs = topViewProject == null
         ? extractReferences(rexBuilder, viewNode)
         : topViewProject.getProjects();
-    List<RexNode> rewrittenExprs = rewriteExpressions(rexBuilder, mq, input, viewNode, viewExprs,
-        queryToViewTableMapping.inverse(), queryEC, true, exprsLineage);
+    List<RexNode> rewrittenExprs =
+        rewriteExpressions(rexBuilder, mq, input, viewNode, viewExprs,
+            queryToViewTableMapping.inverse(), queryEC, true, exprsLineage);
     if (rewrittenExprs == null) {
       return null;
     }
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewRule.java b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewRule.java
index 113f95869e..e2aa969c4a 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/materialize/MaterializedViewRule.java
@@ -246,9 +246,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
           // Skip it
           continue;
         }
-        final RexNode viewPred = simplify.simplifyUnknownAsFalse(
-            RexUtil.composeConjunction(rexBuilder,
-                viewPredicateList.pulledUpPredicates));
+        final RexNode viewPred =
+            simplify.simplifyUnknownAsFalse(
+                RexUtil.composeConjunction(rexBuilder,
+                    viewPredicateList.pulledUpPredicates));
         final Pair<RexNode, RexNode> viewPreds = splitPredicates(rexBuilder, viewPred);
 
         // Extract view tables
@@ -278,10 +279,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             }
           } else if (queryTableRefs.containsAll(viewTableRefs)) {
             matchModality = MatchModality.VIEW_PARTIAL;
-            ViewPartialRewriting partialRewritingResult = compensateViewPartial(
-                call.builder(), rexBuilder, mq, view,
-                topProject, node, queryTableRefs, qEC,
-                topViewProject, viewNode, viewTableRefs);
+            ViewPartialRewriting partialRewritingResult =
+                compensateViewPartial(call.builder(), rexBuilder, mq, view,
+                    topProject, node, queryTableRefs, qEC,
+                    topViewProject, viewNode, viewTableRefs);
             if (partialRewritingResult == null) {
               // Cannot rewrite, skip it
               continue;
@@ -328,11 +329,13 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             for (Map.Entry<RexTableInputRef, RexTableInputRef> e
                 : compensationEquiColumns.entries()) {
               // Copy origin
-              RelTableRef queryTableRef = queryToViewTableMapping.inverse().get(
-                  e.getKey().getTableRef());
-              RexTableInputRef queryColumnRef = RexTableInputRef.of(
-                  requireNonNull(queryTableRef,
-                      () -> "queryTableRef is null for tableRef " + e.getKey().getTableRef()),
+              RelTableRef queryTableRef =
+                  queryToViewTableMapping.inverse().get(e.getKey().getTableRef());
+              RexTableInputRef queryColumnRef =
+                  RexTableInputRef.of(
+                      requireNonNull(queryTableRef,
+                          () -> "queryTableRef is null for tableRef "
+                              + e.getKey().getTableRef()),
                   e.getKey().getIndex(), e.getKey().getType());
               // Add to query equivalence classes and table mapping
               currQEC.addEquivalenceClass(queryColumnRef, e.getValue());
@@ -346,8 +349,9 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
           // are expressed using {@link RexTableInputRef} over the query.
           // First, to establish relationship, we swap column references of the view
           // predicates to point to query tables and compute equivalence classes.
-          final RexNode viewColumnsEquiPred = RexUtil.swapTableReferences(
-              rexBuilder, viewPreds.left, queryToViewTableMapping.inverse());
+          final RexNode viewColumnsEquiPred =
+              RexUtil.swapTableReferences(rexBuilder, viewPreds.left,
+                  queryToViewTableMapping.inverse());
           final EquivalenceClasses queryBasedVEC = new EquivalenceClasses();
           for (RexNode conj : RelOptUtil.conjunctions(viewColumnsEquiPred)) {
             assert conj.isA(SqlKind.EQUALS);
@@ -365,9 +369,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             // will read some data from the view and the rest of the data from
             // the query computation. The resulting predicates are expressed
             // using {@link RexTableInputRef} over the view.
-            compensationPreds = computeCompensationPredicates(rexBuilder, simplify,
-                queryBasedVEC, viewPreds, currQEC, queryPreds,
-                queryToViewTableMapping.inverse());
+            compensationPreds =
+                computeCompensationPredicates(rexBuilder, simplify,
+                    queryBasedVEC, viewPreds, currQEC, queryPreds,
+                    queryToViewTableMapping.inverse());
             if (compensationPreds == null) {
               // This was our last chance to use the view, skip it
               continue;
@@ -378,9 +383,11 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
                 || !otherCompensationPred.isAlwaysTrue();
 
             // b. Generate union branch (query).
-            final RelNode unionInputQuery = rewriteQuery(call.builder(), rexBuilder,
-                simplify, mq, compensationColumnsEquiPred, otherCompensationPred,
-                topProject, node, queryToViewTableMapping, queryBasedVEC, currQEC);
+            final RelNode unionInputQuery =
+                rewriteQuery(call.builder(), rexBuilder, simplify, mq,
+                    compensationColumnsEquiPred, otherCompensationPred,
+                    topProject, node, queryToViewTableMapping, queryBasedVEC,
+                    currQEC);
             if (unionInputQuery == null) {
               // Skip it
               continue;
@@ -390,17 +397,19 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             // We trigger the unifying method. This method will either create a Project
             // or an Aggregate operator on top of the view. It will also compute the
             // output expressions for the query.
-            final RelNode unionInputView = rewriteView(call.builder(), rexBuilder, simplify, mq,
-                matchModality, true, view, topProject, node, topViewProject, viewNode,
-                queryToViewTableMapping, currQEC);
+            final RelNode unionInputView =
+                rewriteView(call.builder(), rexBuilder, simplify, mq,
+                    matchModality, true, view, topProject, node, topViewProject,
+                    viewNode, queryToViewTableMapping, currQEC);
             if (unionInputView == null) {
               // Skip it
               continue;
             }
 
             // d. Generate final rewriting (union).
-            final RelNode result = createUnion(call.builder(), rexBuilder,
-                topProject, unionInputQuery, unionInputView);
+            final RelNode result =
+                createUnion(call.builder(), rexBuilder, topProject,
+                    unionInputQuery, unionInputView);
             if (result == null) {
               // Skip it
               continue;
@@ -421,9 +430,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
               // For compensationColumnsEquiPred, we use the view equivalence classes,
               // since we want to enforce the rest
               if (!compensationColumnsEquiPred.isAlwaysTrue()) {
-                compensationColumnsEquiPred = rewriteExpression(rexBuilder, mq,
-                    view, viewNode, viewExprs, queryToViewTableMapping.inverse(), queryBasedVEC,
-                    false, compensationColumnsEquiPred);
+                compensationColumnsEquiPred =
+                    rewriteExpression(rexBuilder, mq, view, viewNode, viewExprs,
+                        queryToViewTableMapping.inverse(), queryBasedVEC,
+                        false, compensationColumnsEquiPred);
                 if (compensationColumnsEquiPred == null) {
                   // Skip it
                   continue;
@@ -431,9 +441,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
               }
               // For the rest, we use the query equivalence classes
               if (!otherCompensationPred.isAlwaysTrue()) {
-                otherCompensationPred = rewriteExpression(rexBuilder, mq,
-                    view, viewNode, viewExprs, queryToViewTableMapping.inverse(), currQEC,
-                    true, otherCompensationPred);
+                otherCompensationPred =
+                    rewriteExpression(rexBuilder, mq, view, viewNode, viewExprs,
+                        queryToViewTableMapping.inverse(), currQEC,
+                        true, otherCompensationPred);
                 if (otherCompensationPred == null) {
                   // Skip it
                   continue;
@@ -471,9 +482,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             } else {
               viewWithFilter = builder.push(view).build();
             }
-            final RelNode result = rewriteView(builder, rexBuilder, simplify, mq, matchModality,
-                false, viewWithFilter, topProject, node, topViewProject, viewNode,
-                queryToViewTableMapping, currQEC);
+            final RelNode result =
+                rewriteView(builder, rexBuilder, simplify, mq, matchModality,
+                    false, viewWithFilter, topProject, node, topViewProject,
+                    viewNode, queryToViewTableMapping, currQEC);
             if (result == null) {
               // Skip it
               continue;
@@ -826,8 +838,8 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
     // 1. Establish relationship between source and target equivalence classes.
     // If every target equivalence class is not a subset of a source
     // equivalence class, we bail out.
-    compensationColumnsEquiPred = generateEquivalenceClasses(
-        rexBuilder, sourceEC, targetEC);
+    compensationColumnsEquiPred =
+        generateEquivalenceClasses(rexBuilder, sourceEC, targetEC);
     if (compensationColumnsEquiPred == null) {
       // Cannot rewrite
       return null;
@@ -835,13 +847,15 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
 
     // 2. We check that that residual predicates of the source are satisfied within the target.
     // Compute compensating predicates.
-    final RexNode queryPred = RexUtil.swapColumnReferences(
-        rexBuilder, sourcePreds.right, sourceEC.getEquivalenceClassesMap());
-    final RexNode viewPred = RexUtil.swapTableColumnReferences(
-        rexBuilder, targetPreds.right, sourceToTargetTableMapping.inverse(),
-        sourceEC.getEquivalenceClassesMap());
-    compensationPred = SubstitutionVisitor.splitFilter(
-        simplify, queryPred, viewPred);
+    final RexNode queryPred =
+        RexUtil.swapColumnReferences(rexBuilder, sourcePreds.right,
+            sourceEC.getEquivalenceClassesMap());
+    final RexNode viewPred =
+        RexUtil.swapTableColumnReferences(rexBuilder, targetPreds.right,
+            sourceToTargetTableMapping.inverse(),
+            sourceEC.getEquivalenceClassesMap());
+    compensationPred =
+        SubstitutionVisitor.splitFilter(simplify, queryPred, viewPred);
     if (compensationPred == null) {
       // Cannot rewrite
       return null;
@@ -863,20 +877,26 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
    */
   protected @Nullable RexNode generateEquivalenceClasses(RexBuilder rexBuilder,
       EquivalenceClasses sourceEC, EquivalenceClasses targetEC) {
-    if (sourceEC.getEquivalenceClasses().isEmpty() && targetEC.getEquivalenceClasses().isEmpty()) {
+    if (sourceEC.getEquivalenceClasses().isEmpty()
+        && targetEC.getEquivalenceClasses().isEmpty()) {
       // No column equality predicates in query and view
       // Empty mapping and compensation predicate
       return rexBuilder.makeLiteral(true);
     }
-    if (sourceEC.getEquivalenceClasses().isEmpty() && !targetEC.getEquivalenceClasses().isEmpty()) {
-      // No column equality predicates in source, but column equality predicates in target
+    if (sourceEC.getEquivalenceClasses().isEmpty()
+        && !targetEC.getEquivalenceClasses().isEmpty()) {
+      // No column equality predicates in source, but column equality predicates
+      // in target
       return null;
     }
 
-    final List<Set<RexTableInputRef>> sourceEquivalenceClasses = sourceEC.getEquivalenceClasses();
-    final List<Set<RexTableInputRef>> targetEquivalenceClasses = targetEC.getEquivalenceClasses();
-    final Multimap<Integer, Integer> mapping = extractPossibleMapping(
-        sourceEquivalenceClasses, targetEquivalenceClasses);
+    final List<Set<RexTableInputRef>> sourceEquivalenceClasses =
+        sourceEC.getEquivalenceClasses();
+    final List<Set<RexTableInputRef>> targetEquivalenceClasses =
+        targetEC.getEquivalenceClasses();
+    final Multimap<Integer, Integer> mapping =
+        extractPossibleMapping(sourceEquivalenceClasses,
+            targetEquivalenceClasses);
     if (mapping == null) {
       // Did not find mapping between the equivalence classes,
       // bail out
@@ -888,25 +908,29 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
     for (int i = 0; i < sourceEquivalenceClasses.size(); i++) {
       if (!mapping.containsKey(i)) {
         // Add all predicates
-        Iterator<RexTableInputRef> it = sourceEquivalenceClasses.get(i).iterator();
+        Iterator<RexTableInputRef> it =
+            sourceEquivalenceClasses.get(i).iterator();
         RexTableInputRef e0 = it.next();
         while (it.hasNext()) {
-          RexNode equals = rexBuilder.makeCall(SqlStdOperatorTable.EQUALS,
-              e0, it.next());
-          compensationPredicate = rexBuilder.makeCall(SqlStdOperatorTable.AND,
-              compensationPredicate, equals);
+          RexNode equals =
+              rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, e0, it.next());
+          compensationPredicate =
+              rexBuilder.makeCall(SqlStdOperatorTable.AND,
+                  compensationPredicate, equals);
         }
       } else {
         // Add only predicates that are not there
         for (int j : mapping.get(i)) {
-          Set<RexTableInputRef> difference = new HashSet<>(
-              sourceEquivalenceClasses.get(i));
+          Set<RexTableInputRef> difference =
+              new HashSet<>(sourceEquivalenceClasses.get(i));
           difference.removeAll(targetEquivalenceClasses.get(j));
           for (RexTableInputRef e : difference) {
-            RexNode equals = rexBuilder.makeCall(SqlStdOperatorTable.EQUALS,
-                e, targetEquivalenceClasses.get(j).iterator().next());
-            compensationPredicate = rexBuilder.makeCall(SqlStdOperatorTable.AND,
-                compensationPredicate, equals);
+            RexNode equals =
+                rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, e,
+                    targetEquivalenceClasses.get(j).iterator().next());
+            compensationPredicate =
+                rexBuilder.makeCall(SqlStdOperatorTable.AND,
+                    compensationPredicate, equals);
           }
         }
       }
@@ -968,8 +992,9 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
       EquivalenceClasses ec,
       boolean swapTableColumn,
       RexNode exprToRewrite) {
-    List<RexNode> rewrittenExprs = rewriteExpressions(rexBuilder, mq, targetNode, node, nodeExprs,
-        tableMapping, ec, swapTableColumn, ImmutableList.of(exprToRewrite));
+    List<RexNode> rewrittenExprs =
+        rewriteExpressions(rexBuilder, mq, targetNode, node, nodeExprs,
+            tableMapping, ec, swapTableColumn, ImmutableList.of(exprToRewrite));
     if (rewrittenExprs == null) {
       return null;
     }
@@ -1001,17 +1026,20 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
       List<RexNode> exprsToRewrite) {
     NodeLineage nodeLineage;
     if (swapTableColumn) {
-      nodeLineage = generateSwapTableColumnReferencesLineage(rexBuilder, mq, node,
-          tableMapping, ec, nodeExprs);
+      nodeLineage =
+          generateSwapTableColumnReferencesLineage(rexBuilder, mq, node,
+              tableMapping, ec, nodeExprs);
     } else {
-      nodeLineage = generateSwapColumnTableReferencesLineage(rexBuilder, mq, node,
-          tableMapping, ec, nodeExprs);
+      nodeLineage =
+          generateSwapColumnTableReferencesLineage(rexBuilder, mq, node,
+              tableMapping, ec, nodeExprs);
     }
 
     List<RexNode> rewrittenExprs = new ArrayList<>(exprsToRewrite.size());
     for (RexNode exprToRewrite : exprsToRewrite) {
-      RexNode rewrittenExpr = replaceWithOriginalReferences(
-          rexBuilder, targetNode, nodeLineage, exprToRewrite);
+      RexNode rewrittenExpr =
+          replaceWithOriginalReferences(rexBuilder, targetNode, nodeLineage,
+              exprToRewrite);
       if (RexUtil.containsTableInputRef(rewrittenExpr) != null) {
         // Some expressions were not present in view output
         return null;
@@ -1048,8 +1076,10 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
       }
       // Rewrite expr. First we swap the table references following the table
       // mapping, then we take first element from the corresponding equivalence class
-      final RexNode e = RexUtil.swapTableColumnReferences(rexBuilder,
-          lineages.iterator().next(), tableMapping, ec.getEquivalenceClassesMap());
+      final RexNode e =
+          RexUtil.swapTableColumnReferences(rexBuilder,
+              lineages.iterator().next(), tableMapping,
+              ec.getEquivalenceClassesMap());
       exprsLineage.put(e, i);
       if (RexUtil.isLosslessCast(e)) {
         exprsLineageLosslessCasts.put(((RexCall) e).getOperands().get(0), i);
@@ -1083,10 +1113,13 @@ public abstract class MaterializedViewRule<C extends MaterializedViewRule.Config
             + "thus expression lineage should map to a single expression, got: '"
             + lineages + "' for expr '" + expr + "' in node '" + node + "'");
       }
-      // Rewrite expr. First we take first element from the corresponding equivalence class,
-      // then we swap the table references following the table mapping
-      final RexNode e = RexUtil.swapColumnTableReferences(rexBuilder,
-          lineages.iterator().next(), ec.getEquivalenceClassesMap(), tableMapping);
+      // Rewrite expr. First we take first element from the corresponding
+      // equivalence class, then we swap the table references following the
+      // table mapping
+      final RexNode e =
+          RexUtil.swapColumnTableReferences(rexBuilder,
+              lineages.iterator().next(), ec.getEquivalenceClassesMap(),
+              tableMapping);
       exprsLineage.put(e, i);
       if (RexUtil.isLosslessCast(e)) {
         exprsLineageLosslessCasts.put(((RexCall) e).getOperands().get(0), i);
diff --git a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
index 2a27d7c18c..86983ee5ed 100644
--- a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
@@ -383,24 +383,18 @@ public class StreamRules {
       final RelNode right = join.getRight();
 
       final LogicalDelta rightWithDelta = LogicalDelta.create(right);
-      final LogicalJoin joinL = LogicalJoin.create(left,
-          rightWithDelta,
-          join.getHints(),
-          join.getCondition(),
-          join.getVariablesSet(),
-          join.getJoinType(),
-          join.isSemiJoinDone(),
-          ImmutableList.copyOf(join.getSystemFieldList()));
+      final LogicalJoin joinL =
+          LogicalJoin.create(left, rightWithDelta, join.getHints(),
+              join.getCondition(), join.getVariablesSet(), join.getJoinType(),
+              join.isSemiJoinDone(),
+              ImmutableList.copyOf(join.getSystemFieldList()));
 
       final LogicalDelta leftWithDelta = LogicalDelta.create(left);
-      final LogicalJoin joinR = LogicalJoin.create(leftWithDelta,
-          right,
-          join.getHints(),
-          join.getCondition(),
-          join.getVariablesSet(),
-          join.getJoinType(),
-          join.isSemiJoinDone(),
-          ImmutableList.copyOf(join.getSystemFieldList()));
+      final LogicalJoin joinR =
+          LogicalJoin.create(leftWithDelta, right, join.getHints(),
+              join.getCondition(), join.getVariablesSet(), join.getJoinType(),
+              join.isSemiJoinDone(),
+              ImmutableList.copyOf(join.getSystemFieldList()));
 
       List<RelNode> inputsToUnion = new ArrayList<>();
       inputsToUnion.add(joinL);
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
index 7ed4a5c065..182422e4cc 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
@@ -568,8 +568,9 @@ public interface RelDataTypeFactory {
      * Makes sure that field names are unique.
      */
     public Builder uniquify() {
-      final List<String> uniqueNames = SqlValidatorUtil.uniquify(names,
-          typeFactory.getTypeSystem().isSchemaCaseSensitive());
+      final List<String> uniqueNames =
+          SqlValidatorUtil.uniquify(names,
+              typeFactory.getTypeSystem().isSchemaCaseSensitive());
       if (uniqueNames != names) {
         names.clear();
         names.addAll(uniqueNames);
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
index 13cbe516c8..3bf1a902e8 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
@@ -251,8 +251,9 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
       // first type?
       final int k = j;
 
-      RelDataType type = leastRestrictive(
-          Util.transform(types, t -> t.getFieldList().get(k).getType()));
+      RelDataType type =
+          leastRestrictive(
+              Util.transform(types, t -> t.getFieldList().get(k).getType()));
       if (type == null) {
         return null;
       }
@@ -273,11 +274,12 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
       }
       isNullable |= type.isNullable();
     }
-    final RelDataType type = leastRestrictive(
-        Util.transform(types,
-            t -> t instanceof ArraySqlType
-                ? ((ArraySqlType) t).getComponentType()
-                : ((MultisetSqlType) t).getComponentType()));
+    final RelDataType type =
+        leastRestrictive(
+            Util.transform(types,
+                t -> t instanceof ArraySqlType
+                    ? ((ArraySqlType) t).getComponentType()
+                    : ((MultisetSqlType) t).getComponentType()));
     if (type == null) {
       return null;
     }
@@ -296,13 +298,15 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
       }
       isNullable |= type.isNullable();
     }
-    final RelDataType keyType = leastRestrictive(
-        Util.transform(types, t -> ((MapSqlType) t).getKeyType()));
+    final RelDataType keyType =
+        leastRestrictive(
+            Util.transform(types, t -> ((MapSqlType) t).getKeyType()));
     if (keyType == null) {
       return null;
     }
-    final RelDataType valueType = leastRestrictive(
-        Util.transform(types, t -> ((MapSqlType) t).getValueType()));
+    final RelDataType valueType =
+        leastRestrictive(
+            Util.transform(types, t -> ((MapSqlType) t).getValueType()));
     if (valueType == null) {
       return null;
     }
@@ -417,8 +421,8 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
       final List<String> names,
       final List<RelDataType> types,
       final boolean nullable) {
-    final RelDataType type = KEY2TYPE_CACHE.getIfPresent(
-        new Key(kind, names, types, nullable));
+    final RelDataType type =
+        KEY2TYPE_CACHE.getIfPresent(new Key(kind, names, types, nullable));
     if (type != null) {
       return type;
     }
@@ -476,8 +480,9 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
       List<RelDataTypeField> fields = type.getFieldList();
       for (RelDataTypeField field : fields) {
         if (field.getIndex() != fieldList.size()) {
-          field = new RelDataTypeFieldImpl(field.getName(), fieldList.size(),
-              field.getType());
+          field =
+              new RelDataTypeFieldImpl(field.getName(), fieldList.size(),
+                  field.getType());
         }
         fieldList.add(field);
       }
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeHolder.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeHolder.java
index d08a68de02..6358f570bf 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeHolder.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeHolder.java
@@ -67,10 +67,11 @@ class RelDataTypeHolder {
         ? SqlTypeName.DYNAMIC_STAR : SqlTypeName.ANY;
 
     // This field does not exist in our field list; add it
-    RelDataTypeField newField = new RelDataTypeFieldImpl(
-        fieldName,
-        fields.size(),
-        typeFactory.createTypeWithNullability(typeFactory.createSqlType(typeName), true));
+    RelDataTypeField newField =
+        new RelDataTypeFieldImpl(fieldName,
+            fields.size(),
+            typeFactory.createTypeWithNullability(
+                typeFactory.createSqlType(typeName), true));
 
     // Add the name to our list of field names
     fields.add(newField);
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java
index 1b4cc44632..9332eaba20 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystem.java
@@ -111,10 +111,8 @@ public interface RelDataTypeSystem {
    *
    * <p>Pre-condition: <code>createDecimalProduct(type1, type2) != null</code>
    */
-  default boolean shouldUseDoubleMultiplication(
-          RelDataTypeFactory typeFactory,
-          RelDataType type1,
-          RelDataType type2) {
+  default boolean shouldUseDoubleMultiplication(RelDataTypeFactory typeFactory,
+      RelDataType type1, RelDataType type2) {
     assert deriveDecimalMultiplyType(typeFactory, type1, type2) != null;
     return false;
   }
@@ -150,9 +148,9 @@ public interface RelDataTypeSystem {
   default @Nullable RelDataType deriveDecimalPlusType(RelDataTypeFactory typeFactory,
       RelDataType type1, RelDataType type2) {
     if (SqlTypeUtil.isExactNumeric(type1)
-            && SqlTypeUtil.isExactNumeric(type2)) {
+        && SqlTypeUtil.isExactNumeric(type2)) {
       if (SqlTypeUtil.isDecimal(type1)
-              || SqlTypeUtil.isDecimal(type2)) {
+          || SqlTypeUtil.isDecimal(type2)) {
         // Java numeric will always have invalid precision/scale,
         // use its default decimal precision/scale instead.
         type1 = RelDataTypeFactoryImpl.isJavaType(type1)
@@ -168,16 +166,10 @@ public interface RelDataTypeSystem {
         int scale = Math.max(s1, s2);
         assert scale <= getMaxNumericScale();
         int precision = Math.max(p1 - s1, p2 - s2) + scale + 1;
-        precision =
-                Math.min(
-                        precision,
-                        getMaxNumericPrecision());
+        precision = Math.min(precision, getMaxNumericPrecision());
         assert precision > 0;
 
-        return typeFactory.createSqlType(
-                SqlTypeName.DECIMAL,
-                precision,
-                scale);
+        return typeFactory.createSqlType(SqlTypeName.DECIMAL, precision, scale);
       }
     }
     return null;
@@ -219,9 +211,9 @@ public interface RelDataTypeSystem {
   default @Nullable RelDataType deriveDecimalMultiplyType(RelDataTypeFactory typeFactory,
       RelDataType type1, RelDataType type2) {
     if (SqlTypeUtil.isExactNumeric(type1)
-            && SqlTypeUtil.isExactNumeric(type2)) {
+        && SqlTypeUtil.isExactNumeric(type2)) {
       if (SqlTypeUtil.isDecimal(type1)
-              || SqlTypeUtil.isDecimal(type2)) {
+          || SqlTypeUtil.isDecimal(type2)) {
         // Java numeric will always have invalid precision/scale,
         // use its default decimal precision/scale instead.
         type1 = RelDataTypeFactoryImpl.isJavaType(type1)
@@ -238,16 +230,10 @@ public interface RelDataTypeSystem {
         int scale = s1 + s2;
         scale = Math.min(scale, getMaxNumericScale());
         int precision = p1 + p2;
-        precision =
-                Math.min(
-                        precision,
-                        getMaxNumericPrecision());
+        precision = Math.min(precision, getMaxNumericPrecision());
 
         RelDataType ret;
-        ret = typeFactory.createSqlType(
-                        SqlTypeName.DECIMAL,
-                        precision,
-                        scale);
+        ret = typeFactory.createSqlType(SqlTypeName.DECIMAL, precision, scale);
 
         return ret;
       }
@@ -292,9 +278,9 @@ public interface RelDataTypeSystem {
       RelDataType type1, RelDataType type2) {
 
     if (SqlTypeUtil.isExactNumeric(type1)
-            && SqlTypeUtil.isExactNumeric(type2)) {
+        && SqlTypeUtil.isExactNumeric(type2)) {
       if (SqlTypeUtil.isDecimal(type1)
-              || SqlTypeUtil.isDecimal(type2)) {
+          || SqlTypeUtil.isDecimal(type2)) {
         // Java numeric will always have invalid precision/scale,
         // use its default decimal precision/scale instead.
         type1 = RelDataTypeFactoryImpl.isJavaType(type1)
@@ -310,15 +296,15 @@ public interface RelDataTypeSystem {
 
         final int maxNumericPrecision = getMaxNumericPrecision();
         int dout =
-                Math.min(
-                        p1 - s1 + s2,
-                        maxNumericPrecision);
+            Math.min(
+                p1 - s1 + s2,
+                maxNumericPrecision);
 
         int scale = Math.max(6, s1 + p2 + 1);
         scale =
-                Math.min(
-                        scale,
-                        maxNumericPrecision - dout);
+            Math.min(
+                scale,
+                maxNumericPrecision - dout);
         scale = Math.min(scale, getMaxNumericScale());
 
         int precision = dout + scale;
@@ -327,10 +313,10 @@ public interface RelDataTypeSystem {
 
         RelDataType ret;
         ret = typeFactory.
-                createSqlType(
-                        SqlTypeName.DECIMAL,
-                        precision,
-                        scale);
+            createSqlType(
+            SqlTypeName.DECIMAL,
+            precision,
+            scale);
 
         return ret;
       }
@@ -373,17 +359,17 @@ public interface RelDataTypeSystem {
   default @Nullable RelDataType deriveDecimalModType(RelDataTypeFactory typeFactory,
       RelDataType type1, RelDataType type2) {
     if (SqlTypeUtil.isExactNumeric(type1)
-            && SqlTypeUtil.isExactNumeric(type2)) {
+        && SqlTypeUtil.isExactNumeric(type2)) {
       if (SqlTypeUtil.isDecimal(type1)
-              || SqlTypeUtil.isDecimal(type2)) {
+          || SqlTypeUtil.isDecimal(type2)) {
         // Java numeric will always have invalid precision/scale,
         // use its default decimal precision/scale instead.
         type1 = RelDataTypeFactoryImpl.isJavaType(type1)
-                ? typeFactory.decimalOf(type1)
-                : type1;
+            ? typeFactory.decimalOf(type1)
+            : type1;
         type2 = RelDataTypeFactoryImpl.isJavaType(type2)
-                ? typeFactory.decimalOf(type2)
-                : type2;
+            ? typeFactory.decimalOf(type2)
+            : type2;
         int p1 = type1.getPrecision();
         int p2 = type2.getPrecision();
         int s1 = type1.getScale();
@@ -401,7 +387,7 @@ public interface RelDataTypeSystem {
         assert precision > 0;
 
         return typeFactory.createSqlType(SqlTypeName.DECIMAL,
-                precision, scale);
+            precision, scale);
       }
     }
     return null;
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java
index a817293eb4..55702ce9cd 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeSystemImpl.java
@@ -226,12 +226,16 @@ public abstract class RelDataTypeSystemImpl implements RelDataTypeSystem {
           && argumentType.getPrecision() != RelDataType.PRECISION_NOT_SPECIFIED) {
         int precision = typeFactory.getTypeSystem().getMaxPrecision(typeName);
         if (typeName.allowsScale()) {
-          argumentType = typeFactory.createTypeWithNullability(
-              typeFactory.createSqlType(typeName, precision, argumentType.getScale()),
-              argumentType.isNullable());
+          argumentType =
+              typeFactory.createTypeWithNullability(
+                  typeFactory.createSqlType(typeName, precision,
+                      argumentType.getScale()),
+                  argumentType.isNullable());
         } else {
-          argumentType = typeFactory.createTypeWithNullability(
-              typeFactory.createSqlType(typeName, precision), argumentType.isNullable());
+          argumentType =
+              typeFactory.createTypeWithNullability(
+                  typeFactory.createSqlType(typeName, precision),
+                  argumentType.isNullable());
         }
       }
     }
diff --git a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
index c780e344f3..3ff84514ec 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
@@ -78,6 +78,8 @@ import java.util.stream.Collectors;
 import static org.apache.calcite.linq4j.Nullness.castNonNull;
 import static org.apache.calcite.util.Util.verifyNotNull;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * Factory for row expressions.
  *
@@ -334,7 +336,7 @@ public class RexBuilder {
       Map<AggregateCall, RexNode> aggCallMapping,
       final @Nullable List<RelDataType> aggArgTypes) {
     return addAggCall(aggCall, groupCount, aggCalls, aggCallMapping, i ->
-        Objects.requireNonNull(aggArgTypes, "aggArgTypes")
+        requireNonNull(aggArgTypes, "aggArgTypes")
             .get(aggCall.getArgList().indexOf(i)).isNullable());
   }
 
@@ -394,8 +396,8 @@ public class RexBuilder {
             lowerBound,
             upperBound,
             rows);
-    final RexOver over = new RexOver(type, operator, exprs, window,
-        distinct, ignoreNulls);
+    final RexOver over =
+        new RexOver(type, operator, exprs, window, distinct, ignoreNulls);
     RexNode result = over;
 
     // This should be correct but need time to go over test results.
@@ -403,26 +405,18 @@ public class RexBuilder {
     if (nullWhenCountZero) {
       final RelDataType bigintType =
           typeFactory.createSqlType(SqlTypeName.BIGINT);
-      result = makeCall(
-          SqlStdOperatorTable.CASE,
-          makeCall(
-              SqlStdOperatorTable.GREATER_THAN,
-              new RexOver(
-                  bigintType,
-                  SqlStdOperatorTable.COUNT,
-                  exprs,
-                  window,
-                  distinct,
-                  ignoreNulls),
-              makeLiteral(
-                  BigDecimal.ZERO,
-                  bigintType,
-                  SqlTypeName.DECIMAL)),
-          ensureType(type, // SUM0 is non-nullable, thus need a cast
-              new RexOver(typeFactory.createTypeWithNullability(type, false),
-                  operator, exprs, window, distinct, ignoreNulls),
-              false),
-          makeNullLiteral(type));
+      result =
+          makeCall(SqlStdOperatorTable.CASE,
+              makeCall(SqlStdOperatorTable.GREATER_THAN,
+                  new RexOver(bigintType, SqlStdOperatorTable.COUNT, exprs,
+                      window, distinct, ignoreNulls),
+                  makeLiteral(BigDecimal.ZERO, bigintType,
+                      SqlTypeName.DECIMAL)),
+              ensureType(type, // SUM0 is non-nullable, thus need a cast
+                  new RexOver(typeFactory.createTypeWithNullability(type, false),
+                      operator, exprs, window, distinct, ignoreNulls),
+                  false),
+              makeNullLiteral(type));
     }
     if (!allowPartial) {
       Preconditions.checkArgument(rows, "DISALLOW PARTIAL over RANGE");
@@ -713,10 +707,10 @@ public class RexBuilder {
   }
 
   private RexNode makeCastBooleanToExact(RelDataType toType, RexNode exp) {
-    final RexNode casted = makeCall(SqlStdOperatorTable.CASE,
-        exp,
-        makeExactLiteral(BigDecimal.ONE, toType),
-        makeZeroLiteral(toType));
+    final RexNode casted =
+        makeCall(SqlStdOperatorTable.CASE, exp,
+            makeExactLiteral(BigDecimal.ONE, toType),
+            makeZeroLiteral(toType));
     if (!exp.getType().isNullable()) {
       return casted;
     }
@@ -731,8 +725,8 @@ public class RexBuilder {
     final TimeUnit baseUnit = baseUnit(exp.getType().getSqlTypeName());
     final BigDecimal multiplier = baseUnit.multiplier;
     final BigDecimal divider = endUnit.multiplier;
-    RexNode value = multiplyDivide(decodeIntervalOrDecimal(exp),
-        multiplier, divider);
+    RexNode value =
+        multiplyDivide(decodeIntervalOrDecimal(exp), multiplier, divider);
     return ensureType(toType, value, false);
   }
 
@@ -983,10 +977,9 @@ public class RexBuilder {
         Charset charset = type.getCharset();
         assert charset != null : "type.getCharset() must not be null";
         assert type.getCollation() != null : "type.getCollation() must not be null";
-        o = new NlsString(
-            nlsString.getValue(),
-            charset.name(),
-            type.getCollation());
+        o =
+            new NlsString(nlsString.getValue(), charset.name(),
+                type.getCollation());
       }
       break;
     case TIME:
@@ -1110,7 +1103,7 @@ public class RexBuilder {
    * Creates a search argument literal.
    */
   public RexLiteral makeSearchArgumentLiteral(Sarg s, RelDataType type) {
-    return makeLiteral(Objects.requireNonNull(s, "s"), type, SqlTypeName.SARG);
+    return makeLiteral(requireNonNull(s, "s"), type, SqlTypeName.SARG);
   }
 
   /**
@@ -1219,7 +1212,8 @@ public class RexBuilder {
    * Creates a Date literal.
    */
   public RexLiteral makeDateLiteral(DateString date) {
-    return makeLiteral(Objects.requireNonNull(date, "date"),
+    return makeLiteral(
+        requireNonNull(date, "date"),
         typeFactory.createSqlType(SqlTypeName.DATE), SqlTypeName.DATE);
   }
 
@@ -1234,7 +1228,8 @@ public class RexBuilder {
    * Creates a Time literal.
    */
   public RexLiteral makeTimeLiteral(TimeString time, int precision) {
-    return makeLiteral(Objects.requireNonNull(time, "time"),
+    return makeLiteral(
+        requireNonNull(time, "time"),
         typeFactory.createSqlType(SqlTypeName.TIME, precision),
         SqlTypeName.TIME);
   }
@@ -1245,7 +1240,8 @@ public class RexBuilder {
   public RexLiteral makeTimeWithLocalTimeZoneLiteral(
       TimeString time,
       int precision) {
-    return makeLiteral(Objects.requireNonNull(time, "time"),
+    return makeLiteral(
+        requireNonNull(time, "time"),
         typeFactory.createSqlType(SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE, precision),
         SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE);
   }
@@ -1263,7 +1259,8 @@ public class RexBuilder {
    */
   public RexLiteral makeTimestampLiteral(TimestampString timestamp,
       int precision) {
-    return makeLiteral(Objects.requireNonNull(timestamp, "timestamp"),
+    return makeLiteral(
+        requireNonNull(timestamp, "timestamp"),
         typeFactory.createSqlType(SqlTypeName.TIMESTAMP, precision),
         SqlTypeName.TIMESTAMP);
   }
@@ -1274,7 +1271,8 @@ public class RexBuilder {
   public RexLiteral makeTimestampWithLocalTimeZoneLiteral(
       TimestampString timestamp,
       int precision) {
-    return makeLiteral(Objects.requireNonNull(timestamp, "timestamp"),
+    return makeLiteral(
+        requireNonNull(timestamp, "timestamp"),
         typeFactory.createSqlType(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, precision),
         SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE);
   }
@@ -1363,10 +1361,10 @@ public class RexBuilder {
         final List<RelDataType> types = ranges.stream()
             .map(RexNode::getType)
             .collect(Collectors.toList());
-        RelDataType sargType = Objects.requireNonNull(typeFactory.leastRestrictive(types),
-            () -> "Can't find leastRestrictive type for SARG among " + types);
-        return makeCall(SqlStdOperatorTable.SEARCH,
-            arg,
+        RelDataType sargType =
+            requireNonNull(typeFactory.leastRestrictive(types),
+                () -> "Can't find leastRestrictive type for SARG among " + types);
+        return makeCall(SqlStdOperatorTable.SEARCH, arg,
             makeSearchArgumentLiteral(sarg, sargType));
       }
     }
@@ -1405,8 +1403,9 @@ public class RexBuilder {
               ImmutableRangeSet.<Comparable>of(
                   Range.closed(lowerValue, upperValue)));
       List<RelDataType> types = ImmutableList.of(lower.getType(), upper.getType());
-      RelDataType sargType = Objects.requireNonNull(typeFactory.leastRestrictive(types),
-          () -> "Can't find leastRestrictive type for SARG among " + types);
+      RelDataType sargType =
+          requireNonNull(typeFactory.leastRestrictive(types),
+              () -> "Can't find leastRestrictive type for SARG among " + types);
       return makeCall(SqlStdOperatorTable.SEARCH, arg,
           makeSearchArgumentLiteral(sarg, sargType));
     }
diff --git a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
index d0ea92224a..eaa3c7dd46 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
@@ -129,8 +129,8 @@ public class RexExecutorImpl implements RexExecutor {
    */
   @Override public void reduce(RexBuilder rexBuilder, List<RexNode> constExps,
       List<RexNode> reducedValues) {
-    final String code = compile(rexBuilder, constExps,
-        (list, index, storageType) -> {
+    final String code =
+        compile(rexBuilder, constExps, (list, index, storageType) -> {
           throw new UnsupportedOperationException();
         });
 
@@ -156,14 +156,14 @@ public class RexExecutorImpl implements RexExecutor {
     }
 
     @Override public Expression field(BlockBuilder list, int index, @Nullable Type storageType) {
-      MethodCallExpression recFromCtx = Expressions.call(
-          DataContext.ROOT,
-          BuiltInMethod.DATA_CONTEXT_GET.method,
-          Expressions.constant("inputRecord"));
+      MethodCallExpression recFromCtx =
+          Expressions.call(DataContext.ROOT,
+              BuiltInMethod.DATA_CONTEXT_GET.method,
+              Expressions.constant("inputRecord"));
       Expression recFromCtxCasted =
           EnumUtils.convert(recFromCtx, Object[].class);
-      IndexExpression recordAccess = Expressions.arrayIndex(recFromCtxCasted,
-          Expressions.constant(index));
+      IndexExpression recordAccess =
+          Expressions.arrayIndex(recFromCtxCasted, Expressions.constant(index));
       if (storageType == null) {
         final RelDataType fieldType =
             rowType.getFieldList().get(index).getType();
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 3a66b7765e..7c6bf04962 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
@@ -843,9 +843,9 @@ public class RexLiteral extends RexNode {
       final Comparable v;
       switch (typeName) {
       case DATE:
-        final Calendar cal = DateTimeUtils.parseDateFormat(literal,
-            new SimpleDateFormat(format, Locale.ROOT),
-            tz);
+        final Calendar cal =
+            DateTimeUtils.parseDateFormat(literal,
+                new SimpleDateFormat(format, Locale.ROOT), tz);
         if (cal == null) {
           throw new AssertionError("fromJdbcString: invalid date/time value '"
               + literal + "'");
diff --git a/core/src/main/java/org/apache/calcite/rex/RexOver.java b/core/src/main/java/org/apache/calcite/rex/RexOver.java
index e085f34a09..b93d94a837 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexOver.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexOver.java
@@ -217,8 +217,9 @@ public class RexOver extends RexCall {
 
   @Override public int hashCode() {
     if (hash == 0) {
-      hash = Objects.hash(super.hashCode(), window,
-          distinct, ignoreNulls, op.allowsFraming());
+      hash =
+          Objects.hash(super.hashCode(), window, distinct, ignoreNulls,
+              op.allowsFraming());
     }
     return hash;
   }
diff --git a/core/src/main/java/org/apache/calcite/rex/RexProgram.java b/core/src/main/java/org/apache/calcite/rex/RexProgram.java
index 511e49fc01..d001e49f18 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexProgram.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexProgram.java
@@ -245,10 +245,10 @@ public class RexProgram {
    * In this case, the input is mainly from the output json string of {@link RelJsonWriter}
    */
   public static RexProgram create(RelInput input) {
-    final List<RexNode> exprs = requireNonNull(input.getExpressionList("exprs"), "exprs");
-    final List<RexNode> projectRexNodes = requireNonNull(
-        input.getExpressionList("projects"),
-        "projects");
+    final List<RexNode> exprs =
+        requireNonNull(input.getExpressionList("exprs"), "exprs");
+    final List<RexNode> projectRexNodes =
+        requireNonNull(input.getExpressionList("projects"), "projects");
     final List<RexLocalRef> projects = new ArrayList<>(projectRexNodes.size());
     for (RexNode rexNode: projectRexNodes) {
       projects.add((RexLocalRef) rexNode);
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 6accf23d36..e1a3bce3c6 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
@@ -141,9 +141,10 @@ public class RexProgramBuilder {
     // Register the condition, if there is one.
     if (condition != null) {
       if (simplify != null) {
-        condition = simplify.simplify(
-            rexBuilder.makeCall(SqlStdOperatorTable.IS_TRUE,
-                condition.accept(expander)));
+        condition =
+            simplify.simplify(
+                rexBuilder.makeCall(SqlStdOperatorTable.IS_TRUE,
+                    condition.accept(expander)));
         if (condition.isAlwaysTrue()) {
           condition = null;
         }
@@ -554,8 +555,8 @@ public class RexProgramBuilder {
       boolean simplify_) {
     RexSimplify simplify = null;
     if (simplify_) {
-      simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY,
-          RexUtil.EXECUTOR);
+      simplify =
+          new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, RexUtil.EXECUTOR);
     }
     return new RexProgramBuilder(rexBuilder, inputRowType, exprList,
         projectList, condition, outputRowType, normalize, simplify);
diff --git a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
index 0bc462dce7..37dacd68eb 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
@@ -515,17 +515,19 @@ public class RexSimplify {
       case GREATER_THAN_OR_EQUAL:
       case LESS_THAN_OR_EQUAL:
         // "x = x" simplifies to "null or x is not null" (similarly <= and >=)
-        newExpr = rexBuilder.makeCall(SqlStdOperatorTable.OR,
-            rexBuilder.makeNullLiteral(e.getType()),
-            rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, o0));
+        newExpr =
+            rexBuilder.makeCall(SqlStdOperatorTable.OR,
+                rexBuilder.makeNullLiteral(e.getType()),
+                rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, o0));
         return simplify(newExpr, unknownAs);
       case NOT_EQUALS:
       case LESS_THAN:
       case GREATER_THAN:
         // "x != x" simplifies to "null and x is null" (similarly < and >)
-        newExpr = rexBuilder.makeCall(SqlStdOperatorTable.AND,
-            rexBuilder.makeNullLiteral(e.getType()),
-            rexBuilder.makeCall(SqlStdOperatorTable.IS_NULL, o0));
+        newExpr =
+            rexBuilder.makeCall(SqlStdOperatorTable.AND,
+                rexBuilder.makeNullLiteral(e.getType()),
+                rexBuilder.makeCall(SqlStdOperatorTable.IS_NULL, o0));
         return simplify(newExpr, unknownAs);
       default:
         // unknown kind
@@ -671,8 +673,9 @@ public class RexSimplify {
         continue;
       }
       terms.set(i, simplify.simplify(t, unknownAs));
-      RelOptPredicateList newPredicates = simplify.predicates.union(rexBuilder,
-          RelOptPredicateList.of(rexBuilder, terms.subList(i, i + 1)));
+      RelOptPredicateList newPredicates =
+          simplify.predicates.union(rexBuilder,
+              RelOptPredicateList.of(rexBuilder, terms.subList(i, i + 1)));
       simplify = simplify.withPredicates(newPredicates);
     }
     for (int i = 0; i < terms.size(); i++) {
@@ -707,8 +710,9 @@ public class RexSimplify {
       terms.set(i, t2);
       final RexNode inverse =
           simplify.simplify(isNotTrue(t2), RexUnknownAs.UNKNOWN);
-      final RelOptPredicateList newPredicates = simplify.predicates.union(rexBuilder,
-          RelOptPredicateList.of(rexBuilder, ImmutableList.of(inverse)));
+      final RelOptPredicateList newPredicates =
+          simplify.predicates.union(rexBuilder,
+              RelOptPredicateList.of(rexBuilder, ImmutableList.of(inverse)));
       simplify = simplify.withPredicates(newPredicates);
     }
     for (int i = 0; i < terms.size(); i++) {
@@ -1603,8 +1607,9 @@ public class RexSimplify {
           && comparison.kind != SqlKind.NOT_EQUALS) { // not supported yet
         final C v0 = comparison.literal.getValueAs(clazz);
         if (v0 != null) {
-          final RexNode result = processRange(rexBuilder, terms, rangeTerms,
-              predicate, comparison.ref, v0, comparison.kind);
+          final RexNode result =
+              processRange(rexBuilder, terms, rangeTerms,
+                  predicate, comparison.ref, v0, comparison.kind);
           if (result != null) {
             // Not satisfiable
             return result;
@@ -1704,8 +1709,9 @@ public class RexSimplify {
           if (constant == null) {
             break;
           }
-          final RexNode result = processRange(rexBuilder, terms, rangeTerms,
-              term, comparison.ref, constant, comparison.kind);
+          final RexNode result =
+              processRange(rexBuilder, terms, rangeTerms,
+                  term, comparison.ref, constant, comparison.kind);
           if (result != null) {
             // Not satisfiable
             return result;
@@ -2014,12 +2020,15 @@ public class RexSimplify {
                   && comparable1.compareTo(comparable2) != 0) {
                 // X <> A OR X <> B => X IS NOT NULL OR NULL
                 final RexNode isNotNull =
-                    rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, notEqualsComparison.ref);
+                    rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL,
+                        notEqualsComparison.ref);
                 final RexNode constantNull =
                     rexBuilder.makeNullLiteral(trueLiteral.getType());
-                final RexNode newCondition = simplify(
-                    rexBuilder.makeCall(SqlStdOperatorTable.OR, isNotNull, constantNull),
-                    unknownAs);
+                final RexNode newCondition =
+                    simplify(
+                        rexBuilder.makeCall(SqlStdOperatorTable.OR, isNotNull,
+                            constantNull),
+                        unknownAs);
                 if (newCondition.isAlwaysTrue()) {
                   return trueLiteral;
                 }
@@ -2371,8 +2380,9 @@ public class RexSimplify {
               return rexBuilder.makeLiteral(false);
             }
             // a <= x < b OR a < x < b
-            r = Range.range(r.lowerEndpoint(), r.lowerBoundType(),
-                    v0, BoundType.OPEN);
+            r =
+                Range.range(r.lowerEndpoint(), r.lowerBoundType(), v0,
+                    BoundType.OPEN);
           } else {
             // x < b
             r = Range.lessThan(v0);
@@ -2405,8 +2415,9 @@ public class RexSimplify {
               return rexBuilder.makeLiteral(false);
             }
             // a <= x <= b OR a < x <= b
-            r = Range.range(r.lowerEndpoint(), r.lowerBoundType(),
-                    v0, BoundType.CLOSED);
+            r =
+                Range.range(r.lowerEndpoint(), r.lowerBoundType(), v0,
+                    BoundType.CLOSED);
           } else {
             // x <= b
             r = Range.atMost(v0);
@@ -2440,8 +2451,9 @@ public class RexSimplify {
               return rexBuilder.makeLiteral(false);
             }
             // a < x <= b OR a < x < b
-            r = Range.range(v0, BoundType.OPEN,
-                    r.upperEndpoint(), r.upperBoundType());
+            r =
+                Range.range(v0, BoundType.OPEN, r.upperEndpoint(),
+                    r.upperBoundType());
           } else {
             // x > a
             r = Range.greaterThan(v0);
@@ -2474,8 +2486,9 @@ public class RexSimplify {
               return rexBuilder.makeLiteral(false);
             }
             // a <= x <= b OR a <= x < b
-            r = Range.range(v0, BoundType.CLOSED,
-                    r.upperEndpoint(), r.upperBoundType());
+            r =
+                Range.range(v0, BoundType.CLOSED, r.upperEndpoint(),
+                    r.upperBoundType());
           } else {
             // x >= a
             r = Range.atLeast(v0);
diff --git a/core/src/main/java/org/apache/calcite/rex/RexUtil.java b/core/src/main/java/org/apache/calcite/rex/RexUtil.java
index 9fb321a905..d4bbae443b 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexUtil.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexUtil.java
@@ -488,8 +488,10 @@ public class RexUtil {
     final SqlTypeName name1 = type1.getSqlTypeName();
     final SqlTypeName name2 = type2.getSqlTypeName();
     final RelDataType type1Final = type1;
-    SqlTypeFamily family = requireNonNull(name1.getFamily(),
-        () -> "SqlTypeFamily is null for type " + type1Final + ", SqlTypeName " + name1);
+    SqlTypeFamily family =
+        requireNonNull(name1.getFamily(),
+            () -> "SqlTypeFamily is null for type " + type1Final
+                + ", SqlTypeName " + name1);
     if (family == name2.getFamily()) {
       switch (family) {
       case NUMERIC:
@@ -1155,8 +1157,9 @@ public class RexUtil {
       @Nullable List<? extends @Nullable String> names,
       SqlValidatorUtil.@Nullable Suggester suggester) {
     if (names != null && suggester != null) {
-      names = SqlValidatorUtil.uniquify(names, suggester,
-          typeFactory.getTypeSystem().isSchemaCaseSensitive());
+      names =
+          SqlValidatorUtil.uniquify(names, suggester,
+              typeFactory.getTypeSystem().isSchemaCaseSensitive());
     }
     final RelDataTypeFactory.Builder builder = typeFactory.builder();
     for (int i = 0; i < exprs.size(); i++) {
@@ -2155,13 +2158,12 @@ public class RexUtil {
     case EQUALS:
       final RexCall call = (RexCall) e;
       if (call.getOperands().get(1) instanceof RexLiteral) {
-        notTerms = Util.filter(notTerms,
-            e2 -> {
+        notTerms =
+            Util.filter(notTerms, e2 -> {
               switch (e2.getKind()) {
               case EQUALS:
                 RexCall call2 = (RexCall) e2;
-                if (call2.getOperands().get(0)
-                    .equals(call.getOperands().get(0))
+                if (call2.getOperands().get(0).equals(call.getOperands().get(0))
                     && call2.getOperands().get(1) instanceof RexLiteral
                     && !call.getOperands().get(1)
                           .equals(call2.getOperands().get(1))) {
@@ -2282,11 +2284,13 @@ public class RexUtil {
           @Override public RexNode visitTableInputRef(RexTableInputRef inputRef) {
             if (tableMapping != null) {
               RexTableInputRef inputRefFinal = inputRef;
-              inputRef = RexTableInputRef.of(
-                  requireNonNull(tableMapping.get(inputRef.getTableRef()),
-                      () -> "tableMapping.get(...) for " + inputRefFinal.getTableRef()),
-                  inputRef.getIndex(),
-                  inputRef.getType());
+              inputRef =
+                  RexTableInputRef.of(
+                      requireNonNull(tableMapping.get(inputRef.getTableRef()),
+                          () -> "tableMapping.get(...) for "
+                              + inputRefFinal.getTableRef()),
+                      inputRef.getIndex(),
+                      inputRef.getType());
             }
             if (ec != null) {
               Set<RexTableInputRef> s = ec.get(inputRef);
@@ -2320,9 +2324,11 @@ public class RexUtil {
             }
             if (tableMapping != null) {
               RexTableInputRef inputRefFinal = inputRef;
-              inputRef = RexTableInputRef.of(
-                  requireNonNull(tableMapping.get(inputRef.getTableRef()),
-                      () -> "tableMapping.get(...) for " + inputRefFinal.getTableRef()),
+              inputRef =
+                  RexTableInputRef.of(
+                      requireNonNull(tableMapping.get(inputRef.getTableRef()),
+                          () -> "tableMapping.get(...) for "
+                              + inputRefFinal.getTableRef()),
                   inputRef.getIndex(),
                   inputRef.getType());
             }
diff --git a/core/src/main/java/org/apache/calcite/runtime/HttpUtils.java b/core/src/main/java/org/apache/calcite/runtime/HttpUtils.java
index d23b93805d..9191dc1a3a 100644
--- a/core/src/main/java/org/apache/calcite/runtime/HttpUtils.java
+++ b/core/src/main/java/org/apache/calcite/runtime/HttpUtils.java
@@ -115,8 +115,8 @@ public class HttpUtils {
       return conn.getInputStream();
     }
     conn.setDoOutput(true);
-    try (Writer w = new OutputStreamWriter(conn.getOutputStream(),
-        StandardCharsets.UTF_8)) {
+    try (Writer w =
+             new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8)) {
       w.write(data.toString());
       w.flush(); // Get the response
       return conn.getInputStream();
diff --git a/core/src/main/java/org/apache/calcite/runtime/JsonFunctions.java b/core/src/main/java/org/apache/calcite/runtime/JsonFunctions.java
index 2ff87521f3..348938db2f 100644
--- a/core/src/main/java/org/apache/calcite/runtime/JsonFunctions.java
+++ b/core/src/main/java/org/apache/calcite/runtime/JsonFunctions.java
@@ -138,24 +138,24 @@ public class JsonFunctions {
         if (input.hasException()) {
           return JsonPathContext.withStrictException(pathSpec, input.exc);
         }
-        ctx = JsonPath.parse(input.obj(),
-            Configuration
-                .builder()
-                .jsonProvider(JSON_PATH_JSON_PROVIDER)
-                .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
-                .build());
+        ctx =
+            JsonPath.parse(input.obj(),
+                Configuration.builder()
+                    .jsonProvider(JSON_PATH_JSON_PROVIDER)
+                    .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
+                    .build());
         break;
       case LAX:
         if (input.hasException()) {
           return JsonPathContext.withJavaObj(PathMode.LAX, null);
         }
-        ctx = JsonPath.parse(input.obj(),
-            Configuration
-                .builder()
-                .options(Option.SUPPRESS_EXCEPTIONS)
-                .jsonProvider(JSON_PATH_JSON_PROVIDER)
-                .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
-                .build());
+        ctx =
+            JsonPath.parse(input.obj(),
+                Configuration.builder()
+                    .options(Option.SUPPRESS_EXCEPTIONS)
+                    .jsonProvider(JSON_PATH_JSON_PROVIDER)
+                    .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
+                    .build());
         break;
       default:
         throw RESOURCE.illegalJsonPathModeInPathSpec(mode.toString(), pathSpec).ex();
@@ -266,8 +266,9 @@ public class JsonFunctions {
         }
       } else if (context.mode == PathMode.STRICT
           && !isScalarObject(value)) {
-        exc = RESOURCE.scalarValueRequiredInStrictModeOfJsonValueFunc(
-            value.toString()).ex();
+        exc =
+            RESOURCE.scalarValueRequiredInStrictModeOfJsonValueFunc(
+                value.toString()).ex();
       } else {
         return value;
       }
@@ -352,8 +353,9 @@ public class JsonFunctions {
               emptyBehavior.toString()).ex();
         }
       } else if (context.mode == PathMode.STRICT && isScalarObject(value)) {
-        exc = RESOURCE.arrayOrObjectValueRequiredInStrictModeOfJsonQueryFunc(
-            value.toString()).ex();
+        exc =
+            RESOURCE.arrayOrObjectValueRequiredInStrictModeOfJsonQueryFunc(
+                value.toString()).ex();
       } else {
         try {
           return jsonize(value);
@@ -628,13 +630,13 @@ public class JsonFunctions {
 
   public static String jsonRemove(JsonValueContext input, String... pathSpecs) {
     try {
-      DocumentContext ctx = JsonPath.parse(input.obj(),
-          Configuration
-              .builder()
-              .options(Option.SUPPRESS_EXCEPTIONS)
-              .jsonProvider(JSON_PATH_JSON_PROVIDER)
-              .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
-              .build());
+      DocumentContext ctx =
+          JsonPath.parse(input.obj(),
+              Configuration.builder()
+                  .options(Option.SUPPRESS_EXCEPTIONS)
+                  .jsonProvider(JSON_PATH_JSON_PROVIDER)
+                  .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
+                  .build());
       for (String pathSpec : pathSpecs) {
         if ((pathSpec != null) && (ctx.read(pathSpec) != null)) {
           ctx.delete(pathSpec);
@@ -664,13 +666,13 @@ public class JsonFunctions {
     int step = type == JsonModifyMode.REMOVE ? 1 : 2;
     assert kvs.length % step == 0;
     String result = null;
-    DocumentContext ctx = JsonPath.parse(jsonDoc.obj(),
-        Configuration
-            .builder()
-            .options(Option.SUPPRESS_EXCEPTIONS)
-            .jsonProvider(JSON_PATH_JSON_PROVIDER)
-            .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
-            .build());
+    DocumentContext ctx =
+        JsonPath.parse(jsonDoc.obj(),
+            Configuration.builder()
+                .options(Option.SUPPRESS_EXCEPTIONS)
+                .jsonProvider(JSON_PATH_JSON_PROVIDER)
+                .mappingProvider(JSON_PATH_MAPPING_PROVIDER)
+                .build());
 
     for (int i = 0; i < kvs.length; i += step) {
       String k = (String) kvs[i];
diff --git a/core/src/main/java/org/apache/calcite/runtime/Like.java b/core/src/main/java/org/apache/calcite/runtime/Like.java
index d5fd5a68eb..2fa8665629 100644
--- a/core/src/main/java/org/apache/calcite/runtime/Like.java
+++ b/core/src/main/java/org/apache/calcite/runtime/Like.java
@@ -278,11 +278,9 @@ public class Like {
         case '[':
           javaPattern.append('[');
           insideCharacterEnumeration = true;
-          i = sqlSimilarRewriteCharEnumeration(
-              sqlPattern,
-              javaPattern,
-              i,
-              escapeChar);
+          i =
+              sqlSimilarRewriteCharEnumeration(sqlPattern, javaPattern,
+                  i, escapeChar);
           break;
         case ']':
           if (!insideCharacterEnumeration) {
diff --git a/core/src/main/java/org/apache/calcite/runtime/Matcher.java b/core/src/main/java/org/apache/calcite/runtime/Matcher.java
index e99df30640..fd864b0eef 100644
--- a/core/src/main/java/org/apache/calcite/runtime/Matcher.java
+++ b/core/src/main/java/org/apache/calcite/runtime/Matcher.java
@@ -122,8 +122,8 @@ public class Matcher<E> {
 
           for (DeterministicAutomaton.Transition transition : transitions) {
             // System.out.println("Append new transition to ");
-            final PartialMatch<E> newMatch = pm.append(transition.symbol,
-                rows.get(), transition.toState);
+            final PartialMatch<E> newMatch =
+                pm.append(transition.symbol, rows.get(), transition.toState);
             newMatches.add(newMatch);
           }
         }
@@ -137,9 +137,9 @@ public class Matcher<E> {
                 .collect(Collectors.toList());
 
         for (DeterministicAutomaton.Transition transition : transitions) {
-          final PartialMatch<E> newMatch = new PartialMatch<>(-1L,
-              ImmutableList.of(transition.symbol), ImmutableList.of(rows.get()),
-              transition.toState);
+          final PartialMatch<E> newMatch =
+              new PartialMatch<>(-1L, ImmutableList.of(transition.symbol),
+                  ImmutableList.of(rows.get()), transition.toState);
           newMatches.add(newMatch);
         }
       }
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 554bdb13f9..2f99177352 100644
--- a/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
+++ b/core/src/main/java/org/apache/calcite/runtime/ResultSetEnumerable.java
@@ -68,8 +68,8 @@ public class ResultSetEnumerable<T> extends AbstractEnumerable<T> {
   private final Function1<ResultSet, Function0<T>> rowBuilderFactory;
   private final @Nullable PreparedStatementEnricher preparedStatementEnricher;
 
-  private static final Logger LOGGER = LoggerFactory.getLogger(
-      ResultSetEnumerable.class);
+  private static final Logger LOGGER =
... 13326 lines suppressed ...