You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sk...@apache.org on 2021/11/03 11:22:49 UTC
[ignite-3] branch main updated: IGNITE-15371 Switch to Google code
style. Fixes #377
This is an automated email from the ASF dual-hosted git repository.
sk0x50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 2b400c0 IGNITE-15371 Switch to Google code style. Fixes #377
2b400c0 is described below
commit 2b400c0c733b444ac79f99623c0ec59929ae3829
Author: Kirill Tkalenko <tk...@yandex.ru>
AuthorDate: Wed Nov 3 14:22:20 2021 +0300
IGNITE-15371 Switch to Google code style. Fixes #377
Signed-off-by: Slava Koptilin <sl...@gmail.com>
---
check-rules/checkstyle-rules.xml | 453 +++-
.../ignite/example/rebalance/RebalanceExample.java | 106 +-
.../ignite/example/sql/jdbc/SqlJdbcExample.java | 84 +-
.../ignite/example/table/KeyValueViewExample.java | 52 +-
.../ignite/example/table/RecordViewExample.java | 52 +-
.../apache/ignite/example/ExampleTestUtils.java | 21 +-
.../ignite/example/sql/jdbc/SqlExamplesTest.java | 33 +-
.../ignite/example/table/TableExamplesTest.java | 25 +-
idea/intellij-java-google-style.xml | 617 +++++
.../ignite/internal/affinity/AffinityUtils.java | 18 +-
.../affinity/RendezvousAffinityFunction.java | 128 +-
.../internal/affinity/AffinityServiceTest.java | 42 +-
.../affinity/RendezvousAffinityFunctionTest.java | 86 +-
.../src/main/java/org/apache/ignite/Ignite.java | 24 +-
.../src/main/java/org/apache/ignite/Ignition.java | 19 +-
.../java/org/apache/ignite/IgnitionManager.java | 54 +-
.../org/apache/ignite/binary/package-info.java | 1 +
.../schemas/clientconnector/package-info.java | 1 +
.../network/ScaleCubeConfigurationSchema.java | 7 +-
.../schemas/network/package-info.java | 1 +
.../configuration/schemas/rest/package-info.java | 1 +
.../configuration/schemas/runner/package-info.java | 1 +
.../schemas/table/ColumnTypeValidator.java | 10 +-
.../schemas/table/TableConfigurationSchema.java | 4 +-
.../schemas/table/TableValidator.java | 10 +-
.../configuration/schemas/table/package-info.java | 1 +
.../org/apache/ignite/lang/IgniteException.java | 8 +-
.../ignite/lang/TableAlreadyExistsException.java | 3 +-
.../java/org/apache/ignite/lang/package-info.java | 1 +
.../main/java/org/apache/ignite/package-info.java | 1 +
.../ignite/schema/definition/ColumnType.java | 158 +-
.../schema/definition/SchemaManagementMode.java | 12 +-
.../ignite/schema/definition/TableDefinition.java | 3 +-
.../builder/ColumnDefinitionBuilder.java | 6 +-
.../builder/HashIndexDefinitionBuilder.java | 6 +-
.../builder/PartialIndexDefinitionBuilder.java | 21 +-
.../builder/PrimaryKeyDefinitionBuilder.java | 3 +-
.../builder/SortedIndexDefinitionBuilder.java | 6 +-
.../definition/index/HashIndexDefinition.java | 3 +-
.../schema/definition/index/IndexDefinition.java | 9 +-
.../definition/index/PartialIndexDefinition.java | 3 +-
.../definition/index/SortedIndexDefinition.java | 9 +-
.../schema/definition/index/package-info.java | 1 +
.../ignite/schema/definition/package-info.java | 1 +
.../schema/modification/AlterColumnBuilder.java | 9 +-
.../modification/TableModificationBuilder.java | 8 +-
.../ignite/schema/modification/package-info.java | 1 +
.../org/apache/ignite/table/InvocationContext.java | 30 +-
.../org/apache/ignite/table/InvokeProcessor.java | 18 +-
.../java/org/apache/ignite/table/KeyValueView.java | 159 +-
.../java/org/apache/ignite/table/RecordView.java | 151 +-
.../main/java/org/apache/ignite/table/Table.java | 38 +-
.../main/java/org/apache/ignite/table/Tuple.java | 94 +-
.../java/org/apache/ignite/table/TupleImpl.java | 154 +-
.../apache/ignite/table/manager/IgniteTables.java | 139 +-
.../apache/ignite/table/manager/package-info.java | 1 +
.../apache/ignite/table/mapper/package-info.java | 1 +
.../java/org/apache/ignite/table/package-info.java | 1 +
.../org/apache/ignite/tx/IgniteTransactions.java | 4 +-
.../java/org/apache/ignite/tx/Transaction.java | 12 +-
.../java/org/apache/ignite/tx/package-info.java | 1 +
.../ignite/internal/baseline/BaselineManager.java | 25 +-
.../apache/calcite/plan/volcano/package-info.java | 1 +
.../query/calcite/ResultFieldMetadata.java | 17 +-
.../query/calcite/SqlQueryProcessor.java | 157 +-
.../internal/processors/query/calcite/Stubs.java | 5 +-
.../query/calcite/exec/AbstractIndexScan.java | 85 +-
.../query/calcite/exec/ArrayRowHandler.java | 39 +-
.../calcite/exec/ClosableIteratorsHolder.java | 105 +-
.../query/calcite/exec/ExchangeService.java | 39 +-
.../query/calcite/exec/ExchangeServiceImpl.java | 234 +-
.../calcite/exec/ExecutionCancelledException.java | 4 +-
.../query/calcite/exec/ExecutionContext.java | 136 +-
.../query/calcite/exec/ExecutionService.java | 3 +-
.../query/calcite/exec/ExecutionServiceImpl.java | 995 ++++----
.../query/calcite/exec/LogicalRelImplementor.java | 459 ++--
.../query/calcite/exec/MailboxRegistry.java | 23 +-
.../query/calcite/exec/MailboxRegistryImpl.java | 121 +-
.../query/calcite/exec/PlannerHelper.java | 99 +-
.../query/calcite/exec/QueryTaskExecutor.java | 11 +-
.../query/calcite/exec/QueryTaskExecutorImpl.java | 97 +-
.../processors/query/calcite/exec/RowHandler.java | 87 +-
.../query/calcite/exec/RuntimeHashIndex.java | 66 +-
.../query/calcite/exec/RuntimeIndex.java | 8 +-
.../query/calcite/exec/RuntimeTreeIndex.java | 132 +-
.../query/calcite/exec/TableFunctionScan.java | 29 +-
.../processors/query/calcite/exec/TreeIndex.java | 1 +
.../query/calcite/exec/exp/CallImplementor.java | 11 +-
.../query/calcite/exec/exp/ConverterUtils.java | 369 +--
.../query/calcite/exec/exp/ExpressionFactory.java | 48 +-
.../calcite/exec/exp/ExpressionFactoryImpl.java | 431 ++--
.../calcite/exec/exp/IgniteBuiltInMethod.java | 18 +-
.../query/calcite/exec/exp/IgniteSqlFunctions.java | 70 +-
.../calcite/exec/exp/ImplementableFunction.java | 1 +
.../query/calcite/exec/exp/NotNullImplementor.java | 12 +-
.../exec/exp/ReflectiveCallNotNullImplementor.java | 35 +-
.../query/calcite/exec/exp/RexImpTable.java | 1596 +++++++-----
.../query/calcite/exec/exp/RexToLixTranslator.java | 904 ++++---
.../processors/query/calcite/exec/exp/Scalar.java | 8 +-
.../query/calcite/exec/exp/agg/Accumulator.java | 25 +-
.../calcite/exec/exp/agg/AccumulatorWrapper.java | 24 +-
.../query/calcite/exec/exp/agg/Accumulators.java | 824 ++++--
.../calcite/exec/exp/agg/AccumulatorsFactory.java | 247 +-
.../query/calcite/exec/exp/agg/GroupKey.java | 70 +-
.../query/calcite/exec/rel/AbstractNode.java | 160 +-
.../query/calcite/exec/rel/AbstractSetOpNode.java | 234 +-
.../exec/rel/CorrelatedNestedLoopJoinNode.java | 235 +-
.../query/calcite/exec/rel/Downstream.java | 4 +-
.../query/calcite/exec/rel/FilterNode.java | 73 +-
.../query/calcite/exec/rel/HashAggregateNode.java | 241 +-
.../processors/query/calcite/exec/rel/Inbox.java | 364 ++-
.../query/calcite/exec/rel/IndexSpoolNode.java | 148 +-
.../query/calcite/exec/rel/IntersectNode.java | 60 +-
.../query/calcite/exec/rel/LimitNode.java | 50 +-
.../processors/query/calcite/exec/rel/Mailbox.java | 4 +-
.../query/calcite/exec/rel/MergeJoinNode.java | 608 +++--
.../query/calcite/exec/rel/MinusNode.java | 52 +-
.../query/calcite/exec/rel/ModifyNode.java | 132 +-
.../query/calcite/exec/rel/NestedLoopJoinNode.java | 492 ++--
.../processors/query/calcite/exec/rel/Node.java | 13 +-
.../processors/query/calcite/exec/rel/Outbox.java | 226 +-
.../query/calcite/exec/rel/ProjectNode.java | 33 +-
.../query/calcite/exec/rel/RootNode.java | 169 +-
.../query/calcite/exec/rel/ScanNode.java | 56 +-
.../query/calcite/exec/rel/SingleNode.java | 19 +-
.../query/calcite/exec/rel/SortAggregateNode.java | 227 +-
.../query/calcite/exec/rel/SortNode.java | 57 +-
.../query/calcite/exec/rel/TableScanNode.java | 160 +-
.../query/calcite/exec/rel/TableSpoolNode.java | 67 +-
.../query/calcite/exec/rel/UnionAllNode.java | 41 +-
.../query/calcite/externalize/RelInputEx.java | 5 +-
.../query/calcite/externalize/RelJson.java | 1060 ++++----
.../query/calcite/externalize/RelJsonReader.java | 280 +-
.../query/calcite/externalize/RelJsonWriter.java | 90 +-
.../query/calcite/message/ErrorMessage.java | 1 -
.../message/ExecutionContextAwareMessage.java | 1 -
.../query/calcite/message/InboxCloseMessage.java | 1 -
.../query/calcite/message/MessageListener.java | 2 +-
.../query/calcite/message/MessageService.java | 4 +-
.../query/calcite/message/MessageServiceImpl.java | 92 +-
.../query/calcite/message/OutboxCloseMessage.java | 1 -
.../query/calcite/message/QueryBatchMessage.java | 1 -
.../query/calcite/message/QueryStartResponse.java | 1 -
.../calcite/message/SqlQueryMessageGroup.java | 4 +-
.../query/calcite/metadata/ColocationGroup.java | 121 +-
.../calcite/metadata/FragmentDescription.java | 50 +-
.../query/calcite/metadata/FragmentMapping.java | 103 +-
.../calcite/metadata/FragmentMappingException.java | 13 +-
.../query/calcite/metadata/IgniteMdCollation.java | 322 +--
.../calcite/metadata/IgniteMdCumulativeCost.java | 57 +-
.../calcite/metadata/IgniteMdDistinctRowCount.java | 22 +-
.../calcite/metadata/IgniteMdDistribution.java | 17 +-
.../calcite/metadata/IgniteMdFragmentMapping.java | 90 +-
.../metadata/IgniteMdNonCumulativeCost.java | 21 +-
.../metadata/IgniteMdPercentageOriginalRows.java | 35 +-
.../query/calcite/metadata/IgniteMdPredicates.java | 15 +-
.../query/calcite/metadata/IgniteMdRowCount.java | 101 +-
.../calcite/metadata/IgniteMdSelectivity.java | 80 +-
.../query/calcite/metadata/IgniteMetadata.java | 43 +-
.../query/calcite/metadata/MappingService.java | 9 +-
.../query/calcite/metadata/MappingServiceImpl.java | 23 +-
.../calcite/metadata/NodeMappingException.java | 9 +-
.../query/calcite/metadata/RelMetadataQueryEx.java | 38 +-
.../query/calcite/metadata/RemoteException.java | 18 +-
.../query/calcite/metadata/cost/IgniteCost.java | 168 +-
.../calcite/metadata/cost/IgniteCostFactory.java | 34 +-
.../calcite/prepare/AbstractMultiStepPlan.java | 102 +-
.../processors/query/calcite/prepare/CacheKey.java | 38 +-
.../processors/query/calcite/prepare/Cloner.java | 127 +-
.../processors/query/calcite/prepare/DdlPlan.java | 22 +-
.../query/calcite/prepare/FieldsMetadata.java | 1 -
.../query/calcite/prepare/FieldsMetadataImpl.java | 23 +-
.../processors/query/calcite/prepare/Fragment.java | 120 +-
.../query/calcite/prepare/FragmentPlan.java | 22 +-
.../query/calcite/prepare/FragmentSplitter.java | 61 +-
.../query/calcite/prepare/IdGenerator.java | 19 +-
.../query/calcite/prepare/IgnitePlanner.java | 205 +-
.../query/calcite/prepare/IgnitePrograms.java | 23 +-
.../query/calcite/prepare/IgniteRelShuttle.java | 95 +-
.../query/calcite/prepare/IgniteSqlValidator.java | 182 +-
.../query/calcite/prepare/MultiStepPlan.java | 9 +-
.../query/calcite/prepare/PlannerHelper.java | 106 +-
.../query/calcite/prepare/PlannerPhase.java | 240 +-
.../query/calcite/prepare/PlanningContext.java | 163 +-
.../query/calcite/prepare/QueryPlan.java | 4 +-
.../query/calcite/prepare/QueryPlanCache.java | 5 +-
.../query/calcite/prepare/QueryPlanCacheImpl.java | 25 +-
.../query/calcite/prepare/QueryTemplate.java | 73 +-
.../calcite/prepare/ResultFieldMetadataImpl.java | 46 +-
.../calcite/prepare/ResultSetMetadataImpl.java | 43 +-
.../processors/query/calcite/prepare/Splitter.java | 56 +-
.../query/calcite/prepare/ValidationResult.java | 18 +-
.../calcite/prepare/ddl/ColumnDefinition.java | 14 +-
.../calcite/prepare/ddl/CreateTableCommand.java | 75 +-
.../query/calcite/prepare/ddl/DdlCommand.java | 1 +
.../prepare/ddl/DdlSqlToCommandConverter.java | 249 +-
.../query/calcite/rel/AbstractIgniteJoin.java | 135 +-
.../query/calcite/rel/AbstractIgniteSpool.java | 21 +-
.../query/calcite/rel/AbstractIndexScan.java | 44 +-
.../query/calcite/rel/IgniteAggregate.java | 64 +-
.../query/calcite/rel/IgniteConvention.java | 14 +-
.../rel/IgniteCorrelatedNestedLoopJoin.java | 167 +-
.../query/calcite/rel/IgniteExchange.java | 43 +-
.../processors/query/calcite/rel/IgniteFilter.java | 111 +-
.../query/calcite/rel/IgniteHashIndexSpool.java | 73 +-
.../query/calcite/rel/IgniteIndexScan.java | 132 +-
.../processors/query/calcite/rel/IgniteLimit.java | 125 +-
.../query/calcite/rel/IgniteMergeJoin.java | 271 +-
.../query/calcite/rel/IgniteNestedLoopJoin.java | 91 +-
.../query/calcite/rel/IgniteProject.java | 183 +-
.../query/calcite/rel/IgniteReceiver.java | 106 +-
.../processors/query/calcite/rel/IgniteRel.java | 11 +-
.../query/calcite/rel/IgniteRelVisitor.java | 1 +
.../processors/query/calcite/rel/IgniteSender.java | 94 +-
.../processors/query/calcite/rel/IgniteSort.java | 95 +-
.../query/calcite/rel/IgniteSortedIndexSpool.java | 85 +-
.../query/calcite/rel/IgniteTableFunctionScan.java | 43 +-
.../query/calcite/rel/IgniteTableModify.java | 79 +-
.../query/calcite/rel/IgniteTableScan.java | 120 +-
.../query/calcite/rel/IgniteTableSpool.java | 42 +-
.../query/calcite/rel/IgniteTrimExchange.java | 65 +-
.../query/calcite/rel/IgniteUnionAll.java | 120 +-
.../processors/query/calcite/rel/IgniteValues.java | 25 +-
.../rel/ProjectableFilterableTableScan.java | 95 +-
.../query/calcite/rel/SourceAwareIgniteRel.java | 8 +-
.../calcite/rel/agg/IgniteHashAggregateBase.java | 11 +-
.../calcite/rel/agg/IgniteMapAggregateBase.java | 49 +-
.../calcite/rel/agg/IgniteMapHashAggregate.java | 47 +-
.../calcite/rel/agg/IgniteMapSortAggregate.java | 73 +-
.../calcite/rel/agg/IgniteReduceAggregateBase.java | 125 +-
.../calcite/rel/agg/IgniteReduceHashAggregate.java | 67 +-
.../calcite/rel/agg/IgniteReduceSortAggregate.java | 80 +-
.../calcite/rel/agg/IgniteSingleAggregateBase.java | 47 +-
.../calcite/rel/agg/IgniteSingleHashAggregate.java | 21 +-
.../calcite/rel/agg/IgniteSingleSortAggregate.java | 37 +-
.../calcite/rel/agg/IgniteSortAggregateBase.java | 24 +-
.../rel/logical/IgniteLogicalIndexScan.java | 89 +-
.../rel/logical/IgniteLogicalTableScan.java | 42 +-
.../query/calcite/rel/set/IgniteIntersect.java | 17 +-
.../query/calcite/rel/set/IgniteMapIntersect.java | 32 +-
.../query/calcite/rel/set/IgniteMapMinus.java | 32 +-
.../query/calcite/rel/set/IgniteMapSetOp.java | 79 +-
.../query/calcite/rel/set/IgniteMinus.java | 17 +-
.../query/calcite/rel/set/IgniteMinusBase.java | 59 +-
.../calcite/rel/set/IgniteReduceIntersect.java | 62 +-
.../query/calcite/rel/set/IgniteReduceMinus.java | 62 +-
.../query/calcite/rel/set/IgniteReduceSetOp.java | 49 +-
.../query/calcite/rel/set/IgniteSetOp.java | 38 +-
.../calcite/rel/set/IgniteSingleIntersect.java | 26 +-
.../query/calcite/rel/set/IgniteSingleMinus.java | 26 +-
.../query/calcite/rel/set/IgniteSingleSetOp.java | 77 +-
.../calcite/rule/AbstractIgniteConverterRule.java | 21 +-
.../calcite/rule/CorrelateToNestedLoopRule.java | 77 +-
.../calcite/rule/CorrelatedNestedLoopJoinRule.java | 99 +-
.../query/calcite/rule/FilterConverterRule.java | 14 +-
.../rule/FilterSpoolMergeToHashIndexSpoolRule.java | 73 +-
.../FilterSpoolMergeToSortedIndexSpoolRule.java | 96 +-
.../calcite/rule/HashAggregateConverterRule.java | 82 +-
.../calcite/rule/LogicalScanConverterRule.java | 79 +-
.../query/calcite/rule/MergeJoinConverterRule.java | 20 +-
.../query/calcite/rule/MinusConverterRule.java | 44 +-
.../calcite/rule/NestedLoopJoinConverterRule.java | 7 +-
.../query/calcite/rule/ProjectConverterRule.java | 11 +-
.../query/calcite/rule/SetOpConverterRule.java | 119 +-
.../calcite/rule/SortAggregateConverterRule.java | 106 +-
.../query/calcite/rule/SortConverterRule.java | 23 +-
.../rule/TableFunctionScanConverterRule.java | 22 +-
.../calcite/rule/TableModifyConverterRule.java | 13 +-
.../query/calcite/rule/UnionConverterRule.java | 31 +-
.../query/calcite/rule/ValuesConverterRule.java | 15 +-
.../calcite/rule/logical/ExposeIndexRule.java | 28 +-
.../calcite/rule/logical/FilterScanMergeRule.java | 112 +-
.../calcite/rule/logical/LogicalOrToUnionRule.java | 79 +-
.../calcite/rule/logical/ProjectScanMergeRule.java | 161 +-
.../query/calcite/schema/ColumnDescriptor.java | 33 +-
.../query/calcite/schema/ColumnDescriptorImpl.java | 53 +-
.../query/calcite/schema/IgniteIndex.java | 32 +-
.../query/calcite/schema/IgniteSchema.java | 12 +-
.../query/calcite/schema/IgniteTable.java | 16 +-
.../query/calcite/schema/IgniteTableImpl.java | 138 +-
.../query/calcite/schema/SchemaHolderImpl.java | 90 +-
.../query/calcite/schema/TableDescriptor.java | 43 +-
.../query/calcite/schema/TableDescriptorImpl.java | 147 +-
.../query/calcite/sql/IgniteSqlConformance.java | 4 +-
.../query/calcite/sql/IgniteSqlCreateTable.java | 31 +-
.../calcite/sql/IgniteSqlCreateTableOption.java | 69 +-
.../sql/IgniteSqlCreateTableOptionEnum.java | 1 +
.../calcite/sql/fun/IgniteSqlOperatorTable.java | 15 +-
.../calcite/sql/fun/SqlSystemRangeFunction.java | 25 +-
.../query/calcite/trait/AffinityAdapter.java | 33 +-
.../processors/query/calcite/trait/AllNodes.java | 20 +-
.../query/calcite/trait/CorrelationTrait.java | 113 +-
.../query/calcite/trait/CorrelationTraitDef.java | 23 +-
.../query/calcite/trait/Destination.java | 4 +-
.../query/calcite/trait/DistributionFunction.java | 220 +-
.../query/calcite/trait/DistributionTrait.java | 176 +-
.../query/calcite/trait/DistributionTraitDef.java | 19 +-
.../query/calcite/trait/IgniteDistribution.java | 14 +-
.../query/calcite/trait/IgniteDistributions.java | 31 +-
.../query/calcite/trait/Partitioned.java | 32 +-
.../processors/query/calcite/trait/RandomNode.java | 24 +-
.../processors/query/calcite/trait/RelFactory.java | 7 +-
.../query/calcite/trait/RewindabilityTrait.java | 67 +-
.../query/calcite/trait/RewindabilityTraitDef.java | 23 +-
.../processors/query/calcite/trait/TraitUtils.java | 586 +++--
.../query/calcite/trait/TraitsAwareIgniteRel.java | 40 +-
.../query/calcite/type/IgniteTypeFactory.java | 40 +-
.../query/calcite/type/IgniteTypeSystem.java | 11 +-
.../processors/query/calcite/util/Commons.java | 512 ++--
.../query/calcite/util/FilteringIterator.java | 27 +-
.../processors/query/calcite/util/HintUtils.java | 48 +-
.../query/calcite/util/IgniteMethod.java | 17 +-
.../query/calcite/util/IgniteResource.java | 23 +-
.../query/calcite/util/IndexConditions.java | 72 +-
.../query/calcite/util/NodeLeaveHandler.java | 8 +-
.../processors/query/calcite/util/Primitives.java | 156 +-
.../processors/query/calcite/util/RexUtils.java | 595 +++--
.../query/calcite/util/TransformingIterator.java | 17 +-
.../processors/query/calcite/util/TypeUtils.java | 286 ++-
.../query/calcite/StopCalciteModuleTest.java | 134 +-
.../query/calcite/exec/RuntimeTreeIndexTest.java | 117 +-
.../calcite/exec/rel/AbstractExecutionTest.java | 226 +-
.../exec/rel/AbstractSetOpExecutionTest.java | 76 +-
.../query/calcite/exec/rel/BaseAggregateTest.java | 636 ++---
.../query/calcite/exec/rel/ExecutionTest.java | 623 ++---
.../exec/rel/HashAggregateExecutionTest.java | 127 +-
.../rel/HashAggregateSingleGroupExecutionTest.java | 527 ++--
.../exec/rel/HashIndexSpoolExecutionTest.java | 99 +-
.../calcite/exec/rel/IntersectExecutionTest.java | 56 +-
.../calcite/exec/rel/MergeJoinExecutionTest.java | 421 +--
.../query/calcite/exec/rel/MinusExecutionTest.java | 56 +-
.../exec/rel/NestedLoopJoinExecutionTest.java | 410 +--
.../exec/rel/SortAggregateExecutionTest.java | 141 +-
.../calcite/exec/rel/TableSpoolExecutionTest.java | 44 +-
.../exec/rel/TreeIndexSpoolExecutionTest.java | 157 +-
.../planner/AbstractAggregatePlannerTest.java | 40 +-
.../query/calcite/planner/AbstractPlannerTest.java | 877 ++++---
.../planner/AggregateDistinctPlannerTest.java | 78 +-
.../calcite/planner/AggregatePlannerTest.java | 187 +-
.../CorrelatedNestedLoopJoinPlannerTest.java | 158 +-
.../calcite/planner/HashAggregatePlannerTest.java | 55 +-
.../calcite/planner/HashIndexSpoolPlannerTest.java | 212 +-
.../calcite/planner/JoinColocationPlannerTest.java | 110 +-
.../query/calcite/planner/PlannerTest.java | 2167 ++++++++--------
.../query/calcite/planner/SetOpPlannerTest.java | 331 +--
.../calcite/planner/SortAggregatePlannerTest.java | 90 +-
.../planner/SortedIndexSpoolPlannerTest.java | 193 +-
.../query/calcite/planner/TableDmlPlannerTest.java | 24 +-
.../calcite/planner/TableFunctionPlannerTest.java | 30 +-
.../calcite/planner/TableSpoolPlannerTest.java | 86 +-
.../query/calcite/sql/SqlDdlParserTest.java | 246 +-
.../apache/ignite/cli/common/IgniteCommand.java | 8 +-
.../org/apache/ignite/cli/common/package-info.java | 4 +-
...igCommandTest.java => ItConfigCommandTest.java} | 84 +-
.../apache/ignite/cli/CliPathsConfigLoader.java | 51 +-
.../java/org/apache/ignite/cli/CliVersionInfo.java | 6 +-
.../java/org/apache/ignite/cli/CommandFactory.java | 5 +-
.../java/org/apache/ignite/cli/ErrorHandler.java | 31 +-
.../org/apache/ignite/cli/HelpFactoryImpl.java | 64 +-
.../java/org/apache/ignite/cli/IgniteCliApp.java | 19 +-
...teCLIException.java => IgniteCliException.java} | 8 +-
.../java/org/apache/ignite/cli/IgnitePaths.java | 49 +-
.../org/apache/ignite/cli/InteractiveWrapper.java | 19 +-
.../src/main/java/org/apache/ignite/cli/Table.java | 63 +-
.../org/apache/ignite/cli/VersionProvider.java | 7 +-
.../ignite/cli/builtins/SystemPathResolver.java | 18 +-
.../cli/builtins/config/ConfigurationClient.java | 92 +-
.../cli/builtins/config/HttpClientFactory.java | 8 +-
.../ignite/cli/builtins/config/package-info.java | 1 +
.../cli/builtins/init/InitIgniteCommand.java | 83 +-
.../ignite/cli/builtins/init/package-info.java | 1 +
.../cli/builtins/module/MavenArtifactResolver.java | 124 +-
.../cli/builtins/module/MavenCoordinates.java | 18 +-
.../ignite/cli/builtins/module/ModuleManager.java | 181 +-
.../ignite/cli/builtins/module/ModuleRegistry.java | 68 +-
.../builtins/module/StandardModuleDefinition.java | 14 +-
.../ignite/cli/builtins/module/package-info.java | 1 +
.../ignite/cli/builtins/node/NodeManager.java | 187 +-
.../ignite/cli/builtins/node/package-info.java | 1 +
.../apache/ignite/cli/builtins/package-info.java | 1 +
.../java/org/apache/ignite/cli/package-info.java | 1 +
.../org/apache/ignite/cli/spec/CategorySpec.java | 7 +-
.../apache/ignite/cli/spec/ConfigCommandSpec.java | 74 +-
.../org/apache/ignite/cli/spec/IgniteCliSpec.java | 88 +-
.../ignite/cli/spec/InitIgniteCommandSpec.java | 7 +-
.../apache/ignite/cli/spec/ModuleCommandSpec.java | 95 +-
.../apache/ignite/cli/spec/NodeCommandSpec.java | 69 +-
.../org/apache/ignite/cli/spec/SpecAdapter.java | 34 +-
.../org/apache/ignite/cli/spec/package-info.java | 1 +
.../java/org/apache/ignite/cli/ui/ProgressBar.java | 20 +-
.../java/org/apache/ignite/cli/ui/Spinner.java | 8 +-
.../org/apache/ignite/cli/ui/TerminalFactory.java | 7 +-
.../org/apache/ignite/cli/AbstractCliTest.java | 4 +-
.../apache/ignite/cli/IgniteCliInterfaceTest.java | 472 ++--
.../cli/builtins/init/InitIgniteCommandTest.java | 65 +-
.../ignite/cli/builtins/init/package-info.java | 1 +
.../cli/builtins/module/ModuleMangerTest.java | 105 +-
.../ignite/cli/builtins/module/package-info.java | 1 +
.../java/org/apache/ignite/cli/package-info.java | 1 +
.../org/apache/ignite/cli/ui/ProgressBarTest.java | 48 +-
.../java/org/apache/ignite/cli/ui/SpinnerTest.java | 12 +-
.../org/apache/ignite/cli/ui/package-info.java | 1 +
.../client/proto/query/IgniteQueryErrorCode.java | 4 +-
.../proto/query/event/BatchExecuteRequest.java | 14 +-
.../proto/query/event/BatchExecuteResult.java | 17 +-
.../proto/query/event/ClientMessageUtils.java | 10 +-
.../client/proto/query/event/JdbcColumnMeta.java | 239 +-
.../proto/query/event/JdbcMetaColumnsRequest.java | 13 +-
.../proto/query/event/JdbcMetaColumnsResult.java | 21 +-
.../query/event/JdbcMetaPrimaryKeysRequest.java | 11 +-
.../query/event/JdbcMetaPrimaryKeysResult.java | 15 +-
.../proto/query/event/JdbcMetaSchemasRequest.java | 9 +-
.../proto/query/event/JdbcMetaSchemasResult.java | 21 +-
.../proto/query/event/JdbcMetaTablesRequest.java | 22 +-
.../proto/query/event/JdbcMetaTablesResult.java | 18 +-
.../proto/query/event/JdbcPrimaryKeyMeta.java | 41 +-
.../query/event/JdbcQueryMetadataRequest.java | 9 +-
.../client/proto/query/event/JdbcTableMeta.java | 38 +-
.../ignite/client/proto/query/event/Query.java | 11 +-
.../proto/query/event/QueryCloseRequest.java | 9 +-
.../client/proto/query/event/QueryCloseResult.java | 5 +-
.../proto/query/event/QueryExecuteRequest.java | 17 +-
.../proto/query/event/QueryExecuteResult.java | 20 +-
.../proto/query/event/QueryFetchRequest.java | 9 +-
.../client/proto/query/event/QueryFetchResult.java | 25 +-
.../proto/query/event/QuerySingleResult.java | 29 +-
.../ignite/client/proto/query/event/Response.java | 19 +-
.../client/proto/ClientMessageDecoder.java | 35 +-
.../internal/client/proto/ClientMessagePacker.java | 299 ++-
.../client/proto/ClientMessageUnpacker.java | 187 +-
.../internal/client/proto/ProtocolVersion.java | 30 +-
.../ignite/internal/client/proto/package-info.java | 1 +
.../client/proto/ClientMessageDecoderTest.java | 15 +-
.../proto/ClientMessagePackerUnpackerTest.java | 192 +-
...ntHandlerTest.java => ItClientHandlerTest.java} | 116 +-
.../ignite/client/handler/ClientContext.java | 8 +-
.../ignite/client/handler/ClientHandlerModule.java | 56 +-
.../handler/ClientInboundMessageHandler.java | 53 +-
.../client/handler/JdbcQueryEventHandlerImpl.java | 241 +-
.../apache/ignite/client/handler/package-info.java | 1 +
.../requests/sql/ClientSqlCloseRequest.java | 10 +-
.../sql/ClientSqlColumnMetadataRequest.java | 10 +-
.../requests/sql/ClientSqlExecuteBatchRequest.java | 10 +-
.../requests/sql/ClientSqlExecuteRequest.java | 4 +-
.../requests/sql/ClientSqlFetchRequest.java | 10 +-
.../sql/ClientSqlPrimaryKeyMetadataRequest.java | 10 +-
.../sql/ClientSqlQueryMetadataRequest.java | 10 +-
.../sql/ClientSqlSchemasMetadataRequest.java | 10 +-
.../sql/ClientSqlTableMetadataRequest.java | 10 +-
.../handler/requests/sql/JdbcMetadataCatalog.java | 231 +-
.../client/handler/requests/sql/package-info.java | 1 +
.../requests/table/ClientSchemasGetRequest.java | 16 +-
.../handler/requests/table/ClientTableCommon.java | 359 +--
.../requests/table/ClientTableDropRequest.java | 2 +-
.../requests/table/ClientTableGetRequest.java | 9 +-
.../requests/table/ClientTablesGetRequest.java | 2 +-
.../table/ClientTupleContainsKeyRequest.java | 10 +-
.../table/ClientTupleDeleteAllExactRequest.java | 12 +-
.../table/ClientTupleDeleteAllRequest.java | 12 +-
.../table/ClientTupleDeleteExactRequest.java | 10 +-
.../requests/table/ClientTupleDeleteRequest.java | 10 +-
.../requests/table/ClientTupleGetAllRequest.java | 12 +-
.../table/ClientTupleGetAndDeleteRequest.java | 12 +-
.../table/ClientTupleGetAndReplaceRequest.java | 12 +-
.../ClientTupleGetAndReplaceSchemalessRequest.java | 12 +-
.../table/ClientTupleGetAndUpsertRequest.java | 12 +-
.../ClientTupleGetAndUpsertSchemalessRequest.java | 12 +-
.../requests/table/ClientTupleGetRequest.java | 12 +-
.../table/ClientTupleInsertAllRequest.java | 12 +-
.../ClientTupleInsertAllSchemalessRequest.java | 12 +-
.../requests/table/ClientTupleInsertRequest.java | 10 +-
.../table/ClientTupleInsertSchemalessRequest.java | 10 +-
.../table/ClientTupleReplaceExactRequest.java | 12 +-
.../ClientTupleReplaceExactSchemalessRequest.java | 10 +-
.../requests/table/ClientTupleReplaceRequest.java | 10 +-
.../table/ClientTupleReplaceSchemalessRequest.java | 10 +-
.../table/ClientTupleUpsertAllRequest.java | 8 +-
.../ClientTupleUpsertAllSchemalessRequest.java | 8 +-
.../requests/table/ClientTupleUpsertRequest.java | 8 +-
.../table/ClientTupleUpsertSchemalessRequest.java | 8 +-
.../handler/requests/table/package-info.java | 1 +
.../org/apache/ignite/client/IgniteClient.java | 40 +-
.../ignite/client/IgniteClientAddressFinder.java | 10 +-
.../IgniteClientAuthenticationException.java | 2 +-
.../client/IgniteClientAuthorizationException.java | 2 +-
.../ignite/client/IgniteClientConfiguration.java | 6 +-
.../client/IgniteClientConnectionException.java | 2 +-
.../ignite/client/IgniteClientException.java | 8 +-
...ClientFeatureNotSupportedByServerException.java | 2 +-
.../org/apache/ignite/client/package-info.java | 1 +
.../ignite/internal/client/ClientChannel.java | 9 +-
.../client/ClientChannelConfiguration.java | 2 +-
.../ignite/internal/client/HostAndPortRange.java | 84 +-
.../client/IgniteClientConfigurationImpl.java | 27 +-
.../internal/client/PayloadInputChannel.java | 3 +-
.../internal/client/PayloadOutputChannel.java | 5 +-
.../internal/client/ProtocolBitmaskFeature.java | 13 +-
.../ignite/internal/client/ProtocolContext.java | 6 +-
.../ignite/internal/client/ReliableChannel.java | 186 +-
.../ignite/internal/client/TcpClientChannel.java | 93 +-
.../ignite/internal/client/TcpIgniteClient.java | 22 +-
.../internal/client/io/ClientConnection.java | 3 +-
.../client/io/ClientConnectionMultiplexer.java | 7 +-
.../internal/client/io/ClientMessageHandler.java | 2 +-
.../client/io/netty/NettyClientConnection.java | 16 +-
.../io/netty/NettyClientConnectionMultiplexer.java | 26 +-
.../client/io/netty/NettyClientMessageHandler.java | 12 +-
.../client/query/JdbcClientQueryEventHandler.java | 29 +-
.../ignite/internal/client/table/ClientColumn.java | 9 +-
.../client/table/ClientKeyValueBinaryView.java | 132 +-
.../client/table/ClientRecordBinaryView.java | 222 +-
.../ignite/internal/client/table/ClientSchema.java | 9 +-
.../ignite/internal/client/table/ClientTable.java | 303 ++-
.../ignite/internal/client/table/ClientTables.java | 43 +-
.../ignite/internal/client/table/ClientTuple.java | 147 +-
.../ignite/internal/jdbc/ConnectionProperties.java | 4 +-
.../internal/jdbc/ConnectionPropertiesImpl.java | 356 +--
.../ignite/internal/jdbc/JdbcConnection.java | 375 +--
.../ignite/internal/jdbc/JdbcDatabaseMetadata.java | 1767 +++++++------
.../internal/jdbc/JdbcPreparedStatement.java | 390 +--
.../apache/ignite/internal/jdbc/JdbcResultSet.java | 1327 ++++++----
.../internal/jdbc/JdbcResultSetMetadata.java | 129 +-
.../apache/ignite/internal/jdbc/JdbcStatement.java | 468 ++--
.../apache/ignite/internal/jdbc/package-info.java | 1 +
.../org/apache/ignite/jdbc/IgniteJdbcDriver.java | 39 +-
.../java/org/apache/ignite/jdbc/package-info.java | 1 +
.../apache/ignite/client/AbstractClientTest.java | 80 +-
.../client/ClientKeyValueBinaryViewTest.java | 14 +-
.../org/apache/ignite/client/ClientTableTest.java | 20 +-
.../org/apache/ignite/client/ClientTablesTest.java | 9 +-
.../org/apache/ignite/client/ClientTupleTest.java | 142 +-
.../apache/ignite/client/ConfigurationTest.java | 14 +-
.../org/apache/ignite/client/ConnectionTest.java | 8 +-
.../java/org/apache/ignite/client/CustomTuple.java | 155 +-
.../org/apache/ignite/client/ReconnectTest.java | 9 +-
.../org/apache/ignite/client/fakes/FakeCursor.java | 39 +-
.../org/apache/ignite/client/fakes/FakeIgnite.java | 16 +-
.../client/fakes/FakeIgniteQueryProcessor.java | 9 +-
.../ignite/client/fakes/FakeIgniteTables.java | 147 +-
.../ignite/client/fakes/FakeInternalTable.java | 209 +-
.../ignite/client/fakes/FakeSchemaRegistry.java | 21 +-
.../internal/client/HostAndPortRangeTest.java | 20 +-
.../processor/AbstractProcessorTest.java | 46 +-
.../configuration/processor/ConfigSet.java | 12 +-
.../configuration/processor/HasFieldMatcher.java | 39 +-
.../configuration/processor/HasMethodMatcher.java | 38 +-
.../{ITProcessorTest.java => ItProcessorTest.java} | 244 +-
.../configuration/processor/ParsedClass.java | 29 +-
.../ErrorInternal1ConfigurationSchema.java | 3 +-
.../ErrorInternal2ConfigurationSchema.java | 3 +-
.../configuration/processor/Processor.java | 785 +++---
.../processor/ProcessorException.java | 1 +
.../internal/configuration/processor/Utils.java | 31 +-
.../configuration/processor/UtilsTest.java | 15 +-
.../ConfigurationChangeException.java | 3 +-
.../configuration/ConfigurationProperty.java | 10 +-
.../ignite/configuration/ConfigurationTree.java | 8 +-
.../ignite/configuration/ConfigurationValue.java | 10 +-
.../configuration/DirectConfigurationProperty.java | 28 +-
.../configuration/NamedConfigurationTree.java | 23 +-
.../ignite/configuration/NamedListChange.java | 18 +-
.../apache/ignite/configuration/NamedListView.java | 8 +-
.../org/apache/ignite/configuration/RootKey.java | 9 +-
.../ignite/configuration/annotation/Config.java | 12 +-
.../configuration/annotation/ConfigValue.java | 8 +-
.../annotation/ConfigurationRoot.java | 10 +-
.../configuration/annotation/DirectAccess.java | 20 +-
.../annotation/InternalConfiguration.java | 19 +-
.../configuration/annotation/NamedConfigValue.java | 13 +-
.../annotation/PolymorphicConfig.java | 10 +-
.../annotation/PolymorphicConfigInstance.java | 10 +-
.../configuration/annotation/PolymorphicId.java | 10 +-
.../ignite/configuration/annotation/Value.java | 19 +-
.../configuration/annotation/package-info.java | 1 +
.../notifications/ConfigurationListener.java | 6 +-
.../ConfigurationNamedListListener.java | 36 +-
.../ConfigurationNotificationEvent.java | 27 +-
.../configuration/notifications/package-info.java | 1 +
.../apache/ignite/configuration/package-info.java | 1 +
.../configuration/validation/ExceptKeys.java | 8 +-
.../ignite/configuration/validation/Immutable.java | 6 +-
.../ignite/configuration/validation/Max.java | 6 +-
.../ignite/configuration/validation/Min.java | 6 +-
.../ignite/configuration/validation/OneOf.java | 12 +-
.../validation/ValidationContext.java | 14 +-
.../configuration/validation/ValidationIssue.java | 4 +-
.../ignite/configuration/validation/Validator.java | 12 +-
.../configuration/validation/package-info.java | 1 +
.../configuration/ConfigurationChanger.java | 375 +--
.../configuration/ConfigurationManager.java | 67 +-
.../internal/configuration/ConfigurationNode.java | 82 +-
.../configuration/ConfigurationRegistry.java | 282 ++-
.../configuration/ConfigurationTreeWrapper.java | 18 +-
.../DirectConfigurationTreeWrapper.java | 19 +-
.../configuration/DirectDynamicConfiguration.java | 30 +-
.../configuration/DirectDynamicProperty.java | 36 +-
.../DirectNamedListConfiguration.java | 38 +-
.../configuration/DynamicConfiguration.java | 162 +-
.../configuration/DynamicConfigurationChanger.java | 8 +-
.../internal/configuration/DynamicProperty.java | 86 +-
.../configuration/NamedListConfiguration.java | 126 +-
.../internal/configuration/RootInnerNode.java | 2 +-
.../ignite/internal/configuration/SuperRoot.java | 58 +-
.../ignite/internal/configuration/TypeUtils.java | 44 +-
.../asm/ConfigurationAsmGenerator.java | 2670 ++++++++++----------
.../configuration/asm/SchemaClassesInfo.java | 4 +-
.../configuration/asm/StringSwitchBuilder.java | 93 +-
.../configuration/hocon/HoconConverter.java | 13 +-
.../hocon/HoconListConfigurationSource.java | 59 +-
.../hocon/HoconObjectConfigurationSource.java | 88 +-
.../hocon/HoconPrimitiveConfigurationSource.java | 94 +-
.../storage/ConfigurationStorage.java | 15 +-
.../storage/ConfigurationStorageListener.java | 1 +
.../internal/configuration/storage/Data.java | 6 +-
.../configuration/storage/StorageException.java | 1 +
.../configuration/tree/ConfigurationSource.java | 22 +-
.../configuration/tree/ConfigurationVisitor.java | 4 +-
.../configuration/tree/ConverterToMapVisitor.java | 31 +-
.../internal/configuration/tree/InnerNode.java | 70 +-
.../internal/configuration/tree/NamedListNode.java | 348 +--
.../internal/configuration/tree/OrderedMap.java | 48 +-
.../configuration/tree/TraversableTreeNode.java | 8 +-
.../util/AnyNodeConfigurationVisitor.java | 11 +-
.../configuration/util/ConfigurationContainer.java | 15 +-
.../configuration/util/ConfigurationFlattener.java | 152 +-
.../util/ConfigurationNotificationEventImpl.java | 41 +-
.../util/ConfigurationNotificationsUtil.java | 727 +++---
.../configuration/util/ConfigurationUtil.java | 600 ++---
.../configuration/util/KeyNotFoundException.java | 4 +-
.../util/KeysTrackingConfigurationVisitor.java | 92 +-
.../validation/ExceptKeysValidator.java | 6 +-
.../validation/ImmutableValidator.java | 7 +-
.../configuration/validation/MaxValidator.java | 5 +-
.../configuration/validation/MemberKey.java | 20 +-
.../configuration/validation/MinValidator.java | 5 +-
.../configuration/validation/OneOfValidator.java | 10 +-
.../validation/ValidationContextImpl.java | 72 +-
.../configuration/validation/ValidationUtil.java | 103 +-
.../configuration/ConfigurationChangerTest.java | 476 ++--
.../configuration/ConfigurationRegistryTest.java | 134 +-
.../configuration/DirectPropertiesTest.java | 187 +-
.../configuration/TestConfigurationChanger.java | 56 +-
.../asm/ConfigurationAsmGeneratorTest.java | 512 ++--
.../configuration/hocon/HoconConverterTest.java | 606 +++--
.../ConfigurationAnyListenerTest.java | 728 +++---
.../notifications/ConfigurationListenerTest.java | 751 +++---
.../ConfigurationListenerTestUtils.java | 85 +-
.../internal/configuration/sample/UsageTest.java | 132 +-
.../storage/TestConfigurationStorage.java | 46 +-
.../testframework/BasicConfigurationSchema.java | 4 +-
.../testframework/ConfigurationExtension.java | 188 +-
.../testframework/ConfigurationExtensionTest.java | 74 +-
.../testframework/ExtendedConfigurationSchema.java | 4 +-
.../testframework/InjectConfiguration.java | 12 +-
.../configuration/tree/ConfigurationArrayTest.java | 142 +-
.../tree/ConstructableTreeNodeTest.java | 94 +-
.../configuration/tree/NamedListNodeTest.java | 399 +--
.../configuration/tree/OrderedMapTest.java | 6 +-
.../tree/TraversableTreeNodeTest.java | 163 +-
.../configuration/util/ConfigurationUtilTest.java | 925 +++----
.../validation/OneOfValidatorTest.java | 34 +-
.../validation/ValidationUtilTest.java | 73 +-
.../org/apache/ignite/internal/manager/Event.java | 1 +
.../ignite/internal/manager/EventListener.java | 12 +-
.../ignite/internal/manager/EventParameters.java | 4 +-
.../ignite/internal/manager/IgniteComponent.java | 13 +-
.../internal/manager/ListenerRemovedException.java | 2 +
.../apache/ignite/internal/manager/Producer.java | 46 +-
.../ignite/internal/thread/IgniteThread.java | 23 +-
.../ignite/internal/thread/NamedThreadFactory.java | 26 +-
.../internal/thread/StripedThreadPoolExecutor.java | 161 +-
.../internal/tostring/CircularStringBuilder.java | 71 +-
.../ignite/internal/tostring/ClassDescriptor.java | 15 +-
.../ignite/internal/tostring/FieldDescriptor.java | 87 +-
.../internal/tostring/IgniteToStringBuilder.java | 2079 +++++++--------
.../internal/tostring/IgniteToStringExclude.java | 5 +-
.../internal/tostring/IgniteToStringInclude.java | 12 +-
.../internal/tostring/IgniteToStringOrder.java | 7 +-
.../org/apache/ignite/internal/tostring/S.java | 4 +-
.../tostring/SensitiveDataLoggingPolicy.java | 2 +-
...Length.java => StringBuilderLimitedLength.java} | 110 +-
.../apache/ignite/internal/util/ArrayFactory.java | 4 +-
.../apache/ignite/internal/util/ArrayUtils.java | 188 +-
.../org/apache/ignite/internal/util/ByteUtils.java | 27 +-
.../apache/ignite/internal/util/Cancellable.java | 7 +-
.../ignite/internal/util/CollectionUtils.java | 179 +-
.../ignite/internal/util/FeatureChecker.java | 28 +-
.../apache/ignite/internal/util/GridUnsafe.java | 1506 +++++------
.../ignite/internal/util/IgniteIntIterator.java | 8 +-
.../apache/ignite/internal/util/IgniteIntList.java | 231 +-
.../ignite/internal/util/IgniteSpinBusyLock.java | 27 +-
.../internal/util/IgniteSpinReadWriteLock.java | 144 +-
.../apache/ignite/internal/util/IgniteUtils.java | 387 +--
.../java/org/apache/ignite/lang/ByteArray.java | 30 +-
.../java/org/apache/ignite/lang/IgniteBiTuple.java | 117 +-
.../lang/IgniteInternalCheckedException.java | 12 +-
.../ignite/lang/IgniteInternalException.java | 8 +-
.../java/org/apache/ignite/lang/IgniteLogger.java | 101 +-
.../apache/ignite/lang/IgniteStringBuilder.java | 127 +-
.../apache/ignite/lang/IgniteSystemProperties.java | 144 +-
.../java/org/apache/ignite/lang/IgniteUuid.java | 45 +-
.../apache/ignite/lang/JavaLoggerFormatter.java | 39 +-
.../apache/ignite/lang/LoggerMessageHelper.java | 187 +-
.../apache/ignite/lang/NodeStoppingException.java | 9 +-
.../java/org/apache/ignite/lang/package-info.java | 1 +
.../extensions/communication/package-info.java | 1 +
.../internal/testframework/IgniteAbstractTest.java | 30 +-
.../internal/testframework/IgniteTestUtils.java | 113 +-
.../testframework/SystemPropertiesExtension.java | 45 +-
.../testframework/SystemPropertiesList.java | 4 +-
.../internal/testframework/WithSystemProperty.java | 18 +-
.../internal/testframework/WorkDirectory.java | 4 +-
.../testframework/WorkDirectoryExtension.java | 102 +-
.../testframework/WorkDirectoryExtensionTest.java | 146 +-
.../matchers/CompletableFutureMatcher.java | 23 +-
.../tostring/CircularStringBuilderSelfTest.java | 43 +-
.../tostring/IgniteToStringBuilderSelfTest.java | 452 ++--
.../tostring/SensitiveDataToStringTest.java | 80 +-
.../ignite/internal/util/CollectionUtilsTest.java | 67 +-
.../internal/util/IgniteIntListSelfTest.java | 61 +-
.../internal/util/IgniteSpinReadWriteLockTest.java | 212 +-
.../ignite/internal/util/IgniteUtilsTest.java | 14 +-
.../org/apache/ignite/lang/LoggerHelperTest.java | 105 +-
...va => ItMetaStorageServicePersistenceTest.java} | 87 +-
...viceTest.java => ItMetaStorageServiceTest.java} | 403 +--
.../metastorage/client/CompactedException.java | 6 +-
.../internal/metastorage/client/Condition.java | 70 +-
.../internal/metastorage/client/Conditions.java | 4 +-
.../internal/metastorage/client/CursorImpl.java | 63 +-
.../internal/metastorage/client/EntryEvent.java | 23 +-
.../internal/metastorage/client/EntryImpl.java | 54 +-
.../metastorage/client/MetaStorageService.java | 112 +-
.../metastorage/client/MetaStorageServiceImpl.java | 269 +-
.../internal/metastorage/client/Operation.java | 23 +-
.../client/OperationTimeoutException.java | 5 +-
.../internal/metastorage/client/Operations.java | 6 +-
.../internal/metastorage/client/WatchEvent.java | 4 +-
.../internal/metastorage/client/WatchListener.java | 7 +-
.../internal/metastorage/client/package-info.java | 1 +
.../metastorage/common/command/ConditionInfo.java | 6 +-
.../metastorage/common/command/GetAllCommand.java | 15 +-
.../common/command/GetAndPutAllCommand.java | 10 +-
.../common/command/GetAndPutCommand.java | 10 +-
.../common/command/GetAndRemoveAllCommand.java | 9 +-
.../common/command/GetAndRemoveCommand.java | 7 +-
.../metastorage/common/command/GetCommand.java | 8 +-
.../metastorage/common/command/InvokeCommand.java | 2 +-
.../metastorage/common/command/OperationInfo.java | 4 +-
.../metastorage/common/command/PutAllCommand.java | 3 +-
.../metastorage/common/command/PutCommand.java | 10 +-
.../metastorage/common/command/RangeCommand.java | 54 +-
.../common/command/RemoveAllCommand.java | 6 +-
.../metastorage/common/command/RemoveCommand.java | 3 +-
.../common/command/SingleEntryResponse.java | 12 +-
.../common/command/WatchExactKeysCommand.java | 29 +-
.../common/command/WatchRangeKeysCommand.java | 44 +-
.../common/command/cursor/CursorCloseCommand.java | 3 +-
.../command/cursor/CursorHasNextCommand.java | 3 +-
.../common/command/cursor/CursorNextCommand.java | 3 +-
.../common/command/cursor/CursorsCloseCommand.java | 7 +-
.../internal/metastorage/common/package-info.java | 1 +
.../metastorage/server/AbstractCondition.java | 3 +-
.../metastorage/server/CompactedException.java | 6 +-
.../internal/metastorage/server/Condition.java | 4 +-
.../ignite/internal/metastorage/server/Entry.java | 64 +-
.../metastorage/server/ExistenceCondition.java | 14 +-
.../metastorage/server/KeyValueStorage.java | 39 +-
.../internal/metastorage/server/Operation.java | 27 +-
.../metastorage/server/RevisionCondition.java | 25 +-
.../metastorage/server/TombstoneCondition.java | 6 +-
.../ignite/internal/metastorage/server/Value.java | 2 +-
.../metastorage/server/ValueCondition.java | 13 +-
.../internal/metastorage/server/WatchEvent.java | 4 +-
.../server/persistence/RangeCursor.java | 52 +-
...lueStorage.java => RocksDbKeyValueStorage.java} | 824 +++---
.../server/persistence/RocksStorageUtils.java | 34 +-
.../server/persistence/WatchCursor.java | 80 +-
.../server/raft/MetaStorageListener.java | 203 +-
.../server/AbstractKeyValueStorageTest.java | 661 ++---
.../metastorage/server/ExistenceConditionTest.java | 8 +-
.../metastorage/server/RevisionConditionTest.java | 8 +-
.../server/RocksDbKeyValueStorageTest.java | 11 +-
.../server/SimpleInMemoryKeyValueStorage.java | 315 ++-
.../server/SimpleInMemoryKeyValueStorageTest.java | 3 +-
.../metastorage/server/TombstoneConditionTest.java | 8 +-
.../metastorage/server/ValueConditionTest.java | 10 +-
.../internal/metastorage/MetaStorageManager.java | 547 ++--
.../metastorage/watch/AggregatedWatch.java | 7 +-
.../internal/metastorage/watch/KeyCriterion.java | 152 +-
.../metastorage/watch/WatchAggregator.java | 61 +-
.../internal/metastorage/WatchAggregatorTest.java | 80 +-
...java => ItTransferableObjectProcessorTest.java} | 64 +-
.../network/processor/InheritedMessageClash.java | 1 -
.../internal/network/processor/MessageClass.java | 51 +-
.../network/processor/MessageGroupWrapper.java | 5 +-
.../network/processor/ProcessingException.java | 8 +-
.../processor/TransferableObjectProcessor.java | 76 +-
.../internal/network/processor/TypeUtils.java | 30 +-
.../messages/MessageBuilderGenerator.java | 70 +-
.../messages/MessageFactoryGenerator.java | 32 +-
.../processor/messages/MessageImplGenerator.java | 238 +-
.../serialization/BaseMethodNameResolver.java | 43 +-
.../MessageCollectionItemTypeConverter.java | 23 +-
.../MessageDeserializerGenerator.java | 128 +-
.../serialization/MessageReaderMethodResolver.java | 67 +-
.../serialization/MessageSerializerGenerator.java | 88 +-
.../serialization/MessageWriterMethodResolver.java | 77 +-
.../RegistryInitializerGenerator.java | 42 +-
.../SerializationFactoryGenerator.java | 84 +-
.../ignite/network/AbstractClusterService.java | 24 +-
.../ignite/network/AbstractMessagingService.java | 16 +-
.../ignite/network/AbstractTopologyService.java | 3 +-
.../ignite/network/ClusterLocalConfiguration.java | 5 +-
.../org/apache/ignite/network/ClusterNode.java | 22 +-
.../org/apache/ignite/network/ClusterService.java | 7 +-
.../ignite/network/ClusterServiceFactory.java | 7 +-
.../apache/ignite/network/MessagingService.java | 40 +-
.../org/apache/ignite/network/NetworkAddress.java | 20 +-
.../network/NetworkConfigurationException.java | 2 +-
.../org/apache/ignite/network/NetworkMessage.java | 15 +-
.../ignite/network/NetworkMessageHandler.java | 6 +-
.../ignite/network/TopologyEventHandler.java | 5 +-
.../org/apache/ignite/network/TopologyService.java | 3 +-
.../ignite/network/annotations/MessageGroup.java | 31 +-
.../ignite/network/annotations/Transferable.java | 16 +-
.../ignite/network/annotations/package-info.java | 1 +
.../org/apache/ignite/network/package-info.java | 1 +
.../serialization/MessageMappingException.java | 2 +-
.../network/serialization/MessageReader.java | 23 +-
.../serialization/MessageSerializationFactory.java | 3 +-
.../MessageSerializationRegistry.java | 28 +-
.../network/serialization/MessageSerializer.java | 2 +-
.../network/serialization/MessageWriter.java | 78 +-
.../ignite/network/serialization/package-info.java | 1 +
.../apache/ignite/network/NetworkAddressTest.java | 6 +-
...nagerTest.java => ItConnectionManagerTest.java} | 56 +-
...shakeTest.java => ItRecoveryHandshakeTest.java} | 158 +-
...deRestartsTest.java => ItNodeRestartsTest.java} | 42 +-
...t.java => ItScaleCubeNetworkMessagingTest.java} | 168 +-
.../TestScaleCubeClusterServiceFactory.java | 16 +-
.../ignite/network/scalecube/package-info.java | 1 +
.../ignite/utils/ClusterServiceTestUtils.java | 114 +-
.../network/direct/DirectMarshallingUtils.java | 5 +-
.../network/direct/DirectMessageReader.java | 123 +-
.../network/direct/DirectMessageWriter.java | 129 +-
.../network/direct/state/DirectMessageState.java | 10 +-
.../direct/stream/DirectByteBufferStream.java | 44 +-
.../stream/DirectByteBufferStreamImplV1.java | 917 ++++---
.../network/handshake/HandshakeException.java | 2 +-
.../network/handshake/HandshakeManager.java | 2 +-
.../internal/network/message/ScaleCubeMessage.java | 6 +-
.../internal/network/netty/ConnectionManager.java | 194 +-
.../internal/network/netty/HandshakeHandler.java | 22 +-
.../internal/network/netty/InboundDecoder.java | 32 +-
.../netty/IoExceptionSuppressingHandler.java | 7 +-
.../internal/network/netty/MessageHandler.java | 9 +-
.../network/netty/NamedNioEventLoopGroup.java | 11 +-
.../ignite/internal/network/netty/NettyClient.java | 101 +-
.../ignite/internal/network/netty/NettySender.java | 6 +-
.../ignite/internal/network/netty/NettyServer.java | 361 +--
.../ignite/internal/network/netty/NettyUtils.java | 31 +-
.../internal/network/netty/OutboundEncoder.java | 35 +-
.../recovery/RecoveryClientHandshakeManager.java | 41 +-
.../recovery/RecoveryServerHandshakeManager.java | 35 +-
.../network/MessageSerializationRegistryImpl.java | 20 +-
.../apache/ignite/network/NodeFinderFactory.java | 13 +-
.../org/apache/ignite/network/package-info.java | 1 +
.../scalecube/DelegatingTransportFactory.java | 44 +-
.../scalecube/ScaleCubeClusterServiceFactory.java | 107 +-
.../ScaleCubeDirectMarshallerTransport.java | 93 +-
.../scalecube/ScaleCubeMessagingService.java | 110 +-
.../scalecube/ScaleCubeTopologyService.java | 35 +-
.../ignite/network/scalecube/package-info.java | 1 +
.../ignite/internal/network/AllTypesMessage.java | 48 +-
.../internal/network/AllTypesMessageGenerator.java | 117 +-
.../internal/network/AllTypesMessageTest.java | 10 +-
.../internal/network/netty/InboundDecoderTest.java | 64 +-
.../netty/IoExceptionSuppressingHandlerTest.java | 16 +-
.../internal/network/netty/NettyClientTest.java | 67 +-
.../internal/network/netty/NettyServerTest.java | 219 +-
.../internal/network/processor/EmptyMessage.java | 4 +-
.../network/processor/EmptyMessageTest.java | 14 +-
.../network/processor/InheritedMessage.java | 24 +-
.../network/processor/InheritedMessageTest.java | 43 +-
.../network/processor/NetworkMessage1.java} | 16 +-
.../network/processor/NetworkMessage2.java} | 14 +-
.../processor/SerializationOrderMessage.java | 24 +-
.../network/processor/SerializationOrderTest.java | 55 +-
.../network/AbstractMessagingServiceTest.java | 31 +-
.../MessageSerializationRegistryImplTest.java | 59 +-
.../apache/ignite/network/TestMessageTypes.java | 12 +-
.../java/org/apache/ignite/raft/client/Peer.java | 22 +-
.../ignite/raft/client/service/CommandClosure.java | 3 +-
.../raft/client/service/RaftGroupListener.java | 23 +-
.../raft/client/service/RaftGroupService.java | 131 +-
.../raft/{ITLozaTest.java => ItLozaTest.java} | 75 +-
...st.java => ItAbstractListenerSnapshotTest.java} | 120 +-
...ITCliServiceTest.java => ItCliServiceTest.java} | 4 +-
.../core/{ITNodeTest.java => ItNodeTest.java} | 6 +-
.../apache/ignite/raft/server/CounterListener.java | 21 +-
.../ignite/raft/server/CounterSnapshotFile.java | 5 +-
...rverTest.java => ItJraftCounterServerTest.java} | 144 +-
...verTest.java => ItSimpleCounterServerTest.java} | 32 +-
.../ignite/raft/server/RaftServerAbstractTest.java | 27 +-
.../java/org/apache/ignite/internal/raft/Loza.java | 124 +-
.../ignite/internal/raft/server/RaftServer.java | 13 +-
.../{JRaftServerImpl.java => JraftServerImpl.java} | 180 +-
.../jraft/rpc/impl/ActionRequestProcessor.java | 10 +-
.../ignite/disruptor/StripedDisruptorTest.java | 87 +-
.../internal/raft/server/impl/RaftServerImpl.java | 234 +-
.../java/org/apache/ignite/rest/ErrorResult.java | 2 +-
.../java/org/apache/ignite/rest/RestModule.java | 170 +-
.../apache/ignite/rest/netty/RestApiHandler.java | 46 +-
.../ignite/rest/netty/RestApiHttpRequest.java | 6 +-
.../ignite/rest/netty/RestApiHttpResponse.java | 22 +-
.../ignite/rest/netty/RestApiInitializer.java | 3 +-
.../org/apache/ignite/rest/netty/package-info.java | 1 +
.../java/org/apache/ignite/rest/package-info.java | 1 +
.../presentation/ConfigurationPresentation.java | 6 +-
.../rest/presentation/hocon/HoconPresentation.java | 42 +-
.../rest/presentation/hocon/package-info.java | 1 +
.../ignite/rest/presentation/package-info.java | 1 +
.../java/org/apache/ignite/rest/routes/Route.java | 50 +-
.../java/org/apache/ignite/rest/routes/Router.java | 30 +-
.../apache/ignite/rest/routes/package-info.java | 1 +
.../ignite/rest/netty/RestApiHttpResponseTest.java | 20 +-
.../ConfigurationPresentationTest.java | 134 +-
.../org/apache/ignite/rest/routes/RouteTest.java | 32 +-
.../ignite/internal/rocksdb/ColumnFamily.java | 29 +-
.../apache/ignite/internal/rocksdb/RocksUtils.java | 38 +-
.../ignite/internal/{ITUtils.java => ItUtils.java} | 4 +-
.../calcite/AbstractBasicIntegrationTest.java | 203 +-
.../internal/calcite/ITOrToUnionRuleTest.java | 233 --
.../calcite/ITProjectScanMergeRuleTest.java | 159 --
.../internal/calcite/ITSecondaryIndexTest.java | 833 ------
...ITAggregatesTest.java => ItAggregatesTest.java} | 163 +-
.../{ITDataTypesTest.java => ItDataTypesTest.java} | 46 +-
.../{ITFunctionsTest.java => ItFunctionsTest.java} | 234 +-
...ITIndexSpoolTest.java => ItIndexSpoolTest.java} | 74 +-
.../{ITMetadataTest.java => ItMetadataTest.java} | 94 +-
...xedQueriesTest.java => ItMixedQueriesTest.java} | 325 +--
.../internal/calcite/ItOrToUnionRuleTest.java | 238 ++
.../calcite/ItProjectScanMergeRuleTest.java | 161 ++
.../internal/calcite/ItSecondaryIndexTest.java | 929 +++++++
.../calcite/{ITSetOpTest.java => ItSetOpTest.java} | 178 +-
...AggregateTest.java => ItSortAggregateTest.java} | 81 +-
.../ignite/internal/calcite/util/Commons.java | 2 +-
.../ignite/internal/calcite/util/QueryChecker.java | 379 +--
... ItDistributedConfigurationPropertiesTest.java} | 279 +-
... => ItDistributedConfigurationStorageTest.java} | 163 +-
.../runner/app/AbstractSchemaChangeTest.java | 285 ++-
.../ignite/internal/runner/app/ITIgnitionTest.java | 213 --
.../runner/app/ITSchemaChangeKVViewTest.java | 306 ---
.../runner/app/ITSchemaChangeTableViewTest.java | 332 ---
.../internal/runner/app/ITTableCreationTest.java | 264 --
...ChangesTest.java => ItBaselineChangesTest.java} | 83 +-
...onTest.java => ItDynamicTableCreationTest.java} | 341 +--
...startTest.java => ItIgniteNodeRestartTest.java} | 97 +-
.../ignite/internal/runner/app/ItIgnitionTest.java | 217 ++
...Test.java => ItLiveSchemaChangeKvViewTest.java} | 144 +-
...eTest.java => ItLiveSchemaChangeTableTest.java} | 245 +-
...readsLeftTest.java => ItNoThreadsLeftTest.java} | 82 +-
.../runner/app/ItSchemaChangeKvViewTest.java | 281 ++
.../runner/app/ItSchemaChangeTableViewTest.java | 305 +++
.../internal/runner/app/ItTableCreationTest.java | 274 ++
.../{ITTablesApiTest.java => ItTablesApiTest.java} | 167 +-
...onTest.java => ItThinClientConnectionTest.java} | 85 +-
.../runner/app/PlatformTestNodeRunner.java | 50 +-
.../runner/app/jdbc/AbstractJdbcSelfTest.java | 9 +-
...st.java => ItJdbcConnectionPropertiesTest.java} | 8 +-
...SelfTest.java => ItJdbcConnectionSelfTest.java} | 382 ++-
...taSelfTest.java => ItJdbcMetadataSelfTest.java} | 82 +-
...tSelfTest.java => ItJdbcResultSetSelfTest.java} | 174 +-
...tSelfTest.java => ItJdbcStatementSelfTest.java} | 150 +-
.../org/apache/ignite/app/IgniteCliRunner.java | 55 +-
.../org/apache/ignite/internal/app/IgniteImpl.java | 394 +--
.../apache/ignite/internal/app/IgnitionImpl.java | 93 +-
.../storage/DistributedConfigurationStorage.java | 223 +-
.../storage/LocalConfigurationStorage.java | 38 +-
.../org/apache/ignite/utils/IgniteProperties.java | 17 +-
.../storage/ConfigurationStorageTest.java | 18 +-
.../DistributedConfigurationStorageTest.java | 107 +-
.../storage/LocalConfigurationStorageTest.java | 15 +-
.../ignite/internal/schema/AssemblyException.java | 6 +-
.../apache/ignite/internal/schema/BinaryRow.java | 17 +-
.../ignite/internal/schema/BitmaskNativeType.java | 34 +-
.../ignite/internal/schema/ByteBufferRow.java | 54 +-
.../org/apache/ignite/internal/schema/Column.java | 104 +-
.../org/apache/ignite/internal/schema/Columns.java | 102 +-
.../ignite/internal/schema/DecimalNativeType.java | 25 +-
.../apache/ignite/internal/schema/NativeType.java | 59 +-
.../ignite/internal/schema/NativeTypeSpec.java | 125 +-
.../apache/ignite/internal/schema/NativeTypes.java | 163 +-
.../ignite/internal/schema/NumberNativeType.java | 35 +-
.../ignite/internal/schema/SchemaDescriptor.java | 29 +-
.../ignite/internal/schema/SchemaException.java | 2 +-
.../schema/SchemaModificationException.java | 2 +-
.../ignite/internal/schema/SchemaRegistry.java | 29 +-
.../apache/ignite/internal/schema/SchemaUtils.java | 86 +-
.../ignite/internal/schema/TemporalNativeType.java | 13 +-
.../ignite/internal/schema/VarlenNativeType.java | 10 +-
.../configuration/ColumnTypeValidatorImpl.java | 29 +-
.../SchemaConfigurationConverter.java | 118 +-
.../configuration/SchemaDescriptorConverter.java | 114 +-
.../schema/configuration/TableValidatorImpl.java | 80 +-
.../schema/definition/AbstractSchemaObject.java | 10 +-
.../schema/definition/ColumnDefinitionImpl.java | 21 +-
.../schema/definition/TableDefinitionImpl.java | 39 +-
.../definition/builder/AbstractIndexBuilder.java | 5 +-
.../builder/ColumnDefinitionBuilderImpl.java | 16 +-
.../builder/HashIndexDefinitionBuilderImpl.java | 9 +-
.../builder/PartialIndexDefinitionBuilderImpl.java | 34 +-
.../builder/PrimaryKeyDefinitionBuilderImpl.java | 22 +-
.../builder/SortedIndexDefinitionBuilderImpl.java | 39 +-
.../builder/TableDefinitionBuilderImpl.java | 95 +-
.../definition/index/HashIndexDefinitionImpl.java | 12 +-
.../index/IndexColumnDefinitionImpl.java | 3 +-
.../index/PartialIndexDefinitionImpl.java | 20 +-
.../definition/index/PrimaryKeyDefinitionImpl.java | 17 +-
.../index/SortedIndexColumnDefinitionImpl.java | 11 +-
.../index/SortedIndexDefinitionImpl.java | 20 +-
.../internal/schema/mapping/ColumnMapper.java | 6 +-
.../internal/schema/mapping/ColumnMapperImpl.java | 19 +-
.../internal/schema/mapping/ColumnMapping.java | 23 +-
.../internal/schema/marshaller/BinaryMode.java | 2 +-
.../internal/schema/marshaller/MarshallerUtil.java | 64 +-
.../schema/marshaller/SerializationException.java | 2 +-
.../schema/marshaller/SerializerFactory.java | 2 +-
.../marshaller/asm/AsmSerializerGenerator.java | 390 +--
.../marshaller/asm/ColumnAccessCodeGenerator.java | 20 +-
.../asm/IdentityMarshallerCodeGenerator.java | 35 +-
.../marshaller/asm/MarshallerCodeGenerator.java | 18 +-
.../asm/ObjectMarshallerCodeGenerator.java | 131 +-
.../marshaller/reflection/FieldAccessor.java | 168 +-
.../marshaller/reflection/JavaSerializer.java | 98 +-
.../reflection/JavaSerializerFactory.java | 3 +-
.../schema/marshaller/reflection/Marshaller.java | 78 +-
.../schema/AbstractSchemaSerializer.java | 7 +-
.../schema/marshaller/schema/SchemaSerializer.java | 2 +-
.../marshaller/schema/SchemaSerializerImpl.java | 179 +-
.../modification/AlterColumnBuilderImpl.java | 18 +-
.../modification/TableModificationBuilderImpl.java | 36 +-
.../ignite/internal/schema/package-info.java | 6 +-
.../SchemaRegistrationConflictException.java | 3 +-
.../schema/registry/SchemaRegistryException.java | 2 +-
.../schema/registry/SchemaRegistryImpl.java | 59 +-
.../schema/registry/UpgradingRowAdapter.java | 189 +-
.../internal/schema/registry/package-info.java | 1 +
.../internal/schema/row/ExpandableByteBuf.java | 64 +-
.../org/apache/ignite/internal/schema/row/Row.java | 253 +-
.../ignite/internal/schema/row/RowAssembler.java | 686 ++---
.../internal/schema/row/TemporalTypesHelper.java | 87 +-
.../ignite/internal/schema/row/VarTableFormat.java | 157 +-
.../apache/ignite/internal/util/ObjectFactory.java | 17 +-
.../java/org/apache/ignite/internal/util/Pair.java | 2 +-
.../org/apache/ignite/schema/SchemaBuilders.java | 6 +-
.../org/apache/ignite/schema/package-info.java | 1 +
.../benchmarks/SerializerBenchmarkTest.java | 122 +-
.../internal/schema/ColumnDefinitionTest.java | 18 +-
.../apache/ignite/internal/schema/ColumnsTest.java | 299 +--
.../internal/schema/ExpandableByteBufTest.java | 26 +-
.../ignite/internal/schema/NativeTypeTest.java | 52 +-
.../schema/RowAssemblerAdvancedSchemaTest.java | 399 +--
.../schema/RowAssemblerSimpleSchemaTest.java | 637 ++---
.../org/apache/ignite/internal/schema/RowTest.java | 364 +--
.../internal/schema/SchemaConfigurationTest.java | 140 +-
.../internal/schema/SchemaDescriptorTest.java | 43 +-
.../ignite/internal/schema/TemporalTypesTest.java | 12 +-
.../apache/ignite/internal/schema/TestUtils.java | 24 +-
.../builder/ColumnDefinitionBuilderTest.java | 6 +-
.../builder/HashIndexDefinitionBuilderTest.java | 10 +-
.../builder/PartialIndexDefinitionBuilderTest.java | 4 +-
.../PrimaryKeyDefinitionDefinitionBuilderTest.java | 14 +-
.../builder/SortedIndexDefinitionBuilderTest.java | 6 +-
.../schema/builder/TableDefinitionBuilderTest.java | 18 +-
.../SchemaConfigurationConverterTest.java | 160 +-
.../SchemaDescriptorConverterTest.java | 155 +-
.../configuration/TableValidatorImplTest.java | 52 +-
.../schema/marshaller/JavaSerializerTest.java | 649 ++---
.../marshaller/reflection/FieldAccessorTest.java | 223 +-
.../schema/registry/SchemaRegistryImplTest.java | 240 +-
.../schema/registry/UpgradingRowAdapterTest.java | 192 +-
.../schema/serializer/AbstractSerializerTest.java | 100 +-
.../ignite/internal/storage/InvokeClosure.java | 10 +-
.../ignite/internal/storage/PartitionStorage.java | 9 +-
.../ignite/internal/storage/StorageException.java | 2 +-
.../storage/basic/DeleteExactInvokeClosure.java | 12 +-
.../storage/basic/GetAndRemoveInvokeClosure.java | 12 +-
.../storage/basic/GetAndReplaceInvokeClosure.java | 14 +-
.../storage/basic/InsertInvokeClosure.java | 12 +-
.../storage/basic/ReplaceExactInvokeClosure.java | 14 +-
.../internal/storage/basic/SimpleDataRow.java | 28 +-
.../storage/basic/SimpleReadInvokeClosure.java | 9 +-
.../storage/basic/SimpleRemoveInvokeClosure.java | 9 +-
.../storage/basic/SimpleWriteInvokeClosure.java | 9 +-
.../internal/storage/engine/StorageEngine.java | 14 +-
.../storage/AbstractPartitionStorageTest.java | 503 ++--
.../basic/ConcurrentHashMapPartitionStorage.java | 112 +-
.../storage/rocksdb/RocksDbDataRegion.java | 14 +-
.../storage/rocksdb/RocksDbPartitionStorage.java | 389 +--
.../storage/rocksdb/RocksDbStorageEngine.java | 22 +-
.../storage/rocksdb/RocksDbTableStorage.java | 173 +-
.../storage/rocksdb/RocksDbStorageTest.java | 36 +-
...dTableTest.java => ItDistributedTableTest.java} | 208 +-
...eScanTest.java => ItInternalTableScanTest.java} | 260 +-
...stenceTest.java => ItTablePersistenceTest.java} | 111 +-
.../org/apache/ignite/binary/BinaryObjects.java | 4 +-
.../org/apache/ignite/binary/package-info.java | 1 +
.../schema/ExtendedTableConfigurationSchema.java | 4 +-
.../{KVMarshaller.java => KvMarshaller.java} | 2 +-
.../schema/marshaller/TupleMarshaller.java | 18 +-
.../marshaller/TupleMarshallerException.java | 2 +-
.../schema/marshaller/TupleMarshallerImpl.java | 282 ++-
.../internal/table/AbstractRowTupleAdapter.java | 141 +-
.../ignite/internal/table/AbstractTableView.java | 28 +-
.../ignite/internal/table/InternalTable.java | 50 +-
.../internal/table/KeyValueBinaryViewImpl.java | 303 ++-
.../ignite/internal/table/KeyValueViewImpl.java | 333 +--
.../internal/table/MutableRowTupleAdapter.java | 154 +-
.../internal/table/RecordBinaryViewImpl.java | 318 ++-
.../ignite/internal/table/RecordViewImpl.java | 135 +-
.../org/apache/ignite/internal/table/TableRow.java | 40 +-
.../internal/table/distributed/TableManager.java | 1548 ++++++------
.../table/distributed/command/CommandUtils.java | 31 +-
.../distributed/command/DeleteAllCommand.java | 4 +-
.../table/distributed/command/DeleteCommand.java | 6 +-
.../distributed/command/DeleteExactAllCommand.java | 4 +-
.../distributed/command/DeleteExactCommand.java | 6 +-
.../table/distributed/command/GetAllCommand.java | 3 +-
.../distributed/command/GetAndDeleteCommand.java | 7 +-
.../distributed/command/GetAndReplaceCommand.java | 7 +-
.../distributed/command/GetAndUpsertCommand.java | 6 +-
.../table/distributed/command/GetCommand.java | 6 +-
.../distributed/command/InsertAllCommand.java | 3 +-
.../table/distributed/command/InsertCommand.java | 6 +-
.../table/distributed/command/ReplaceCommand.java | 11 +-
.../distributed/command/ReplaceIfExistCommand.java | 9 +-
.../distributed/command/UpsertAllCommand.java | 3 +-
.../table/distributed/command/UpsertCommand.java | 6 +-
.../command/response/MultiRowsResponse.java | 1 +
.../command/response/SingleRowResponse.java | 7 +-
.../distributed/command/scan/ScanCloseCommand.java | 3 +-
.../distributed/command/scan/ScanInitCommand.java | 15 +-
.../command/scan/ScanRetrieveBatchCommand.java | 16 +-
.../table/distributed/raft/PartitionListener.java | 141 +-
.../distributed/storage/InternalTableImpl.java | 241 +-
.../internal/table/event/TableEventParameters.java | 6 +-
.../apache/ignite/internal/table/package-info.java | 1 +
.../TupleMarshallerFixlenOnlyBenchmark.java | 31 +-
.../TupleMarshallerVarlenOnlyBenchmark.java | 47 +-
.../org/apache/ignite/internal/table/Example.java | 114 +-
.../table/KeyValueBinaryViewOperationsTest.java | 185 +-
.../internal/table/KeyValueOperationsTest.java | 147 +-
.../internal/table/MutableRowTupleAdapterTest.java | 532 ++--
.../table/RecordBinaryViewOperationsTest.java | 306 +--
.../internal/table/StrictSchemaOperationsTest.java | 131 +-
.../ignite/internal/table/TableManagerTest.java | 209 +-
.../org/apache/ignite/internal/table/TxTest.java | 78 +-
.../raft/PartitionCommandListenerTest.java | 105 +-
.../table/impl/DummyInternalTableImpl.java | 124 +-
.../table/impl/DummySchemaManagerImpl.java | 12 +-
.../internal/table/impl/TestTupleBuilder.java | 127 +-
.../table/type/NumericTypesSerializerTest.java | 254 +-
.../org/apache/ignite/table/TupleImplTest.java | 142 +-
.../org/apache/ignite/internal/tx/LockManager.java | 13 +-
.../org/apache/ignite/internal/tx/Timestamp.java | 34 +-
.../ignite/internal/tx/impl/HeapLockManager.java | 91 +-
.../internal/tx/AbstractLockManagerTest.java | 118 +-
.../ignite/internal/tx/HeapLockManagerTest.java | 7 +-
...> ItPersistencePropertiesVaultServiceTest.java} | 36 +-
...Test.java => ItPersistentVaultServiceTest.java} | 9 +-
.../apache/ignite/internal/vault/VaultEntry.java | 14 +-
.../apache/ignite/internal/vault/VaultManager.java | 32 +-
.../apache/ignite/internal/vault/VaultService.java | 13 +-
.../vault/inmemory/InMemoryVaultService.java | 56 +-
.../vault/persistence/PersistentVaultService.java | 77 +-
.../vault/persistence/RocksIteratorAdapter.java | 25 +-
.../ignite/internal/vault/VaultManagerTest.java | 26 +-
.../ignite/internal/vault/VaultServiceTest.java | 43 +-
.../vault/inmemory/InMemoryVaultServiceTest.java | 3 +-
parent/pom.xml | 7 +-
1181 files changed, 61467 insertions(+), 50204 deletions(-)
diff --git a/check-rules/checkstyle-rules.xml b/check-rules/checkstyle-rules.xml
index d1bded2..67540c8 100644
--- a/check-rules/checkstyle-rules.xml
+++ b/check-rules/checkstyle-rules.xml
@@ -18,118 +18,363 @@
-->
<!DOCTYPE module PUBLIC
- "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
- "http://checkstyle.org/dtds/configuration_1_3.dtd">
-<module name="Checker">
- <property name="charset" value="UTF-8"/>
+ "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
+ "https://checkstyle.org/dtds/configuration_1_3.dtd">
- <property name="fileExtensions" value="java, properties, xml"/>
-
- <!-- Whitespaces Checks. See: http://checkstyle.sourceforge.net/config_whitespace.html -->
- <module name="FileTabCharacter">
- <property name="eachLine" value="true"/>
- </module>
-
- <!-- SuppressWarning Filter. https://checkstyle.sourceforge.io/config_filters.html#SuppressWarningsFilter -->
- <module name="SuppressWarningsFilter" />
-
- <module name="TreeWalker">
- <!-- Handler for SuppressWarning Filter. https://checkstyle.sourceforge.io/config_filters.html#SuppressWarningsFilter -->
- <module name="SuppressWarningsHolder" />
-
- <!-- Coding Checks. See: https://checkstyle.sourceforge.io/config_coding.html -->
- <module name="SimplifyBooleanExpression"/>
-
- <!-- Import Checks. See: http://checkstyle.sourceforge.net/config_imports.html -->
- <module name="UnusedImports"/>
-
- <!-- Whitespaces: See: https://checkstyle.sourceforge.io/config_whitespace.html -->
- <module name="WhitespaceAround">
- <property name="allowEmptyConstructors" value="true"/>
- <property name="allowEmptyMethods" value="true"/>
- <property name="allowEmptyTypes" value="true"/>
- <property name="allowEmptyLoops" value="true"/>
- <property name="allowEmptyLambdas" value="true"/>
- <property name="allowEmptyCatches" value="true"/>
- </module>
-
- <!--Modifiers Checks. See: http://checkstyle.sourceforge.net/config_modifier.html-->
- <module name="ModifierOrder"/>
-
- <!--Annotation checks. See: http://checkstyle.sourceforge.net/config_annotation.html-->
- <module name="MissingOverride"/>
-
- <!-- Empty line checks. See: http://checkstyle.sourceforge.net/config_whitespace.html#EmptyLineSeparator -->
- <module name="EmptyLineSeparator">
- <!-- PACKAGE_DEF excluded according to Ignite code style. -->
- <property name="tokens" value="IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT,
- INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />
-
- <property name="allowMultipleEmptyLines" value="false" />
- <property name="allowMultipleEmptyLinesInsideClassMembers" value="false" />
- </module>
-
- <!-- @Override annotations on the same line with a method declaration check. -->
- <!--module name="org.apache.ignite.tools.checkstyle.OverrideAnnotationOnTheSameLineCheck"/-->
+<!--
+ Checkstyle configuration that checks the Google coding conventions from Google Java Style
+ that can be found at https://google.github.io/styleguide/javaguide.html
- <!--
- Checks the padding between the identifier of a method definition, constructor definition, method call, or
- constructor invocation; and the left parenthesis of the parameter list.
- See: https://checkstyle.sourceforge.io/config_whitespace.html#MethodParamPad
- -->
- <module name="MethodParamPad"/>
+ Checkstyle is very configurable. Be sure to read the documentation at
+ http://checkstyle.org (or in your downloaded distribution).
- <!--
- Checks that there is no whitespace after a token.
- See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceAfter
- -->
- <module name="NoWhitespaceAfter">
- <property name="tokens" value="AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR,
- INDEX_OP, METHOD_REF"/>
- </module>
+ To completely disable a check, just comment it out or delete it from the file.
+ To suppress certain violations please review suppression filters.
- <!--
- Checks that there is no whitespace before a token.
- See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceBefore
- -->
- <module name="NoWhitespaceBefore">
- <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, ELLIPSIS, METHOD_REF, GENERIC_END"/>
- </module>
+ Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
+ -->
- <module name="NoWhitespaceBefore">
- <property name="allowLineBreaks" value="true"/>
- <property name="tokens" value="DOT"/>
- </module>
+<module name = "Checker">
+ <property name="charset" value="UTF-8"/>
- <!--
- Checks that the whitespace around the Generic tokens are correct.
- See: https://checkstyle.sourceforge.io/config_whitespace.html#GenericWhitespace
- -->
- <module name="GenericWhitespace"/>
+ <property name="fileExtensions" value="java, properties, xml"/>
+ <!-- Excludes all 'module-info.java' files -->
+ <!-- See https://checkstyle.org/config_filefilters.html -->
+ <module name="BeforeExecutionExclusionFileFilter">
+ <property name="fileNamePattern" value="module\-info\.java$"/>
+ </module>
+ <!-- https://checkstyle.org/config_filters.html#SuppressionFilter -->
+ <module name="SuppressionFilter">
+ <property name="file" value="${org.checkstyle.google.suppressionfilter.config}"
+ default="checkstyle-suppressions.xml" />
+ <property name="optional" value="true"/>
+ </module>
- <!--
- Checks that non-whitespace characters are separated by no more than one whitespace.
- See: https://checkstyle.sourceforge.io/config_whitespace.html#SingleSpaceSeparator
- -->
- <module name="SingleSpaceSeparator"/>
+ <!-- Checks for whitespace -->
+ <!-- See http://checkstyle.org/config_whitespace.html -->
+ <module name="FileTabCharacter">
+ <property name="eachLine" value="true"/>
+ </module>
- <!--
- Checks that no wildcard imports used.
- See: https://checkstyle.sourceforge.io/config_imports.html#AvoidStarImport
- -->
- <module name="AvoidStarImport"/>
+ <module name="LineLength">
+ <property name="fileExtensions" value="java"/>
+ <property name="max" value="140"/>
+ <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
+ </module>
- <!--
- Checks imports order.
- See: https://checkstyle.sourceforge.io/config_imports.html#CustomImportOrder
- -->
- <module name="CustomImportOrder">
- <property name="customImportOrderRules"
- value="STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STATIC"/>
- <property name="standardPackageRegExp" value="^java\."/>
- <property name="specialImportsRegExp" value="^javax\."/>
- <property name="sortImportsInGroupAlphabetically" value="true"/>
- <property name="separateLineBetweenGroups" value="false"/>
- </module>
+ <module name="TreeWalker">
+ <module name="OuterTypeFilename"/>
+ <module name="IllegalTokenText">
+ <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
+ <property name="format"
+ value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
+ <property name="message"
+ value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
+ </module>
+ <module name="AvoidEscapedUnicodeCharacters">
+ <property name="allowEscapesForControlCharacters" value="true"/>
+ <property name="allowByTailComment" value="true"/>
+ <property name="allowNonPrintableEscapes" value="true"/>
+ </module>
+ <module name="AvoidStarImport"/>
+ <module name="OneTopLevelClass"/>
+ <module name="NoLineWrap">
+ <property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT"/>
+ </module>
+ <module name="EmptyBlock">
+ <property name="option" value="TEXT"/>
+ <property name="tokens"
+ value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+ </module>
+ <module name="NeedBraces">
+ <property name="tokens"
+ value="LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE"/>
+ </module>
+ <module name="LeftCurly">
+ <property name="tokens"
+ value="ANNOTATION_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF,
+ INTERFACE_DEF, LAMBDA, LITERAL_CASE, LITERAL_CATCH, LITERAL_DEFAULT,
+ LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF,
+ LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF,
+ OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/>
+ </module>
+ <module name="RightCurly">
+ <property name="id" value="RightCurlySame"/>
+ <property name="tokens"
+ value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
+ LITERAL_DO"/>
+ </module>
+ <module name="RightCurly">
+ <property name="id" value="RightCurlyAlone"/>
+ <property name="option" value="alone"/>
+ <property name="tokens"
+ value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
+ INSTANCE_INIT, ANNOTATION_DEF, ENUM_DEF, INTERFACE_DEF, RECORD_DEF,
+ COMPACT_CTOR_DEF"/>
+ </module>
+ <module name="SuppressionXpathSingleFilter">
+ <!-- suppresion is required till https://github.com/checkstyle/checkstyle/issues/7541 -->
+ <property name="id" value="RightCurlyAlone"/>
+ <property name="query" value="//RCURLY[parent::SLIST[count(./*)=1]
+ or preceding-sibling::*[last()][self::LCURLY]]"/>
+ </module>
+ <module name="WhitespaceAfter">
+ <property name="tokens"
+ value="COMMA, SEMI, TYPECAST, LITERAL_IF, LITERAL_ELSE,
+ LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
+ </module>
+ <module name="WhitespaceAround">
+ <property name="allowEmptyConstructors" value="true"/>
+ <property name="allowEmptyLambdas" value="true"/>
+ <property name="allowEmptyMethods" value="true"/>
+ <property name="allowEmptyTypes" value="true"/>
+ <property name="allowEmptyLoops" value="true"/>
+ <property name="ignoreEnhancedForColon" value="false"/>
+ <property name="tokens"
+ value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR,
+ BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, LAMBDA, LAND,
+ LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY,
+ LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SWITCH, LITERAL_SYNCHRONIZED,
+ LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN,
+ NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR,
+ SR_ASSIGN, STAR, STAR_ASSIGN, LITERAL_ASSERT, TYPE_EXTENSION_AND"/>
+ <message key="ws.notFollowed"
+ value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
+ <message key="ws.notPreceded"
+ value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
+ </module>
+ <module name="OneStatementPerLine"/>
+ <module name="MultipleVariableDeclarations"/>
+ <module name="ArrayTypeStyle"/>
+ <module name="MissingSwitchDefault"/>
+ <module name="FallThrough"/>
+ <module name="UpperEll"/>
+ <module name="ModifierOrder"/>
+ <module name="EmptyLineSeparator">
+ <property name="tokens"
+ value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
+ STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF, RECORD_DEF,
+ COMPACT_CTOR_DEF"/>
+ <property name="allowNoEmptyLineBetweenFields" value="true"/>
+ </module>
+ <module name="SeparatorWrap">
+ <property name="id" value="SeparatorWrapDot"/>
+ <property name="tokens" value="DOT"/>
+ <property name="option" value="nl"/>
+ </module>
+ <module name="SeparatorWrap">
+ <property name="id" value="SeparatorWrapComma"/>
+ <property name="tokens" value="COMMA"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/259 -->
+ <property name="id" value="SeparatorWrapEllipsis"/>
+ <property name="tokens" value="ELLIPSIS"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/258 -->
+ <property name="id" value="SeparatorWrapArrayDeclarator"/>
+ <property name="tokens" value="ARRAY_DECLARATOR"/>
+ <property name="option" value="EOL"/>
+ </module>
+ <module name="SeparatorWrap">
+ <property name="id" value="SeparatorWrapMethodRef"/>
+ <property name="tokens" value="METHOD_REF"/>
+ <property name="option" value="nl"/>
+ </module>
+ <module name="PackageName">
+ <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
+ <message key="name.invalidPattern"
+ value="Package name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="TypeName">
+ <property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
+ ANNOTATION_DEF, RECORD_DEF"/>
+ <message key="name.invalidPattern"
+ value="Type name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="MemberName">
+ <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+ <message key="name.invalidPattern"
+ value="Member name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="ParameterName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Parameter name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="LambdaParameterName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="CatchParameterName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="LocalVariableName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Local variable name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="PatternVariableName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Pattern variable name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="ClassTypeParameterName">
+ <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+ <message key="name.invalidPattern"
+ value="Class type name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="RecordComponentName">
+ <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
+ <message key="name.invalidPattern"
+ value="Record component name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="RecordTypeParameterName">
+ <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+ <message key="name.invalidPattern"
+ value="Record type name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="MethodTypeParameterName">
+ <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+ <message key="name.invalidPattern"
+ value="Method type name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="InterfaceTypeParameterName">
+ <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+ <message key="name.invalidPattern"
+ value="Interface type name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="MethodName">
+ <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
+ <message key="name.invalidPattern"
+ value="Method name ''{0}'' must match pattern ''{1}''."/>
+ </module>
+ <module name="NoFinalizer"/>
+ <module name="GenericWhitespace">
+ <message key="ws.followed"
+ value="GenericWhitespace ''{0}'' is followed by whitespace."/>
+ <message key="ws.preceded"
+ value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
+ <message key="ws.illegalFollow"
+ value="GenericWhitespace ''{0}'' should followed by whitespace."/>
+ <message key="ws.notPreceded"
+ value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
+ </module>
+ <module name="Indentation">
+ <property name="basicOffset" value="4"/>
+ <property name="braceAdjustment" value="4"/>
+ <property name="caseIndent" value="4"/>
+ <property name="throwsIndent" value="8"/>
+ <property name="lineWrappingIndentation" value="8"/>
+ <property name="arrayInitIndent" value="4"/>
+ </module>
+ <module name="AbbreviationAsWordInName">
+ <property name="ignoreFinal" value="false"/>
+ <property name="allowedAbbreviationLength" value="0"/>
+ <property name="tokens"
+ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF, ANNOTATION_FIELD_DEF,
+ PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF, PATTERN_VARIABLE_DEF, RECORD_DEF,
+ RECORD_COMPONENT_DEF"/>
+ </module>
+ <module name="NoWhitespaceBeforeCaseDefaultColon"/>
+ <module name="OverloadMethodsDeclarationOrder"/>
+ <module name="VariableDeclarationUsageDistance"/>
+ <module name="CustomImportOrder">
+ <property name="sortImportsInGroupAlphabetically" value="true"/>
+ <property name="separateLineBetweenGroups" value="true"/>
+ <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
+ <property name="tokens" value="IMPORT, STATIC_IMPORT, PACKAGE_DEF"/>
+ </module>
+ <module name="MethodParamPad">
+ <property name="tokens"
+ value="CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF,
+ SUPER_CTOR_CALL, ENUM_CONSTANT_DEF, RECORD_DEF"/>
+ </module>
+ <module name="NoWhitespaceBefore">
+ <property name="tokens"
+ value="COMMA, SEMI, POST_INC, POST_DEC, DOT,
+ LABELED_STAT, METHOD_REF"/>
+ <property name="allowLineBreaks" value="true"/>
+ </module>
+ <module name="ParenPad">
+ <property name="tokens"
+ value="ANNOTATION, ANNOTATION_FIELD_DEF, CTOR_CALL, CTOR_DEF, DOT, ENUM_CONSTANT_DEF,
+ EXPR, LITERAL_CATCH, LITERAL_DO, LITERAL_FOR, LITERAL_IF, LITERAL_NEW,
+ LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_WHILE, METHOD_CALL,
+ METHOD_DEF, QUESTION, RESOURCE_SPECIFICATION, SUPER_CTOR_CALL, LAMBDA,
+ RECORD_DEF"/>
+ </module>
+ <module name="OperatorWrap">
+ <property name="option" value="NL"/>
+ <property name="tokens"
+ value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
+ LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF,
+ TYPE_EXTENSION_AND "/>
+ </module>
+ <module name="AnnotationLocation">
+ <property name="id" value="AnnotationLocationMostCases"/>
+ <property name="tokens"
+ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF,
+ RECORD_DEF, COMPACT_CTOR_DEF"/>
+ </module>
+ <module name="AnnotationLocation">
+ <property name="id" value="AnnotationLocationVariables"/>
+ <property name="tokens" value="VARIABLE_DEF"/>
+ <property name="allowSamelineMultipleAnnotations" value="true"/>
+ </module>
+ <module name="NonEmptyAtclauseDescription"/>
+ <module name="InvalidJavadocPosition"/>
+ <module name="JavadocTagContinuationIndentation"/>
+<!-- <module name="SummaryJavadoc">-->
+<!-- <property name="forbiddenSummaryFragments"-->
+<!-- value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>-->
+<!-- </module>-->
+ <module name="JavadocParagraph"/>
+ <module name="RequireEmptyLineBeforeBlockTagGroup"/>
+ <module name="AtclauseOrder">
+ <property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
+ <property name="target"
+ value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
+ </module>
+ <module name="JavadocMethod">
+ <property name="accessModifiers" value="public"/>
+ <property name="allowMissingParamTags" value="true"/>
+ <property name="allowMissingReturnTag" value="true"/>
+ <property name="allowedAnnotations" value="Override, Test"/>
+ <property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF, COMPACT_CTOR_DEF"/>
+ </module>
+<!-- <module name="MissingJavadocMethod">-->
+<!-- <property name="scope" value="public"/>-->
+<!-- <property name="minLineCount" value="2"/>-->
+<!-- <property name="allowedAnnotations" value="Override, Test"/>-->
+<!-- <property name="tokens" value="METHOD_DEF, CTOR_DEF, ANNOTATION_FIELD_DEF,-->
+<!-- COMPACT_CTOR_DEF"/>-->
+<!-- </module>-->
+<!-- <module name="MissingJavadocType">-->
+<!-- <property name="scope" value="protected"/>-->
+<!-- <property name="tokens"-->
+<!-- value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF,-->
+<!-- RECORD_DEF, ANNOTATION_DEF"/>-->
+<!-- <property name="excludeScope" value="nothing"/>-->
+<!-- </module>-->
+ <module name="SingleLineJavadoc"/>
+ <module name="EmptyCatchBlock">
+ <property name="exceptionVariableName" value="expected"/>
+ </module>
+ <module name="CommentsIndentation">
+ <property name="tokens" value="SINGLE_LINE_COMMENT, BLOCK_COMMENT_BEGIN"/>
+ </module>
+ <!-- https://checkstyle.org/config_filters.html#SuppressionXpathFilter -->
+ <module name="SuppressionXpathFilter">
+ <property name="file" value="${org.checkstyle.google.suppressionxpathfilter.config}"
+ default="checkstyle-xpath-suppressions.xml" />
+ <property name="optional" value="true"/>
</module>
+ </module>
</module>
diff --git a/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java b/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java
index b590371..5bdf982 100644
--- a/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/rebalance/RebalanceExample.java
@@ -32,12 +32,12 @@ import org.apache.ignite.table.Tuple;
/**
* This example demonstrates the data rebalance process.
- * <p>
- * The example emulates the basic scenario when one starts a three-node topology,
- * inserts some data, and then scales out by adding two more nodes. After the
- * topology is changed, the data is rebalanced and verified for correctness.
- * <p>
- * To run the example, do the following:
+ *
+ * <p>The example emulates the basic scenario when one starts a three-node topology,
+ * inserts some data, and then scales out by adding two more nodes. After the topology is changed, the data is rebalanced and verified for
+ * correctness.
+ *
+ * <p>To run the example, do the following:
* <ol>
* <li>Import the examples project into you IDE.</li>
* <li>
@@ -65,15 +65,15 @@ public class RebalanceExample {
// eliminating the need to start an embedded server node in this example.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("Starting a server node... Logging to file: example-node.log");
-
+
System.setProperty("java.util.logging.config.file", "config/java.util.logging.properties");
-
+
try (Ignite server = IgnitionManager.start(
- "example-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- Path.of("work")
+ "example-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ Path.of("work")
)) {
//--------------------------------------------------------------------------------------
//
@@ -85,80 +85,80 @@ public class RebalanceExample {
// )
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nCreating a table...");
-
+
TableDefinition tableDef = SchemaBuilders.tableBuilder("PUBLIC", "rebalance")
- .columns(
- SchemaBuilders.column("key", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("value", ColumnType.string()).asNullable().build()
- )
- .withPrimaryKey("key")
- .build();
-
+ .columns(
+ SchemaBuilders.column("key", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("value", ColumnType.string()).asNullable().build()
+ )
+ .withPrimaryKey("key")
+ .build();
+
server.tables().createTable(tableDef.canonicalName(), tableChange ->
- SchemaConfigurationConverter.convert(tableDef, tableChange)
- .changeReplicas(5)
- .changePartitions(1)
+ SchemaConfigurationConverter.convert(tableDef, tableChange)
+ .changeReplicas(5)
+ .changePartitions(1)
);
-
+
//--------------------------------------------------------------------------------------
//
// Creating a client to connect to the cluster.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nConnecting to server...");
-
+
try (IgniteClient client = IgniteClient.builder()
- .addresses("127.0.0.1:10800")
- .build()
+ .addresses("127.0.0.1:10800")
+ .build()
) {
KeyValueView<Tuple, Tuple> kvView = client.tables().table("PUBLIC.rebalance").keyValueView();
-
+
//--------------------------------------------------------------------------------------
//
// Inserting several key-value pairs into the table.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nInserting key-value pairs...");
-
+
for (int i = 0; i < 10; i++) {
Tuple key = Tuple.create().set("key", i);
Tuple value = Tuple.create().set("value", "test_" + i);
-
+
kvView.put(key, value);
}
-
+
//--------------------------------------------------------------------------------------
//
// Retrieving the newly inserted data.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nRetrieved key-value pairs:");
-
+
for (int i = 0; i < 10; i++) {
Tuple key = Tuple.create().set("key", i);
Tuple value = kvView.get(key);
-
+
System.out.println(" " + i + " -> " + value.stringValue("value"));
}
-
+
//--------------------------------------------------------------------------------------
//
// Scaling out by adding two more nodes into the topology.
//
//--------------------------------------------------------------------------------------
-
- System.out.println("\n" +
- "Run the following commands using the CLI tool to start two more nodes, and then press 'Enter' to continue...\n" +
- " ignite node start --config=examples/config/ignite-config.json my-first-additional-node\n" +
- " ignite node start --config=examples/config/ignite-config.json my-second-additional-node");
-
+
+ System.out.println("\n"
+ + "Run the following commands using the CLI tool to start two more nodes, and then press 'Enter' to continue...\n"
+ + " ignite node start --config=examples/config/ignite-config.json my-first-additional-node\n"
+ + " ignite node start --config=examples/config/ignite-config.json my-second-additional-node");
+
System.in.read();
-
+
//--------------------------------------------------------------------------------------
//
// Updating baseline to initiate the data rebalancing process.
@@ -175,9 +175,9 @@ public class RebalanceExample {
// the need for this manual step.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nUpdating the baseline and rebalancing the data...");
-
+
server.setBaseline(Set.of(
"my-first-node",
"my-second-node",
@@ -185,25 +185,25 @@ public class RebalanceExample {
"my-first-additional-node",
"my-second-additional-node"
));
-
+
//--------------------------------------------------------------------------------------
//
// Retrieving data again to validate correctness.
//
//--------------------------------------------------------------------------------------
-
+
System.out.println("\nKey-value pairs retrieved after the topology change:");
-
+
for (int i = 0; i < 10; i++) {
Tuple key = Tuple.create().set("key", i);
Tuple value = kvView.get(key);
-
+
System.out.println(" " + i + " -> " + value.stringValue("value"));
}
}
-
+
System.out.println("\nDropping the table and stopping the server...");
-
+
server.tables().dropTable(tableDef.canonicalName());
}
}
diff --git a/examples/src/main/java/org/apache/ignite/example/sql/jdbc/SqlJdbcExample.java b/examples/src/main/java/org/apache/ignite/example/sql/jdbc/SqlJdbcExample.java
index cab1079..73f228d 100644
--- a/examples/src/main/java/org/apache/ignite/example/sql/jdbc/SqlJdbcExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/sql/jdbc/SqlJdbcExample.java
@@ -33,8 +33,8 @@ import org.apache.ignite.schema.definition.TableDefinition;
/**
* This example demonstrates the usage of the Apache Ignite JDBC driver.
- * <p>
- * To run the example, do the following:
+ *
+ * <p>To run the example, do the following:
* <ol>
* <li>Import the examples project into you IDE.</li>
* <li>
@@ -61,9 +61,9 @@ public class SqlJdbcExample {
System.setProperty("java.util.logging.config.file", "config/java.util.logging.properties");
try (Ignite ignite = IgnitionManager.start(
- "example-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- Path.of("work")
+ "example-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ Path.of("work")
)) {
//--------------------------------------------------------------------------------------
//
@@ -79,17 +79,17 @@ public class SqlJdbcExample {
System.out.println("\nCreating 'CITIES' table...");
TableDefinition citiesTableDef = SchemaBuilders.tableBuilder("PUBLIC", "CITIES")
- .columns(
- SchemaBuilders.column("ID", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable().build()
- )
- .withPrimaryKey("ID")
- .build();
+ .columns(
+ SchemaBuilders.column("ID", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("NAME", ColumnType.string()).asNullable().build()
+ )
+ .withPrimaryKey("ID")
+ .build();
ignite.tables().createTable(citiesTableDef.canonicalName(), tableChange ->
- SchemaConfigurationConverter.convert(citiesTableDef, tableChange)
- .changeReplicas(1)
- .changePartitions(10)
+ SchemaConfigurationConverter.convert(citiesTableDef, tableChange)
+ .changeReplicas(1)
+ .changePartitions(10)
);
//--------------------------------------------------------------------------------------
@@ -109,20 +109,20 @@ public class SqlJdbcExample {
System.out.println("\nCreating 'ACCOUNTS' table...");
TableDefinition accountsTableDef = SchemaBuilders.tableBuilder("PUBLIC", "ACCOUNTS")
- .columns(
- SchemaBuilders.column("ACCOUNT_ID", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("CITY_ID", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("FIRST_NAME", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("LAST_NAME", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("BALANCE", ColumnType.DOUBLE).asNullable().build()
- )
- .withPrimaryKey("ACCOUNT_ID")
- .build();
+ .columns(
+ SchemaBuilders.column("ACCOUNT_ID", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("CITY_ID", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("FIRST_NAME", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("LAST_NAME", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("BALANCE", ColumnType.DOUBLE).asNullable().build()
+ )
+ .withPrimaryKey("ACCOUNT_ID")
+ .build();
ignite.tables().createTable(accountsTableDef.canonicalName(), tableChange ->
- SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
- .changeReplicas(1)
- .changePartitions(10)
+ SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
+ .changeReplicas(1)
+ .changePartitions(10)
);
//--------------------------------------------------------------------------------------
@@ -206,13 +206,13 @@ public class SqlJdbcExample {
try (Statement stmt = conn.createStatement()) {
try (ResultSet rs = stmt.executeQuery(
- "SELECT a.FIRST_NAME, a.LAST_NAME, c.NAME FROM ACCOUNTS a " +
- "INNER JOIN CITIES c on c.ID = a.CITY_ID")) {
+ "SELECT a.FIRST_NAME, a.LAST_NAME, c.NAME FROM ACCOUNTS a "
+ + "INNER JOIN CITIES c on c.ID = a.CITY_ID")) {
while (rs.next()) {
- System.out.println(" " +
- rs.getString(1) + ", " +
- rs.getString(2) + ", " +
- rs.getString(3));
+ System.out.println(" "
+ + rs.getString(1) + ", "
+ + rs.getString(2) + ", "
+ + rs.getString(3));
}
}
}
@@ -229,10 +229,10 @@ public class SqlJdbcExample {
try (ResultSet rs = stmt.executeQuery(
"SELECT a.FIRST_NAME, a.LAST_NAME, a.BALANCE FROM ACCOUNTS a WHERE a.BALANCE < 1500.0")) {
while (rs.next()) {
- System.out.println(" " +
- rs.getString(1) + ", " +
- rs.getString(2) + ", " +
- rs.getDouble(3));
+ System.out.println(" "
+ + rs.getString(1) + ", "
+ + rs.getString(2) + ", "
+ + rs.getDouble(3));
}
}
}
@@ -261,13 +261,13 @@ public class SqlJdbcExample {
try (Statement stmt = conn.createStatement()) {
try (ResultSet rs = stmt.executeQuery(
- "SELECT a.FIRST_NAME, a.LAST_NAME, c.NAME FROM ACCOUNTS a " +
- "INNER JOIN CITIES c on c.ID = a.CITY_ID")) {
+ "SELECT a.FIRST_NAME, a.LAST_NAME, c.NAME FROM ACCOUNTS a "
+ + "INNER JOIN CITIES c on c.ID = a.CITY_ID")) {
while (rs.next()) {
- System.out.println(" " +
- rs.getString(1) + ", " +
- rs.getString(2) + ", " +
- rs.getString(3));
+ System.out.println(" "
+ + rs.getString(1) + ", "
+ + rs.getString(2) + ", "
+ + rs.getString(3));
}
}
}
diff --git a/examples/src/main/java/org/apache/ignite/example/table/KeyValueViewExample.java b/examples/src/main/java/org/apache/ignite/example/table/KeyValueViewExample.java
index 960361c..4902451 100644
--- a/examples/src/main/java/org/apache/ignite/example/table/KeyValueViewExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/table/KeyValueViewExample.java
@@ -31,8 +31,8 @@ import org.apache.ignite.table.Tuple;
/**
* This example demonstrates the usage of the {@link KeyValueView} API.
- * <p>
- * To run the example, do the following:
+ *
+ * <p>To run the example, do the following:
* <ol>
* <li>Import the examples project into you IDE.</li>
* <li>
@@ -59,9 +59,9 @@ public class KeyValueViewExample {
System.setProperty("java.util.logging.config.file", "config/java.util.logging.properties");
try (Ignite server = IgnitionManager.start(
- "example-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- Path.of("work")
+ "example-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ Path.of("work")
)) {
//--------------------------------------------------------------------------------------
//
@@ -79,19 +79,19 @@ public class KeyValueViewExample {
System.out.println("\nCreating 'accounts' table...");
TableDefinition accountsTableDef = SchemaBuilders.tableBuilder("PUBLIC", "accounts")
- .columns(
- SchemaBuilders.column("accountNumber", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("firstName", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("lastName", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("balance", ColumnType.DOUBLE).asNullable().build()
- )
- .withPrimaryKey("accountNumber")
- .build();
+ .columns(
+ SchemaBuilders.column("accountNumber", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("firstName", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("lastName", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("balance", ColumnType.DOUBLE).asNullable().build()
+ )
+ .withPrimaryKey("accountNumber")
+ .build();
server.tables().createTable(accountsTableDef.canonicalName(), tableChange ->
- SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
- .changeReplicas(1)
- .changePartitions(10)
+ SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
+ .changeReplicas(1)
+ .changePartitions(10)
);
//--------------------------------------------------------------------------------------
@@ -103,8 +103,8 @@ public class KeyValueViewExample {
System.out.println("\nConnecting to server...");
try (IgniteClient client = IgniteClient.builder()
- .addresses("127.0.0.1:10800")
- .build()
+ .addresses("127.0.0.1:10800")
+ .build()
) {
//--------------------------------------------------------------------------------------
//
@@ -123,12 +123,12 @@ public class KeyValueViewExample {
System.out.println("\nInserting a key-value pair into the 'accounts' table...");
Tuple key = Tuple.create()
- .set("accountNumber", 123456);
+ .set("accountNumber", 123456);
Tuple value = Tuple.create()
- .set("firstName", "Val")
- .set("lastName", "Kulichenko")
- .set("balance", 100.00d);
+ .set("firstName", "Val")
+ .set("lastName", "Kulichenko")
+ .set("balance", 100.00d);
kvView.put(key, value);
@@ -143,10 +143,10 @@ public class KeyValueViewExample {
value = kvView.get(key);
System.out.println(
- "\nRetrieved value:\n" +
- " Account Number: " + key.intValue("accountNumber") + '\n' +
- " Owner: " + value.stringValue("firstName") + " " + value.stringValue("lastName") + '\n' +
- " Balance: $" + value.doubleValue("balance"));
+ "\nRetrieved value:\n"
+ + " Account Number: " + key.intValue("accountNumber") + '\n'
+ + " Owner: " + value.stringValue("firstName") + " " + value.stringValue("lastName") + '\n'
+ + " Balance: $" + value.doubleValue("balance"));
}
System.out.println("\nDropping the table and stopping the server...");
diff --git a/examples/src/main/java/org/apache/ignite/example/table/RecordViewExample.java b/examples/src/main/java/org/apache/ignite/example/table/RecordViewExample.java
index 3598d4e..4d6584a 100644
--- a/examples/src/main/java/org/apache/ignite/example/table/RecordViewExample.java
+++ b/examples/src/main/java/org/apache/ignite/example/table/RecordViewExample.java
@@ -31,8 +31,8 @@ import org.apache.ignite.table.Tuple;
/**
* This example demonstrates the usage of the {@link RecordView} API.
- * <p>
- * To run the example, do the following:
+ *
+ * <p>To run the example, do the following:
* <ol>
* <li>Import the examples project into you IDE.</li>
* <li>
@@ -59,9 +59,9 @@ public class RecordViewExample {
System.setProperty("java.util.logging.config.file", "config/java.util.logging.properties");
try (Ignite server = IgnitionManager.start(
- "example-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- Path.of("work")
+ "example-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ Path.of("work")
)) {
//--------------------------------------------------------------------------------------
//
@@ -79,19 +79,19 @@ public class RecordViewExample {
System.out.println("\nCreating 'accounts' table...");
TableDefinition accountsTableDef = SchemaBuilders.tableBuilder("PUBLIC", "accounts")
- .columns(
- SchemaBuilders.column("accountNumber", ColumnType.INT32).asNonNull().build(),
- SchemaBuilders.column("firstName", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("lastName", ColumnType.string()).asNullable().build(),
- SchemaBuilders.column("balance", ColumnType.DOUBLE).asNullable().build()
- )
- .withPrimaryKey("accountNumber")
- .build();
+ .columns(
+ SchemaBuilders.column("accountNumber", ColumnType.INT32).asNonNull().build(),
+ SchemaBuilders.column("firstName", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("lastName", ColumnType.string()).asNullable().build(),
+ SchemaBuilders.column("balance", ColumnType.DOUBLE).asNullable().build()
+ )
+ .withPrimaryKey("accountNumber")
+ .build();
server.tables().createTable(accountsTableDef.canonicalName(), tableChange ->
- SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
- .changeReplicas(1)
- .changePartitions(10)
+ SchemaConfigurationConverter.convert(accountsTableDef, tableChange)
+ .changeReplicas(1)
+ .changePartitions(10)
);
//--------------------------------------------------------------------------------------
@@ -103,8 +103,8 @@ public class RecordViewExample {
System.out.println("\nConnecting to server...");
try (IgniteClient client = IgniteClient.builder()
- .addresses("127.0.0.1:10800")
- .build()
+ .addresses("127.0.0.1:10800")
+ .build()
) {
//--------------------------------------------------------------------------------------
//
@@ -123,10 +123,10 @@ public class RecordViewExample {
System.out.println("\nInserting a record into the 'accounts' table...");
Tuple newAccountTuple = Tuple.create()
- .set("accountNumber", 123456)
- .set("firstName", "Val")
- .set("lastName", "Kulichenko")
- .set("balance", 100.00d);
+ .set("accountNumber", 123456)
+ .set("firstName", "Val")
+ .set("lastName", "Kulichenko")
+ .set("balance", 100.00d);
accounts.insert(newAccountTuple);
@@ -143,10 +143,10 @@ public class RecordViewExample {
Tuple accountTuple = accounts.get(accountNumberTuple);
System.out.println(
- "\nRetrieved record:\n" +
- " Account Number: " + accountTuple.intValue("accountNumber") + '\n' +
- " Owner: " + accountTuple.stringValue("firstName") + " " + accountTuple.stringValue("lastName") + '\n' +
- " Balance: $" + accountTuple.doubleValue("balance"));
+ "\nRetrieved record:\n"
+ + " Account Number: " + accountTuple.intValue("accountNumber") + '\n'
+ + " Owner: " + accountTuple.stringValue("firstName") + " " + accountTuple.stringValue("lastName") + '\n'
+ + " Balance: $" + accountTuple.doubleValue("balance"));
}
System.out.println("\nDropping the table and stopping the server...");
diff --git a/examples/src/test/java/org/apache/ignite/example/ExampleTestUtils.java b/examples/src/test/java/org/apache/ignite/example/ExampleTestUtils.java
index e098463..5431a8e 100644
--- a/examples/src/test/java/org/apache/ignite/example/ExampleTestUtils.java
+++ b/examples/src/test/java/org/apache/ignite/example/ExampleTestUtils.java
@@ -17,12 +17,12 @@
package org.apache.ignite.example;
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
/**
* Example test utilities.
*/
@@ -37,8 +37,9 @@ public class ExampleTestUtils {
/**
* Capture console output of the example.
+ *
* @param consumer Method which output should be captured. Ordinary main of the example.
- * @param args Arguments.
+ * @param args Arguments.
* @return Captured output as a string.
*/
public static String captureConsole(ExampleConsumer consumer, String[] args) throws Exception {
@@ -53,8 +54,7 @@ public class ExampleTestUtils {
consumer.accept(args);
System.out.flush();
- }
- finally {
+ } finally {
System.setOut(old);
}
@@ -63,8 +63,9 @@ public class ExampleTestUtils {
/**
* Assert that console output of the example equals expected.
+ *
* @param consumer Method which output should be captured. Ordinary main of the example.
- * @param args Arguments.
+ * @param args Arguments.
* @param expected Expected console output.
*/
public static void assertConsoleOutput(ExampleConsumer consumer, String[] args, String expected) throws Exception {
@@ -77,8 +78,9 @@ public class ExampleTestUtils {
/**
* Assert that console output of the example equals expected.
+ *
* @param consumer Method which output should be captured. Ordinary main of the example.
- * @param args Arguments.
+ * @param args Arguments.
* @param expected Expected console output.
*/
public static void assertConsoleOutputContains(ExampleConsumer consumer, String[] args,
@@ -87,7 +89,8 @@ public class ExampleTestUtils {
captured = captured.replaceAll("\r", "");
- for (String single : expected)
+ for (String single : expected) {
assertTrue(captured.contains(single));
+ }
}
}
diff --git a/examples/src/test/java/org/apache/ignite/example/sql/jdbc/SqlExamplesTest.java b/examples/src/test/java/org/apache/ignite/example/sql/jdbc/SqlExamplesTest.java
index 51173ea..e958b37 100644
--- a/examples/src/test/java/org/apache/ignite/example/sql/jdbc/SqlExamplesTest.java
+++ b/examples/src/test/java/org/apache/ignite/example/sql/jdbc/SqlExamplesTest.java
@@ -46,29 +46,29 @@ public class SqlExamplesTest {
@Test
public void testSqlJdbcExample() throws Exception {
ExampleTestUtils.assertConsoleOutputContains(SqlJdbcExample::main, EMPTY_ARGS,
- "\nAll accounts:\n" +
- " John, Doe, Forest Hill\n" +
- " Jane, Roe, Forest Hill\n" +
- " Mary, Major, Denver\n" +
- " Richard, Miles, St. Petersburg\n",
+ "\nAll accounts:\n"
+ + " John, Doe, Forest Hill\n"
+ + " Jane, Roe, Forest Hill\n"
+ + " Mary, Major, Denver\n"
+ + " Richard, Miles, St. Petersburg\n",
- "\nAccounts with balance lower than 1,500:\n" +
- " John, Doe, 1000.0\n" +
- " Richard, Miles, 1450.0\n",
+ "\nAccounts with balance lower than 1,500:\n"
+ + " John, Doe, 1000.0\n"
+ + " Richard, Miles, 1450.0\n",
- "\nAll accounts:\n" +
- " Jane, Roe, Forest Hill\n" +
- " Mary, Major, Denver\n" +
- " Richard, Miles, St. Petersburg\n"
+ "\nAll accounts:\n"
+ + " Jane, Roe, Forest Hill\n"
+ + " Mary, Major, Denver\n"
+ + " Richard, Miles, St. Petersburg\n"
);
}
@BeforeEach
public void startNode(@WorkDirectory Path workDir) throws IOException {
IgnitionManager.start(
- "my-first-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- workDir
+ "my-first-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ workDir
);
}
@@ -85,7 +85,8 @@ public class SqlExamplesTest {
public void removeWorkDir() {
Path workDir = Path.of("work");
- if (Files.exists(workDir))
+ if (Files.exists(workDir)) {
IgniteUtils.deleteIfExists(workDir);
+ }
}
}
diff --git a/examples/src/test/java/org/apache/ignite/example/table/TableExamplesTest.java b/examples/src/test/java/org/apache/ignite/example/table/TableExamplesTest.java
index 52a2155..7d15538 100644
--- a/examples/src/test/java/org/apache/ignite/example/table/TableExamplesTest.java
+++ b/examples/src/test/java/org/apache/ignite/example/table/TableExamplesTest.java
@@ -46,10 +46,10 @@ public class TableExamplesTest {
@Test
public void testRecordViewExample() throws Exception {
ExampleTestUtils.assertConsoleOutputContains(RecordViewExample::main, EMPTY_ARGS,
- "\nRetrieved record:\n" +
- " Account Number: 123456\n" +
- " Owner: Val Kulichenko\n" +
- " Balance: $100.0\n");
+ "\nRetrieved record:\n"
+ + " Account Number: 123456\n"
+ + " Owner: Val Kulichenko\n"
+ + " Balance: $100.0\n");
}
/**
@@ -60,18 +60,18 @@ public class TableExamplesTest {
@Test
public void testKeyValueViewExample() throws Exception {
ExampleTestUtils.assertConsoleOutputContains(KeyValueViewExample::main, EMPTY_ARGS,
- "\nRetrieved value:\n" +
- " Account Number: 123456\n" +
- " Owner: Val Kulichenko\n" +
- " Balance: $100.0\n");
+ "\nRetrieved value:\n"
+ + " Account Number: 123456\n"
+ + " Owner: Val Kulichenko\n"
+ + " Balance: $100.0\n");
}
@BeforeEach
public void startNode(@WorkDirectory Path workDir) throws IOException {
IgnitionManager.start(
- "my-first-node",
- Files.readString(Path.of("config", "ignite-config.json")),
- workDir
+ "my-first-node",
+ Files.readString(Path.of("config", "ignite-config.json")),
+ workDir
);
}
@@ -88,7 +88,8 @@ public class TableExamplesTest {
public void removeWorkDir() {
Path workDir = Path.of("work");
- if (Files.exists(workDir))
+ if (Files.exists(workDir)) {
IgniteUtils.deleteIfExists(workDir);
+ }
}
}
diff --git a/idea/intellij-java-google-style.xml b/idea/intellij-java-google-style.xml
new file mode 100644
index 0000000..02891e6
--- /dev/null
+++ b/idea/intellij-java-google-style.xml
@@ -0,0 +1,617 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<code_scheme name="GoogleStyle">
+ <option name="OTHER_INDENT_OPTIONS">
+ <value>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ <option name="USE_TAB_CHARACTER" value="false"/>
+ <option name="SMART_TABS" value="false"/>
+ <option name="LABEL_INDENT_SIZE" value="0"/>
+ <option name="LABEL_INDENT_ABSOLUTE" value="false"/>
+ <option name="USE_RELATIVE_INDENTS" value="false"/>
+ </value>
+ </option>
+ <option name="INSERT_INNER_CLASS_IMPORTS" value="true"/>
+ <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
+ <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
+ <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
+ <value/>
+ </option>
+ <option name="IMPORT_LAYOUT_TABLE">
+ <value>
+ <package name="" withSubpackages="true" static="true"/>
+ <emptyLine/>
+ <package name="" withSubpackages="true" static="false"/>
+ </value>
+ </option>
+ <option name="RIGHT_MARGIN" value="100"/>
+ <option name="JD_ALIGN_PARAM_COMMENTS" value="false"/>
+ <option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false"/>
+ <option name="JD_P_AT_EMPTY_LINES" value="false"/>
+ <option name="JD_KEEP_EMPTY_PARAMETER" value="false"/>
+ <option name="JD_KEEP_EMPTY_EXCEPTION" value="false"/>
+ <option name="JD_KEEP_EMPTY_RETURN" value="false"/>
+ <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false"/>
+ <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0"/>
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
+ <option name="BLANK_LINES_AFTER_CLASS_HEADER" value="0"/>
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
+ <option name="ALIGN_MULTILINE_FOR" value="false"/>
+ <option name="CALL_PARAMETERS_WRAP" value="1"/>
+ <option name="METHOD_PARAMETERS_WRAP" value="1"/>
+ <option name="EXTENDS_LIST_WRAP" value="1"/>
+ <option name="THROWS_KEYWORD_WRAP" value="1"/>
+ <option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+ <option name="TERNARY_OPERATION_WRAP" value="1"/>
+ <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
+ <option name="FOR_STATEMENT_WRAP" value="1"/>
+ <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
+ <option name="WRAP_COMMENTS" value="true"/>
+ <option name="IF_BRACE_FORCE" value="3"/>
+ <option name="DOWHILE_BRACE_FORCE" value="3"/>
+ <option name="WHILE_BRACE_FORCE" value="3"/>
+ <option name="FOR_BRACE_FORCE" value="3"/>
+ <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true"/>
+ <AndroidXmlCodeStyleSettings>
+ <option name="USE_CUSTOM_SETTINGS" value="true"/>
+ <option name="LAYOUT_SETTINGS">
+ <value>
+ <option name="INSERT_BLANK_LINE_BEFORE_TAG" value="false"/>
+ </value>
+ </option>
+ </AndroidXmlCodeStyleSettings>
+ <JSCodeStyleSettings>
+ <option name="INDENT_CHAINED_CALLS" value="false"/>
+ </JSCodeStyleSettings>
+ <Python>
+ <option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true"/>
+ </Python>
+ <TypeScriptCodeStyleSettings>
+ <option name="INDENT_CHAINED_CALLS" value="false"/>
+ </TypeScriptCodeStyleSettings>
+ <XML>
+ <option name="XML_ALIGN_ATTRIBUTES" value="false"/>
+ <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true"/>
+ </XML>
+ <codeStyleSettings language="CSS">
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="ECMA Script Level 4">
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
+ <option name="ALIGN_MULTILINE_FOR" value="false"/>
+ <option name="CALL_PARAMETERS_WRAP" value="1"/>
+ <option name="METHOD_PARAMETERS_WRAP" value="1"/>
+ <option name="EXTENDS_LIST_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+ <option name="TERNARY_OPERATION_WRAP" value="1"/>
+ <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
+ <option name="FOR_STATEMENT_WRAP" value="1"/>
+ <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
+ <option name="IF_BRACE_FORCE" value="3"/>
+ <option name="DOWHILE_BRACE_FORCE" value="3"/>
+ <option name="WHILE_BRACE_FORCE" value="3"/>
+ <option name="FOR_BRACE_FORCE" value="3"/>
+ <option name="PARENT_SETTINGS_INSTALLED" value="true"/>
+ </codeStyleSettings>
+ <codeStyleSettings language="HTML">
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="JAVA">
+ <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false"/>
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
+ <option name="KEEP_BLANK_LINES_BETWEEN_PACKAGE_DECLARATION_AND_HEADER" value="1"/>
+ <option name="BLANK_LINES_BEFORE_PACKAGE" value="1"/>
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
+ <option name="ALIGN_MULTILINE_RESOURCES" value="false"/>
+ <option name="ALIGN_MULTILINE_FOR" value="false"/>
+ <option name="CALL_PARAMETERS_WRAP" value="1"/>
+ <option name="METHOD_PARAMETERS_WRAP" value="1"/>
+ <option name="EXTENDS_LIST_WRAP" value="1"/>
+ <option name="THROWS_KEYWORD_WRAP" value="1"/>
+ <option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+ <option name="TERNARY_OPERATION_WRAP" value="1"/>
+ <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
+ <option name="FOR_STATEMENT_WRAP" value="1"/>
+ <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
+ <option name="WRAP_COMMENTS" value="true"/>
+ <option name="IF_BRACE_FORCE" value="3"/>
+ <option name="DOWHILE_BRACE_FORCE" value="3"/>
+ <option name="WHILE_BRACE_FORCE" value="3"/>
+ <option name="FOR_BRACE_FORCE" value="3"/>
+ <indentOptions>
+ <option name="KEEP_INDENTS_ON_EMPTY_LINES" value="true"/>
+ <option name="INDENT_SIZE" value="4"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="8"/>
+ <option name="TAB_SIZE" value="4"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="JSON">
+ <indentOptions>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="JavaScript">
+ <option name="RIGHT_MARGIN" value="80"/>
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
+ <option name="ALIGN_MULTILINE_FOR" value="false"/>
+ <option name="CALL_PARAMETERS_WRAP" value="1"/>
+ <option name="METHOD_PARAMETERS_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_WRAP" value="1"/>
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+ <option name="TERNARY_OPERATION_WRAP" value="1"/>
+ <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
+ <option name="FOR_STATEMENT_WRAP" value="1"/>
+ <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
+ <option name="IF_BRACE_FORCE" value="3"/>
+ <option name="DOWHILE_BRACE_FORCE" value="3"/>
+ <option name="WHILE_BRACE_FORCE" value="3"/>
+ <option name="FOR_BRACE_FORCE" value="3"/>
+ <option name="PARENT_SETTINGS_INSTALLED" value="true"/>
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="PROTO">
+ <option name="RIGHT_MARGIN" value="80"/>
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="2"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="protobuf">
+ <option name="RIGHT_MARGIN" value="80"/>
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="2"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="Python">
+ <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
+ <option name="RIGHT_MARGIN" value="80"/>
+ <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
+ <option name="PARENT_SETTINGS_INSTALLED" value="true"/>
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="SASS">
+ <indentOptions>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="SCSS">
+ <indentOptions>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="TypeScript">
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ </codeStyleSettings>
+ <codeStyleSettings language="XML">
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="2"/>
+ <option name="TAB_SIZE" value="2"/>
+ </indentOptions>
+ <arrangement>
+ <rules>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:android</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:.*</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:id</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>style</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:.*Style</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_width</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_height</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_weight</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_margin</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginTop</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginBottom</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginStart</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginEnd</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginLeft</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_marginRight</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:layout_.*</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:padding</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingTop</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingBottom</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingStart</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingEnd</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingLeft</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:paddingRight</NAME>
+ <XML_ATTRIBUTE/>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/apk/res-auto</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>http://schemas.android.com/tools</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_NAMESPACE>.*</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ </rules>
+ </arrangement>
+ </codeStyleSettings>
+ <Objective-C>
+ <option name="INDENT_NAMESPACE_MEMBERS" value="0"/>
+ <option name="INDENT_C_STRUCT_MEMBERS" value="2"/>
+ <option name="INDENT_CLASS_MEMBERS" value="2"/>
+ <option name="INDENT_VISIBILITY_KEYWORDS" value="1"/>
+ <option name="INDENT_INSIDE_CODE_BLOCK" value="2"/>
+ <option name="KEEP_STRUCTURES_IN_ONE_LINE" value="true"/>
+ <option name="FUNCTION_PARAMETERS_WRAP" value="5"/>
+ <option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="5"/>
+ <option name="TEMPLATE_CALL_ARGUMENTS_WRAP" value="5"/>
+ <option name="TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE" value="true"/>
+ <option name="ALIGN_INIT_LIST_IN_COLUMNS" value="false"/>
+ <option name="SPACE_BEFORE_SUPERCLASS_COLON" value="false"/>
+ </Objective-C>
+ <Objective-C-extensions>
+ <option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK"/>
+ <option name="RELEASE_STYLE" value="IVAR"/>
+ <option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE"/>
+ <file>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function"/>
+ </file>
+ <class>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod"/>
+ <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod"/>
+ </class>
+ <extensions>
+ <pair source="cc" header="h"/>
+ <pair source="c" header="h"/>
+ </extensions>
+ </Objective-C-extensions>
+ <codeStyleSettings language="ObjectiveC">
+ <option name="RIGHT_MARGIN" value="80"/>
+ <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1"/>
+ <option name="BLANK_LINES_BEFORE_IMPORTS" value="0"/>
+ <option name="BLANK_LINES_AFTER_IMPORTS" value="0"/>
+ <option name="BLANK_LINES_AROUND_CLASS" value="0"/>
+ <option name="BLANK_LINES_AROUND_METHOD" value="0"/>
+ <option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0"/>
+ <option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false"/>
+ <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
+ <option name="FOR_STATEMENT_WRAP" value="1"/>
+ <option name="ASSIGNMENT_WRAP" value="1"/>
+ <indentOptions>
+ <option name="INDENT_SIZE" value="2"/>
+ <option name="CONTINUATION_INDENT_SIZE" value="4"/>
+ </indentOptions>
+ </codeStyleSettings>
+</code_scheme>
diff --git a/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/AffinityUtils.java b/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/AffinityUtils.java
index dd03a39..557d512 100644
--- a/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/AffinityUtils.java
+++ b/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/AffinityUtils.java
@@ -30,20 +30,20 @@ public class AffinityUtils {
* Calculates affinity assignments.
*
* @param partitions Partitions count.
- * @param replicas Replicas count.
+ * @param replicas Replicas count.
* @return List nodes by partition.
*/
public static List<List<ClusterNode>> calculateAssignments(
- @NotNull Collection<ClusterNode> baselineNodes,
- int partitions,
- int replicas
+ @NotNull Collection<ClusterNode> baselineNodes,
+ int partitions,
+ int replicas
) {
return RendezvousAffinityFunction.assignPartitions(
- baselineNodes,
- partitions,
- replicas,
- false,
- null
+ baselineNodes,
+ partitions,
+ replicas,
+ false,
+ null
);
}
}
diff --git a/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunction.java b/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunction.java
index 1468665..f80c635 100644
--- a/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunction.java
+++ b/modules/affinity/src/main/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunction.java
@@ -34,8 +34,7 @@ import org.apache.ignite.lang.IgniteLogger;
import org.apache.ignite.network.ClusterNode;
/**
- * Affinity function for partitioned table based on Highest Random Weight algorithm. This function supports the
- * following configuration:
+ * Affinity function for partitioned table based on Highest Random Weight algorithm. This function supports the following configuration:
* <ul>
* <li>
* {@code partitions} - Number of partitions to spread across nodes.
@@ -79,27 +78,28 @@ public class RendezvousAffinityFunction {
/**
* Returns collection of nodes for specified partition.
*
- * @param part Partition.
- * @param nodes Nodes.
- * @param replicas Number partition replicas.
+ * @param part Partition.
+ * @param nodes Nodes.
+ * @param replicas Number partition replicas.
* @param neighborhoodCache Neighborhood.
- * @param exclNeighbors If true neighbors are excluded, false otherwise.
- * @param nodeFilter Filter for nodes.
+ * @param exclNeighbors If true neighbors are excluded, false otherwise.
+ * @param nodeFilter Filter for nodes.
* @return Assignment.
*/
public static List<ClusterNode> assignPartition(
- int part,
- List<ClusterNode> nodes,
- int replicas,
- Map<String, Collection<ClusterNode>> neighborhoodCache,
- boolean exclNeighbors,
- BiPredicate<ClusterNode, List<ClusterNode>> nodeFilter
+ int part,
+ List<ClusterNode> nodes,
+ int replicas,
+ Map<String, Collection<ClusterNode>> neighborhoodCache,
+ boolean exclNeighbors,
+ BiPredicate<ClusterNode, List<ClusterNode>> nodeFilter
) {
- if (nodes.size() <= 1)
+ if (nodes.size() <= 1) {
return nodes;
+ }
IgniteBiTuple<Long, ClusterNode>[] hashArr =
- (IgniteBiTuple<Long, ClusterNode>[])new IgniteBiTuple[nodes.size()];
+ (IgniteBiTuple<Long, ClusterNode>[]) new IgniteBiTuple[nodes.size()];
for (int i = 0; i < nodes.size(); i++) {
ClusterNode node = nodes.get(i);
@@ -116,8 +116,9 @@ public class RendezvousAffinityFunction {
Iterable<ClusterNode> sortedNodes = new LazyLinearSortedContainer(hashArr, effectiveReplicas);
// REPLICATED cache case
- if (replicas == Integer.MAX_VALUE)
+ if (replicas == Integer.MAX_VALUE) {
return replicatedAssign(nodes, sortedNodes);
+ }
Iterator<ClusterNode> it = sortedNodes.iterator();
@@ -129,8 +130,9 @@ public class RendezvousAffinityFunction {
res.add(first);
- if (exclNeighbors)
+ if (exclNeighbors) {
allNeighbors.addAll(neighborhoodCache.get(first.id()));
+ }
// Select another replicas.
if (replicas > 1) {
@@ -143,12 +145,12 @@ public class RendezvousAffinityFunction {
allNeighbors.addAll(neighborhoodCache.get(node.id()));
}
- }
- else if (nodeFilter == null || nodeFilter.test(node, res)) {
+ } else if (nodeFilter == null || nodeFilter.test(node, res)) {
res.add(node);
- if (exclNeighbors)
+ if (exclNeighbors) {
allNeighbors.addAll(neighborhoodCache.get(node.id()));
+ }
}
}
}
@@ -162,13 +164,14 @@ public class RendezvousAffinityFunction {
while (it.hasNext() && res.size() < effectiveReplicas) {
ClusterNode node = it.next();
- if (!res.contains(node))
+ if (!res.contains(node)) {
res.add(node);
+ }
}
if (!exclNeighborsWarn) {
- LOG.warn("Affinity function excludeNeighbors property is ignored " +
- "because topology has no enough nodes to assign all replicas.");
+ LOG.warn("Affinity function excludeNeighbors property is ignored "
+ + "because topology has no enough nodes to assign all replicas.");
exclNeighborsWarn = true;
}
@@ -182,21 +185,23 @@ public class RendezvousAffinityFunction {
/**
* Creates assignment for REPLICATED table
*
- * @param nodes Topology.
+ * @param nodes Topology.
* @param sortedNodes Sorted for specified partitions nodes.
* @return Assignment.
*/
private static List<ClusterNode> replicatedAssign(List<ClusterNode> nodes,
- Iterable<ClusterNode> sortedNodes) {
+ Iterable<ClusterNode> sortedNodes) {
ClusterNode first = sortedNodes.iterator().next();
List<ClusterNode> res = new ArrayList<>(nodes.size());
res.add(first);
- for (ClusterNode n : nodes)
- if (!n.equals(first))
+ for (ClusterNode n : nodes) {
+ if (!n.equals(first)) {
res.add(n);
+ }
+ }
assert res.size() == nodes.size() : "Not enough replicas: " + res.size();
@@ -204,8 +209,7 @@ public class RendezvousAffinityFunction {
}
/**
- * The pack partition number and nodeHash.hashCode to long and mix it by hash function based on the Wang/Jenkins
- * hash.
+ * The pack partition number and nodeHash.hashCode to long and mix it by hash function based on the Wang/Jenkins hash.
*
* @param key0 Hash key.
* @param key1 Hash key.
@@ -214,7 +218,7 @@ public class RendezvousAffinityFunction {
*/
private static long hash(int key0, int key1) {
long key = (key0 & 0xFFFFFFFFL)
- | ((key1 & 0xFFFFFFFFL) << 32);
+ | ((key1 & 0xFFFFFFFFL) << 32);
key = (~key) + (key << 21); // key = (key << 21) - key - 1;
key ^= (key >>> 24);
@@ -231,18 +235,18 @@ public class RendezvousAffinityFunction {
* Generates an assignment by the given parameters.
*
* @param currentTopologySnapshot List of topology nodes.
- * @param partitions Number of table partitions.
- * @param replicas Number partition replicas.
- * @param exclNeighbors If true neighbors are excluded fro the one partition assignment, false otherwise.
- * @param nodeFilter Filter for nodes.
+ * @param partitions Number of table partitions.
+ * @param replicas Number partition replicas.
+ * @param exclNeighbors If true neighbors are excluded fro the one partition assignment, false otherwise.
+ * @param nodeFilter Filter for nodes.
* @return List nodes by partition.
*/
public static List<List<ClusterNode>> assignPartitions(
- Collection<ClusterNode> currentTopologySnapshot,
- int partitions,
- int replicas,
- boolean exclNeighbors,
- BiPredicate<ClusterNode, List<ClusterNode>> nodeFilter
+ Collection<ClusterNode> currentTopologySnapshot,
+ int partitions,
+ int replicas,
+ boolean exclNeighbors,
+ BiPredicate<ClusterNode, List<ClusterNode>> nodeFilter
) {
assert partitions <= MAX_PARTITIONS_COUNT : "partitions <= " + MAX_PARTITIONS_COUNT;
assert partitions > 0 : "parts > 0";
@@ -250,8 +254,7 @@ public class RendezvousAffinityFunction {
List<List<ClusterNode>> assignments = new ArrayList<>(partitions);
- Map<String, Collection<ClusterNode>> neighborhoodCache = exclNeighbors ?
- neighbors(currentTopologySnapshot) : null;
+ Map<String, Collection<ClusterNode>> neighborhoodCache = exclNeighbors ? neighbors(currentTopologySnapshot) : null;
List<ClusterNode> nodes = new ArrayList<>(currentTopologySnapshot);
@@ -280,17 +283,20 @@ public class RendezvousAffinityFunction {
Collection<ClusterNode> nodes = macMap.get(macs);
- if (nodes == null)
+ if (nodes == null) {
macMap.put(macs, nodes = new HashSet<>());
+ }
nodes.add(node);
}
Map<String, Collection<ClusterNode>> neighbors = new HashMap<>(topSnapshot.size(), 1.0f);
- for (Collection<ClusterNode> group : macMap.values())
- for (ClusterNode node : group)
+ for (Collection<ClusterNode> group : macMap.values()) {
+ for (ClusterNode node : group) {
neighbors.put(node.id(), group);
+ }
+ }
return neighbors;
}
@@ -299,15 +305,14 @@ public class RendezvousAffinityFunction {
*
*/
private static class HashComparator implements Comparator<IgniteBiTuple<Long, ClusterNode>>, Serializable {
- /**
- *
- */
+ /** Serial version uid. */
private static final long serialVersionUID = 0L;
/** {@inheritDoc} */
- @Override public int compare(IgniteBiTuple<Long, ClusterNode> o1, IgniteBiTuple<Long, ClusterNode> o2) {
+ @Override
+ public int compare(IgniteBiTuple<Long, ClusterNode> o1, IgniteBiTuple<Long, ClusterNode> o2) {
return o1.get1() < o2.get1() ? -1 : o1.get1() > o2.get1() ? 1 :
- o1.get2().name().compareTo(o2.get2().name());
+ o1.get2().name().compareTo(o2.get2().name());
}
}
@@ -322,13 +327,13 @@ public class RendezvousAffinityFunction {
private int sorted;
/**
- * @param arr Node / partition hash list.
+ * @param arr Node / partition hash list.
* @param needFirstSortedCnt Estimate count of elements to return by iterator.
*/
LazyLinearSortedContainer(IgniteBiTuple<Long, ClusterNode>[] arr, int needFirstSortedCnt) {
this.arr = arr;
- if (needFirstSortedCnt > (int)Math.log(arr.length)) {
+ if (needFirstSortedCnt > (int) Math.log(arr.length)) {
Arrays.sort(arr, COMPARATOR);
sorted = arr.length;
@@ -336,7 +341,8 @@ public class RendezvousAffinityFunction {
}
/** {@inheritDoc} */
- @Override public Iterator<ClusterNode> iterator() {
+ @Override
+ public Iterator<ClusterNode> iterator() {
return new SortIterator();
}
@@ -348,17 +354,21 @@ public class RendezvousAffinityFunction {
private int cur;
/** {@inheritDoc} */
- @Override public boolean hasNext() {
+ @Override
+ public boolean hasNext() {
return cur < arr.length;
}
/** {@inheritDoc} */
- @Override public ClusterNode next() {
- if (!hasNext())
+ @Override
+ public ClusterNode next() {
+ if (!hasNext()) {
throw new NoSuchElementException();
+ }
- if (cur < sorted)
+ if (cur < sorted) {
return arr[cur++].get2();
+ }
IgniteBiTuple<Long, ClusterNode> min = arr[cur];
@@ -384,14 +394,16 @@ public class RendezvousAffinityFunction {
}
/** {@inheritDoc} */
- @Override public void remove() {
+ @Override
+ public void remove() {
throw new UnsupportedOperationException("Remove doesn't supported");
}
}
}
/** {@inheritDoc} */
- @Override public String toString() {
+ @Override
+ public String toString() {
return "U.toString(RendezvousAffinityFunction.class, this)";
}
diff --git a/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/AffinityServiceTest.java b/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/AffinityServiceTest.java
index 627f677..e8627f1 100644
--- a/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/AffinityServiceTest.java
+++ b/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/AffinityServiceTest.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.affinity;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -25,11 +27,9 @@ import org.apache.ignite.network.ClusterNode;
import org.apache.ignite.network.NetworkAddress;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
/**
- * Tests scenarios for an affinity service. Please pay attention that given test doesn't check Rendezvous or any other
- * affinity function it just checks {@link AffinityUtils} logic.
+ * Tests scenarios for an affinity service. Please pay attention that given test doesn't check Rendezvous or any other affinity function it
+ * just checks {@link AffinityUtils} logic.
*/
public class AffinityServiceTest {
/**
@@ -38,24 +38,25 @@ public class AffinityServiceTest {
@Test
public void testCalculatedAssignmentHappyPath() {
List<List<ClusterNode>> assignments = AffinityUtils.calculateAssignments(
- Arrays.asList(
- new ClusterNode(
- UUID.randomUUID().toString(), "node0",
- new NetworkAddress("localhost", 8080)
+ Arrays.asList(
+ new ClusterNode(
+ UUID.randomUUID().toString(), "node0",
+ new NetworkAddress("localhost", 8080)
+ ),
+ new ClusterNode(
+ UUID.randomUUID().toString(), "node1",
+ new NetworkAddress("localhost", 8081)
+ )
),
- new ClusterNode(
- UUID.randomUUID().toString(), "node1",
- new NetworkAddress("localhost", 8081)
- )
- ),
- 10,
- 3
+ 10,
+ 3
);
assertEquals(10, assignments.size());
- for (List<ClusterNode> partitionAssignment : assignments)
+ for (List<ClusterNode> partitionAssignment : assignments) {
assertEquals(2, partitionAssignment.size());
+ }
}
/**
@@ -64,14 +65,15 @@ public class AffinityServiceTest {
@Test
public void testEmptyBaselineAssignmentsCalculation() {
List<List<ClusterNode>> assignments = AffinityUtils.calculateAssignments(
- Collections.emptyList(),
- 10,
- 3
+ Collections.emptyList(),
+ 10,
+ 3
);
assertEquals(10, assignments.size());
- for (List<ClusterNode> partitionAssignment : assignments)
+ for (List<ClusterNode> partitionAssignment : assignments) {
assertEquals(0, partitionAssignment.size());
+ }
}
}
diff --git a/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunctionTest.java b/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunctionTest.java
index 206c09f..5c7590d 100644
--- a/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunctionTest.java
+++ b/modules/affinity/src/test/java/org/apache/ignite/internal/affinity/RendezvousAffinityFunctionTest.java
@@ -17,6 +17,11 @@
package org.apache.ignite.internal.affinity;
+import static java.util.Objects.nonNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -33,11 +38,6 @@ import org.apache.ignite.network.NetworkAddress;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Test;
-import static java.util.Objects.nonNull;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
/**
* Test for affinity function.
*/
@@ -63,11 +63,11 @@ public class RendezvousAffinityFunctionTest {
int ideal = (parts * replicas) / nodes;
List<List<ClusterNode>> assignment = RendezvousAffinityFunction.assignPartitions(
- clusterNodes,
- parts,
- replicas,
- false,
- null
+ clusterNodes,
+ parts,
+ replicas,
+ false,
+ null
);
HashMap<ClusterNode, ArrayList<Integer>> assignmentByNode = new HashMap<>(nodes);
@@ -78,8 +78,9 @@ public class RendezvousAffinityFunctionTest {
for (ClusterNode node : partNodes) {
ArrayList<Integer> nodeParts = assignmentByNode.get(node);
- if (nodeParts == null)
+ if (nodeParts == null) {
assignmentByNode.put(node, nodeParts = new ArrayList<>());
+ }
nodeParts.add(part);
}
@@ -93,21 +94,22 @@ public class RendezvousAffinityFunctionTest {
assertNotNull(nodeParts);
assertTrue(nodeParts.size() > ideal * (1 - AFFINITY_DEVIATION_RATIO)
- && nodeParts.size() < ideal * (1 + AFFINITY_DEVIATION_RATIO),
- "Partition distribution is too far from ideal [node=" + node
- + ", size=" + nodeParts.size()
- + ", idealSize=" + ideal
- + ", parts=" + compact(nodeParts) + ']');
+ && nodeParts.size() < ideal * (1 + AFFINITY_DEVIATION_RATIO),
+ "Partition distribution is too far from ideal [node=" + node
+ + ", size=" + nodeParts.size()
+ + ", idealSize=" + ideal
+ + ", parts=" + compact(nodeParts) + ']');
}
}
- @NotNull private List<ClusterNode> prepareNetworkTopology(int nodes) {
+ @NotNull
+ private List<ClusterNode> prepareNetworkTopology(int nodes) {
var addr = new NetworkAddress("127.0.0.1", 121212);
return IntStream.range(0, nodes)
- .mapToObj(i -> "Node " + i)
- .map(name -> new ClusterNode(UUID.randomUUID().toString(), name, addr))
- .collect(Collectors.toUnmodifiableList());
+ .mapToObj(i -> "Node " + i)
+ .map(name -> new ClusterNode(UUID.randomUUID().toString(), name, addr))
+ .collect(Collectors.toUnmodifiableList());
}
@Test
@@ -123,11 +125,11 @@ public class RendezvousAffinityFunctionTest {
assertTrue(parts > nodes, "Partitions should be more that nodes");
List<List<ClusterNode>> assignment = RendezvousAffinityFunction.assignPartitions(
- clusterNodes,
- parts,
- replicas,
- false,
- null
+ clusterNodes,
+ parts,
+ replicas,
+ false,
+ null
);
byte[] assignmentBytes = ByteUtils.toBytes(assignment);
@@ -136,7 +138,7 @@ public class RendezvousAffinityFunctionTest {
LOG.info("Assignment is serialized successfully [bytes={}]", assignmentBytes.length);
- List<List<ClusterNode>> deserializedAssignment = (List<List<ClusterNode>>)ByteUtils.fromBytes(assignmentBytes);
+ List<List<ClusterNode>> deserializedAssignment = (List<List<ClusterNode>>) ByteUtils.fromBytes(assignmentBytes);
assertNotNull(deserializedAssignment);
@@ -144,9 +146,8 @@ public class RendezvousAffinityFunctionTest {
}
/**
- * Returns sorted and compacted string representation of given {@code col}. Two nearby numbers with difference at
- * most 1 are compacted to one continuous segment. E.g. collection of [1, 2, 3, 5, 6, 7, 10] will be compacted to
- * [1-3, 5-7, 10].
+ * Returns sorted and compacted string representation of given {@code col}. Two nearby numbers with difference at most 1 are compacted
+ * to one continuous segment. E.g. collection of [1, 2, 3, 5, 6, 7, 10] will be compacted to [1-3, 5-7, 10].
*
* @param col Collection of integers.
* @return Compacted string representation of given collections.
@@ -156,23 +157,23 @@ public class RendezvousAffinityFunctionTest {
}
/**
- * Returns sorted and compacted string representation of given {@code col}. Two nearby numbers are compacted to one
- * continuous segment. E.g. collection of [1, 2, 3, 5, 6, 7, 10] with {@code nextValFun = i -> i + 1} will be
- * compacted to [1-3, 5-7, 10].
+ * Returns sorted and compacted string representation of given {@code col}. Two nearby numbers are compacted to one continuous segment.
+ * E.g. collection of [1, 2, 3, 5, 6, 7, 10] with {@code nextValFun = i -> i + 1} will be compacted to [1-3, 5-7, 10].
*
- * @param col Collection of numbers.
+ * @param col Collection of numbers.
* @param nextValFun Function to get nearby number.
* @return Compacted string representation of given collections.
*/
public static <T extends Number & Comparable<? super T>> String compact(
- Collection<T> col,
- Function<T, T> nextValFun
+ Collection<T> col,
+ Function<T, T> nextValFun
) {
assert nonNull(col);
assert nonNull(nextValFun);
- if (col.isEmpty())
+ if (col.isEmpty()) {
return "[]";
+ }
StringBuffer sb = new StringBuffer();
sb.append('[');
@@ -180,7 +181,8 @@ public class RendezvousAffinityFunctionTest {
List<T> l = new ArrayList<>(col);
Collections.sort(l);
- T left = l.get(0), right = left;
+ T left = l.get(0);
+ T right = left;
for (int i = 1; i < l.size(); i++) {
T val = l.get(i);
@@ -189,20 +191,22 @@ public class RendezvousAffinityFunctionTest {
continue;
}
- if (left.compareTo(right) == 0)
+ if (left.compareTo(right) == 0) {
sb.append(left);
- else
+ } else {
sb.append(left).append('-').append(right);
+ }
sb.append(',').append(' ');
left = right = val;
}
- if (left.compareTo(right) == 0)
+ if (left.compareTo(right) == 0) {
sb.append(left);
- else
+ } else {
sb.append(left).append('-').append(right);
+ }
sb.append(']');
diff --git a/modules/api/src/main/java/org/apache/ignite/Ignite.java b/modules/api/src/main/java/org/apache/ignite/Ignite.java
index b3a91ca..8f1e090 100644
--- a/modules/api/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/api/src/main/java/org/apache/ignite/Ignite.java
@@ -51,24 +51,20 @@ public interface Ignite extends AutoCloseable {
/**
* Set new baseline nodes for table assignments.
*
- * Current implementation has significant restrictions:
- * - Only alive nodes can be a part of new baseline.
- * If any passed nodes are not alive, {@link IgniteException} with appropriate message will be thrown.
- * - Potentially it can be a long operation and current
- * synchronous changePeers-based implementation can't handle this issue well.
- * - No recovery logic supported, if setBaseline fails - it can produce random state of cluster.
- *
+ * <p>Current implementation has significant restrictions: - Only alive nodes can be a part of new baseline. If any passed nodes are not
+ * alive, {@link IgniteException} with appropriate message will be thrown. - Potentially it can be a long operation and current
+ * synchronous changePeers-based implementation can't handle this issue well. - No recovery logic supported, if setBaseline fails - it
+ * can produce random state of cluster.
* TODO: IGNITE-14209 issues above must be fixed.
* TODO: IGNITE-15815 add a test for stopping node and asynchronous implementation.
*
* @param baselineNodes Names of baseline nodes.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping,</li>
- * <li>{@code baselineNodes} argument is empty or null,</li>
- * <li>any node from {@code baselineNodes} is not alive.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping,</li>
+ * <li>{@code baselineNodes} argument is empty or null,</li>
+ * <li>any node from {@code baselineNodes} is not alive.</li>
+ * </ul>
*/
@Experimental
void setBaseline(Set<String> baselineNodes);
diff --git a/modules/api/src/main/java/org/apache/ignite/Ignition.java b/modules/api/src/main/java/org/apache/ignite/Ignition.java
index 6fda144..692de25 100644
--- a/modules/api/src/main/java/org/apache/ignite/Ignition.java
+++ b/modules/api/src/main/java/org/apache/ignite/Ignition.java
@@ -19,7 +19,6 @@ package org.apache.ignite;
import java.io.InputStream;
import java.nio.file.Path;
-import org.apache.ignite.Ignite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -31,9 +30,9 @@ public interface Ignition {
/**
* Starts an Ignite node with an optional bootstrap configuration from a HOCON file.
*
- * @param name Name of the node. Must not be {@code null}.
+ * @param name Name of the node. Must not be {@code null}.
* @param configPath Path to the node configuration in the HOCON format. Can be {@code null}.
- * @param workDir Work directory for the started node. Must not be {@code null}.
+ * @param workDir Work directory for the started node. Must not be {@code null}.
* @return Started Ignite node.
*/
public Ignite start(@NotNull String name, @Nullable Path configPath, @NotNull Path workDir);
@@ -42,10 +41,9 @@ public interface Ignition {
* Starts an Ignite node with an optional bootstrap configuration from an input stream with HOCON configs.
*
* @param name Name of the node. Must not be {@code null}.
- * @param config Optional node configuration based on
- * {@link org.apache.ignite.configuration.schemas.runner.NodeConfigurationSchema} and
- * {@link org.apache.ignite.configuration.schemas.network.NetworkConfigurationSchema}.
- * Following rules are used for applying the configuration properties:
+ * @param config Optional node configuration based on {@link org.apache.ignite.configuration.schemas.runner.NodeConfigurationSchema}
+ * and {@link org.apache.ignite.configuration.schemas.network.NetworkConfigurationSchema}. Following rules are used for
+ * applying the configuration properties:
* <ol>
* <li>Specified property overrides existing one or just applies itself if it wasn't
* previously specified.</li>
@@ -66,16 +64,15 @@ public interface Ignition {
/**
* Starts an Ignite node with the default configuration.
*
- * @param name Name of the node. Must not be {@code null}.
+ * @param name Name of the node. Must not be {@code null}.
* @param workDir Work directory for the started node. Must not be {@code null}.
* @return Started Ignite node.
*/
public Ignite start(@NotNull String name, @NotNull Path workDir);
/**
- * Stops the node with given {@code name}.
- * It's possible to stop both already started node or node that is currently starting.
- * Has no effect if node with specified name doesn't exist.
+ * Stops the node with given {@code name}. It's possible to stop both already started node or node that is currently starting. Has no
+ * effect if node with specified name doesn't exist.
*
* @param name Node name to stop.
* @throws IllegalArgumentException if null is specified instead of node name.
diff --git a/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java b/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
index f98e847..400442b 100644
--- a/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
+++ b/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
@@ -39,10 +39,9 @@ public class IgnitionManager {
* Starts an Ignite node with an optional bootstrap configuration from a HOCON file.
*
* @param nodeName Name of the node. Must not be {@code null}.
- * @param configStr Optional node configuration based on
- * {@link org.apache.ignite.configuration.schemas.runner.NodeConfigurationSchema} and
- * {@link org.apache.ignite.configuration.schemas.network.NetworkConfigurationSchema}.
- * Following rules are used for applying the configuration properties:
+ * @param configStr Optional node configuration based on {@link org.apache.ignite.configuration.schemas.runner.NodeConfigurationSchema}
+ * and {@link org.apache.ignite.configuration.schemas.network.NetworkConfigurationSchema}. Following rules are used for
+ * applying the configuration properties:
* <ol>
* <li>Specified property overrides existing one or just applies itself if it wasn't
* previously specified.</li>
@@ -61,9 +60,9 @@ public class IgnitionManager {
*/
// TODO IGNITE-14580 Add exception handling logic to IgnitionProcessor.
public static Ignite start(
- @NotNull String nodeName,
- @Nullable String configStr,
- @NotNull Path workDir
+ @NotNull String nodeName,
+ @Nullable String configStr,
+ @NotNull Path workDir
) {
synchronized (IgnitionManager.class) {
if (ignition == null) {
@@ -72,13 +71,12 @@ public class IgnitionManager {
}
}
- if (configStr == null)
+ if (configStr == null) {
return ignition.start(nodeName, workDir);
- else {
+ } else {
try (InputStream inputStream = new ByteArrayInputStream(configStr.getBytes(StandardCharsets.UTF_8))) {
return ignition.start(nodeName, inputStream, workDir);
- }
- catch (IOException e) {
+ } catch (IOException e) {
throw new IgniteException("Couldn't close the stream with node config.", e);
}
}
@@ -88,19 +86,18 @@ public class IgnitionManager {
* Starts an Ignite node with an optional bootstrap configuration from a HOCON file.
*
* @param nodeName Name of the node. Must not be {@code null}.
- * @param cfgPath Path to the node configuration in the HOCON format. Can be {@code null}.
- * @param workDir Work directory for the started node. Must not be {@code null}.
- * @param clsLdr The class loader to be used to load provider-configuration files
- * and provider classes, or {@code null} if the system class loader
- * (or, failing that, the bootstrap class loader) is to be used
+ * @param cfgPath Path to the node configuration in the HOCON format. Can be {@code null}.
+ * @param workDir Work directory for the started node. Must not be {@code null}.
+ * @param clsLdr The class loader to be used to load provider-configuration files and provider classes, or {@code null} if the system
+ * class loader (or, failing that, the bootstrap class loader) is to be used
* @return Started Ignite node.
*/
// TODO IGNITE-14580 Add exception handling logic to IgnitionProcessor.
public static Ignite start(
- @NotNull String nodeName,
- @Nullable Path cfgPath,
- @NotNull Path workDir,
- @Nullable ClassLoader clsLdr
+ @NotNull String nodeName,
+ @Nullable Path cfgPath,
+ @NotNull Path workDir,
+ @Nullable ClassLoader clsLdr
) {
synchronized (IgnitionManager.class) {
if (ignition == null) {
@@ -113,9 +110,8 @@ public class IgnitionManager {
}
/**
- * Stops the node with given {@code name}.
- * It's possible to stop both already started node or node that is currently starting.
- * Has no effect if node with specified name doesn't exist.
+ * Stops the node with given {@code name}. It's possible to stop both already started node or node that is currently starting. Has no
+ * effect if node with specified name doesn't exist.
*
* @param name Node name to stop.
* @throws IllegalArgumentException if null is specified instead of node name.
@@ -132,14 +128,12 @@ public class IgnitionManager {
}
/**
- * Stops the node with given {@code name}.
- * It's possible to stop both already started node or node that is currently starting.
- * Has no effect if node with specified name doesn't exist.
+ * Stops the node with given {@code name}. It's possible to stop both already started node or node that is currently starting. Has no
+ * effect if node with specified name doesn't exist.
*
- * @param name Node name to stop.
- * @param clsLdr The class loader to be used to load provider-configuration files
- * and provider classes, or {@code null} if the system class loader
- * (or, failing that, the bootstrap class loader) is to be used
+ * @param name Node name to stop.
+ * @param clsLdr The class loader to be used to load provider-configuration files and provider classes, or {@code null} if the system
+ * class loader (or, failing that, the bootstrap class loader) is to be used
* @throws IllegalArgumentException if null is specified instead of node name.
*/
public static void stop(@NotNull String name, @Nullable ClassLoader clsLdr) {
diff --git a/modules/api/src/main/java/org/apache/ignite/binary/package-info.java b/modules/api/src/main/java/org/apache/ignite/binary/package-info.java
index 95e12e1..c3375cc 100644
--- a/modules/api/src/main/java/org/apache/ignite/binary/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/binary/package-info.java
@@ -18,4 +18,5 @@
/**
* User binary objects API.
*/
+
package org.apache.ignite.binary;
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/clientconnector/package-info.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/clientconnector/package-info.java
index 1fa2d80..c845912 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/clientconnector/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/clientconnector/package-info.java
@@ -18,4 +18,5 @@
/**
* Configuration schemas for thin client components.
*/
+
package org.apache.ignite.configuration.schemas.clientconnector;
\ No newline at end of file
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/ScaleCubeConfigurationSchema.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/ScaleCubeConfigurationSchema.java
index bcf6fab..8b23c21 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/ScaleCubeConfigurationSchema.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/ScaleCubeConfigurationSchema.java
@@ -26,8 +26,8 @@ import org.apache.ignite.configuration.annotation.Value;
@Config
public class ScaleCubeConfigurationSchema {
/**
- * This multiplier is used to calculate the timeout after which the node is considered dead.
- * For more information see io.scalecube.cluster.ClusterMath#suspicionTimeout.
+ * This multiplier is used to calculate the timeout after which the node is considered dead. For more information see
+ * io.scalecube.cluster.ClusterMath#suspicionTimeout.
*/
@Value(hasDefault = true)
public final int membershipSuspicionMultiplier = 1;
@@ -40,7 +40,8 @@ public class ScaleCubeConfigurationSchema {
/**
* Gossip spreading interval.
- * @see <a href="https://en.wikipedia.org/wiki/Gossip_protocol">Gossip Protocol</a>.
+ *
+ * @see <a href="https://en.wikipedia.org/wiki/Gossip_protocol">Gossip Protocol</a>
*/
@Value(hasDefault = true)
public final int gossipInterval = 10;
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/package-info.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/package-info.java
index 3708170..5e482fa 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/network/package-info.java
@@ -18,4 +18,5 @@
/**
* Configuration schemas for Network components.
*/
+
package org.apache.ignite.configuration.schemas.network;
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/rest/package-info.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/rest/package-info.java
index d2abda0..c294a49 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/rest/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/rest/package-info.java
@@ -18,4 +18,5 @@
/**
* Configuration schemas for Rest component.
*/
+
package org.apache.ignite.configuration.schemas.rest;
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/runner/package-info.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/runner/package-info.java
index 0d3d0f6..2fdef3d 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/runner/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/runner/package-info.java
@@ -18,4 +18,5 @@
/**
* Configuration schemas for Cluster node.
*/
+
package org.apache.ignite.configuration.schemas.runner;
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/ColumnTypeValidator.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/ColumnTypeValidator.java
index c479274..0893e07 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/ColumnTypeValidator.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/ColumnTypeValidator.java
@@ -17,19 +17,19 @@
package org.apache.ignite.configuration.schemas.table;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
/**
* Annotation to validate whole table configuration.
*
- * Activate SchemaTableValidatorImpl in configuration engine for {@link TablesConfigurationSchema#tables}.
+ * <p>Activate SchemaTableValidatorImpl in configuration engine for {@link TablesConfigurationSchema#tables}.
*/
-@Target({ FIELD, PARAMETER })
+@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
public @interface ColumnTypeValidator {
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableConfigurationSchema.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableConfigurationSchema.java
index b58f145..ce7b0f9 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableConfigurationSchema.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableConfigurationSchema.java
@@ -17,6 +17,8 @@
package org.apache.ignite.configuration.schemas.table;
+import static org.apache.ignite.configuration.schemas.store.DataStorageConfigurationSchema.DEFAULT_DATA_REGION_NAME;
+
import org.apache.ignite.configuration.annotation.Config;
import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.DirectAccess;
@@ -26,8 +28,6 @@ import org.apache.ignite.configuration.validation.Immutable;
import org.apache.ignite.configuration.validation.Max;
import org.apache.ignite.configuration.validation.Min;
-import static org.apache.ignite.configuration.schemas.store.DataStorageConfigurationSchema.DEFAULT_DATA_REGION_NAME;
-
/**
* Table configuration schema class.
*/
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableValidator.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableValidator.java
index fee009b..dea0db1 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableValidator.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/TableValidator.java
@@ -17,19 +17,19 @@
package org.apache.ignite.configuration.schemas.table;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
/**
* Annotation to validate whole table configuration.
*
- * Activate TableValidatorImpl in configuration engine for {@link TablesConfigurationSchema#tables}.
+ * <p>Activate TableValidatorImpl in configuration engine for {@link TablesConfigurationSchema#tables}.
*/
-@Target({ FIELD, PARAMETER })
+@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
public @interface TableValidator {
diff --git a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/package-info.java b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/package-info.java
index a62ef19..4c1335c 100644
--- a/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/configuration/schemas/table/package-info.java
@@ -18,4 +18,5 @@
/**
* Configuration schemas for Table and Schema components.
*/
+
package org.apache.ignite.configuration.schemas.table;
diff --git a/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java b/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
index d5d5739..727c10a 100644
--- a/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/IgniteException.java
@@ -43,8 +43,7 @@ public class IgniteException extends RuntimeException {
}
/**
- * Creates a new grid exception with the given throwable as a cause and
- * source of error message.
+ * Creates a new grid exception with the given throwable as a cause and source of error message.
*
* @param cause Non-null throwable cause.
*/
@@ -55,7 +54,7 @@ public class IgniteException extends RuntimeException {
/**
* Creates a new exception with the given error message and optional nested exception.
*
- * @param msg Error message.
+ * @param msg Error message.
* @param cause Optional nested exception (can be {@code null}).
*/
public IgniteException(String msg, @Nullable Throwable cause) {
@@ -63,7 +62,8 @@ public class IgniteException extends RuntimeException {
}
/** {@inheritDoc} */
- @Override public String toString() {
+ @Override
+ public String toString() {
return getClass() + ": " + getMessage();
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/lang/TableAlreadyExistsException.java b/modules/api/src/main/java/org/apache/ignite/lang/TableAlreadyExistsException.java
index 8e48946..a82cb91 100644
--- a/modules/api/src/main/java/org/apache/ignite/lang/TableAlreadyExistsException.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/TableAlreadyExistsException.java
@@ -18,8 +18,7 @@
package org.apache.ignite.lang;
/**
- * This exception is thrown when a new table failed to be created,
- * because a table with same name already exists.
+ * This exception is thrown when a new table failed to be created, because a table with same name already exists.
*/
public class TableAlreadyExistsException extends IgniteException {
/**
diff --git a/modules/api/src/main/java/org/apache/ignite/lang/package-info.java b/modules/api/src/main/java/org/apache/ignite/lang/package-info.java
index 24dcea1..fa1e94b 100644
--- a/modules/api/src/main/java/org/apache/ignite/lang/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/lang/package-info.java
@@ -18,4 +18,5 @@
/**
* Ignite general purpose classes and interfaces.
*/
+
package org.apache.ignite.lang;
diff --git a/modules/api/src/main/java/org/apache/ignite/package-info.java b/modules/api/src/main/java/org/apache/ignite/package-info.java
index ad494ae..70dac2f 100644
--- a/modules/api/src/main/java/org/apache/ignite/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains Ignite node API and classes for node lifecycle management.
*/
+
package org.apache.ignite;
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java
index 853dee1..47b7747 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java
@@ -117,8 +117,9 @@ public class ColumnType {
* @throws IllegalArgumentException If precision value was invalid.
*/
public static NumberColumnType numberOf(int precision) {
- if (precision <= 0)
+ if (precision <= 0) {
throw new IllegalArgumentException("Precision [" + precision + "] must be positive integer value.");
+ }
return new NumberColumnType(ColumnTypeSpec.NUMBER, precision);
}
@@ -137,20 +138,23 @@ public class ColumnType {
* Returns decimal type with given precision and scale.
*
* @param precision Precision.
- * @param scale Scale.
+ * @param scale Scale.
* @return Decimal type.
* @throws IllegalArgumentException If precision and/or scale values were invalid.
*/
public static DecimalColumnType decimalOf(int precision, int scale) {
- if (precision <= 0)
+ if (precision <= 0) {
throw new IllegalArgumentException("Precision [" + precision + "] must be positive integer value.");
+ }
- if (scale < 0)
+ if (scale < 0) {
throw new IllegalArgumentException("Scale [" + scale + "] must be non-negative integer value.");
+ }
- if (precision < scale)
- throw new IllegalArgumentException("Precision [" + precision + "] must be" +
- " not lower than scale [ " + scale + " ].");
+ if (precision < scale) {
+ throw new IllegalArgumentException("Precision [" + precision + "] must be"
+ + " not lower than scale [ " + scale + " ].");
+ }
return new DecimalColumnType(ColumnTypeSpec.DECIMAL, precision, scale);
}
@@ -163,15 +167,15 @@ public class ColumnType {
*/
public static DecimalColumnType decimalOf() {
return new DecimalColumnType(
- ColumnTypeSpec.DECIMAL,
- DecimalColumnType.DEFAULT_PRECISION,
- DecimalColumnType.DEFAULT_SCALE
+ ColumnTypeSpec.DECIMAL,
+ DecimalColumnType.DEFAULT_PRECISION,
+ DecimalColumnType.DEFAULT_SCALE
);
}
/**
- * Returns timezone-free type representing a time of day in hours, minutes, seconds, and fractional seconds
- * with the default precision of 6 (microseconds).
+ * Returns timezone-free type representing a time of day in hours, minutes, seconds, and fractional seconds with the default precision
+ * of 6 (microseconds).
*
* @return Native type.
* @see TemporalColumnType#DEFAULT_PRECISION
@@ -183,17 +187,17 @@ public class ColumnType {
/**
* Returns timezone-free type representing a time of day in hours, minutes, seconds, and fractional seconds.
- * <p>
- * Precision is a number of digits in fractional seconds part,
- * from 0 - whole seconds precision up to 9 - nanoseconds precision.
+ *
+ * <p>Precision is a number of digits in fractional seconds part, from 0 - whole seconds precision up to 9 - nanoseconds precision.
*
* @param precision The number of digits in fractional seconds part. Accepted values are in range [0-9].
* @return Native type.
* @throws IllegalArgumentException If precision value was invalid.
*/
public static TemporalColumnType time(int precision) {
- if (precision < 0 || precision > 9)
+ if (precision < 0 || precision > 9) {
throw new IllegalArgumentException("Unsupported fractional seconds precision: " + precision);
+ }
return new TemporalColumnType(ColumnTypeSpec.TIME, precision);
}
@@ -211,24 +215,25 @@ public class ColumnType {
/**
* Returns timezone-free datetime encoded as (date, time).
- * <p>
- * Precision is a number of digits in fractional seconds part of time,
- * from 0 - whole seconds precision up to 9 - nanoseconds precision.
+ *
+ * <p>Precision is a number of digits in fractional seconds part of time, from 0 - whole seconds precision up to 9 - nanoseconds
+ * precision.
*
* @param precision The number of digits in fractional seconds part. Accepted values are in range [0-9].
* @return Native type.
* @throws IllegalArgumentException If precision value was invalid.
*/
public static TemporalColumnType datetime(int precision) {
- if (precision < 0 || precision > 9)
+ if (precision < 0 || precision > 9) {
throw new IllegalArgumentException("Unsupported fractional seconds precision: " + precision);
+ }
return new TemporalColumnType(ColumnTypeSpec.DATETIME, precision);
}
/**
- * Returns point in time as number of ticks since Jan 1, 1970 00:00:00.000 (with no timezone)
- * with the default precision of 6 (microseconds).
+ * Returns point in time as number of ticks since Jan 1, 1970 00:00:00.000 (with no timezone) with the default precision of 6
+ * (microseconds).
*
* @return Native type.
* @see TemporalColumnType#DEFAULT_PRECISION
@@ -239,19 +244,20 @@ public class ColumnType {
}
/**
- * Returns point in time as number of ticks since Jan 1, 1970 00:00:00.000 (with no timezone).
- * Ticks that are stored can be precised to second, millisecond, microsecond or nanosecond.
- * <p>
- * Precision is a number of digits in fractional seconds part of time,
- * from 0 - whole seconds precision up to 9 - nanoseconds precision.
+ * Returns point in time as number of ticks since Jan 1, 1970 00:00:00.000 (with no timezone). Ticks that are stored can be precised to
+ * second, millisecond, microsecond or nanosecond.
+ *
+ * <p>Precision is a number of digits in fractional seconds part of time, from 0 - whole seconds precision up to 9 - nanoseconds
+ * precision.
*
* @param precision The number of digits in fractional seconds part. Accepted values are in range [0-9].
* @return Native type.
* @throws IllegalArgumentException If precision value was invalid.
*/
public static TemporalColumnType timestamp(int precision) {
- if (precision < 0 || precision > 9)
+ if (precision < 0 || precision > 9) {
throw new IllegalArgumentException("Unsupported fractional seconds precision: " + precision);
+ }
return new TemporalColumnType(ColumnTypeSpec.TIMESTAMP, precision);
}
@@ -273,7 +279,7 @@ public class ColumnType {
* Creates variable-length column type.
*
* @param typeSpec Type spec.
- * @param length Type max length.
+ * @param length Type max length.
*/
private VarLenColumnType(ColumnTypeSpec typeSpec, int length) {
super(typeSpec);
@@ -291,23 +297,28 @@ public class ColumnType {
}
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
+ }
- if (o == null || getClass() != o.getClass())
+ if (o == null || getClass() != o.getClass()) {
return false;
+ }
- if (!super.equals(o))
+ if (!super.equals(o)) {
return false;
+ }
- VarLenColumnType type = (VarLenColumnType)o;
+ VarLenColumnType type = (VarLenColumnType) o;
return length == type.length;
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Objects.hash(super.hashCode(), length);
}
}
@@ -331,9 +342,9 @@ public class ColumnType {
/**
* Creates numeric column type.
*
- * @param typeSpec Type spec.
+ * @param typeSpec Type spec.
* @param precision Precision.
- * @param scale Scale.
+ * @param scale Scale.
*/
private DecimalColumnType(ColumnTypeSpec typeSpec, int precision, int scale) {
super(typeSpec);
@@ -361,23 +372,28 @@ public class ColumnType {
}
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
+ }
- if (o == null || getClass() != o.getClass())
+ if (o == null || getClass() != o.getClass()) {
return false;
+ }
- if (!super.equals(o))
+ if (!super.equals(o)) {
return false;
+ }
- DecimalColumnType type = (DecimalColumnType)o;
+ DecimalColumnType type = (DecimalColumnType) o;
return precision == type.precision && scale == type.scale;
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Objects.hash(super.hashCode(), precision, scale);
}
}
@@ -395,7 +411,7 @@ public class ColumnType {
/**
* Constructor.
*
- * @param typeSpec Type specification.
+ * @param typeSpec Type specification.
* @param precision Precision.
*/
private NumberColumnType(ColumnTypeSpec typeSpec, int precision) {
@@ -414,23 +430,28 @@ public class ColumnType {
}
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
+ }
- if (o == null || getClass() != o.getClass())
+ if (o == null || getClass() != o.getClass()) {
return false;
+ }
- if (!super.equals(o))
+ if (!super.equals(o)) {
return false;
+ }
- NumberColumnType type = (NumberColumnType)o;
+ NumberColumnType type = (NumberColumnType) o;
return precision == type.precision;
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Objects.hash(super.hashCode(), precision);
}
}
@@ -448,9 +469,9 @@ public class ColumnType {
/**
* Creates temporal type.
*
- * @param typeSpec Type spec.
- * @param precision Fractional seconds meaningful digits. Allowed values are 0-9,
- * where {@code 0} means second precision, {@code 9} means 1-ns precision.
+ * @param typeSpec Type spec.
+ * @param precision Fractional seconds meaningful digits. Allowed values are 0-9, where {@code 0} means second precision, {@code 9}
+ * means 1-ns precision.
*/
private TemporalColumnType(ColumnTypeSpec typeSpec, int precision) {
super(typeSpec);
@@ -470,23 +491,28 @@ public class ColumnType {
}
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
+ }
- if (o == null || getClass() != o.getClass())
+ if (o == null || getClass() != o.getClass()) {
return false;
+ }
- if (!super.equals(o))
+ if (!super.equals(o)) {
return false;
+ }
- TemporalColumnType type = (TemporalColumnType)o;
+ TemporalColumnType type = (TemporalColumnType) o;
return precision == type.precision;
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Objects.hash(super.hashCode(), precision);
}
}
@@ -578,20 +604,24 @@ public class ColumnType {
}
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
+ }
- if (o == null || getClass() != o.getClass())
+ if (o == null || getClass() != o.getClass()) {
return false;
+ }
- ColumnType type = (ColumnType)o;
+ ColumnType type = (ColumnType) o;
return typeSpec == type.typeSpec;
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Objects.hash(typeSpec);
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaManagementMode.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaManagementMode.java
index 893dbcd..40049cd 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaManagementMode.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaManagementMode.java
@@ -19,21 +19,19 @@ package org.apache.ignite.schema.definition;
/**
* Schema mode.
- * <p>
- * Defines the way inserting data will be validated against the schema and schema evolution capabilities.
+ *
+ * <p>Defines the way inserting data will be validated against the schema and schema evolution capabilities.
*/
//TODO: rename to MANUAL and AUTO?
public enum SchemaManagementMode {
/**
- * Normal mode offers strong validation for the inserting data.
- * Explicit schema changes only are allowed.
+ * Normal mode offers strong validation for the inserting data. Explicit schema changes only are allowed.
*/
STRICT,
/**
- * Extended mode that allows the schema to be fit the inserting data automatically.
- * Only safe implicit schema changes are allowed, e.g. adding extra columns and widening column type.
- * Changes like column removal or narrowing column type won't be applied implicitly.
+ * Extended mode that allows the schema to be fit the inserting data automatically. Only safe implicit schema changes are allowed, e.g.
+ * adding extra columns and widening column type. Changes like column removal or narrowing column type won't be applied implicitly.
*/
LIVE
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
index 9c7a6b4..7cf0e95 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
@@ -33,7 +33,8 @@ public interface TableDefinition extends SchemaObject {
*
* @return Table name.
*/
- @Override String name();
+ @Override
+ String name();
/**
* Returns key columns.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
index 4fd540a..045cd4a 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
@@ -47,13 +47,15 @@ public interface ColumnDefinitionBuilder extends SchemaObjectBuilder {
ColumnDefinitionBuilder withDefaultValueExpression(Object defValExpr);
/** {@inheritDoc} */
- @Override ColumnDefinitionBuilder withHints(Map<String, String> hints);
+ @Override
+ ColumnDefinitionBuilder withHints(Map<String, String> hints);
/**
* Builds column.
*
* @return Built column.
*/
- @Override ColumnDefinition build();
+ @Override
+ ColumnDefinition build();
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
index 4718374..7b66666 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
@@ -33,12 +33,14 @@ public interface HashIndexDefinitionBuilder extends SchemaObjectBuilder {
HashIndexDefinitionBuilder withColumns(String... columns);
/** {@inheritDoc} */
- @Override HashIndexDefinitionBuilder withHints(Map<String, String> hints);
+ @Override
+ HashIndexDefinitionBuilder withHints(Map<String, String> hints);
/**
* Builds hash index.
*
* @return Hash index.
*/
- @Override HashIndexDefinition build();
+ @Override
+ HashIndexDefinition build();
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PartialIndexDefinitionBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PartialIndexDefinitionBuilder.java
index dcdf98a..2dd10ec 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PartialIndexDefinitionBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PartialIndexDefinitionBuilder.java
@@ -33,17 +33,20 @@ public interface PartialIndexDefinitionBuilder extends SortedIndexDefinitionBuil
PartialIndexDefinitionBuilder withExpression(String expr);
/** {@inheritDoc} */
- @Override PartialIndexColumnBuilder addIndexColumn(String name);
+ @Override
+ PartialIndexColumnBuilder addIndexColumn(String name);
/** {@inheritDoc} */
- @Override PartialIndexDefinitionBuilder withHints(Map<String, String> hints);
+ @Override
+ PartialIndexDefinitionBuilder withHints(Map<String, String> hints);
/**
* Builds partial index.
*
* @return Partial index.
*/
- @Override PartialIndexDefinition build();
+ @Override
+ PartialIndexDefinition build();
/**
* Index column builder.
@@ -51,15 +54,19 @@ public interface PartialIndexDefinitionBuilder extends SortedIndexDefinitionBuil
@SuppressWarnings("PublicInnerClass")
interface PartialIndexColumnBuilder extends SortedIndexColumnBuilder {
/** {@inheritDoc} */
- @Override PartialIndexColumnBuilder desc();
+ @Override
+ PartialIndexColumnBuilder desc();
/** {@inheritDoc} */
- @Override PartialIndexColumnBuilder asc();
+ @Override
+ PartialIndexColumnBuilder asc();
/** {@inheritDoc} */
- @Override PartialIndexColumnBuilder withName(String name);
+ @Override
+ PartialIndexColumnBuilder withName(String name);
/** {@inheritDoc} */
- @Override PartialIndexDefinitionBuilder done();
+ @Override
+ PartialIndexDefinitionBuilder done();
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
index 0fd70e7..15818f1 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
@@ -44,5 +44,6 @@ public interface PrimaryKeyDefinitionBuilder extends SchemaObjectBuilder {
*
* @return Primary key.
*/
- @Override PrimaryKeyDefinition build();
+ @Override
+ PrimaryKeyDefinition build();
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
index 7fb74a2..7ec4f15 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
@@ -33,7 +33,8 @@ public interface SortedIndexDefinitionBuilder extends SchemaObjectBuilder {
SortedIndexColumnBuilder addIndexColumn(String name);
/** {@inheritDoc} */
- @Override SortedIndexDefinitionBuilder withHints(Map<String, String> hints);
+ @Override
+ SortedIndexDefinitionBuilder withHints(Map<String, String> hints);
/**
* Unique index flag.
@@ -47,7 +48,8 @@ public interface SortedIndexDefinitionBuilder extends SchemaObjectBuilder {
*
* @return Sorted index.
*/
- @Override SortedIndexDefinition build();
+ @Override
+ SortedIndexDefinition build();
/**
* Index column builder.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java
index 8da1925..aac94aa 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java
@@ -22,7 +22,8 @@ package org.apache.ignite.schema.definition.index;
*/
public interface HashIndexDefinition extends ColumnarIndexDefinition {
/** {@inheritDoc} */
- @Override default String type() {
+ @Override
+ default String type() {
return "HASH";
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java
index 9ca4da9..fd69267 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java
@@ -28,13 +28,14 @@ public interface IndexDefinition extends SchemaObject {
*
* @return Index name.
*/
- @Override String name();
+ @Override
+ String name();
/**
* Unique index flag.
- * <p>
- * Limitation: Index MUST have all affinity columns declared explicitly.
- * This requirement allows omitting cluster wide constraint checks.
+ *
+ * <p>Limitation: Index MUST have all affinity columns declared explicitly. This requirement allows omitting cluster wide constraint
+ * checks.
*
* @return Unique flag.
*/
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/PartialIndexDefinition.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/PartialIndexDefinition.java
index 1f8754f..aff8e3b 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/PartialIndexDefinition.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/PartialIndexDefinition.java
@@ -29,7 +29,8 @@ public interface PartialIndexDefinition extends SortedIndexDefinition {
String expr();
/** {@inheritDoc} */
- @Override default String type() {
+ @Override
+ default String type() {
return "PARTIAL";
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java
index 7e4d5d0..4ab099e 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java
@@ -24,13 +24,16 @@ import java.util.List;
*/
public interface SortedIndexDefinition extends ColumnarIndexDefinition {
/** {@inheritDoc} */
- @Override List<SortedIndexColumnDefinition> columns();
+ @Override
+ List<SortedIndexColumnDefinition> columns();
/** {@inheritDoc} */
- @Override List<SortedIndexColumnDefinition> indexedColumns();
+ @Override
+ List<SortedIndexColumnDefinition> indexedColumns();
/** {@inheritDoc} */
- @Override default String type() {
+ @Override
+ default String type() {
return "SORTED";
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java
index 885e305..fde4f7e 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains index definition interfaces.
*/
+
package org.apache.ignite.schema.definition.index;
\ No newline at end of file
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java
index 4dacdbd..3a4c042 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains table schema definition interfaces and classes.
*/
+
package org.apache.ignite.schema.definition;
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
index 9e0d234..b3abeb3 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
@@ -22,7 +22,7 @@ import org.apache.ignite.schema.definition.ColumnType;
/**
* Alter column builder.
*
- * NOTE: Only safe actions that can be applied automatically on-fly are allowed.
+ * <p>NOTE: Only safe actions that can be applied automatically on-fly are allowed.
*/
public interface AlterColumnBuilder {
/**
@@ -35,8 +35,8 @@ public interface AlterColumnBuilder {
/**
* Convert column to a new type.
- * <p>
- * Note: New type must be compatible with old.
+ *
+ * <p>Note: New type must be compatible with old.
*
* @param newType New column type.
* @return {@code this} for chaining.
@@ -61,8 +61,7 @@ public interface AlterColumnBuilder {
/**
* Mark column as non-nullable.
*
- * Note: Replacement param is mandatory, all previously stored 'nulls'
- * will be treated as replacement value on read.
+ * <p>Note: Replacement param is mandatory, all previously stored 'nulls' will be treated as replacement value on read.
*
* @param replacement Non-null value, that 'null' will be converted to.
* @return {@code this} for chaining.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java b/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
index 2a07e5d..af45085 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
@@ -50,8 +50,8 @@ public interface TableModificationBuilder {
/**
* Drops value column.
- * <p>
- * Note: Key column drop is not allowed.
+ *
+ * <p>Note: Key column drop is not allowed.
*
* @param columnName Column.
* @return {@code this} for chaining.
@@ -68,8 +68,8 @@ public interface TableModificationBuilder {
/**
* Drops table index.
- * <p>
- * Note: PK can't be dropped.
+ *
+ * <p>Note: PK can't be dropped.
*
* @param indexName Index name.
* @return {@code this} for chaining.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java b/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
index 7caac85..1b154ca 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
@@ -18,4 +18,5 @@
/**
* Table schema manipulation API.
*/
+
package org.apache.ignite.schema.modification;
diff --git a/modules/api/src/main/java/org/apache/ignite/table/InvocationContext.java b/modules/api/src/main/java/org/apache/ignite/table/InvocationContext.java
index ba79b0e..9ecd60c 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/InvocationContext.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/InvocationContext.java
@@ -18,14 +18,12 @@
package org.apache.ignite.table;
/**
- * Invocation context provides access to invoke operation call parameters,
- * a method to set a new value for the key.
- * <p>
- * InvokeProcessor executes atomically under lock which makes impossible
- * to trigger 'live-schema' upgrade within the invoke operation.
+ * Invocation context provides access to invoke operation call parameters, a method to set a new value for the key.
+ *
+ * <p>InvokeProcessor executes atomically under lock which makes impossible to trigger 'live-schema' upgrade within the invoke operation.
* Any try to update the row leading to schema change will end up with {@link InvokeProcessorException}.
- * <p>
- * New value MUST BE compliant with the current schema version.
+ *
+ * <p>New value MUST BE compliant with the current schema version.
*
* @param <K> Target object type.
* @param <V> Value object type.
@@ -41,9 +39,9 @@ public interface InvocationContext<K, V> {
/**
* Returns an object the user provide to invoke call for running invoke processor against the associated row.
- * <p>
- * Depending on Table view the invoke operation is called on, the returning value is either value object or
- * record object or tuple with value fields set.
+ *
+ * <p>Depending on Table view the invoke operation is called on, the returning value is either value object or record object or tuple
+ * with value fields set.
*
* @return Object which target row is associated with.
*/
@@ -51,9 +49,9 @@ public interface InvocationContext<K, V> {
/**
* Returns current value object for the target row.
- * <p>
- * Depending on Table view the invoke operation is called on, the returning value is either value object or
- * record object or tuple with value fields set or {@code null} for non-existed row.
+ *
+ * <p>Depending on Table view the invoke operation is called on, the returning value is either value object or record object or tuple
+ * with value fields set or {@code null} for non-existed row.
*
* @return Current value of target row or {@code null} if value associated with the key is not exists.
*/
@@ -61,9 +59,9 @@ public interface InvocationContext<K, V> {
/**
* Sets a new value object for the target row.
- * <p>
- * Depending on Table view the invoke operation is called on, a new value can be either value object or
- * record object or tuple with value fields set or {@code null} for removal.
+ *
+ * <p>Depending on Table view the invoke operation is called on, a new value can be either value object or record object or tuple with
+ * value fields set or {@code null} for removal.
*
* @param val Value object to set.
* @throws InvokeProcessorException if new value is not compliant with the current schema.
diff --git a/modules/api/src/main/java/org/apache/ignite/table/InvokeProcessor.java b/modules/api/src/main/java/org/apache/ignite/table/InvokeProcessor.java
index 689b3cf..3f4e75d 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/InvokeProcessor.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/InvokeProcessor.java
@@ -20,20 +20,18 @@ package org.apache.ignite.table;
import java.io.Serializable;
/**
- * Invoke processor interface provides API to run code on server side against a table record
- * associated with provided key.
- * <p>
- * For non-binary projections row will be deserialized to user object(s) before the invocation
- * and serialized back if a new value was set via {@linkplain InvocationContext#value(Object)}.
- * <p>
- * Invoke operation arguments along with invoke operation result classes MUST be serializable
- * as they can be transferred over network.
+ * Invoke processor interface provides API to run code on server side against a table record associated with provided key.
+ *
+ * <p>For non-binary projections row will be deserialized to user object(s) before the invocation and serialized back if a new value was set
+ * via {@linkplain InvocationContext#value(Object)}.
+ *
+ * <p>Invoke operation arguments along with invoke operation result classes MUST be serializable as they can be transferred over network.
*
* @param <K> Key object type.
* @param <V> Value type.
* @param <R> Processor result type.
- * @apiNote Distributed deployment MUST be used for processor code load instead of load form the classpath
- * to guarantee same code revision in the grid.
+ * @apiNote Distributed deployment MUST be used for processor code load instead of load form the classpath to guarantee same code revision
+ * in the grid.
*/
public interface InvokeProcessor<K, V, R extends Serializable> extends Serializable {
/**
diff --git a/modules/api/src/main/java/org/apache/ignite/table/KeyValueView.java b/modules/api/src/main/java/org/apache/ignite/table/KeyValueView.java
index 8275474..cbe80a0 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/KeyValueView.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/KeyValueView.java
@@ -38,8 +38,7 @@ public interface KeyValueView<K, V> {
/**
* Gets a value associated with the given key.
*
- * @param key A key which associated the value is to be returned.
- * The key cannot be {@code null}.
+ * @param key A key which associated the value is to be returned. The key cannot be {@code null}.
* @return Value or {@code null}, if it does not exist.
*/
V get(@NotNull K key);
@@ -47,8 +46,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously gets a value associated with the given key.
*
- * @param key A key which associated the value is to be returned.
- * The key cannot be {@code null}.
+ * @param key A key which associated the value is to be returned. The key cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<V> getAsync(@NotNull K key);
@@ -56,8 +54,7 @@ public interface KeyValueView<K, V> {
/**
* Get values associated with given keys.
*
- * @param keys Keys which associated values are to be returned.
- * The keys cannot be {@code null}.
+ * @param keys Keys which associated values are to be returned. The keys cannot be {@code null}.
* @return Values associated with given keys.
*/
Map<K, V> getAll(@NotNull Collection<K> keys);
@@ -65,8 +62,7 @@ public interface KeyValueView<K, V> {
/**
* Get values associated with given keys.
*
- * @param keys Keys whose associated values are to be returned.
- * The keys cannot be {@code null}.
+ * @param keys Keys whose associated values are to be returned. The keys cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Map<K, V>> getAllAsync(@NotNull Collection<K> keys);
@@ -74,8 +70,7 @@ public interface KeyValueView<K, V> {
/**
* Determines if the table contains an entry for the specified key.
*
- * @param key A key which presence is to be tested.
- * The key cannot be {@code null}.
+ * @param key A key which presence is to be tested. The key cannot be {@code null}.
* @return {@code True} if a value exists for the specified key, {@code false} otherwise.
*/
boolean contains(@NotNull K key);
@@ -83,8 +78,7 @@ public interface KeyValueView<K, V> {
/**
* Determines if the table contains an entry for the specified key.
*
- * @param key A key which presence is to be tested.
- * The key cannot be {@code null}.
+ * @param key A key which presence is to be tested. The key cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
CompletableFuture<Boolean> containsAsync(@NotNull K key);
@@ -92,8 +86,7 @@ public interface KeyValueView<K, V> {
/**
* Puts value associated with given key into the table.
*
- * @param key A key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
*/
void put(@NotNull K key, V val);
@@ -101,8 +94,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously puts value associated with given key into the table.
*
- * @param key A key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Future representing pending completion of the operation.
*/
@@ -111,16 +103,14 @@ public interface KeyValueView<K, V> {
/**
* Put associated key-value pairs.
*
- * @param pairs Key-value pairs.
- * The pairs cannot be {@code null}.
+ * @param pairs Key-value pairs. The pairs cannot be {@code null}.
*/
void putAll(@NotNull Map<K, V> pairs);
/**
* Asynchronously put associated key-value pairs.
*
- * @param pairs Key-value pairs.
- * The pairs cannot be {@code null}.
+ * @param pairs Key-value pairs. The pairs cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Void> putAllAsync(@NotNull Map<K, V> pairs);
@@ -128,8 +118,7 @@ public interface KeyValueView<K, V> {
/**
* Puts new or replaces existed value associated with given key into the table.
*
- * @param key A key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Replaced value or {@code null}, if not existed.
*/
@@ -138,8 +127,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously puts new or replaces existed value associated with given key into the table.
*
- * @param key A key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Future representing pending completion of the operation.
*/
@@ -148,8 +136,7 @@ public interface KeyValueView<K, V> {
/**
* Puts value associated with given key into the table if not exists.
*
- * @param key A key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return {@code True} if successful, {@code false} otherwise.
*/
@@ -158,8 +145,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously puts value associated with given key into the table if not exists.
*
- * @param key Key with which the specified value is to be associated.
- * The key cannot be {@code null}.
+ * @param key Key with which the specified value is to be associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Future representing pending completion of the operation.
*/
@@ -168,36 +154,32 @@ public interface KeyValueView<K, V> {
/**
* Removes value associated with given key from the table.
*
- * @param key A key which mapping is to be removed from the table.
- * The key cannot be {@code null}.
+ * @param key A key which mapping is to be removed from the table. The key cannot be {@code null}.
* @return {@code True} if a value associated with the specified key was successfully removed, {@code false} otherwise.
*/
boolean remove(@NotNull K key);
/**
- * Asynchronously removes value associated with given key from the table.
- *
- * @param key A key which mapping is to be removed from the table.
- * The key cannot be {@code null}.
- * @return Future representing pending completion of the operation.
- */
- @NotNull CompletableFuture<Boolean> removeAsync(@NotNull K key);
-
- /**
* Removes an expected value associated with the given key from the table.
*
- * @param key A key which associated value is to be removed from the table.
- * The key cannot be {@code null}.
+ * @param key A key which associated value is to be removed from the table. The key cannot be {@code null}.
* @param val Expected value. The value cannot be {@code null}.
* @return {@code True} if the expected value for the specified key was successfully removed, {@code false} otherwise.
*/
boolean remove(@NotNull K key, @NotNull V val);
/**
+ * Asynchronously removes value associated with given key from the table.
+ *
+ * @param key A key which mapping is to be removed from the table. The key cannot be {@code null}.
+ * @return Future representing pending completion of the operation.
+ */
+ @NotNull CompletableFuture<Boolean> removeAsync(@NotNull K key);
+
+ /**
* Asynchronously removes expected value associated with given key from the table.
*
- * @param key A key which associated the value is to be removed from the table.
- * The key cannot be {@code null}.
+ * @param key A key which associated the value is to be removed from the table. The key cannot be {@code null}.
* @param val Expected value. The value cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@@ -206,8 +188,7 @@ public interface KeyValueView<K, V> {
/**
* Remove values associated with given keys from the table.
*
- * @param keys Keys which mapping is to be removed from the table.
- * The keys cannot be {@code null}.
+ * @param keys Keys which mapping is to be removed from the table. The keys cannot be {@code null}.
* @return Keys which did not exist.
*/
Collection<K> removeAll(@NotNull Collection<K> keys);
@@ -215,8 +196,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously remove values associated with given keys from the table.
*
- * @param keys Keys which mapping is to be removed from the table.
- * The keys cannot be {@code null}.
+ * @param keys Keys which mapping is to be removed from the table. The keys cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Collection<K>> removeAllAsync(@NotNull Collection<K> keys);
@@ -224,8 +204,7 @@ public interface KeyValueView<K, V> {
/**
* Gets then removes value associated with given key from the table.
*
- * @param key A key which associated value is to be removed from the table.
- * The key cannot be {@code null}.
+ * @param key A key which associated value is to be removed from the table. The key cannot be {@code null}.
* @return Removed value or {@code null}, if not existed.
*/
V getAndRemove(@NotNull K key);
@@ -233,8 +212,7 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously gets then removes value associated with given key from the table.
*
- * @param key A Key which mapping is to be removed from the table.
- * The key cannot be {@code null}.
+ * @param key A Key which mapping is to be removed from the table. The key cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<V> getAndRemoveAsync(@NotNull K key);
@@ -250,25 +228,13 @@ public interface KeyValueView<K, V> {
* }</code></pre>
* except that the action is performed atomically.
*
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return {@code True} if an old value was replaced, {@code false} otherwise.
*/
boolean replace(@NotNull K key, V val);
/**
- * Asynchronously replaces the value for a key only if exists.
- * See {@link #replace(Object, Object)}.
- *
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
- * @param val Value to be associated with the specified key.
- * @return Future representing pending completion of the operation.
- */
- @NotNull CompletableFuture<Boolean> replaceAsync(@NotNull K key, V val);
-
- /**
* Replaces the expected value for a key. This is equivalent to
* <pre><code>
* if (cache.get(key) == oldVal) {
@@ -279,8 +245,7 @@ public interface KeyValueView<K, V> {
* }</code></pre>
* except that the action is performed atomically.
*
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
* @param oldVal Expected value associated with the specified key.
* @param newVal Value to be associated with the specified key.
* @return {@code True} if an old value was replaced, {@code false} otherwise.
@@ -288,11 +253,18 @@ public interface KeyValueView<K, V> {
boolean replace(@NotNull K key, V oldVal, V newVal);
/**
- * Asynchronously replaces the expected value for a key.
- * See {@link #replace(Object, Object, Object)}
+ * Asynchronously replaces the value for a key only if exists. See {@link #replace(Object, Object)}.
+ *
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
+ * @param val Value to be associated with the specified key.
+ * @return Future representing pending completion of the operation.
+ */
+ @NotNull CompletableFuture<Boolean> replaceAsync(@NotNull K key, V val);
+
+ /**
+ * Asynchronously replaces the expected value for a key. See {@link #replace(Object, Object, Object)}
*
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
* @param oldVal Expected value associated with the specified key.
* @param newVal Value to be associated with the specified key.
* @return Future representing pending completion of the operation.
@@ -312,19 +284,16 @@ public interface KeyValueView<K, V> {
* </code></pre>
* except that the action is performed atomically.
*
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Replaced value, or {@code null} if not existed.
*/
V getAndReplace(@NotNull K key, V val);
/**
- * Asynchronously replaces the value for a given key only if exists.
- * See {@link #getAndReplace(Object, Object)}
+ * Asynchronously replaces the value for a given key only if exists. See {@link #getAndReplace(Object, Object)}
*
- * @param key A key with which the specified value is associated.
- * The key cannot be {@code null}.
+ * @param key A key with which the specified value is associated. The key cannot be {@code null}.
* @param val Value to be associated with the specified key.
* @return Future representing pending completion of the operation.
*/
@@ -333,11 +302,10 @@ public interface KeyValueView<K, V> {
/**
* Executes invoke processor code against the value associated with the provided key.
*
- * @param key A key associated with the value that invoke processor will be applied to.
- * The key cannot be {@code null}.
+ * @param key A key associated with the value that invoke processor will be applied to. The key cannot be {@code null}.
* @param proc Invoke processor.
* @param args Optional invoke processor arguments.
- * @param <R> Invoke processor result type.
+ * @param <R> Invoke processor result type.
* @return Result of the processing.
* @see InvokeProcessor
*/
@@ -346,50 +314,47 @@ public interface KeyValueView<K, V> {
/**
* Asynchronously executes invoke processor code against the value associated with the provided key.
*
- * @param key A key associated with the value that invoke processor will be applied to.
- * The key cannot be {@code null}.
+ * @param key A key associated with the value that invoke processor will be applied to. The key cannot be {@code null}.
* @param proc Invoke processor.
* @param args Optional invoke processor arguments.
- * @param <R> Invoke processor result type.
+ * @param <R> Invoke processor result type.
* @return Future representing pending completion of the operation.
* @see InvokeProcessor
*/
@NotNull <R extends Serializable> CompletableFuture<R> invokeAsync(
- @NotNull K key,
- InvokeProcessor<K, V, R> proc,
- Serializable... args);
+ @NotNull K key,
+ InvokeProcessor<K, V, R> proc,
+ Serializable... args);
/**
* Executes invoke processor code against values associated with the provided keys.
*
- * @param <R> Invoke processor result type.
- * @param keys Ordered collection of keys which values associated with should be processed.
- * The keys cannot be {@code null}.
+ * @param <R> Invoke processor result type.
+ * @param keys Ordered collection of keys which values associated with should be processed. The keys cannot be {@code null}.
* @param proc Invoke processor.
* @param args Optional invoke processor arguments.
* @return Results of the processing.
* @see InvokeProcessor
*/
<R extends Serializable> Map<K, R> invokeAll(
- @NotNull Collection<K> keys,
- InvokeProcessor<K, V, R> proc,
- Serializable... args);
+ @NotNull Collection<K> keys,
+ InvokeProcessor<K, V, R> proc,
+ Serializable... args);
/**
* Asynchronously executes invoke processor code against values associated with the provided keys.
*
- * @param <R> Invoke processor result type.
- * @param keys Ordered collection of keys which values associated with should be processed.
- * The keys cannot be {@code null}.
+ * @param <R> Invoke processor result type.
+ * @param keys Ordered collection of keys which values associated with should be processed. The keys cannot be {@code null}.
* @param proc Invoke processor.
* @param args Optional invoke processor arguments.
* @return Future representing pending completion of the operation.
* @see InvokeProcessor
*/
@NotNull <R extends Serializable> CompletableFuture<Map<K, R>> invokeAllAsync(
- @NotNull Collection<K> keys,
- InvokeProcessor<K, V, R> proc,
- Serializable... args);
+ @NotNull Collection<K> keys,
+ InvokeProcessor<K, V, R> proc,
+ Serializable... args);
/**
* Returns current transaction.
diff --git a/modules/api/src/main/java/org/apache/ignite/table/RecordView.java b/modules/api/src/main/java/org/apache/ignite/table/RecordView.java
index 1352515..01a17d9 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/RecordView.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/RecordView.java
@@ -34,8 +34,7 @@ public interface RecordView<R> {
/**
* Gets a record with same key columns values as given one from the table.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
* @return A record with all columns filled from the table.
*/
R get(@NotNull R keyRec);
@@ -43,8 +42,7 @@ public interface RecordView<R> {
/**
* Asynchronously gets a record with same key columns values as given one from the table.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<R> getAsync(@NotNull R keyRec);
@@ -52,8 +50,7 @@ public interface RecordView<R> {
/**
* Get records from the table.
*
- * @param keyRecs Records with key columns set.
- * The records cannot be {@code null}.
+ * @param keyRecs Records with key columns set. The records cannot be {@code null}.
* @return Records with all columns filled from the table.
*/
Collection<R> getAll(@NotNull Collection<R> keyRecs);
@@ -61,8 +58,7 @@ public interface RecordView<R> {
/**
* Asynchronously get records from the table.
*
- * @param keyRecs Records with key columns set.
- * The records cannot be {@code null}.
+ * @param keyRecs Records with key columns set. The records cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Collection<R>> getAllAsync(@NotNull Collection<R> keyRecs);
@@ -70,16 +66,14 @@ public interface RecordView<R> {
/**
* Inserts a record into the table if does not exist or replaces the existed one.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
*/
void upsert(@NotNull R rec);
/**
* Asynchronously inserts a record into the table if does not exist or replaces the existed one.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Void> upsertAsync(@NotNull R rec);
@@ -87,16 +81,14 @@ public interface RecordView<R> {
/**
* Insert records into the table if does not exist or replaces the existed one.
*
- * @param recs Records to insert into the table.
- * The records cannot be {@code null}.
+ * @param recs Records to insert into the table. The records cannot be {@code null}.
*/
void upsertAll(@NotNull Collection<R> recs);
/**
* Asynchronously inserts a record into the table if does not exist or replaces the existed one.
*
- * @param recs Records to insert into the table.
- * The records cannot be {@code null}.
+ * @param recs Records to insert into the table. The records cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Void> upsertAllAsync(@NotNull Collection<R> recs);
@@ -104,8 +96,7 @@ public interface RecordView<R> {
/**
* Inserts a record into the table or replaces if exists and return replaced previous record.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
* @return Replaced record or {@code null} if not existed.
*/
R getAndUpsert(@NotNull R rec);
@@ -113,8 +104,7 @@ public interface RecordView<R> {
/**
* Asynchronously inserts a record into the table or replaces if exists and return replaced previous record.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<R> getAndUpsertAsync(@NotNull R rec);
@@ -122,8 +112,7 @@ public interface RecordView<R> {
/**
* Inserts a record into the table if not exists.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
* @return {@code True} if successful, {@code false} otherwise.
*/
boolean insert(@NotNull R rec);
@@ -131,8 +120,7 @@ public interface RecordView<R> {
/**
* Asynchronously inserts a record into the table if not exists.
*
- * @param rec A record to insert into the table.
- * The record cannot be {@code null}.
+ * @param rec A record to insert into the table. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Boolean> insertAsync(@NotNull R rec);
@@ -140,8 +128,7 @@ public interface RecordView<R> {
/**
* Insert records into the table which do not exist, skipping existed ones.
*
- * @param recs Records to insert into the table.
- * The records cannot be {@code null}.
+ * @param recs Records to insert into the table. The records cannot be {@code null}.
* @return Skipped records.
*/
Collection<R> insertAll(@NotNull Collection<R> recs);
@@ -149,8 +136,7 @@ public interface RecordView<R> {
/**
* Asynchronously insert records into the table which do not exist, skipping existed ones.
*
- * @param recs Records to insert into the table.
- * The records cannot be {@code null}.
+ * @param recs Records to insert into the table. The records cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Collection<R>> insertAllAsync(@NotNull Collection<R> recs);
@@ -158,59 +144,50 @@ public interface RecordView<R> {
/**
* Replaces an existed record associated with the same key columns values as the given one has.
*
- * @param rec A record to replace with.
- * The record cannot be {@code null}.
+ * @param rec A record to replace with. The record cannot be {@code null}.
* @return {@code True} if old record was found and replaced successfully, {@code false} otherwise.
*/
boolean replace(@NotNull R rec);
/**
- * Asynchronously replaces an existed record associated with the same key columns values as the given one has.
+ * Replaces an expected record in the table with the given new one.
*
- * @param rec A record to replace with.
- * The record cannot be {@code null}.
- * @return Future representing pending completion of the operation.
+ * @param oldRec A record to replace. The record cannot be {@code null}.
+ * @param newRec A record to replace with. The record cannot be {@code null}.
+ * @return {@code True} if the old record replaced successfully, {@code false} otherwise.
*/
- @NotNull CompletableFuture<Boolean> replaceAsync(@NotNull R rec);
+ boolean replace(@NotNull R oldRec, @NotNull R newRec);
/**
- * Replaces an expected record in the table with the given new one.
+ * Asynchronously replaces an existed record associated with the same key columns values as the given one has.
*
- * @param oldRec A record to replace.
- * The record cannot be {@code null}.
- * @param newRec A record to replace with.
- * The record cannot be {@code null}.
- * @return {@code True} if the old record replaced successfully, {@code false} otherwise.
+ * @param rec A record to replace with. The record cannot be {@code null}.
+ * @return Future representing pending completion of the operation.
*/
- boolean replace(@NotNull R oldRec, @NotNull R newRec);
+ @NotNull CompletableFuture<Boolean> replaceAsync(@NotNull R rec);
/**
* Asynchronously replaces an expected record in the table with the given new one.
*
- * @param oldRec A record to replace.
- * The record cannot be {@code null}.
- * @param newRec A record to replace with.
- * The record cannot be {@code null}.
+ * @param oldRec A record to replace. The record cannot be {@code null}.
+ * @param newRec A record to replace with. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Boolean> replaceAsync(@NotNull R oldRec, @NotNull R newRec);
/**
- * Gets an existed record associated with the same key columns values as the given one has,
- * then replaces with the given one.
+ * Gets an existed record associated with the same key columns values as the given one has, then replaces with the given one.
*
- * @param rec A record to replace with.
- * The record cannot be {@code null}.
+ * @param rec A record to replace with. The record cannot be {@code null}.
* @return Replaced record or {@code null} if not existed.
*/
R getAndReplace(@NotNull R rec);
/**
- * Asynchronously gets an existed record associated with the same key columns values as the given one has,
- * then replaces with the given one.
+ * Asynchronously gets an existed record associated with the same key columns values as the given one has, then replaces with the given
+ * one.
*
- * @param rec A record to replace with.
- * The record cannot be {@code null}.
+ * @param rec A record to replace with. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<R> getAndReplaceAsync(@NotNull R rec);
@@ -218,8 +195,7 @@ public interface RecordView<R> {
/**
* Deletes a record with the same key columns values as the given one from the table.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
* @return {@code True} if removed successfully, {@code false} otherwise.
*/
boolean delete(@NotNull R keyRec);
@@ -227,8 +203,7 @@ public interface RecordView<R> {
/**
* Asynchronously deletes a record with the same key columns values as the given one from the table.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Boolean> deleteAsync(@NotNull R keyRec);
@@ -236,8 +211,7 @@ public interface RecordView<R> {
/**
* Deletes the given record from the table.
*
- * @param rec A record to delete.
- * The record cannot be {@code null}.
+ * @param rec A record to delete. The record cannot be {@code null}.
* @return {@code True} if removed successfully, {@code false} otherwise.
*/
boolean deleteExact(@NotNull R rec);
@@ -245,8 +219,7 @@ public interface RecordView<R> {
/**
* Asynchronously deletes given record from the table.
*
- * @param rec A record to delete.
- * The record cannot be {@code null}.
+ * @param rec A record to delete. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Boolean> deleteExactAsync(@NotNull R rec);
@@ -254,8 +227,7 @@ public interface RecordView<R> {
/**
* Gets then deletes a record with the same key columns values from the table.
*
- * @param rec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param rec A record with key columns set. The record cannot be {@code null}.
* @return Removed record or {@code null} if not existed.
*/
R getAndDelete(@NotNull R rec);
@@ -263,8 +235,7 @@ public interface RecordView<R> {
/**
* Asynchronously gets then deletes a record with the same key columns values from the table.
*
- * @param rec A record with key columns set.
- * The record cannot be {@code null}.
+ * @param rec A record with key columns set. The record cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<R> getAndDeleteAsync(@NotNull R rec);
@@ -272,8 +243,7 @@ public interface RecordView<R> {
/**
* Remove records with the same key columns values as the given one has from the table.
*
- * @param recs Records with key columns set.
- * The records cannot be {@code null}.
+ * @param recs Records with key columns set. The records cannot be {@code null}.
* @return Records with key columns set that did not exist.
*/
Collection<R> deleteAll(@NotNull Collection<R> recs);
@@ -281,8 +251,7 @@ public interface RecordView<R> {
/**
* Asynchronously remove records with the same key columns values as the given one has from the table.
*
- * @param recs Records with key columns set.
- * The records cannot be {@code null}.
+ * @param recs Records with key columns set. The records cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Collection<R>> deleteAllAsync(@NotNull Collection<R> recs);
@@ -290,8 +259,7 @@ public interface RecordView<R> {
/**
* Remove given records from the table.
*
- * @param recs Records to delete.
- * The records cannot be {@code null}.
+ * @param recs Records to delete. The records cannot be {@code null}.
* @return Records that were not deleted.
*/
Collection<R> deleteAllExact(@NotNull Collection<R> recs);
@@ -299,8 +267,7 @@ public interface RecordView<R> {
/**
* Asynchronously remove given records from the table.
*
- * @param recs Records to delete.
- * The records cannot be {@code null}.
+ * @param recs Records to delete. The records cannot be {@code null}.
* @return Future representing pending completion of the operation.
*/
@NotNull CompletableFuture<Collection<R>> deleteAllExactAsync(@NotNull Collection<R> recs);
@@ -308,22 +275,19 @@ public interface RecordView<R> {
/**
* Executes an InvokeProcessor code against a record with the same key columns values as the given one has.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
- * @param proc Invoke processor.
- * @param <T> InvokeProcessor result type.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
+ * @param proc Invoke processor.
+ * @param <T> InvokeProcessor result type.
* @return Results of the processing.
*/
<T extends Serializable> T invoke(@NotNull R keyRec, InvokeProcessor<R, R, T> proc);
/**
- * Asynchronously executes an InvokeProcessor code against a record
- * with the same key columns values as the given one has.
+ * Asynchronously executes an InvokeProcessor code against a record with the same key columns values as the given one has.
*
- * @param keyRec A record with key columns set.
- * The record cannot be {@code null}.
- * @param proc Invoke processor.
- * @param <T> InvokeProcessor result type.
+ * @param keyRec A record with key columns set. The record cannot be {@code null}.
+ * @param proc Invoke processor.
+ * @param <T> InvokeProcessor result type.
* @return Future representing pending completion of the operation.
*/
@NotNull <T extends Serializable> CompletableFuture<T> invokeAsync(@NotNull R keyRec, InvokeProcessor<R, R, T> proc);
@@ -331,26 +295,23 @@ public interface RecordView<R> {
/**
* Executes an InvokeProcessor code against records with the same key columns values as the given ones has.
*
- * @param keyRecs Records with key columns set.
- * The records cannot be {@code null}.
- * @param proc Invoke processor.
- * @param <T> InvokeProcessor result type.
+ * @param keyRecs Records with key columns set. The records cannot be {@code null}.
+ * @param proc Invoke processor.
+ * @param <T> InvokeProcessor result type.
* @return Results of the processing.
*/
<T extends Serializable> Map<R, T> invokeAll(@NotNull Collection<R> keyRecs, InvokeProcessor<R, R, T> proc);
/**
- * Asynchronously executes an InvokeProcessor against records with the same key columns values as the given ones
- * has.
+ * Asynchronously executes an InvokeProcessor against records with the same key columns values as the given ones has.
*
- * @param keyRecs Records with key columns set.
- * The records cannot be {@code null}.
- * @param proc Invoke processor.
- * @param <T> InvokeProcessor result type.
+ * @param keyRecs Records with key columns set. The records cannot be {@code null}.
+ * @param proc Invoke processor.
+ * @param <T> InvokeProcessor result type.
* @return Results of the processing.
*/
@NotNull <T extends Serializable> CompletableFuture<Map<R, T>> invokeAllAsync(@NotNull Collection<R> keyRecs,
- InvokeProcessor<R, R, T> proc);
+ InvokeProcessor<R, R, T> proc);
/**
* Returns current transaction.
diff --git a/modules/api/src/main/java/org/apache/ignite/table/Table.java b/modules/api/src/main/java/org/apache/ignite/table/Table.java
index 14e6f75..979bac5 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/Table.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/Table.java
@@ -23,9 +23,9 @@ import org.jetbrains.annotations.NotNull;
/**
* Table provides different views (key-value vs record) and approaches (mapped-object vs binary) to reach the data.
- * <p>
- * Binary table views might be useful in cases (but not limited) when user key-value classes are not in classpath
- * and/or when deserialization of whole table record is unwanted due to performance reasons.
+ *
+ * <p>Binary table views might be useful in cases (but not limited) when user key-value classes are not in classpath and/or when
+ * deserialization of whole table record is unwanted due to performance reasons.
*
* @see RecordView
* @see KeyValueView
@@ -42,7 +42,7 @@ public interface Table {
* Creates record view of table for record class mapper provided.
*
* @param recMapper Record class mapper.
- * @param <R> Record type.
+ * @param <R> Record type.
* @return Table record view.
*/
<R> RecordView<R> recordView(Mapper<R> recMapper);
@@ -55,12 +55,23 @@ public interface Table {
RecordView<Tuple> recordView();
/**
+ * Creates record view of table for record class provided.
+ *
+ * @param recCls Record class.
+ * @param <R> Record type.
+ * @return Table record view.
+ */
+ default <R> RecordView<R> recordView(Class<R> recCls) {
+ return recordView(Mappers.ofRecordClass(recCls));
+ }
+
+ /**
* Creates key-value view of table for key-value class mappers provided.
*
* @param keyMapper Key class mapper.
* @param valMapper Value class mapper.
- * @param <K> Key type.
- * @param <V> Value type.
+ * @param <K> Key type.
+ * @param <V> Value type.
* @return Table key-value view.
*/
<K, V> KeyValueView<K, V> keyValueView(Mapper<K> keyMapper, Mapper<V> valMapper);
@@ -73,23 +84,12 @@ public interface Table {
KeyValueView<Tuple, Tuple> keyValueView();
/**
- * Creates record view of table for record class provided.
- *
- * @param recCls Record class.
- * @param <R> Record type.
- * @return Table record view.
- */
- default <R> RecordView<R> recordView(Class<R> recCls) {
- return recordView(Mappers.ofRecordClass(recCls));
- }
-
- /**
* Creates key-value view of table for key and value classes provided.
*
* @param keyCls Key class.
* @param valCls Value class.
- * @param <K> Key type.
- * @param <V> Value type.
+ * @param <K> Key type.
+ * @param <V> Value type.
* @return Table key-value view.
*/
default <K, V> KeyValueView<K, V> keyValueView(Class<K> keyCls, Class<V> valCls) {
diff --git a/modules/api/src/main/java/org/apache/ignite/table/Tuple.java b/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
index f6c7bb9..3166ec0 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/Tuple.java
@@ -30,8 +30,8 @@ import org.jetbrains.annotations.NotNull;
/**
* Tuple represents arbitrary set of columns whose values is accessible by column name.
- * <p>
- * Provides specialized method for some value-types to avoid boxing/unboxing.
+ *
+ * <p>Provides specialized method for some value-types to avoid boxing/unboxing.
*/
public interface Tuple extends Iterable<Object> {
/**
@@ -62,8 +62,9 @@ public interface Tuple extends Iterable<Object> {
static Tuple create(Map<String, Object> map) {
TupleImpl tuple = new TupleImpl(map.size());
- for (Map.Entry<String, Object> entry : map.entrySet())
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
tuple.set(entry.getKey(), entry.getValue());
+ }
return tuple;
}
@@ -80,12 +81,12 @@ public interface Tuple extends Iterable<Object> {
/**
* Returns the hash code value for the tuple.
- * <p>
- * The hash code of a tuple is defined to be the sum of the hash codes of each pair of column name and column value.
- * This ensures that {@code m1.equals(m2)} implies that {@code m1.hashCode()==m2.hashCode()} for any tuples
- * {@code m1} and {@code m2}, as required by the general contract of {@link Object#hashCode}.
- * <p>
- * The hash code of a pair of column name and column value {@code i} is defined to be:
+ *
+ * <p>The hash code of a tuple is defined to be the sum of the hash codes of each pair of column name and column value. This ensures
+ * that {@code m1.equals(m2)} implies that {@code m1.hashCode()==m2.hashCode()} for any tuples {@code m1} and {@code m2}, as required
+ * by the general contract of {@link Object#hashCode}.
+ *
+ * <p>The hash code of a pair of column name and column value {@code i} is defined to be:
* <pre>(columnName(i).hashCode()) ^ (value(i)==null ? 0 : value(i).hashCode())</pre>
*
* @param tuple Tuple.
@@ -105,42 +106,63 @@ public interface Tuple extends Iterable<Object> {
}
/**
+ * Returns the hash code value for this tuple.
+ *
+ * @return the hash code value for this tuple.
+ * @see #hashCode(Tuple)
+ * @see Object#hashCode()
+ */
+ int hashCode();
+
+ /**
* Compares tuples for equality.
- * <p>
- * Returns {@code true} if both tuples represent the same column name to column value mappings.
- * <p>
- * This implementation first checks if both tuples is of same size; if not, it returns {@code false};
- * If so, it iterates over columns of first tuple and checks that the second tuple contains each mapping
- * that the first one contains. If the second tuple fails to contain such a mapping, {@code false} is returned;
- * If the iteration completes, {@code true} is returned.
- *
- * @param firstTuple First tuple to compare.
+ *
+ * <p>Returns {@code true} if both tuples represent the same column name to column value mappings.
+ *
+ * <p>This implementation first checks if both tuples is of same size; if not, it returns {@code false}; If so, it iterates over
+ * columns of first tuple and checks that the second tuple contains each mapping that the first one contains. If the second tuple
+ * fails to contain such a mapping, {@code false} is returned; If the iteration completes, {@code true} is returned.
+ *
+ * @param firstTuple First tuple to compare.
* @param secondTuple Second tuple to compare.
* @return {@code true} if the first tuple is equal to the second tuple.
*/
static boolean equals(Tuple firstTuple, Tuple secondTuple) {
- if (firstTuple == secondTuple)
+ if (firstTuple == secondTuple) {
return true;
+ }
int columns = firstTuple.columnCount();
- if (columns != secondTuple.columnCount())
+ if (columns != secondTuple.columnCount()) {
return false;
+ }
for (int idx = 0; idx < columns; idx++) {
int idx2 = secondTuple.columnIndex(firstTuple.columnName(idx));
- if (idx2 < 0)
+ if (idx2 < 0) {
return false;
+ }
- if (!Objects.deepEquals(firstTuple.value(idx), secondTuple.value(idx2)))
+ if (!Objects.deepEquals(firstTuple.value(idx), secondTuple.value(idx2))) {
return false;
+ }
}
return true;
}
/**
+ * Indicates whether some other object is "equal to" this one.
+ *
+ * @return {@code true} if this object is the same as the obj argument; {@code false} otherwise.
+ * @see Tuple#equals(Tuple, Tuple)
+ * @see Object#equals(Object)
+ */
+ boolean equals(Object obj);
+
+ /**
* Gets the number of columns in this tuple.
*
* @return Number of columns.
@@ -167,9 +189,9 @@ public interface Tuple extends Iterable<Object> {
/**
* Gets column value when a column with specified name is present in this tuple; returns default value otherwise.
*
- * @param columnName Column name.
+ * @param columnName Column name.
* @param defaultValue Default value.
- * @param <T> Column default value type.
+ * @param <T> Column default value type.
* @return Column value if this tuple contains a column with the specified name. Otherwise returns {@code defaultValue}.
*/
<T> T valueOrDefault(@NotNull String columnName, T defaultValue);
@@ -178,7 +200,7 @@ public interface Tuple extends Iterable<Object> {
* Sets column value.
*
* @param columnName Column name.
- * @param value Value to set.
+ * @param value Value to set.
* @return {@code this} for chaining.
*/
Tuple set(@NotNull String columnName, Object value);
@@ -187,7 +209,7 @@ public interface Tuple extends Iterable<Object> {
* Gets column value for given column name.
*
* @param columnName Column name.
- * @param <T> Value type.
+ * @param <T> Value type.
* @return Column value.
* @throws IllegalArgumentException If column with given name doesn't exists.
*/
@@ -197,7 +219,7 @@ public interface Tuple extends Iterable<Object> {
* Gets column value for given column index.
*
* @param columnIndex Column index.
- * @param <T> Value type.
+ * @param <T> Value type.
* @return Column value.
* @throws IndexOutOfBoundsException If column with given index doesn't exists.
*/
@@ -454,22 +476,4 @@ public interface Tuple extends Iterable<Object> {
* @throws IndexOutOfBoundsException If column with given index doesn't exists.
*/
Instant timestampValue(int columnIndex);
-
- /**
- * Returns the hash code value for this tuple.
- *
- * @return the hash code value for this tuple.
- * @see #hashCode(Tuple)
- * @see Object#hashCode()
- */
- int hashCode();
-
- /**
- * Indicates whether some other object is "equal to" this one.
- *
- * @return {@code true} if this object is the same as the obj argument; {@code false} otherwise.
- * @see Tuple#equals(Tuple, Tuple)
- * @see Object#equals(Object)
- */
- boolean equals(Object obj);
}
diff --git a/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java b/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java
index d26fa1d..6d7955f 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/TupleImpl.java
@@ -38,13 +38,13 @@ import org.jetbrains.annotations.NotNull;
* Simple tuple implementation.
*/
class TupleImpl implements Tuple, Serializable {
- /** Version UID. */
+ /** Serial version uid. */
private static final long serialVersionUID = 0L;
/**
* Column name -> index mapping.
- * <p>
- * Note: Transient because it's recoverable from {@link #colNames}.
+ *
+ * <p>Note: Transient because it's recoverable from {@link #colNames}.
*/
private transient Map<String, Integer> colMapping;
@@ -78,16 +78,17 @@ class TupleImpl implements Tuple, Serializable {
TupleImpl(@NotNull Tuple tuple) {
this(tuple.columnCount());
- for (int i = 0, len = tuple.columnCount(); i < len; i++)
+ for (int i = 0, len = tuple.columnCount(); i < len; i++) {
set(tuple.columnName(i), tuple.value(i));
+ }
}
/**
* A private constructor.
*
* @param columnMapping Column name-to-idx mapping.
- * @param columnNames List of columns names.
- * @param columnValues List of columns values.
+ * @param columnNames List of columns names.
+ * @param columnValues List of columns values.
*/
private TupleImpl(Map<String, Integer> columnMapping, List<String> columnNames, List<Object> columnValues) {
this.colMapping = columnMapping;
@@ -96,7 +97,8 @@ class TupleImpl implements Tuple, Serializable {
}
/** {@inheritDoc} */
- @Override public Tuple set(@NotNull String columnName, Object val) {
+ @Override
+ public Tuple set(@NotNull String columnName, Object val) {
int idx = colMapping.computeIfAbsent(Objects.requireNonNull(columnName), name -> colMapping.size());
if (idx == colNames.size()) {
@@ -111,14 +113,16 @@ class TupleImpl implements Tuple, Serializable {
}
/** {@inheritDoc} */
- @Override public String columnName(int columnIndex) {
+ @Override
+ public String columnName(int columnIndex) {
Objects.checkIndex(columnIndex, colValues.size());
return colNames.get(columnIndex);
}
/** {@inheritDoc} */
- @Override public int columnIndex(@NotNull String columnName) {
+ @Override
+ public int columnIndex(@NotNull String columnName) {
Objects.requireNonNull(columnName);
Integer idx = colMapping.get(columnName);
@@ -127,204 +131,245 @@ class TupleImpl implements Tuple, Serializable {
}
/** {@inheritDoc} */
- @Override public int columnCount() {
+ @Override
+ public int columnCount() {
return colNames.size();
}
/** {@inheritDoc} */
- @Override public <T> T valueOrDefault(@NotNull String columnName, T def) {
+ @Override
+ public <T> T valueOrDefault(@NotNull String columnName, T def) {
int idx = columnIndex(columnName);
- return (idx == -1) ? def : (T)colValues.get(idx);
+ return (idx == -1) ? def : (T) colValues.get(idx);
}
/** {@inheritDoc} */
- @Override public <T> T value(@NotNull String columnName) {
+ @Override
+ public <T> T value(@NotNull String columnName) {
int idx = columnIndex(columnName);
- if (idx == -1)
+ if (idx == -1) {
throw new IllegalArgumentException("Column not found: columnName=" + columnName);
+ }
- return (T)colValues.get(idx);
+ return (T) colValues.get(idx);
}
/** {@inheritDoc} */
- @Override public <T> T value(int columnIndex) {
+ @Override
+ public <T> T value(int columnIndex) {
Objects.checkIndex(columnIndex, colValues.size());
- return (T)colValues.get(columnIndex);
+ return (T) colValues.get(columnIndex);
}
/** {@inheritDoc} */
- @Override public BinaryObject binaryObjectValue(@NotNull String columnName) {
+ @Override
+ public BinaryObject binaryObjectValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public BinaryObject binaryObjectValue(int columnIndex) {
+ @Override
+ public BinaryObject binaryObjectValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public byte byteValue(@NotNull String columnName) {
+ @Override
+ public byte byteValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public byte byteValue(int columnIndex) {
+ @Override
+ public byte byteValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public short shortValue(@NotNull String columnName) {
+ @Override
+ public short shortValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public short shortValue(int columnIndex) {
+ @Override
+ public short shortValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public int intValue(@NotNull String columnName) {
+ @Override
+ public int intValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public int intValue(int columnIndex) {
+ @Override
+ public int intValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public long longValue(@NotNull String columnName) {
+ @Override
+ public long longValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public long longValue(int columnIndex) {
+ @Override
+ public long longValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public float floatValue(@NotNull String columnName) {
+ @Override
+ public float floatValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public float floatValue(int columnIndex) {
+ @Override
+ public float floatValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public double doubleValue(@NotNull String columnName) {
+ @Override
+ public double doubleValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public double doubleValue(int columnIndex) {
+ @Override
+ public double doubleValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public String stringValue(@NotNull String columnName) {
+ @Override
+ public String stringValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public String stringValue(int columnIndex) {
+ @Override
+ public String stringValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public UUID uuidValue(@NotNull String columnName) {
+ @Override
+ public UUID uuidValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public UUID uuidValue(int columnIndex) {
+ @Override
+ public UUID uuidValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public BitSet bitmaskValue(@NotNull String columnName) {
+ @Override
+ public BitSet bitmaskValue(@NotNull String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public BitSet bitmaskValue(int columnIndex) {
+ @Override
+ public BitSet bitmaskValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public LocalDate dateValue(String columnName) {
+ @Override
+ public LocalDate dateValue(String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public LocalDate dateValue(int columnIndex) {
+ @Override
+ public LocalDate dateValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public LocalTime timeValue(String columnName) {
+ @Override
+ public LocalTime timeValue(String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public LocalTime timeValue(int columnIndex) {
+ @Override
+ public LocalTime timeValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public LocalDateTime datetimeValue(String columnName) {
+ @Override
+ public LocalDateTime datetimeValue(String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public LocalDateTime datetimeValue(int columnIndex) {
+ @Override
+ public LocalDateTime datetimeValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @Override public Instant timestampValue(String columnName) {
+ @Override
+ public Instant timestampValue(String columnName) {
return value(columnName);
}
/** {@inheritDoc} */
- @Override public Instant timestampValue(int columnIndex) {
+ @Override
+ public Instant timestampValue(int columnIndex) {
return value(columnIndex);
}
/** {@inheritDoc} */
- @NotNull @Override public Iterator<Object> iterator() {
+ @NotNull
+ @Override
+ public Iterator<Object> iterator() {
return new Iterator<>() {
/** Current column index. */
private int cur = 0;
/** {@inheritDoc} */
- @Override public boolean hasNext() {
+ @Override
+ public boolean hasNext() {
return cur < colValues.size();
}
/** {@inheritDoc} */
- @Override public Object next() {
+ @Override
+ public Object next() {
return hasNext() ? colValues.get(cur++) : null;
}
};
}
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
return Tuple.hashCode(this);
}
/** {@inheritDoc} */
- @Override public boolean equals(Object obj) {
- if (this == obj)
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
return true;
+ }
- if (obj instanceof Tuple)
- return Tuple.equals(this, (Tuple)obj);
+ if (obj instanceof Tuple) {
+ return Tuple.equals(this, (Tuple) obj);
+ }
return false;
}
@@ -342,7 +387,8 @@ class TupleImpl implements Tuple, Serializable {
// Recover column name->index mapping.
colMapping = new HashMap<>(colNames.size());
- for (int i = 0; i < colNames.size(); i++)
+ for (int i = 0; i < colNames.size(); i++) {
colMapping.put(colNames.get(i), i);
+ }
}
}
diff --git a/modules/api/src/main/java/org/apache/ignite/table/manager/IgniteTables.java b/modules/api/src/main/java/org/apache/ignite/table/manager/IgniteTables.java
index ff9e0b9..36f98c0 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/manager/IgniteTables.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/manager/IgniteTables.java
@@ -30,33 +30,30 @@ import org.apache.ignite.table.Table;
*/
public interface IgniteTables {
/**
- * Creates a new table with the given {@code name}.
- * If a table with the same name already exists, an exception will be thrown.
+ * Creates a new table with the given {@code name}. If a table with the same name already exists, an exception will be thrown.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableInitChange Table changer.
* @return Newly created table.
* @throws TableAlreadyExistsException If table with given name already exists.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
Table createTable(String name, Consumer<TableChange> tableInitChange);
/**
- * Creates a new table with the given {@code name} asynchronously.
- * If a table with the same name already exists, a future will be completed with exception.
+ * Creates a new table with the given {@code name} asynchronously. If a table with the same name already exists, a future will be
+ * completed with exception.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableInitChange Table changer.
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
* @see TableAlreadyExistsException
*/
CompletableFuture<Table> createTableAsync(String name, Consumer<TableChange> tableInitChange);
@@ -64,86 +61,80 @@ public interface IgniteTables {
/**
* Creates a new table with the given {@code name} or returns an existing one with the same {@code name}.
*
- * Note: the configuration of the existed table will NOT be validated against the given {@code tableInitChange}.
+ * <p>Note: the configuration of the existed table will NOT be validated against the given {@code tableInitChange}.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableInitChange Table changer.
* @return Existing or newly created table.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
Table createTableIfNotExists(String name, Consumer<TableChange> tableInitChange);
/**
* Creates a new table with the given {@code name} or returns an existing one with the same {@code name}.
*
- * Note: the configuration of the existed table will NOT be validated against the given {@code tableInitChange}.
+ * <p>Note: the configuration of the existed table will NOT be validated against the given {@code tableInitChange}.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableInitChange Table changer.
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
CompletableFuture<Table> createTableIfNotExistsAsync(String name, Consumer<TableChange> tableInitChange);
/**
* Alter a cluster table.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableChange Table changer.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
void alterTable(String name, Consumer<TableChange> tableChange);
/**
* Alter a cluster table.
*
- * @param name Table name.
+ * @param name Table name.
* @param tableChange Table changer.
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
CompletableFuture<Void> alterTableAsync(String name, Consumer<TableChange> tableChange);
/**
- * Drops a table with the name specified.
- * If a table with the specified name does not exist in the cluster, the operation has no effect.
+ * Drops a table with the name specified. If a table with the specified name does not exist in the cluster, the operation has no
+ * effect.
*
* @param name Table name.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
void dropTable(String name);
/**
- * Drops a table with the name specified.
- * If a table with the specified name does not exist in the cluster, the operation has no effect.
+ * Drops a table with the name specified. If a table with the specified name does not exist in the cluster, the operation has no
+ * effect.
*
* @param name Table name.
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
CompletableFuture<Void> dropTableAsync(String name);
@@ -151,11 +142,10 @@ public interface IgniteTables {
* Gets a list of all started tables.
*
* @return List of tables.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
List<Table> tables();
@@ -163,11 +153,10 @@ public interface IgniteTables {
* Gets a list of all started tables.
*
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
CompletableFuture<List<Table>> tablesAsync();
@@ -176,11 +165,10 @@ public interface IgniteTables {
*
* @param name Name of the table.
* @return Tables with corresponding name or {@code null} if table isn't created.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
Table table(String name);
@@ -189,11 +177,10 @@ public interface IgniteTables {
*
* @param name Name of the table.
* @return Future representing pending completion of the operation.
- * @throws IgniteException If an unspecified platform exception has happened internally.
- * Is thrown when:
- * <ul>
- * <li>the node is stopping.</li>
- * </ul>
+ * @throws IgniteException If an unspecified platform exception has happened internally. Is thrown when:
+ * <ul>
+ * <li>the node is stopping.</li>
+ * </ul>
*/
CompletableFuture<Table> tableAsync(String name);
}
diff --git a/modules/api/src/main/java/org/apache/ignite/table/manager/package-info.java b/modules/api/src/main/java/org/apache/ignite/table/manager/package-info.java
index e05bd57..bfaf4e4 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/manager/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/manager/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains API classes for table management.
*/
+
package org.apache.ignite.table.manager;
diff --git a/modules/api/src/main/java/org/apache/ignite/table/mapper/package-info.java b/modules/api/src/main/java/org/apache/ignite/table/mapper/package-info.java
index 0d776c2..efee97a 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/mapper/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/mapper/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains user classes mapping API classes and mapper builders.
*/
+
package org.apache.ignite.table.mapper;
diff --git a/modules/api/src/main/java/org/apache/ignite/table/package-info.java b/modules/api/src/main/java/org/apache/ignite/table/package-info.java
index bea6437..2c5dff1 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/package-info.java
@@ -18,4 +18,5 @@
/**
* Table access API.
*/
+
package org.apache.ignite.table;
diff --git a/modules/api/src/main/java/org/apache/ignite/tx/IgniteTransactions.java b/modules/api/src/main/java/org/apache/ignite/tx/IgniteTransactions.java
index e659133..13ccdd2 100644
--- a/modules/api/src/main/java/org/apache/ignite/tx/IgniteTransactions.java
+++ b/modules/api/src/main/java/org/apache/ignite/tx/IgniteTransactions.java
@@ -33,8 +33,8 @@ public interface IgniteTransactions {
/**
* Synchronously executes a closure within a transaction.
- * <p>
- * If the closure is executed normally (no exceptions), the transaction is automatically committed.
+ *
+ * <p>If the closure is executed normally (no exceptions), the transaction is automatically committed.
*
* @param clo The closure.
*/
diff --git a/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java b/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
index 30a2e28..1825409 100644
--- a/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
+++ b/modules/api/src/main/java/org/apache/ignite/tx/Transaction.java
@@ -24,28 +24,24 @@ import java.util.concurrent.CompletableFuture;
*/
public interface Transaction {
/**
- * Synchronously commits a transaction.
- * Does nothing if it's already finished by commiting or rolling back.
+ * Synchronously commits a transaction. Does nothing if it's already finished by commiting or rolling back.
*/
void commit();
/**
- * Asynchronously commits a transaction.
- * Does nothing if it's already finished by commiting or rolling back.
+ * Asynchronously commits a transaction. Does nothing if it's already finished by commiting or rolling back.
*
* @return The future.
*/
CompletableFuture<Void> commitAsync();
/**
- * Synchronously rolls back a transaction.
- * Does nothing if it's already finished by commiting or rolling back.
+ * Synchronously rolls back a transaction. Does nothing if it's already finished by commiting or rolling back.
*/
void rollback();
/**
- * Asynchronously rolls back a transaction.
- * Does nothing if it's already finished by commiting or rolling back.
+ * Asynchronously rolls back a transaction. Does nothing if it's already finished by commiting or rolling back.
*
* @return The future.
*/
diff --git a/modules/api/src/main/java/org/apache/ignite/tx/package-info.java b/modules/api/src/main/java/org/apache/ignite/tx/package-info.java
index a7c139b..133fceb 100644
--- a/modules/api/src/main/java/org/apache/ignite/tx/package-info.java
+++ b/modules/api/src/main/java/org/apache/ignite/tx/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains Transaction API classes and interfaces.
*/
+
package org.apache.ignite.tx;
diff --git a/modules/baseline/src/main/java/org/apache/ignite/internal/baseline/BaselineManager.java b/modules/baseline/src/main/java/org/apache/ignite/internal/baseline/BaselineManager.java
index b844fb1..a4d9520 100644
--- a/modules/baseline/src/main/java/org/apache/ignite/internal/baseline/BaselineManager.java
+++ b/modules/baseline/src/main/java/org/apache/ignite/internal/baseline/BaselineManager.java
@@ -29,13 +29,14 @@ import org.apache.ignite.network.ClusterService;
*/
// TODO: IGNITE-14586 Remove @SuppressWarnings when implementation provided.
// TODO: https://issues.apache.org/jira/browse/IGNITE-14716 Adapt concept of baseline topology IEP-4.
-@SuppressWarnings({"FieldCanBeLocal", "unused"}) public class BaselineManager implements IgniteComponent {
- /** Configuration manager in order to handle and listen baseline specific configuration.*/
+@SuppressWarnings({"FieldCanBeLocal", "unused"})
+public class BaselineManager implements IgniteComponent {
+ /** Configuration manager in order to handle and listen baseline specific configuration. */
private final ConfigurationManager configurationMgr;
/**
- * MetaStorage manager in order to watch private distributed baseline specific configuration,
- * cause ConfigurationManger handles only public configuration.
+ * MetaStorage manager in order to watch private distributed baseline specific configuration, cause ConfigurationManger handles only
+ * public configuration.
*/
private final MetaStorageManager metastorageMgr;
@@ -46,13 +47,13 @@ import org.apache.ignite.network.ClusterService;
* The constructor.
*
* @param configurationMgr Configuration manager.
- * @param metastorageMgr MetaStorage manager.
- * @param clusterSvc Cluster network service.
+ * @param metastorageMgr MetaStorage manager.
+ * @param clusterSvc Cluster network service.
*/
public BaselineManager(
- ConfigurationManager configurationMgr,
- MetaStorageManager metastorageMgr,
- ClusterService clusterSvc
+ ConfigurationManager configurationMgr,
+ MetaStorageManager metastorageMgr,
+ ClusterService clusterSvc
) {
this.configurationMgr = configurationMgr;
this.metastorageMgr = metastorageMgr;
@@ -60,12 +61,14 @@ import org.apache.ignite.network.ClusterService;
}
/** {@inheritDoc} */
- @Override public void start() {
+ @Override
+ public void start() {
// No-op.
}
/** {@inheritDoc} */
- @Override public void stop() {
+ @Override
+ public void stop() {
// TODO: IGNITE-15161 Implement component's stop.
}
diff --git a/modules/calcite/src/main/java/org/apache/calcite/plan/volcano/package-info.java b/modules/calcite/src/main/java/org/apache/calcite/plan/volcano/package-info.java
index 9566cd9..b9538a9 100644
--- a/modules/calcite/src/main/java/org/apache/calcite/plan/volcano/package-info.java
+++ b/modules/calcite/src/main/java/org/apache/calcite/plan/volcano/package-info.java
@@ -18,4 +18,5 @@
/**
* Contains utils for access to package-private Calcite Volcano classes.
*/
+
package org.apache.calcite.plan.volcano;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/ResultFieldMetadata.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/ResultFieldMetadata.java
index f9cfeb3..cde083b 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/ResultFieldMetadata.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/ResultFieldMetadata.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.processors.query.calcite;
import java.util.List;
-
import org.apache.ignite.internal.schema.NativeType;
/**
@@ -29,30 +28,26 @@ public interface ResultFieldMetadata {
* @return name of the result's field.
*/
String name();
-
+
/**
* @return index (order) of the result's field (starts from 0).
*/
int order();
-
+
/**
* @return type of the result's field.
*/
NativeType type();
-
+
/**
* @return nullable flag of the result's field.
*/
boolean isNullable();
-
+
/**
- * Example:
- * SELECT SUM(price), category, subcategory FROM Goods WHERE [condition] GROUP_BY category, subcategory;
+ * Example: SELECT SUM(price), category, subcategory FROM Goods WHERE [condition] GROUP_BY category, subcategory;
*
- * Field - Origin
- * SUM(price) - null;
- * category - {"PUBLIC", "Goods", "category"};
- * subcategory - {"PUBLIC", "Goods", "subcategory"};
+ * <p>Field - Origin SUM(price) - null; category - {"PUBLIC", "Goods", "category"}; subcategory - {"PUBLIC", "Goods", "subcategory"};
*
* @return field's origin (or where a field value comes from).
*/
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
index 769ce75..a0b79d8 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.ignite.internal.processors.query.calcite;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
-
import org.apache.calcite.util.Pair;
import org.apache.ignite.internal.manager.EventListener;
import org.apache.ignite.internal.processors.query.calcite.exec.ArrayRowHandler;
@@ -47,169 +47,178 @@ import org.jetbrains.annotations.Nullable;
public class SqlQueryProcessor implements QueryProcessor {
/** Size of the cache for query plans. */
public static final int PLAN_CACHE_SIZE = 1024;
-
+
private volatile ExecutionService executionSrvc;
-
+
private volatile MessageService msgSrvc;
-
+
private volatile QueryTaskExecutor taskExecutor;
-
+
private final ClusterService clusterSrvc;
-
+
private final TableManager tableManager;
-
+
/** Busy lock for stop synchronisation. */
private final IgniteSpinBusyLock busyLock = new IgniteSpinBusyLock();
-
+
/** Keeps queries plans to avoid expensive planning of the same queries. */
private final QueryPlanCache planCache = new QueryPlanCacheImpl(PLAN_CACHE_SIZE);
-
+
/** Event listeners to close. */
private final List<Pair<TableEvent, EventListener>> evtLsnrs = new ArrayList<>();
-
+
public SqlQueryProcessor(
- ClusterService clusterSrvc,
- TableManager tableManager
+ ClusterService clusterSrvc,
+ TableManager tableManager
) {
this.clusterSrvc = clusterSrvc;
this.tableManager = tableManager;
}
-
+
/** {@inheritDoc} */
- @Override public void start() {
+ @Override
+ public void start() {
taskExecutor = new QueryTaskExecutorImpl(clusterSrvc.localConfiguration().getName());
-
+
msgSrvc = new MessageServiceImpl(
- clusterSrvc.topologyService(),
- clusterSrvc.messagingService(),
- taskExecutor
+ clusterSrvc.topologyService(),
+ clusterSrvc.messagingService(),
+ taskExecutor
);
-
+
SchemaHolderImpl schemaHolder = new SchemaHolderImpl(planCache::clear);
-
+
executionSrvc = new ExecutionServiceImpl<>(
- clusterSrvc.topologyService(),
- msgSrvc,
- planCache,
- schemaHolder,
- taskExecutor,
- ArrayRowHandler.INSTANCE
+ clusterSrvc.topologyService(),
+ msgSrvc,
+ planCache,
+ schemaHolder,
+ taskExecutor,
+ ArrayRowHandler.INSTANCE
);
-
+
registerTableListener(TableEvent.CREATE, new TableCreatedListener(schemaHolder));
registerTableListener(TableEvent.ALTER, new TableUpdatedListener(schemaHolder));
registerTableListener(TableEvent.DROP, new TableDroppedListener(schemaHolder));
-
+
taskExecutor.start();
msgSrvc.start();
executionSrvc.start();
planCache.start();
}
-
- /** */
+
+ /**
+ *
+ */
private void registerTableListener(TableEvent evt, AbstractTableEventListener lsnr) {
evtLsnrs.add(Pair.of(evt, lsnr));
-
+
tableManager.listen(evt, lsnr);
}
-
+
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- @Override public void stop() throws Exception {
+ @Override
+ public void stop() throws Exception {
busyLock.block();
-
+
List<AutoCloseable> toClose = new ArrayList<>(Arrays.asList(
- executionSrvc::stop,
- msgSrvc::stop,
- taskExecutor::stop,
- planCache::stop
+ executionSrvc::stop,
+ msgSrvc::stop,
+ taskExecutor::stop,
+ planCache::stop
));
-
+
toClose.addAll(evtLsnrs.stream()
- .map((p) -> (AutoCloseable)() -> tableManager.removeListener(p.left, p.right))
- .collect(Collectors.toList()));
-
+ .map((p) -> (AutoCloseable) () -> tableManager.removeListener(p.left, p.right))
+ .collect(Collectors.toList()));
+
IgniteUtils.closeAll(toClose);
}
-
+
/** {@inheritDoc} */
- @Override public List<SqlCursor<List<?>>> query(String schemaName, String qry, Object... params) {
- if (!busyLock.enterBusy())
+ @Override
+ public List<SqlCursor<List<?>>> query(String schemaName, String qry, Object... params) {
+ if (!busyLock.enterBusy()) {
throw new IgniteException(new NodeStoppingException());
-
+ }
+
try {
return executionSrvc.executeQuery(schemaName, qry, params);
- }
- finally {
+ } finally {
busyLock.leaveBusy();
}
}
-
+
private abstract static class AbstractTableEventListener implements EventListener<TableEventParameters> {
protected final SchemaHolderImpl schemaHolder;
-
+
private AbstractTableEventListener(
- SchemaHolderImpl schemaHolder
+ SchemaHolderImpl schemaHolder
) {
this.schemaHolder = schemaHolder;
}
-
+
/** {@inheritDoc} */
- @Override public void remove(@NotNull Throwable exception) {
+ @Override
+ public void remove(@NotNull Throwable exception) {
// No-op.
}
}
-
+
private static class TableCreatedListener extends AbstractTableEventListener {
private TableCreatedListener(
- SchemaHolderImpl schemaHolder
+ SchemaHolderImpl schemaHolder
) {
super(schemaHolder);
}
-
+
/** {@inheritDoc} */
- @Override public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
+ @Override
+ public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
schemaHolder.onSqlTypeCreated(
- "PUBLIC",
- parameters.table()
+ "PUBLIC",
+ parameters.table()
);
-
+
return false;
}
}
-
+
private static class TableUpdatedListener extends AbstractTableEventListener {
private TableUpdatedListener(
- SchemaHolderImpl schemaHolder
+ SchemaHolderImpl schemaHolder
) {
super(schemaHolder);
}
-
+
/** {@inheritDoc} */
- @Override public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
+ @Override
+ public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
schemaHolder.onSqlTypeUpdated(
- "PUBLIC",
- parameters.table()
+ "PUBLIC",
+ parameters.table()
);
-
+
return false;
}
}
-
+
private static class TableDroppedListener extends AbstractTableEventListener {
private TableDroppedListener(
- SchemaHolderImpl schemaHolder
+ SchemaHolderImpl schemaHolder
) {
super(schemaHolder);
}
-
+
/** {@inheritDoc} */
- @Override public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
+ @Override
+ public boolean notify(@NotNull TableEventParameters parameters, @Nullable Throwable exception) {
schemaHolder.onSqlTypeDropped(
- "PUBLIC",
- parameters.tableName()
+ "PUBLIC",
+ parameters.tableName()
);
-
+
return false;
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/Stubs.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/Stubs.java
index eb210d0..d76bda6 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/Stubs.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/Stubs.java
@@ -14,11 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.ignite.internal.processors.query.calcite;
/** Stubs */
public class Stubs {
- /** */
+ /**
+ *
+ */
public static int intFoo(Object... args) {
return args == null ? 0 : args.length;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/AbstractIndexScan.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/AbstractIndexScan.java
index fd61d52..1fdb246 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/AbstractIndexScan.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/AbstractIndexScan.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.ignite.internal.processors.query.calcite.exec;
import java.util.Iterator;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
-
import org.apache.calcite.rel.type.RelDataType;
import org.apache.ignite.internal.processors.query.calcite.util.FilteringIterator;
import org.apache.ignite.internal.processors.query.calcite.util.TransformingIterator;
@@ -29,43 +29,51 @@ import org.apache.ignite.lang.IgniteInternalException;
/**
* Abstract index scan.
*/
-public abstract class AbstractIndexScan<Row, IdxRow> implements Iterable<Row>, AutoCloseable {
- /** */
- private final TreeIndex<IdxRow> idx;
+public abstract class AbstractIndexScan<RowT, IdxRowT> implements Iterable<RowT>, AutoCloseable {
+ /**
+ *
+ */
+ private final TreeIndex<IdxRowT> idx;
/** Additional filters. */
- private final Predicate<Row> filters;
+ private final Predicate<RowT> filters;
/** Lower index scan bound. */
- private final Supplier<Row> lowerBound;
+ private final Supplier<RowT> lowerBound;
/** Upper index scan bound. */
- private final Supplier<Row> upperBound;
+ private final Supplier<RowT> upperBound;
- /** */
- private final Function<Row, Row> rowTransformer;
+ /**
+ *
+ */
+ private final Function<RowT, RowT> rowTransformer;
- /** */
- protected final ExecutionContext<Row> ectx;
+ /**
+ *
+ */
+ protected final ExecutionContext<RowT> ectx;
- /** */
+ /**
+ *
+ */
protected final RelDataType rowType;
/**
- * @param ectx Execution context.
- * @param idx Physical index.
- * @param filters Additional filters.
+ * @param ectx Execution context.
+ * @param idx Physical index.
+ * @param filters Additional filters.
* @param lowerBound Lower index scan bound.
* @param upperBound Upper index scan bound.
*/
protected AbstractIndexScan(
- ExecutionContext<Row> ectx,
- RelDataType rowType,
- TreeIndex<IdxRow> idx,
- Predicate<Row> filters,
- Supplier<Row> lowerBound,
- Supplier<Row> upperBound,
- Function<Row, Row> rowTransformer
+ ExecutionContext<RowT> ectx,
+ RelDataType rowType,
+ TreeIndex<IdxRowT> idx,
+ Predicate<RowT> filters,
+ Supplier<RowT> lowerBound,
+ Supplier<RowT> upperBound,
+ Function<RowT, RowT> rowTransformer
) {
this.ectx = ectx;
this.rowType = rowType;
@@ -77,31 +85,38 @@ public abstract class AbstractIndexScan<Row, IdxRow> implements Iterable<Row>, A
}
/** {@inheritDoc} */
- @Override public synchronized Iterator<Row> iterator() {
- IdxRow lower = lowerBound == null ? null : row2indexRow(lowerBound.get());
- IdxRow upper = upperBound == null ? null : row2indexRow(upperBound.get());
-
- Iterator<Row> it = new TransformingIterator<>(
- idx.find(lower, upper),
- this::indexRow2Row
+ @Override
+ public synchronized Iterator<RowT> iterator() {
+ IdxRowT lower = lowerBound == null ? null : row2indexRow(lowerBound.get());
+ IdxRowT upper = upperBound == null ? null : row2indexRow(upperBound.get());
+
+ Iterator<RowT> it = new TransformingIterator<>(
+ idx.find(lower, upper),
+ this::indexRow2Row
);
it = new FilteringIterator<>(it, filters);
- if (rowTransformer != null)
+ if (rowTransformer != null) {
it = new TransformingIterator<>(it, rowTransformer);
+ }
return it;
}
- /** */
- protected abstract IdxRow row2indexRow(Row bound);
+ /**
+ *
+ */
+ protected abstract IdxRowT row2indexRow(RowT bound);
- /** */
- protected abstract Row indexRow2Row(IdxRow idxRow) throws IgniteInternalException;
+ /**
+ *
+ */
+ protected abstract RowT indexRow2Row(IdxRowT idxRow) throws IgniteInternalException;
/** {@inheritDoc} */
- @Override public void close() {
+ @Override
+ public void close() {
// No-op.
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ArrayRowHandler.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ArrayRowHandler.java
index 7b53335..44e8489 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ArrayRowHandler.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ArrayRowHandler.java
@@ -19,61 +19,74 @@ package org.apache.ignite.internal.processors.query.calcite.exec;
import java.lang.reflect.Type;
import java.util.Arrays;
-
import org.apache.ignite.internal.util.ArrayUtils;
/**
* Handler for rows that implemented as a simple objects array.
*/
public class ArrayRowHandler implements RowHandler<Object[]> {
- /** */
+ /**
+ *
+ */
public static final RowHandler<Object[]> INSTANCE = new ArrayRowHandler();
- /** */
- private ArrayRowHandler() {}
+ /**
+ *
+ */
+ private ArrayRowHandler() {
+ }
/** {@inheritDoc} */
- @Override public Object get(int field, Object[] row) {
+ @Override
+ public Object get(int field, Object[] row) {
return row[field];
}
/** {@inheritDoc} */
- @Override public void set(int field, Object[] row, Object val) {
+ @Override
+ public void set(int field, Object[] row, Object val) {
row[field] = val;
}
/** {@inheritDoc} */
- @Override public Object[] concat(Object[] left, Object[] right) {
+ @Override
+ public Object[] concat(Object[] left, Object[] right) {
return ArrayUtils.concat(left, right);
}
/** {@inheritDoc} */
- @Override public int columnCount(Object[] row) {
+ @Override
+ public int columnCount(Object[] row) {
return row.length;
}
/** {@inheritDoc} */
- @Override public String toString(Object[] objects) {
+ @Override
+ public String toString(Object[] objects) {
return "Row" + Arrays.toString(objects);
}
/** {@inheritDoc} */
- @Override public RowFactory<Object[]> factory(Type... types) {
+ @Override
+ public RowFactory<Object[]> factory(Type... types) {
int rowLen = types.length;
return new RowFactory<>() {
/** {@inheritDoc} */
- @Override public RowHandler<Object[]> handler() {
+ @Override
+ public RowHandler<Object[]> handler() {
return ArrayRowHandler.this;
}
/** {@inheritDoc} */
- @Override public Object[] create() {
+ @Override
+ public Object[] create() {
return new Object[rowLen];
}
/** {@inheritDoc} */
- @Override public Object[] create(Object... fields) {
+ @Override
+ public Object[] create(Object... fields) {
assert fields.length == rowLen;
return fields;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ClosableIteratorsHolder.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ClosableIteratorsHolder.java
index fb0d9f2..b55d4ff 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ClosableIteratorsHolder.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ClosableIteratorsHolder.java
@@ -24,34 +24,48 @@ import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
-
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
import org.apache.ignite.internal.thread.IgniteThread;
import org.apache.ignite.lang.IgniteLogger;
/**
+ *
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public class ClosableIteratorsHolder implements LifecycleAware {
- /** */
+ /**
+ *
+ */
private final String nodeName;
- /** */
+ /**
+ *
+ */
private final ReferenceQueue refQueue;
- /** */
+ /**
+ *
+ */
private final Map<Reference, Object> refMap;
- /** */
+ /**
+ *
+ */
private final IgniteLogger log;
- /** */
+ /**
+ *
+ */
private volatile boolean stopped;
- /** */
+ /**
+ *
+ */
private volatile IgniteThread cleanWorker;
- /** */
+ /**
+ *
+ */
public ClosableIteratorsHolder(String nodeName, IgniteLogger log) {
this.nodeName = nodeName;
this.log = log;
@@ -61,7 +75,8 @@ public class ClosableIteratorsHolder implements LifecycleAware {
}
/** {@inheritDoc} */
- @Override public void start() {
+ @Override
+ public void start() {
cleanWorker = new IgniteThread(nodeName, "calciteIteratorsCleanWorker", () -> cleanUp(true));
cleanWorker.setDaemon(true);
cleanWorker.start();
@@ -77,32 +92,40 @@ public class ClosableIteratorsHolder implements LifecycleAware {
return new DelegatingIterator<>(src);
}
- /** */
+ /**
+ *
+ */
private void cleanUp(boolean blocking) {
- for (Reference<?> ref = nextRef(blocking); !stopped && ref != null; ref = nextRef(blocking))
+ for (Reference<?> ref = nextRef(blocking); !stopped && ref != null; ref = nextRef(blocking)) {
Commons.close(refMap.remove(ref), log);
+ }
}
- /** */
+ /**
+ *
+ */
private Reference nextRef(boolean blocking) {
try {
return !blocking ? refQueue.poll() : refQueue.remove();
- }
- catch (InterruptedException ignored) {
+ } catch (InterruptedException ignored) {
return null;
}
}
- /** */
+ /**
+ *
+ */
private AutoCloseable closeable(Object referent, Object resource) {
- if (!(resource instanceof AutoCloseable))
+ if (!(resource instanceof AutoCloseable)) {
return null;
+ }
return new CloseableReference(referent, resource);
}
/** {@inheritDoc} */
- @Override public void stop() {
+ @Override
+ public void stop() {
stopped = true;
refMap.values().forEach(o -> Commons.close(o, log));
@@ -111,52 +134,70 @@ public class ClosableIteratorsHolder implements LifecycleAware {
IgniteThread t = cleanWorker;
- if (t != null)
+ if (t != null) {
t.interrupt();
+ }
}
- /** */
+ /**
+ *
+ */
private final class DelegatingIterator<T> implements Iterator<T>, AutoCloseable {
- /** */
+ /**
+ *
+ */
private final Iterator<T> delegate;
- /** */
+ /**
+ *
+ */
private final AutoCloseable closeable;
- /** */
+ /**
+ *
+ */
private DelegatingIterator(Iterator<T> delegate) {
closeable = closeable(this, this.delegate = delegate);
}
/** {@inheritDoc} */
- @Override public boolean hasNext() {
+ @Override
+ public boolean hasNext() {
return delegate.hasNext();
}
/** {@inheritDoc} */
- @Override public T next() {
+ @Override
+ public T next() {
return delegate.next();
}
/** {@inheritDoc} */
- @Override public void remove() {
+ @Override
+ public void remove() {
delegate.remove();
}
/** {@inheritDoc} */
- @Override public void forEachRemaining(Consumer<? super T> action) {
+ @Override
+ public void forEachRemaining(Consumer<? super T> action) {
delegate.forEachRemaining(action);
}
/** {@inheritDoc} */
- @Override public void close() throws Exception {
+ @Override
+ public void close() throws Exception {
Commons.close(closeable);
}
}
- /** */
+ /**
+ *
+ */
private final class CloseableReference extends WeakReference implements AutoCloseable {
- /** */
+ /**
+ *
+ */
private CloseableReference(Object referent, Object resource) {
super(referent, refQueue);
@@ -164,11 +205,11 @@ public class ClosableIteratorsHolder implements LifecycleAware {
}
/** {@inheritDoc} */
- @Override public void close() throws Exception {
+ @Override
+ public void close() throws Exception {
try {
Commons.close(refMap.remove(this));
- }
- finally {
+ } finally {
clear();
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeService.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeService.java
index ed99a1d..fe72141 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeService.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeService.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.query.calcite.exec;
import java.util.List;
import java.util.UUID;
-
import org.apache.ignite.lang.IgniteInternalCheckedException;
/**
@@ -28,31 +27,34 @@ import org.apache.ignite.lang.IgniteInternalCheckedException;
public interface ExchangeService extends LifecycleAware {
/**
* Sends a batch of data to remote node.
- * @param nodeId Target node ID.
- * @param qryId Query ID.
+ *
+ * @param nodeId Target node ID.
+ * @param qryId Query ID.
* @param fragmentId Target fragment ID.
* @param exchangeId Exchange ID.
- * @param batchId Batch ID.
- * @param last Last batch flag.
- * @param rows Data rows.
+ * @param batchId Batch ID.
+ * @param last Last batch flag.
+ * @param rows Data rows.
*/
- <Row> void sendBatch(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId, boolean last,
- List<Row> rows) throws IgniteInternalCheckedException;
+ <RowT> void sendBatch(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId, boolean last,
+ List<RowT> rows) throws IgniteInternalCheckedException;
/**
* Acknowledges a batch with given ID is processed.
- * @param nodeId Node ID to notify.
- * @param qryId Query ID.
+ *
+ * @param nodeId Node ID to notify.
+ * @param qryId Query ID.
* @param fragmentId Target fragment ID.
* @param exchangeId Exchange ID.
- * @param batchId Batch ID.
+ * @param batchId Batch ID.
*/
void acknowledge(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId) throws IgniteInternalCheckedException;
/**
* Sends cancel request.
- * @param nodeId Target node ID.
- * @param qryId Query ID.
+ *
+ * @param nodeId Target node ID.
+ * @param qryId Query ID.
* @param fragmentId Target fragment ID.
* @param exchangeId Exchange ID.
*/
@@ -60,18 +62,19 @@ public interface ExchangeService extends LifecycleAware {
/**
* Sends cancel request.
- * @param nodeId Target node ID.
- * @param qryId Query ID.
+ *
+ * @param nodeId Target node ID.
+ * @param qryId Query ID.
* @param fragmentId Target fragment ID.
* @param exchangeId Exchange ID.
*/
void closeOutbox(String nodeId, UUID qryId, long fragmentId, long exchangeId) throws IgniteInternalCheckedException;
/**
- * @param nodeId Target node ID.
- * @param qryId Query ID.
+ * @param nodeId Target node ID.
+ * @param qryId Query ID.
* @param fragmentId Source fragment ID.
- * @param err Exception to send.
+ * @param err Exception to send.
* @throws IgniteInternalCheckedException On error marshaling or send ErrorMessage.
*/
void sendError(String nodeId, UUID qryId, long fragmentId, Throwable err) throws IgniteInternalCheckedException;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeServiceImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeServiceImpl.java
index 15cf232..7ea0989 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeServiceImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExchangeServiceImpl.java
@@ -17,11 +17,12 @@
package org.apache.ignite.internal.processors.query.calcite.exec;
+import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-
import org.apache.ignite.internal.processors.query.calcite.exec.rel.Inbox;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.Outbox;
import org.apache.ignite.internal.processors.query.calcite.message.InboxCloseMessage;
@@ -38,8 +39,6 @@ import org.apache.ignite.lang.IgniteInternalCheckedException;
import org.apache.ignite.lang.IgniteInternalException;
import org.apache.ignite.lang.IgniteLogger;
-import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
-
/**
*
*/
@@ -48,20 +47,28 @@ public class ExchangeServiceImpl implements ExchangeService {
private static final SqlQueryMessagesFactory FACTORY = new SqlQueryMessagesFactory();
- /** */
+ /**
+ *
+ */
private final QueryTaskExecutor taskExecutor;
- /** */
+ /**
+ *
+ */
private final MailboxRegistry mailboxRegistry;
- /** */
+ /**
+ *
+ */
private final MessageService msgSrvc;
- /** */
+ /**
+ *
+ */
public ExchangeServiceImpl(
- QueryTaskExecutor taskExecutor,
- MailboxRegistry mailboxRegistry,
- MessageService msgSrvc
+ QueryTaskExecutor taskExecutor,
+ MailboxRegistry mailboxRegistry,
+ MessageService msgSrvc
) {
this.taskExecutor = taskExecutor;
this.mailboxRegistry = mailboxRegistry;
@@ -69,7 +76,8 @@ public class ExchangeServiceImpl implements ExchangeService {
}
/** {@inheritDoc} */
- @Override public void start() {
+ @Override
+ public void start() {
msgSrvc.register((n, m) -> onMessage(n, (InboxCloseMessage) m), SqlQueryMessageGroup.INBOX_CLOSE_MESSAGE);
msgSrvc.register((n, m) -> onMessage(n, (OutboxCloseMessage) m), SqlQueryMessageGroup.OUTBOX_CLOSE_MESSAGE);
msgSrvc.register((n, m) -> onMessage(n, (QueryBatchAcknowledgeMessage) m), SqlQueryMessageGroup.QUERY_BATCH_ACK);
@@ -77,138 +85,151 @@ public class ExchangeServiceImpl implements ExchangeService {
}
/** {@inheritDoc} */
- @Override public <Row> void sendBatch(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId,
- boolean last, List<Row> rows) throws IgniteInternalCheckedException {
+ @Override
+ public <RowT> void sendBatch(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId,
+ boolean last, List<RowT> rows) throws IgniteInternalCheckedException {
msgSrvc.send(
- nodeId,
- FACTORY.queryBatchMessage()
- .queryId(qryId)
- .fragmentId(fragmentId)
- .exchangeId(exchangeId)
- .batchId(batchId)
- .last(last)
- .rows(Commons.cast(rows))
- .build()
+ nodeId,
+ FACTORY.queryBatchMessage()
+ .queryId(qryId)
+ .fragmentId(fragmentId)
+ .exchangeId(exchangeId)
+ .batchId(batchId)
+ .last(last)
+ .rows(Commons.cast(rows))
+ .build()
);
}
/** {@inheritDoc} */
- @Override public void acknowledge(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId)
- throws IgniteInternalCheckedException {
+ @Override
+ public void acknowledge(String nodeId, UUID qryId, long fragmentId, long exchangeId, int batchId)
+ throws IgniteInternalCheckedException {
msgSrvc.send(
- nodeId,
- FACTORY.queryBatchAcknowledgeMessage()
- .queryId(qryId)
- .fragmentId(fragmentId)
- .exchangeId(exchangeId)
- .batchId(batchId)
- .build()
+ nodeId,
+ FACTORY.queryBatchAcknowledgeMessage()
+ .queryId(qryId)
+ .fragmentId(fragmentId)
+ .exchangeId(exchangeId)
+ .batchId(batchId)
+ .build()
);
}
/** {@inheritDoc} */
- @Override public void closeOutbox(String nodeId, UUID qryId, long fragmentId, long exchangeId) throws IgniteInternalCheckedException {
+ @Override
+ public void closeOutbox(String nodeId, UUID qryId, long fragmentId, long exchangeId) throws IgniteInternalCheckedException {
msgSrvc.send(
- nodeId,
- FACTORY.outboxCloseMessage()
- .queryId(qryId)
- .fragmentId(fragmentId)
- .exchangeId(exchangeId)
- .build()
+ nodeId,
+ FACTORY.outboxCloseMessage()
+ .queryId(qryId)
+ .fragmentId(fragmentId)
+ .exchangeId(exchangeId)
+ .build()
);
}
/** {@inheritDoc} */
- @Override public void closeInbox(String nodeId, UUID qryId, long fragmentId, long exchangeId) throws IgniteInternalCheckedException {
+ @Override
+ public void closeInbox(String nodeId, UUID qryId, long fragmentId, long exchangeId) throws IgniteInternalCheckedException {
msgSrvc.send(
- nodeId,
- FACTORY.inboxCloseMessage()
- .queryId(qryId)
- .fragmentId(fragmentId)
- .exchangeId(exchangeId)
- .build()
+ nodeId,
+ FACTORY.inboxCloseMessage()
+ .queryId(qryId)
+ .fragmentId(fragmentId)
+ .exchangeId(exchangeId)
+ .build()
);
}
/** {@inheritDoc} */
- @Override public void sendError(String nodeId, UUID qryId, long fragmentId, Throwable err) throws IgniteInternalCheckedException {
+ @Override
+ public void sendError(String nodeId, UUID qryId, long fragmentId, Throwable err) throws IgniteInternalCheckedException {
msgSrvc.send(
- nodeId,
- FACTORY.errorMessage()
- .queryId(qryId)
- .fragmentId(fragmentId)
- .error(err)
- .build()
+ nodeId,
+ FACTORY.errorMessage()
+ .queryId(qryId)
+ .fragmentId(fragmentId)
+ .error(err)
+ .build()
);
}
/** {@inheritDoc} */
- @Override public boolean alive(String nodeId) {
+ @Override
+ public boolean alive(String nodeId) {
return msgSrvc.alive(nodeId);
}
- /** */
+ /**
+ *
+ */
protected void onMessage(String nodeId, InboxCloseMessage msg) {
Collection<Inbox<?>> inboxes = mailboxRegistry.inboxes(msg.queryId(), msg.fragmentId(), msg.exchangeId());
if (!nullOrEmpty(inboxes)) {
- for (Inbox<?> inbox : inboxes)
+ for (Inbox<?> inbox : inboxes) {
inbox.context().execute(inbox::close, inbox::onError);
- }
- else if (LOG.isDebugEnabled()) {
- LOG.debug("Stale inbox cancel message received: [" +
- "nodeId=" + nodeId +
- ", queryId=" + msg.queryId() +
- ", fragmentId=" + msg.fragmentId() +
- ", exchangeId=" + msg.exchangeId() + "]");
+ }
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Stale inbox cancel message received: ["
+ + "nodeId=" + nodeId
+ + ", queryId=" + msg.queryId()
+ + ", fragmentId=" + msg.fragmentId()
+ + ", exchangeId=" + msg.exchangeId() + "]");
}
}
- /** */
+ /**
+ *
+ */
protected void onMessage(String nodeId, OutboxCloseMessage msg) {
Collection<Outbox<?>> outboxes = mailboxRegistry.outboxes(msg.queryId(), msg.fragmentId(), msg.exchangeId());
if (!nullOrEmpty(outboxes)) {
- for (Outbox<?> outbox : outboxes)
+ for (Outbox<?> outbox : outboxes) {
outbox.context().execute(outbox::close, outbox::onError);
+ }
- for (Outbox<?> outbox : outboxes)
+ for (Outbox<?> outbox : outboxes) {
outbox.context().execute(outbox.context()::cancel, outbox::onError);
- }
- else if (LOG.isDebugEnabled()) {
- LOG.debug("Stale outbox cancel message received: [" +
- "nodeId=" + nodeId +
- ", queryId=" + msg.queryId() +
- ", fragmentId=" + msg.fragmentId() +
- ", exchangeId=" + msg.exchangeId() + "]");
+ }
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Stale outbox cancel message received: ["
+ + "nodeId=" + nodeId
+ + ", queryId=" + msg.queryId()
+ + ", fragmentId=" + msg.fragmentId()
+ + ", exchangeId=" + msg.exchangeId() + "]");
}
}
- /** */
+ /**
+ *
+ */
protected void onMessage(String nodeId, QueryBatchAcknowledgeMessage msg) {
Outbox<?> outbox = mailboxRegistry.outbox(msg.queryId(), msg.exchangeId());
if (outbox != null) {
try {
outbox.onAcknowledge(nodeId, msg.batchId());
- }
- catch (Throwable e) {
+ } catch (Throwable e) {
outbox.onError(e);
throw new IgniteInternalException("Unexpected exception", e);
}
- }
- else if (LOG.isDebugEnabled()) {
- LOG.debug("Stale acknowledge message received: [" +
- "nodeId=" + nodeId + ", " +
- "queryId=" + msg.queryId() + ", " +
- "fragmentId=" + msg.fragmentId() + ", " +
- "exchangeId=" + msg.exchangeId() + ", " +
- "batchId=" + msg.batchId() + "]");
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Stale acknowledge message received: ["
+ + "nodeId=" + nodeId + ", "
+ + "queryId=" + msg.queryId() + ", "
+ + "fragmentId=" + msg.fragmentId() + ", "
+ + "exchangeId=" + msg.exchangeId() + ", "
+ + "batchId=" + msg.batchId() + "]");
}
}
- /** */
+ /**
+ *
+ */
protected void onMessage(String nodeId, QueryBatchMessage msg) {
Inbox<?> inbox = mailboxRegistry.inbox(msg.queryId(), msg.exchangeId());
@@ -216,7 +237,7 @@ public class ExchangeServiceImpl implements ExchangeService {
// first message sent before a fragment is built
// note that an inbox source fragment id is also used as an exchange id
Inbox<?> newInbox = new Inbox<>(baseInboxContext(nodeId, msg.queryId(), msg.fragmentId()),
- this, mailboxRegistry, msg.exchangeId(), msg.exchangeId());
+ this, mailboxRegistry, msg.exchangeId(), msg.exchangeId());
inbox = mailboxRegistry.register(newInbox);
}
@@ -224,20 +245,18 @@ public class ExchangeServiceImpl implements ExchangeService {
if (inbox != null) {
try {
inbox.onBatchReceived(nodeId, msg.batchId(), msg.last(), Commons.cast(msg.rows()));
- }
- catch (Throwable e) {
+ } catch (Throwable e) {
inbox.onError(e);
throw new IgniteInternalException("Unexpected exception", e);
}
- }
- else if (LOG.isDebugEnabled()) {
- LOG.debug("Stale batch message received: [" +
- "nodeId=" + nodeId + ", " +
- "queryId=" + msg.queryId() + ", " +
- "fragmentId=" + msg.fragmentId() + ", " +
- "exchangeId=" + msg.exchangeId() + ", " +
- "batchId=" + msg.batchId() + "]");
+ } else if (LOG.isDebugEnabled()) {
+ LOG.debug("Stale batch message received: ["
+ + "nodeId=" + nodeId + ", "
+ + "queryId=" + msg.queryId() + ", "
+ + "fragmentId=" + msg.fragmentId() + ", "
+ + "exchangeId=" + msg.exchangeId() + ", "
+ + "batchId=" + msg.batchId() + "]");
}
}
@@ -246,22 +265,23 @@ public class ExchangeServiceImpl implements ExchangeService {
*/
private ExecutionContext<?> baseInboxContext(String nodeId, UUID qryId, long fragmentId) {
return new ExecutionContext<>(
- taskExecutor,
- PlanningContext.builder()
- .originatingNodeId(nodeId)
- .build(),
- qryId,
- new FragmentDescription(
- fragmentId,
- null,
+ taskExecutor,
+ PlanningContext.builder()
+ .originatingNodeId(nodeId)
+ .build(),
+ qryId,
+ new FragmentDescription(
+ fragmentId,
+ null,
+ null,
+ null),
null,
- null),
- null,
- Map.of());
+ Map.of());
}
/** {@inheritDoc} */
- @Override public void stop() {
+ @Override
+ public void stop() {
// No-op.
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionCancelledException.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionCancelledException.java
index ce2e4c7..937279a 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionCancelledException.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionCancelledException.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.processors.query.calcite.exec;
import org.apache.ignite.lang.IgniteInternalCheckedException;
-/** */
+/**
+ *
+ */
public class ExecutionCancelledException extends IgniteInternalCheckedException {
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext.java
index e4c2203..94e82de 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionContext.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.processors.query.calcite.exec;
+import static org.apache.ignite.internal.processors.query.calcite.util.Commons.checkRange;
+
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
@@ -24,7 +26,6 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
-
import org.apache.calcite.DataContext;
import org.apache.calcite.linq4j.QueryProvider;
import org.apache.calcite.schema.SchemaPlus;
@@ -39,64 +40,82 @@ import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
import org.apache.ignite.lang.IgniteInternalException;
import org.jetbrains.annotations.NotNull;
-import static org.apache.ignite.internal.processors.query.calcite.util.Commons.checkRange;
-
/**
* Runtime context allowing access to the tables in a database.
*/
-public class ExecutionContext<Row> implements DataContext {
- /** */
+public class ExecutionContext<RowT> implements DataContext {
+ /**
+ *
+ */
private static final TimeZone TIME_ZONE = TimeZone.getDefault(); // TODO DistributedSqlConfiguration#timeZone
- /** */
+ /**
+ *
+ */
private final UUID qryId;
- /** */
+ /**
+ *
+ */
private final PlanningContext ctx;
- /** */
+ /**
+ *
+ */
private final FragmentDescription fragmentDesc;
- /** */
+ /**
+ *
+ */
private final Map<String, Object> params;
- /** */
+ /**
+ *
+ */
private final QueryTaskExecutor executor;
- /** */
- private final RowHandler<Row> handler;
+ /**
+ *
+ */
+ private final RowHandler<RowT> handler;
- /** */
- private final ExpressionFactory<Row> expressionFactory;
+ /**
+ *
+ */
+ private final ExpressionFactory<RowT> expressionFactory;
- /** */
+ /**
+ *
+ */
private final AtomicBoolean cancelFlag = new AtomicBoolean();
/**
- * Need to store timestamp, since SQL standard says that functions such as CURRENT_TIMESTAMP return the same value
- * throughout the query.
+ * Need to store timestamp, since SQL standard says that functions such as CURRENT_TIMESTAMP return the same value throughout the
+ * query.
*/
private final long startTs;
- /** */
+ /**
+ *
+ */
private Object[] correlations = new Object[16];
/**
- * @param executor Task executor.
- * @param ctx Parent context.
- * @param qryId Query ID.
+ * @param executor Task executor.
+ * @param ctx Parent context.
+ * @param qryId Query ID.
* @param fragmentDesc Partitions information.
- * @param handler Row handler.
- * @param params Parameters.
+ * @param handler Row handler.
+ * @param params Parameters.
*/
@SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
public ExecutionContext(
- QueryTaskExecutor executor,
- PlanningContext ctx,
- UUID qryId,
- FragmentDescription fragmentDesc,
- RowHandler<Row> handler,
- Map<String, Object> params
+ QueryTaskExecutor executor,
+ PlanningContext ctx,
+ UUID qryId,
+ FragmentDescription fragmentDesc,
+ RowHandler<RowT> handler,
+ Map<String, Object> params
) {
this.executor = executor;
this.ctx = ctx;
@@ -165,14 +184,14 @@ public class ExecutionContext<Row> implements DataContext {
/**
* @return Handler to access row fields.
*/
- public RowHandler<Row> rowHandler() {
+ public RowHandler<RowT> rowHandler() {
return handler;
}
/**
* @return Expression factory.
*/
- public ExpressionFactory<Row> expressionFactory() {
+ public ExpressionFactory<RowT> expressionFactory() {
return expressionFactory;
}
@@ -184,32 +203,41 @@ public class ExecutionContext<Row> implements DataContext {
}
/** {@inheritDoc} */
- @Override public SchemaPlus getRootSchema() {
+ @Override
+ public SchemaPlus getRootSchema() {
return ctx.schema();
}
/** {@inheritDoc} */
- @Override public IgniteTypeFactory getTypeFactory() {
+ @Override
+ public IgniteTypeFactory getTypeFactory() {
return ctx.typeFactory();
}
/** {@inheritDoc} */
- @Override public QueryProvider getQueryProvider() {
+ @Override
+ public QueryProvider getQueryProvider() {
return null; // TODO
}
/** {@inheritDoc} */
- @Override public Object get(String name) {
- if (Variable.CANCEL_FLAG.camelName.equals(name))
+ @Override
+ public Object get(String name) {
+ if (Variable.CANCEL_FLAG.camelName.equals(name)) {
return cancelFlag;
- if (Variable.TIME_ZONE.camelName.equals(name))
+ }
+ if (Variable.TIME_ZONE.camelName.equals(name)) {
return TIME_ZONE; // TODO DistributedSqlConfiguration#timeZone
- if (Variable.CURRENT_TIMESTAMP.camelName.equals(name))
+ }
+ if (Variable.CURRENT_TIMESTAMP.camelName.equals(name)) {
return startTs;
- if (Variable.LOCAL_TIMESTAMP.camelName.equals(name))
+ }
+ if (Variable.LOCAL_TIMESTAMP.camelName.equals(name)) {
return startTs;
- if (name.startsWith("?"))
+ }
+ if (name.startsWith("?")) {
return TypeUtils.toInternal(this, params.get(name));
+ }
return params.get(name);
}
@@ -229,7 +257,7 @@ public class ExecutionContext<Row> implements DataContext {
/**
* Sets correlated value.
*
- * @param id Correlation ID.
+ * @param id Correlation ID.
* @param value Correlated value.
*/
public void setCorrelated(@NotNull Object value, int id) {
@@ -244,14 +272,14 @@ public class ExecutionContext<Row> implements DataContext {
* @param task Query task.
*/
public void execute(RunnableX task, Consumer<Throwable> onError) {
- if (isCancelled())
+ if (isCancelled()) {
return;
+ }
executor.execute(qryId, fragmentId(), () -> {
try {
task.run();
- }
- catch (Throwable e) {
+ } catch (Throwable e) {
onError.accept(e);
throw new IgniteInternalException("Unexpected exception", e);
@@ -260,9 +288,8 @@ public class ExecutionContext<Row> implements DataContext {
}
/**
- * Submits a Runnable task for execution and returns a Future
- * representing that task. The Future's {@code get} method will
- * return {@code null} upon <em>successful</em> completion.
+ * Submits a Runnable task for execution and returns a Future representing that task. The Future's {@code get} method will return {@code
+ * null} upon <em>successful</em> completion.
*
* @param task the task to submit.
* @return a {@link CompletableFuture} representing pending task
@@ -273,8 +300,7 @@ public class ExecutionContext<Row> implements DataContext {
return executor.submit(qryId, fragmentId(), () -> {
try {
task.run();
- }
- catch (Throwable e) {
+ } catch (Throwable e) {
onError.accept(e);
throw new IgniteInternalException("Unexpected exception", e);
@@ -282,10 +308,14 @@ public class ExecutionContext<Row> implements DataContext {
});
}
- /** */
+ /**
+ *
+ */
@FunctionalInterface
public interface RunnableX {
- /** */
+ /**
+ *
+ */
void run() throws Throwable;
}
@@ -298,7 +328,9 @@ public class ExecutionContext<Row> implements DataContext {
return !cancelFlag.get() && cancelFlag.compareAndSet(false, true);
}
- /** */
+ /**
+ *
+ */
public boolean isCancelled() {
return cancelFlag.get();
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionService.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionService.java
index a1a7ed0..5ec5583 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionService.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionService.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.query.calcite.exec;
import java.util.List;
import java.util.UUID;
-
import org.apache.ignite.internal.processors.query.calcite.SqlCursor;
/**
@@ -30,7 +29,7 @@ public interface ExecutionService extends LifecycleAware {
* Executes a query.
*
* @param schema Schema name.
- * @param query Query.
+ * @param query Query.
* @param params Query parameters.
* @return Query cursor.
*/
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionServiceImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionServiceImpl.java
index e423f47..e08b975 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionServiceImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/ExecutionServiceImpl.java
@@ -17,6 +17,14 @@
package org.apache.ignite.internal.processors.query.calcite.exec;
+import static java.util.Collections.singletonList;
+import static org.apache.calcite.rel.type.RelDataType.PRECISION_NOT_SPECIFIED;
+import static org.apache.ignite.internal.processors.query.calcite.exec.PlannerHelper.optimize;
+import static org.apache.ignite.internal.processors.query.calcite.externalize.RelJsonReader.fromJson;
+import static org.apache.ignite.internal.processors.query.calcite.util.Commons.FRAMEWORK_CONFIG;
+import static org.apache.ignite.internal.util.CollectionUtils.first;
+import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -27,7 +35,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
-
import org.apache.calcite.plan.Contexts;
import org.apache.calcite.plan.ConventionTraitDef;
import org.apache.calcite.plan.RelOptUtil;
@@ -100,78 +107,98 @@ import org.apache.ignite.network.TopologyService;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import static java.util.Collections.singletonList;
-import static org.apache.calcite.rel.type.RelDataType.PRECISION_NOT_SPECIFIED;
-import static org.apache.ignite.internal.processors.query.calcite.exec.PlannerHelper.optimize;
-import static org.apache.ignite.internal.processors.query.calcite.externalize.RelJsonReader.fromJson;
-import static org.apache.ignite.internal.processors.query.calcite.util.Commons.FRAMEWORK_CONFIG;
-import static org.apache.ignite.internal.util.CollectionUtils.first;
-import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
-
/**
*
*/
-public class ExecutionServiceImpl<Row> implements ExecutionService {
+public class ExecutionServiceImpl<RowT> implements ExecutionService {
private static final IgniteLogger LOG = IgniteLogger.forClass(ExecutionServiceImpl.class);
-
+
private static final SqlQueryMessagesFactory FACTORY = new SqlQueryMessagesFactory();
-
- /** */
+
+ /**
+ *
+ */
private final TopologyService topSrvc;
-
- /** */
+
+ /**
+ *
+ */
private final MessageService msgSrvc;
-
- /** */
+
+ /**
+ *
+ */
private final String locNodeId;
-
- /** */
+
+ /**
+ *
+ */
private final QueryPlanCache qryPlanCache;
-
- /** */
+
+ /**
+ *
+ */
private final SchemaHolder schemaHolder;
-
- /** */
+
+ /**
+ *
+ */
private final QueryTaskExecutor taskExecutor;
-
- /** */
+
+ /**
+ *
+ */
private final AffinityService affSrvc;
-
- /** */
+
+ /**
+ *
+ */
private final MailboxRegistry mailboxRegistry;
-
- /** */
+
+ /**
+ *
+ */
private final MappingService mappingSrvc;
-
- /** */
+
+ /**
+ *
+ */
private final ExchangeService exchangeSrvc;
-
- /** */
+
+ /**
+ *
+ */
private final ClosableIteratorsHolder iteratorsHolder;
-
- /** */
+
+ /**
+ *
+ */
private final Map<UUID, QueryInfo> running;
-
- /** */
- private final RowHandler<Row> handler;
-
- /** */
+
+ /**
+ *
+ */
+ private final RowHandler<RowT> handler;
+
+ /**
+ *
+ */
private final DdlSqlToCommandConverter ddlConverter;
-
+
public ExecutionServiceImpl(
- TopologyService topSrvc,
- MessageService msgSrvc,
- QueryPlanCache planCache,
- SchemaHolder schemaHolder,
- QueryTaskExecutor taskExecutor,
- RowHandler<Row> handler
+ TopologyService topSrvc,
+ MessageService msgSrvc,
+ QueryPlanCache planCache,
+ SchemaHolder schemaHolder,
+ QueryTaskExecutor taskExecutor,
+ RowHandler<RowT> handler
) {
this.topSrvc = topSrvc;
this.handler = handler;
this.msgSrvc = msgSrvc;
this.schemaHolder = schemaHolder;
this.taskExecutor = taskExecutor;
-
+
locNodeId = topSrvc.localMember().id();
qryPlanCache = planCache;
running = new ConcurrentHashMap<>();
@@ -183,139 +210,266 @@ public class ExecutionServiceImpl<Row> implements ExecutionService {
// TODO: fix this
affSrvc = cacheId -> Objects::hashCode;
}
-
+
/** {@inheritDoc} */
- @Override public void start() {
+ @Override
+ public void start() {
iteratorsHolder.start();
mailboxRegistry.start();
exchangeSrvc.start();
-
+
topSrvc.addEventHandler(new NodeLeaveHandler(this::onNodeLeft));
-
+
msgSrvc.register((n, m) -> onMessage(n, (QueryStartRequest) m), SqlQueryMessageGroup.QUERY_START_REQUEST);
msgSrvc.register((n, m) -> onMessage(n, (QueryStartResponse) m), SqlQueryMessageGroup.QUERY_START_RESPONSE);
msgSrvc.register((n, m) -> onMessage(n, (ErrorMessage) m), SqlQueryMessageGroup.ERROR_MESSAGE);
}
-
+
/** {@inheritDoc} */
- @Override public List<SqlCursor<List<?>>> executeQuery(
- String schema,
- String qry,
- Object[] params
+ @Override
+ public List<SqlCursor<List<?>>> executeQuery(
+ String schema,
+ String qry,
+ Object[] params
) {
PlanningContext pctx = createContext(topologyVersion(), locNodeId, schema, qry, params);
-
+
List<QueryPlan> qryPlans = qryPlanCache.queryPlan(pctx, new CacheKey(pctx.schemaName(), pctx.query()), this::prepareQuery);
-
+
return executePlans(qryPlans, pctx);
}
-
+
+ /**
+ *
+ */
+ private SqlCursor<List<?>> executeQuery(UUID qryId, MultiStepPlan plan, PlanningContext pctx) {
+ plan.init(pctx);
+
+ List<Fragment> fragments = plan.fragments();
+
+ // Local execution
+ Fragment fragment = first(fragments);
+
+ if (IgniteUtils.assertionsEnabled()) {
+ assert fragment != null;
+
+ FragmentMapping mapping = plan.mapping(fragment);
+
+ assert mapping != null;
+
+ List<String> nodes = mapping.nodeIds();
+
+ assert nodes != null && nodes.size() == 1 && first(nodes).equals(pctx.localNodeId());
+ }
+
+ FragmentDescription fragmentDesc = new FragmentDescription(
+ fragment.fragmentId(),
+ plan.mapping(fragment),
+ plan.target(fragment),
+ plan.remotes(fragment));
+
+ ExecutionContext<RowT> ectx = new ExecutionContext<>(
+ taskExecutor,
+ pctx,
+ qryId,
+ fragmentDesc,
+ handler,
+ Commons.parametersMap(pctx.parameters()));
+
+ Node<RowT> node = new LogicalRelImplementor<>(ectx, affSrvc, mailboxRegistry,
+ exchangeSrvc).go(fragment.root());
+
+ QueryInfo info = new QueryInfo(ectx, plan, node);
+
+ // register query
+ register(info);
+
+ // start remote execution
+ for (int i = 1; i < fragments.size(); i++) {
+ fragment = fragments.get(i);
+ fragmentDesc = new FragmentDescription(
+ fragment.fragmentId(),
+ plan.mapping(fragment),
+ plan.target(fragment),
+ plan.remotes(fragment));
+
+ Throwable ex = null;
+ for (String nodeId : fragmentDesc.nodeIds()) {
+ if (ex != null) {
+ info.onResponse(nodeId, fragment.fragmentId(), ex);
+ } else {
+ try {
+ QueryStartRequest req = FACTORY.queryStartRequest()
+ .queryId(qryId)
+ .fragmentId(fragment.fragmentId())
+ .schema(pctx.schemaName())
+ .root(fragment.serialized())
+ .topologyVersion(pctx.topologyVersion())
+ .fragmentDescription(fragmentDesc)
+ .parameters(pctx.parameters())
+ .build();
+
+ msgSrvc.send(nodeId, req);
+ } catch (Throwable e) {
+ info.onResponse(nodeId, fragment.fragmentId(), ex = e);
+ }
+ }
+ }
+ }
+
+ return Commons.createCursor(new TransformingIterator<>(info.iterator(), row -> {
+ int rowSize = ectx.rowHandler().columnCount(row);
+
+ List<Object> res = new ArrayList<>(rowSize);
+
+ for (int i = 0; i < rowSize; i++) {
+ res.add(ectx.rowHandler().get(i, row));
+ }
+
+ return res;
+ }), plan);
+ }
+
/**
* Executes prepared plans.
+ *
* @param qryPlans Query plans.
- * @param pctx Query context.
+ * @param pctx Query context.
* @return List of query result cursors.
*/
- @NotNull public List<SqlCursor<List<?>>> executePlans(
- Collection<QueryPlan> qryPlans,
- PlanningContext pctx
+ @NotNull
+ public List<SqlCursor<List<?>>> executePlans(
+ Collection<QueryPlan> qryPlans,
+ PlanningContext pctx
) {
List<SqlCursor<List<?>>> cursors = new ArrayList<>(qryPlans.size());
-
+
for (QueryPlan plan : qryPlans) {
UUID qryId = UUID.randomUUID();
-
+
SqlCursor<List<?>> cur = executePlan(qryId, pctx, plan);
-
+
cursors.add(cur);
}
-
+
return cursors;
}
-
+
/** {@inheritDoc} */
- @Override public void cancelQuery(UUID qryId) {
+ @Override
+ public void cancelQuery(UUID qryId) {
QueryInfo info = running.get(qryId);
-
- if (info != null)
+
+ if (info != null) {
info.cancel();
+ }
}
-
- /** */
+
+ /**
+ *
+ */
protected long topologyVersion() {
return 1L;
}
-
- /** */
+
+ /**
+ *
+ */
private PlanningContext createContext(long topVer, String originator,
- @Nullable String schema, String qry, Object[] params) {
+ @Nullable String schema, String qry, Object[] params) {
RelTraitDef<?>[] traitDefs = {
- ConventionTraitDef.INSTANCE,
- RelCollationTraitDef.INSTANCE,
- DistributionTraitDef.INSTANCE,
- RewindabilityTraitDef.INSTANCE,
- CorrelationTraitDef.INSTANCE,
+ ConventionTraitDef.INSTANCE,
+ RelCollationTraitDef.INSTANCE,
+ DistributionTraitDef.INSTANCE,
+ RewindabilityTraitDef.INSTANCE,
+ CorrelationTraitDef.INSTANCE,
};
-
+
return PlanningContext.builder()
- .localNodeId(locNodeId)
- .originatingNodeId(originator)
- .parentContext(Contexts.empty())
- .frameworkConfig(Frameworks.newConfigBuilder(FRAMEWORK_CONFIG)
- .defaultSchema(schema != null
- ? schemaHolder.schema().getSubSchema(schema)
- : schemaHolder.schema())
- .traitDefs(traitDefs)
- .build())
- .query(qry)
- .parameters(params)
- .topologyVersion(topVer)
- .build();
+ .localNodeId(locNodeId)
+ .originatingNodeId(originator)
+ .parentContext(Contexts.empty())
+ .frameworkConfig(Frameworks.newConfigBuilder(FRAMEWORK_CONFIG)
+ .defaultSchema(schema != null
+ ? schemaHolder.schema().getSubSchema(schema)
+ : schemaHolder.schema())
+ .traitDefs(traitDefs)
+ .build())
+ .query(qry)
+ .parameters(params)
+ .topologyVersion(topVer)
+ .build();
}
-
- /** */
+
+ /**
+ *
+ */
private List<QueryPlan> prepareQuery(PlanningContext ctx) {
try {
String qry = ctx.query();
-
+
assert qry != null;
-
+
// Parse query.
SqlNode sqlNode = ctx.planner().parse(qry);
-
- if (single(sqlNode))
+
+ if (single(sqlNode)) {
return singletonList(prepareSingle(sqlNode, ctx));
-
+ }
+
List<SqlNode> nodes = ((SqlNodeList) sqlNode).getList();
List<QueryPlan> res = new ArrayList<>(nodes.size());
-
- for (SqlNode node : nodes)
+
+ for (SqlNode node : nodes) {
res.add(prepareSingle(node, ctx));
-
+ }
+
return res;
- }
- catch (SqlParseException e) {
+ } catch (SqlParseException e) {
throw new IgniteInternalException("Failed to parse query", e);
- }
- catch (ValidationException e) {
+ } catch (ValidationException e) {
throw new IgniteInternalException("Failed to validate query", e);
- }
- catch (Exception e) {
+ } catch (Exception e) {
throw new IgniteInternalException("Failed to plan query.", e);
}
}
-
- /** */
+
+ /**
+ *
+ */
+ private QueryPlan prepareQuery(SqlNode sqlNode, PlanningContext ctx) {
+ IgnitePlanner planner = ctx.planner();
+
+ // Validate
+ ValidationResult validated = planner.validateAndGetTypeMetadata(sqlNode);
+
+ sqlNode = validated.sqlNode();
+
+ IgniteRel igniteRel = optimize(sqlNode, planner, LOG);
+
+ // Split query plan to query fragments.
+ List<Fragment> fragments = new Splitter().go(igniteRel);
+
+ QueryTemplate template = new QueryTemplate(mappingSrvc, fragments);
+
+ return new MultiStepQueryPlan(template, resultSetMetadata(ctx, validated.dataType(), validated.origins()));
+ }
+
+ /**
+ *
+ */
private List<QueryPlan> prepareFragment(PlanningContext ctx) {
return List.of(new FragmentPlan(fromJson(ctx, ctx.query())));
}
-
- /** */
+
+ /**
+ *
+ */
private QueryPlan prepareSingle(SqlNode sqlNode, PlanningContext ctx) throws ValidationException {
assert single(sqlNode);
-
+
ctx.planner().reset();
-
+
switch (sqlNode.getKind()) {
case SELECT:
case ORDER_BY:
@@ -325,101 +479,92 @@ public class ExecutionServiceImpl<Row> implements ExecutionService {
case EXCEPT:
case INTERSECT:
return prepareQuery(sqlNode, ctx);
-
+
case INSERT:
case DELETE:
case UPDATE:
return prepareDml(sqlNode, ctx);
-
+
case EXPLAIN:
return prepareExplain(sqlNode, ctx);
-
+
case CREATE_TABLE:
case DROP_TABLE:
return prepareDdl(sqlNode, ctx);
-
+
default:
- throw new IgniteInternalException("Unsupported operation [" +
- "sqlNodeKind=" + sqlNode.getKind() + "; " +
- "querySql=\"" + ctx.query() + "\"]");
+ throw new IgniteInternalException("Unsupported operation ["
+ + "sqlNodeKind=" + sqlNode.getKind() + "; "
+ + "querySql=\"" + ctx.query() + "\"]");
}
}
-
- /** */
- private QueryPlan prepareQuery(SqlNode sqlNode, PlanningContext ctx) {
- IgnitePlanner planner = ctx.planner();
-
- // Validate
- ValidationResult validated = planner.validateAndGetTypeMetadata(sqlNode);
-
- sqlNode = validated.sqlNode();
-
- IgniteRel igniteRel = optimize(sqlNode, planner, LOG);
-
- // Split query plan to query fragments.
- List<Fragment> fragments = new Splitter().go(igniteRel);
-
- QueryTemplate template = new QueryTemplate(mappingSrvc, fragments);
-
- return new MultiStepQueryPlan(template, resultSetMetadata(ctx, validated.dataType(), validated.origins()));
- }
-
- /** */
+
+ /**
+ *
+ */
private QueryPlan prepareDml(SqlNode sqlNode, PlanningContext ctx) throws ValidationException {
IgnitePlanner planner = ctx.planner();
-
+
// Validate
sqlNode = planner.validate(sqlNode);
-
+
// Convert to Relational operators graph
IgniteRel igniteRel = optimize(sqlNode, planner, LOG);
-
+
// Split query plan to query fragments.
List<Fragment> fragments = new Splitter().go(igniteRel);
-
+
QueryTemplate template = new QueryTemplate(mappingSrvc, fragments);
-
+
return new MultiStepDmlPlan(template, resultSetMetadata(ctx, igniteRel.getRowType(), null));
}
-
- /** */
+
+ /**
+ *
+ */
private QueryPlan prepareDdl(SqlNode sqlNode, PlanningContext ctx) {
assert sqlNode instanceof SqlDdl : sqlNode == null ? "null" : sqlNode.getClass().getName();
-
- SqlDdl ddlNode = (SqlDdl)sqlNode;
-
+
+ SqlDdl ddlNode = (SqlDdl) sqlNode;
+
return new DdlPlan(ddlConverter.convert(ddlNode, ctx));
}
-
- /** */
+
+ /**
+ *
+ */
private QueryPlan prepareExplain(SqlNode explain, PlanningContext ctx) throws ValidationException {
IgnitePlanner planner = ctx.planner();
-
- SqlNode sql = ((SqlExplain)explain).getExplicandum();
-
+
+ SqlNode sql = ((SqlExplain) explain).getExplicandum();
+
// Validate
sql = planner.validate(sql);
-
+
// Convert to Relational operators graph
IgniteRel igniteRel = optimize(sql, planner, LOG);
-
+
String plan = RelOptUtil.toString(igniteRel, SqlExplainLevel.ALL_ATTRIBUTES);
-
+
return new ExplainPlan(plan, explainFieldsMetadata(ctx));
}
-
- /** */
+
+ /**
+ *
+ */
private ResultSetMetadata explainFieldsMetadata(PlanningContext ctx) {
IgniteTypeFactory factory = ctx.typeFactory();
RelDataType planStrDataType =
- factory.createSqlType(SqlTypeName.VARCHAR, PRECISION_NOT_SPECIFIED);
+ factory.createSqlType(SqlTypeName.VARCHAR, PRECISION_NOT_SPECIFIED);
Map.Entry<String, RelDataType> planField = new IgniteBiTuple<>(ExplainPlan.PLAN_COL_NAME, planStrDataType);
RelDataType planDataType = factory.createStructType(singletonList(planField));
-
+
return resultSetMetadata(ctx, planDataType, null);
}
-
- /** */
+
+ /**
+ *
+ */
private SqlCursor<List<?>> executePlan(UUID qryId, PlanningContext pctx, QueryPlan plan) {
switch (plan.type()) {
case DML:
@@ -427,450 +572,432 @@ public class ExecutionServiceImpl<Row> implements ExecutionService {
case QUERY:
return executeQuery(qryId, (MultiStepPlan) plan, pctx);
case EXPLAIN:
- return executeExplain((ExplainPlan)plan);
+ return executeExplain((ExplainPlan) plan);
case DDL:
- return executeDdl((DdlPlan)plan, pctx);
-
+ return executeDdl((DdlPlan) plan, pctx);
+
default:
throw new AssertionError("Unexpected plan type: " + plan);
}
}
-
- /** */
+
+ /**
+ *
+ */
private SqlCursor<List<?>> executeDdl(DdlPlan plan, PlanningContext pctx) {
throw new UnsupportedOperationException("plan=" + plan + ", ctx=" + pctx);
}
-
- /** */
- private SqlCursor<List<?>> executeQuery(UUID qryId, MultiStepPlan plan, PlanningContext pctx) {
- plan.init(pctx);
-
- List<Fragment> fragments = plan.fragments();
-
- // Local execution
- Fragment fragment = first(fragments);
-
- if (IgniteUtils.assertionsEnabled()) {
- assert fragment != null;
-
- FragmentMapping mapping = plan.mapping(fragment);
-
- assert mapping != null;
-
- List<String> nodes = mapping.nodeIds();
-
- assert nodes != null && nodes.size() == 1 && first(nodes).equals(pctx.localNodeId());
- }
-
- FragmentDescription fragmentDesc = new FragmentDescription(
- fragment.fragmentId(),
- plan.mapping(fragment),
- plan.target(fragment),
- plan.remotes(fragment));
-
- ExecutionContext<Row> ectx = new ExecutionContext<>(
- taskExecutor,
- pctx,
- qryId,
- fragmentDesc,
- handler,
- Commons.parametersMap(pctx.parameters()));
-
- Node<Row> node = new LogicalRelImplementor<>(ectx, affSrvc, mailboxRegistry,
- exchangeSrvc).go(fragment.root());
-
- QueryInfo info = new QueryInfo(ectx, plan, node);
-
- // register query
- register(info);
-
- // start remote execution
- for (int i = 1; i < fragments.size(); i++) {
- fragment = fragments.get(i);
- fragmentDesc = new FragmentDescription(
- fragment.fragmentId(),
- plan.mapping(fragment),
- plan.target(fragment),
- plan.remotes(fragment));
-
- Throwable ex = null;
- for (String nodeId : fragmentDesc.nodeIds()) {
- if (ex != null)
- info.onResponse(nodeId, fragment.fragmentId(), ex);
- else {
- try {
- QueryStartRequest req = FACTORY.queryStartRequest()
- .queryId(qryId)
- .fragmentId(fragment.fragmentId())
- .schema(pctx.schemaName())
- .root(fragment.serialized())
- .topologyVersion(pctx.topologyVersion())
- .fragmentDescription(fragmentDesc)
- .parameters(pctx.parameters())
- .build();
-
- msgSrvc.send(nodeId, req);
- }
- catch (Throwable e) {
- info.onResponse(nodeId, fragment.fragmentId(), ex = e);
- }
- }
- }
- }
-
- return Commons.createCursor(new TransformingIterator<>(info.iterator(), row -> {
- int rowSize = ectx.rowHandler().columnCount(row);
-
- List<Object> res = new ArrayList<>(rowSize);
-
- for (int i = 0; i < rowSize; i++)
- res.add(ectx.rowHandler().get(i, row));
-
- return res;
- }), plan);
- }
-
- /** */
+
+ /**
+ *
+ */
private SqlCursor<List<?>> executeExplain(ExplainPlan plan) {
SqlCursor<List<?>> cur = Commons.createCursor(singletonList(singletonList(plan.plan())), plan);
// TODO: fix this
-// cur.fieldsMeta(plan.fieldsMeta().queryFieldsMetadata(pctx.typeFactory()));
-
+ // cur.fieldsMeta(plan.fieldsMeta().queryFieldsMetadata(pctx.typeFactory()));
+
return cur;
}
-
- /** */
+
+ /**
+ *
+ */
private void executeFragment(UUID qryId, FragmentPlan plan, PlanningContext pctx, FragmentDescription fragmentDesc) {
- ExecutionContext<Row> ectx = new ExecutionContext<>(taskExecutor, pctx, qryId,
- fragmentDesc, handler, Commons.parametersMap(pctx.parameters()));
-
+ ExecutionContext<RowT> ectx = new ExecutionContext<>(taskExecutor, pctx, qryId,
+ fragmentDesc, handler, Commons.parametersMap(pctx.parameters()));
+
long frId = fragmentDesc.fragmentId();
String origNodeId = pctx.originatingNodeId();
-
- Outbox<Row> node = new LogicalRelImplementor<>(
- ectx,
- affSrvc,
- mailboxRegistry,
- exchangeSrvc
+
+ Outbox<RowT> node = new LogicalRelImplementor<>(
+ ectx,
+ affSrvc,
+ mailboxRegistry,
+ exchangeSrvc
).go(plan.root());
-
+
try {
msgSrvc.send(
- origNodeId,
- FACTORY.queryStartResponse()
- .queryId(qryId)
- .fragmentId(frId)
- .build()
+ origNodeId,
+ FACTORY.queryStartResponse()
+ .queryId(qryId)
+ .fragmentId(frId)
+ .build()
);
- }
- catch (IgniteInternalCheckedException e) {
+ } catch (IgniteInternalCheckedException e) {
IgniteInternalException wrpEx = new IgniteInternalException("Failed to send reply. [nodeId=" + origNodeId + ']', e);
-
+
throw wrpEx;
}
-
+
node.init();
}
-
- /** */
+
+ /**
+ *
+ */
private void register(QueryInfo info) {
UUID qryId = info.ctx.queryId();
-
+
running.put(qryId, info);
}
-
- /** */
+
+ /**
+ *
+ */
private ResultSetMetadataInternal resultSetMetadata(PlanningContext ctx, RelDataType sqlType,
- @Nullable List<List<String>> origins) {
+ @Nullable List<List<String>> origins) {
return new ResultSetMetadataImpl(
- TypeUtils.getResultType(ctx.typeFactory(), ctx.catalogReader(), sqlType, origins),
- origins
+ TypeUtils.getResultType(ctx.typeFactory(), ctx.catalogReader(), sqlType, origins),
+ origins
);
}
-
- /** */
+
+ /**
+ *
+ */
private boolean single(SqlNode sqlNode) {
return !(sqlNode instanceof SqlNodeList);
}
-
- /** */
+
+ /**
+ *
+ */
private void onMessage(String nodeId, QueryStartRequest msg) {
assert nodeId != null && msg != null;
-
+
try {
PlanningContext pctx = createContext(msg.topologyVersion(), nodeId, msg.schema(),
- msg.root(), msg.parameters());
-
+ msg.root(), msg.parameters());
+
List<QueryPlan> qryPlans = qryPlanCache.queryPlan(
- pctx,
- new CacheKey(pctx.schemaName(), pctx.query()),
- this::prepareFragment
+ pctx,
+ new CacheKey(pctx.schemaName(), pctx.query()),
+ this::prepareFragment
);
-
+
assert qryPlans.size() == 1 && qryPlans.get(0).type() == QueryPlan.Type.FRAGMENT;
-
- FragmentPlan plan = (FragmentPlan)qryPlans.get(0);
-
+
+ FragmentPlan plan = (FragmentPlan) qryPlans.get(0);
+
executeFragment(msg.queryId(), plan, pctx, msg.fragmentDescription());
- }
- catch (Throwable ex) {
+ } catch (Throwable ex) {
LOG.error("Failed to start query fragment", ex);
-
+
mailboxRegistry.outboxes(msg.queryId(), msg.fragmentId(), -1)
- .forEach(Outbox::close);
+ .forEach(Outbox::close);
mailboxRegistry.inboxes(msg.queryId(), msg.fragmentId(), -1)
- .forEach(Inbox::close);
-
+ .forEach(Inbox::close);
+
try {
msgSrvc.send(
- nodeId,
- FACTORY.queryStartResponse()
- .queryId(msg.queryId())
- .fragmentId(msg.fragmentId())
- .error(ex)
- .build()
+ nodeId,
+ FACTORY.queryStartResponse()
+ .queryId(msg.queryId())
+ .fragmentId(msg.fragmentId())
+ .error(ex)
+ .build()
);
- }
- catch (Exception e) {
+ } catch (Exception e) {
LOG.error("Error occurred during send error message", e);
-
+
IgniteInternalException wrpEx = new IgniteInternalException("Error occurred during send error message", e);
-
+
e.addSuppressed(ex);
-
+
throw wrpEx;
}
-
+
throw ex;
}
}
-
- /** */
+
+ /**
+ *
+ */
private void onMessage(String nodeId, QueryStartResponse msg) {
assert nodeId != null && msg != null;
-
+
QueryInfo info = running.get(msg.queryId());
-
- if (info != null)
+
+ if (info != null) {
info.onResponse(nodeId, msg.fragmentId(), msg.error());
+ }
}
-
- /** */
+
+ /**
+ *
+ */
private void onMessage(String nodeId, ErrorMessage msg) {
assert nodeId != null && msg != null;
-
+
QueryInfo info = running.get(msg.queryId());
-
- if (info != null)
+
+ if (info != null) {
info.onError(new RemoteException(nodeId, msg.queryId(), msg.fragmentId(), msg.error()));
+ }
}
-
- /** */
+
+ /**
+ *
+ */
private void onNodeLeft(ClusterNode node) {
running.forEach((uuid, queryInfo) -> queryInfo.onNodeLeft(node.id()));
}
-
-
+
+
/** {@inheritDoc} */
- @Override public void stop() throws Exception {
+ @Override
+ public void stop() throws Exception {
IgniteUtils.closeAll(qryPlanCache::stop, iteratorsHolder::stop, mailboxRegistry::stop, exchangeSrvc::stop);
}
-
- /** */
+
+ /**
+ *
+ */
private enum QueryState {
- /** */
+ /**
+ *
+ */
RUNNING,
-
- /** */
+
+ /**
+ *
+ */
CLOSING,
-
- /** */
+
+ /**
+ *
+ */
CLOSED
}
-
- /** */
+
+ /**
+ *
+ */
private static final class RemoteFragmentKey {
- /** */
+ /**
+ *
+ */
private final String nodeId;
-
- /** */
+
+ /**
+ *
+ */
private final long fragmentId;
-
- /** */
+
+ /**
+ *
+ */
private RemoteFragmentKey(String nodeId, long fragmentId) {
this.nodeId = nodeId;
this.fragmentId = fragmentId;
}
-
+
/** {@inheritDoc} */
- @Override public boolean equals(Object o) {
- if (this == o)
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
return true;
- if (o == null || getClass() != o.getClass())
+ }
+ if (o == null || getClass() != o.getClass()) {
return false;
-
+ }
+
RemoteFragmentKey that = (RemoteFragmentKey) o;
-
- if (fragmentId != that.fragmentId)
+
+ if (fragmentId != that.fragmentId) {
return false;
+ }
return nodeId.equals(that.nodeId);
}
-
+
/** {@inheritDoc} */
- @Override public int hashCode() {
+ @Override
+ public int hashCode() {
int res = nodeId.hashCode();
res = 31 * res + (int) (fragmentId ^ (fragmentId >>> 32));
return res;
}
}
-
- /** */
+
+ /**
+ *
+ */
private final class QueryInfo implements Cancellable {
- /** */
- private final ExecutionContext<Row> ctx;
-
- /** */
- private final RootNode<Row> root;
-
+ /**
+ *
+ */
+ private final ExecutionContext<RowT> ctx;
+
+ /**
+ *
+ */
+ private final RootNode<RowT> root;
+
/** remote nodes */
private final Set<String> remotes;
-
+
/** node to fragment */
private final Set<RemoteFragmentKey> waiting;
-
- /** */
+
+ /**
+ *
+ */
private volatile QueryState state;
-
- /** */
- private QueryInfo(ExecutionContext<Row> ctx, MultiStepPlan plan, Node<Row> root) {
+
+ /**
+ *
+ */
+ private QueryInfo(ExecutionContext<RowT> ctx, MultiStepPlan plan, Node<RowT> root) {
this.ctx = ctx;
-
- RootNode<Row> rootNode = new RootNode<>(ctx, plan.metadata().rowType(), this::tryClose);
+
+ RootNode<RowT> rootNode = new RootNode<>(ctx, plan.metadata().rowType(), this::tryClose);
rootNode.register(root);
-
+
this.root = rootNode;
-
+
remotes = new HashSet<>();
waiting = new HashSet<>();
-
+
for (int i = 1; i < plan.fragments().size(); i++) {
Fragment fragment = plan.fragments().get(i);
List<String> nodes = plan.mapping(fragment).nodeIds();
-
+
remotes.addAll(nodes);
-
- for (String node : nodes)
+
+ for (String node : nodes) {
waiting.add(new RemoteFragmentKey(node, fragment.fragmentId()));
+ }
}
-
+
state = QueryState.RUNNING;
}
-
- /** */
- public Iterator<Row> iterator() {
+
+ /**
+ *
+ */
+ public Iterator<RowT> iterator() {
return iteratorsHolder.iterator(root);
}
-
+
/** {@inheritDoc} */
- @Override public void cancel() {
+ @Override
+ public void cancel() {
root.close();
}
-
+
/**
* Can be called multiple times after receive each error at {@link #onResponse(RemoteFragmentKey, Throwable)}.
*/
private void tryClose() {
QueryState state0 = null;
-
+
synchronized (this) {
- if (state == QueryState.CLOSED)
+ if (state == QueryState.CLOSED) {
return;
-
- if (state == QueryState.RUNNING)
+ }
+
+ if (state == QueryState.RUNNING) {
state0 = state = QueryState.CLOSING;
-
+ }
+
// 1) close local fragment
root.closeInternal();
-
- if (state == QueryState.CLOSING && waiting.isEmpty())
+
+ if (state == QueryState.CLOSING && waiting.isEmpty()) {
state0 = state = QueryState.CLOSED;
+ }
}
-
+
if (state0 == QueryState.CLOSED) {
// 2) unregister running query
running.remove(ctx.queryId());
-
+
IgniteInternalException wrpEx = null;
-
+
// 3) close remote fragments
for (String nodeId : remotes) {
try {
exchangeSrvc.closeOutbox(nodeId, ctx.queryId(), -1, -1);
- }
- catch (IgniteInternalCheckedException e) {
- if (wrpEx == null)
+ } catch (IgniteInternalCheckedException e) {
+ if (wrpEx == null) {
wrpEx = new IgniteInternalException("Failed to send cancel message. [nodeId=" + nodeId + ']', e);
- else
+ } else {
wrpEx.addSuppressed(e);
+ }
}
}
-
+
// 4) Cancel local fragment
root.context().execute(ctx::cancel, root::onError);
-
- if (wrpEx != null)
+
+ if (wrpEx != null) {
throw wrpEx;
+ }
}
}
-
- /** */
+
+ /**
+ *
+ */
private void onNodeLeft(String nodeId) {
List<RemoteFragmentKey> fragments = null;
-
+
synchronized (this) {
for (RemoteFragmentKey fragment : waiting) {
- if (!fragment.nodeId.equals(nodeId))
+ if (!fragment.nodeId.equals(nodeId)) {
continue;
-
- if (fragments == null)
+ }
+
+ if (fragments == null) {
fragments = new ArrayList<>();
-
+ }
+
fragments.add(fragment);
}
}
-
+
if (!nullOrEmpty(fragments)) {
IgniteInternalCheckedException ex = new IgniteInternalCheckedException(
- "Failed to start query, node left. nodeId=" + nodeId);
-
- for (RemoteFragmentKey fragment : fragments)
+ "Failed to start query, node left. nodeId=" + nodeId);
+
+ for (RemoteFragmentKey fragment : fragments) {
onResponse(fragment, ex);
+ }
}
}
-
- /** */
+
+ /**
+ *
+ */
private void onResponse(String nodeId, long fragmentId, Throwable error) {
onResponse(new RemoteFragmentKey(nodeId, fragmentId), error);
}
-
- /** */
+
+ /**
+ *
+ */
private void onResponse(RemoteFragmentKey fragment, Throwable error) {
QueryState state;
synchronized (this) {
waiting.remove(fragment);
state = this.state;
}
-
- if (error != null)
+
+ if (error != null) {
onError(error);
- else if (state == QueryState.CLOSING)
+ } else if (state == QueryState.CLOSING) {
tryClose();
+ }
}
-
- /** */
+
+ /**
+ *
+ */
private void onError(Throwable error) {
root.onError(error);
-
+
tryClose();
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
index 9ae82eb..8d4938f 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
@@ -17,13 +17,17 @@
package org.apache.ignite.internal.processors.query.calcite.exec;
+import static org.apache.calcite.rel.RelDistribution.Type.HASH_DISTRIBUTED;
+import static org.apache.ignite.internal.processors.query.calcite.util.TypeUtils.combinedRowType;
+import static org.apache.ignite.internal.util.ArrayUtils.asList;
+import static org.apache.ignite.internal.util.CollectionUtils.first;
+
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
-
import org.apache.calcite.rel.RelCollation;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Intersect;
@@ -98,45 +102,52 @@ import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-import static org.apache.calcite.rel.RelDistribution.Type.HASH_DISTRIBUTED;
-import static org.apache.ignite.internal.processors.query.calcite.util.TypeUtils.combinedRowType;
-import static org.apache.ignite.internal.util.ArrayUtils.asList;
-import static org.apache.ignite.internal.util.CollectionUtils.first;
-
/**
* Implements a query plan.
*/
@SuppressWarnings("TypeMayBeWeakened")
-public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
- /** */
+public class LogicalRelImplementor<RowT> implements IgniteRelVisitor<Node<RowT>> {
+ /**
+ *
+ */
public static final String CNLJ_NOT_SUPPORTED_JOIN_ASSERTION_MSG = "only INNER and LEFT join supported by IgniteCorrelatedNestedLoop";
- /** */
- private final ExecutionContext<Row> ctx;
+ /**
+ *
+ */
+ private final ExecutionContext<RowT> ctx;
- /** */
+ /**
+ *
+ */
private final AffinityService affSrvc;
- /** */
+ /**
+ *
+ */
private final ExchangeService exchangeSvc;
- /** */
+ /**
+ *
+ */
private final MailboxRegistry mailboxRegistry;
- /** */
- private final ExpressionFactory<Row> expressionFactory;
+ /**
+ *
+ */
+ private final ExpressionFactory<RowT> expressionFactory;
/**
- * @param ctx Root context.
- * @param affSrvc Affinity service.
+ * @param ctx Root context.
+ * @param affSrvc Affinity service.
* @param mailboxRegistry Mailbox registry.
- * @param exchangeSvc Exchange service.
+ * @param exchangeSvc Exchange service.
*/
public LogicalRelImplementor(
- ExecutionContext<Row> ctx,
- AffinityService affSrvc,
- MailboxRegistry mailboxRegistry,
- ExchangeService exchangeSvc
+ ExecutionContext<RowT> ctx,
+ AffinityService affSrvc,
+ MailboxRegistry mailboxRegistry,
+ ExchangeService exchangeSvc
) {
this.affSrvc = affSrvc;
this.mailboxRegistry = mailboxRegistry;
@@ -147,16 +158,17 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteSender rel) {
+ @Override
+ public Node<RowT> visit(IgniteSender rel) {
IgniteDistribution distribution = rel.distribution();
- Destination<Row> dest = distribution.destination(ctx, affSrvc, ctx.target());
+ Destination<RowT> dest = distribution.destination(ctx, affSrvc, ctx.target());
// Outbox fragment ID is used as exchange ID as well.
- Outbox<Row> outbox =
- new Outbox<>(ctx, rel.getRowType(), exchangeSvc, mailboxRegistry, rel.exchangeId(), rel.targetFragmentId(), dest);
+ Outbox<RowT> outbox =
+ new Outbox<>(ctx, rel.getRowType(), exchangeSvc, mailboxRegistry, rel.exchangeId(), rel.targetFragmentId(), dest);
- Node<Row> input = visit(rel.getInput());
+ Node<RowT> input = visit(rel.getInput());
outbox.register(input);
@@ -166,12 +178,13 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteFilter rel) {
- Predicate<Row> pred = expressionFactory.predicate(rel.getCondition(), rel.getRowType());
+ @Override
+ public Node<RowT> visit(IgniteFilter rel) {
+ Predicate<RowT> pred = expressionFactory.predicate(rel.getCondition(), rel.getRowType());
- FilterNode<Row> node = new FilterNode<>(ctx, rel.getRowType(), pred);
+ FilterNode<RowT> node = new FilterNode<>(ctx, rel.getRowType(), pred);
- Node<Row> input = visit(rel.getInput());
+ Node<RowT> input = visit(rel.getInput());
node.register(input);
@@ -179,16 +192,17 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteTrimExchange rel) {
+ @Override
+ public Node<RowT> visit(IgniteTrimExchange rel) {
assert TraitUtils.distribution(rel).getType() == HASH_DISTRIBUTED;
IgniteDistribution distr = rel.distribution();
- Destination<Row> dest = distr.destination(ctx, affSrvc, ctx.group(rel.sourceId()));
+ Destination<RowT> dest = distr.destination(ctx, affSrvc, ctx.group(rel.sourceId()));
String localNodeId = ctx.planningContext().localNodeId();
- FilterNode<Row> node = new FilterNode<>(ctx, rel.getRowType(), r -> Objects.equals(localNodeId, first(dest.targets(r))));
+ FilterNode<RowT> node = new FilterNode<>(ctx, rel.getRowType(), r -> Objects.equals(localNodeId, first(dest.targets(r))));
- Node<Row> input = visit(rel.getInput());
+ Node<RowT> input = visit(rel.getInput());
node.register(input);
@@ -196,12 +210,13 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteProject rel) {
- Function<Row, Row> prj = expressionFactory.project(rel.getProjects(), rel.getInput().getRowType());
+ @Override
+ public Node<RowT> visit(IgniteProject rel) {
+ Function<RowT, RowT> prj = expressionFactory.project(rel.getProjects(), rel.getInput().getRowType());
- ProjectNode<Row> node = new ProjectNode<>(ctx, rel.getRowType(), prj);
+ ProjectNode<RowT> node = new ProjectNode<>(ctx, rel.getRowType(), prj);
- Node<Row> input = visit(rel.getInput());
+ Node<RowT> input = visit(rel.getInput());
node.register(input);
@@ -209,19 +224,20 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteNestedLoopJoin rel) {
+ @Override
+ public Node<RowT> visit(IgniteNestedLoopJoin rel) {
RelDataType outType = rel.getRowType();
RelDataType leftType = rel.getLeft().getRowType();
RelDataType rightType = rel.getRight().getRowType();
JoinRelType joinType = rel.getJoinType();
RelDataType rowType = combinedRowType(ctx.getTypeFactory(), leftType, rightType);
- Predicate<Row> cond = expressionFactory.predicate(rel.getCondition(), rowType);
+ Predicate<RowT> cond = expressionFactory.predicate(rel.getCondition(), rowType);
- Node<Row> node = NestedLoopJoinNode.create(ctx, outType, leftType, rightType, joinType, cond);
+ Node<RowT> node = NestedLoopJoinNode.create(ctx, outType, leftType, rightType, joinType, cond);
- Node<Row> leftInput = visit(rel.getLeft());
- Node<Row> rightInput = visit(rel.getRight());
+ Node<RowT> leftInput = visit(rel.getLeft());
+ Node<RowT> rightInput = visit(rel.getRight());
node.register(asList(leftInput, rightInput));
@@ -229,22 +245,23 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteCorrelatedNestedLoopJoin rel) {
+ @Override
+ public Node<RowT> visit(IgniteCorrelatedNestedLoopJoin rel) {
RelDataType outType = rel.getRowType();
RelDataType leftType = rel.getLeft().getRowType();
RelDataType rightType = rel.getRight().getRowType();
RelDataType rowType = combinedRowType(ctx.getTypeFactory(), leftType, rightType);
- Predicate<Row> cond = expressionFactory.predicate(rel.getCondition(), rowType);
+ Predicate<RowT> cond = expressionFactory.predicate(rel.getCondition(), rowType);
assert rel.getJoinType() == JoinRelType.INNER || rel.getJoinType() == JoinRelType.LEFT
- : CNLJ_NOT_SUPPORTED_JOIN_ASSERTION_MSG;
+ : CNLJ_NOT_SUPPORTED_JOIN_ASSERTION_MSG;
- Node<Row> node = new CorrelatedNestedLoopJoinNode<>(ctx, outType, cond, rel.getVariablesSet(),
- rel.getJoinType());
+ Node<RowT> node = new CorrelatedNestedLoopJoinNode<>(ctx, outType, cond, rel.getVariablesSet(),
+ rel.getJoinType());
- Node<Row> leftInput = visit(rel.getLeft());
- Node<Row> rightInput = visit(rel.getRight());
+ Node<RowT> leftInput = visit(rel.getLeft());
+ Node<RowT> rightInput = visit(rel.getRight());
node.register(asList(leftInput, rightInput));
@@ -252,7 +269,8 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteMergeJoin rel) {
+ @Override
+ public Node<RowT> visit(IgniteMergeJoin rel) {
RelDataType outType = rel.getRowType();
RelDataType leftType = rel.getLeft().getRowType();
RelDataType rightType = rel.getRight().getRowType();
@@ -260,15 +278,15 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
int pairsCnt = rel.analyzeCondition().pairs().size();
- Comparator<Row> comp = expressionFactory.comparator(
- rel.leftCollation().getFieldCollations().subList(0, pairsCnt),
- rel.rightCollation().getFieldCollations().subList(0, pairsCnt)
+ Comparator<RowT> comp = expressionFactory.comparator(
+ rel.leftCollation().getFieldCollations().subList(0, pairsCnt),
+ rel.rightCollation().getFieldCollations().subList(0, pairsCnt)
);
- Node<Row> node = MergeJoinNode.create(ctx, outType, leftType, rightType, joinType, comp);
+ Node<RowT> node = MergeJoinNode.create(ctx, outType, leftType, rightType, joinType, comp);
- Node<Row> leftInput = visit(rel.getLeft());
- Node<Row> rightInput = visit(rel.getRight());
+ Node<RowT> leftInput = visit(rel.getLeft());
+ Node<RowT> rightInput = visit(rel.getRight());
node.register(asList(leftInput, rightInput));
@@ -276,36 +294,39 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteIndexScan rel) {
+ @Override
+ public Node<RowT> visit(IgniteIndexScan rel) {
// TODO: fix this
-// RexNode condition = rel.condition();
-// List<RexNode> projects = rel.projects();
-//
+ // RexNode condition = rel.condition();
+ // List<RexNode> projects = rel.projects();
+
IgniteTable tbl = rel.getTable().unwrap(IgniteTable.class);
IgniteTypeFactory typeFactory = ctx.getTypeFactory();
ImmutableBitSet requiredColumns = rel.requiredColumns();
-// List<RexNode> lowerCond = rel.lowerBound();
-// List<RexNode> upperCond = rel.upperBound();
-//
+ // List<RexNode> lowerCond = rel.lowerBound();
+ // List<RexNode> upperCond = rel.upperBound();
+
RelDataType rowType = tbl.getRowType(typeFactory, requiredColumns);
-// Predicate<Row> filters = condition == null ? null : expressionFactory.predicate(condition, rowType);
-// Supplier<Row> lower = lowerCond == null ? null : expressionFactory.rowSource(lowerCond);
-// Supplier<Row> upper = upperCond == null ? null : expressionFactory.rowSource(upperCond);
-// Function<Row, Row> prj = projects == null ? null : expressionFactory.project(projects, rowType);
-//
-// IgniteIndex idx = tbl.getIndex(rel.indexName());
-//
-// ColocationGroup group = ctx.group(rel.sourceId());
+ // Predicate<Row> filters = condition == null ? null : expressionFactory.predicate(condition, rowType);
+ // Supplier<Row> lower = lowerCond == null ? null : expressionFactory.rowSource(lowerCond);
+ // Supplier<Row> upper = upperCond == null ? null : expressionFactory.rowSource(upperCond);
+ // Function<Row, Row> prj = projects == null ? null : expressionFactory.project(projects, rowType);
+ //
+ // IgniteIndex idx = tbl.getIndex(rel.indexName());
+ //
+ // ColocationGroup group = ctx.group(rel.sourceId());
- Iterable<Row> rowsIter = (Iterable<Row>) List.of(new Object[]{0, 0}, new Object[]{1, 1});//idx.scan(ctx, group, filters, lower, upper, prj, requiredColumns);
+ Iterable<RowT> rowsIter = (Iterable<RowT>) List.of(new Object[]{0, 0},
+ new Object[]{1, 1}); //idx.scan(ctx, group, filters, lower, upper, prj, requiredColumns);
return new ScanNode<>(ctx, rowType, rowsIter);
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteTableScan rel) {
+ @Override
+ public Node<RowT> visit(IgniteTableScan rel) {
RexNode condition = rel.condition();
List<RexNode> projects = rel.projects();
ImmutableBitSet requiredColumns = rel.requiredColumns();
@@ -315,24 +336,25 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
RelDataType rowType = tbl.getRowType(typeFactory, requiredColumns);
- Predicate<Row> filters = condition == null ? null : expressionFactory.predicate(condition, rowType);
- Function<Row, Row> prj = projects == null ? null : expressionFactory.project(projects, rowType);
+ Predicate<RowT> filters = condition == null ? null : expressionFactory.predicate(condition, rowType);
+ Function<RowT, RowT> prj = projects == null ? null : expressionFactory.project(projects, rowType);
ColocationGroup group = ctx.group(rel.sourceId());
return new TableScanNode<>(
- ctx,
- rowType,
- tbl.descriptor(),
- group.partitions(ctx.planningContext().localNodeId()),
- filters,
- prj,
- requiredColumns
+ ctx,
+ rowType,
+ tbl.descriptor(),
+ group.partitions(ctx.planningContext().localNodeId()),
+ filters,
+ prj,
+ requiredColumns
);
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteValues rel) {
+ @Override
+ public Node<RowT> visit(IgniteValues rel) {
List<RexLiteral> vals = Commons.flat(Commons.cast(rel.getTuples()));
RelDataType rowType = rel.getRowType();
@@ -341,10 +363,11 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteUnionAll rel) {
- UnionAllNode<Row> node = new UnionAllNode<>(ctx, rel.getRowType());
+ @Override
+ public Node<RowT> visit(IgniteUnionAll rel) {
+ UnionAllNode<RowT> node = new UnionAllNode<>(ctx, rel.getRowType());
- List<Node<Row>> inputs = Commons.transform(rel.getInputs(), this::visit);
+ List<Node<RowT>> inputs = Commons.transform(rel.getInputs(), this::visit);
node.register(inputs);
@@ -352,13 +375,14 @@ public class LogicalRelImplementor<Row> implements IgniteRelVisitor<Node<Row>> {
}
/** {@inheritDoc} */
- @Override public Node<Row> visit(IgniteLimit rel) {
+ @Override
+ public Node<RowT> visit(IgniteLimit rel) {
Supplier<Integer> offset = (rel.offset() == null) ? null : expressionFactory.execute(rel.offset());
Supplier<Integer> fetch = (rel.fetch() == null) ? null : expressionFactory.execute(rel.fetch());
- LimitNode<Row> node = new LimitNode<>(ctx, rel.getRowType(), offset, fetch);
+ LimitNode<RowT> node = new LimitNode<>(ctx, rel.getRowType(), offset, fetch);
- Node<Row> input = visit(rel.getInput());
+ Node<RowT> input = visit(rel.getInput());
node.register(input);
... 196279 lines suppressed ...