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 ...