This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-19497 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 22d25603af24089ec408d0a3e40e080afe396fc7 Author: amashenkov <[email protected]> AuthorDate: Tue Aug 1 23:34:56 2023 +0300 Styles. --- .../sql/engine/exec/ExecutionServiceImpl.java | 2 +- .../internal/sql/engine/rel/AbstractIndexScan.java | 3 +- .../engine/rel/logical/IgniteLogicalIndexScan.java | 5 +- .../engine/rule/logical/LogicalOrToUnionRule.java | 3 -- .../sql/engine/schema/CatalogSqlSchemaManager.java | 1 - .../sql/engine/schema/IgniteSchemaIndex.java | 13 +++++ .../sql/engine/exec/ExecutionServiceImplTest.java | 6 +-- .../engine/framework/PredefinedSchemaManager.java | 10 ++-- .../sql/engine/framework/TestBuilders.java | 56 ++++++++++++++-------- .../internal/sql/engine/framework/TestIndex.java | 40 +++++----------- .../internal/sql/engine/framework/TestNode.java | 2 +- .../internal/sql/engine/framework/TestTable.java | 19 ++++---- 12 files changed, 85 insertions(+), 75 deletions(-) diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java index e330ebd4ed..a89cf33464 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImpl.java @@ -428,7 +428,7 @@ public class ExecutionServiceImpl<RowT> implements ExecutionService, TopologyEve private DistributedQueryManager getOrCreateQueryManager(QueryStartRequest msg) { return queryManagerMap.computeIfAbsent(msg.queryId(), key -> { - BaseQueryContext ctx = createQueryContext(key, msg.schema(), (int)msg.schemaVersion(), msg.parameters()); + BaseQueryContext ctx = createQueryContext(key, msg.schema(), (int) msg.schemaVersion(), msg.parameters()); return new DistributedQueryManager(ctx); }); diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/AbstractIndexScan.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/AbstractIndexScan.java index d7e416f6ce..27617f13ba 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/AbstractIndexScan.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/AbstractIndexScan.java @@ -41,7 +41,6 @@ import org.apache.ignite.internal.sql.engine.metadata.cost.IgniteCost; import org.apache.ignite.internal.sql.engine.prepare.bounds.MultiBounds; import org.apache.ignite.internal.sql.engine.prepare.bounds.SearchBounds; import org.apache.ignite.internal.sql.engine.schema.IgniteIndex; -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type; import org.apache.ignite.internal.sql.engine.util.Commons; import org.jetbrains.annotations.Nullable; @@ -126,7 +125,7 @@ public abstract class AbstractIndexScan extends ProjectableFilterableTableScan { double cost = 0; - if (type == Type.HASH) { + if (type == IgniteIndex.Type.HASH) { boolean notExact = (searchBounds() == null) || searchBounds().stream().anyMatch(bound -> bound.type() == SearchBounds.Type.RANGE); diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/logical/IgniteLogicalIndexScan.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/logical/IgniteLogicalIndexScan.java index 25ba268f2a..3bcc96c058 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/logical/IgniteLogicalIndexScan.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rel/logical/IgniteLogicalIndexScan.java @@ -27,9 +27,8 @@ import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.mapping.Mappings; import org.apache.ignite.internal.sql.engine.prepare.bounds.SearchBounds; import org.apache.ignite.internal.sql.engine.rel.AbstractIndexScan; -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex; -import org.apache.ignite.internal.sql.engine.schema.IgniteSchemaIndex; import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type; +import org.apache.ignite.internal.sql.engine.schema.IgniteSchemaIndex; import org.apache.ignite.internal.sql.engine.schema.IgniteTable; import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory; import org.apache.ignite.internal.sql.engine.util.Commons; @@ -111,7 +110,7 @@ public class IgniteLogicalIndexScan extends AbstractIndexScan { RelTraitSet traits, RelOptTable tbl, String idxName, - IgniteIndex.Type type, + Type type, @Nullable List<RexNode> proj, @Nullable RexNode cond, @Nullable List<SearchBounds> searchBounds, diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/logical/LogicalOrToUnionRule.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/logical/LogicalOrToUnionRule.java index e7f1463ffe..26d905975d 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/logical/LogicalOrToUnionRule.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/logical/LogicalOrToUnionRule.java @@ -26,7 +26,6 @@ import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.plan.RelOptUtil; import org.apache.calcite.plan.RelRule; import org.apache.calcite.plan.RelTraitSet; -import org.apache.calcite.rel.RelCollation; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rex.RexBuilder; @@ -38,10 +37,8 @@ import org.apache.calcite.sql.SqlKind; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.util.mapping.Mappings; import org.apache.ignite.internal.sql.engine.rel.logical.IgniteLogicalTableScan; -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex; import org.apache.ignite.internal.sql.engine.schema.IgniteSchemaIndex; import org.apache.ignite.internal.sql.engine.schema.IgniteTable; -import org.apache.ignite.internal.sql.engine.trait.TraitUtils; import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory; import org.apache.ignite.internal.sql.engine.util.Commons; import org.apache.ignite.internal.util.CollectionUtils; diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManager.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManager.java index 861018ba3b..c0c7ce63cb 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManager.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManager.java @@ -50,7 +50,6 @@ import org.apache.ignite.internal.schema.DefaultValueGenerator; import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type; import org.apache.ignite.internal.sql.engine.trait.IgniteDistribution; import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaIndex.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaIndex.java index 09870c0fdc..6a237efe97 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaIndex.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaIndex.java @@ -155,6 +155,19 @@ public class IgniteSchemaIndex { } //TODO: cache rowType as it can't be changed. + /** + * Returns index row type. + * + * <p>This is a struct type whose fields describe the names and types of indexed columns.</p> + * + * <p>The implementer must use the type factory provided. This ensures that + * the type is converted into a canonical form; other equal types in the same + * query will use the same object.</p> + * + * @param typeFactory Type factory with which to create the type + * @param tableDescriptor Table descriptor. + * @return Row type. + */ public RelDataType getRowType(IgniteTypeFactory typeFactory, TableDescriptor tableDescriptor) { RelDataTypeFactory.Builder b = new RelDataTypeFactory.Builder(typeFactory); diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java index 319f27736f..4d6d1054b9 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionServiceImplTest.java @@ -34,7 +34,6 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -90,7 +89,6 @@ import org.apache.ignite.internal.sql.engine.schema.ColumnDescriptor; import org.apache.ignite.internal.sql.engine.schema.ColumnDescriptorImpl; import org.apache.ignite.internal.sql.engine.schema.DefaultValueStrategy; import org.apache.ignite.internal.sql.engine.schema.IgniteCatalogSchema; -import org.apache.ignite.internal.sql.engine.schema.IgniteSchema; import org.apache.ignite.internal.sql.engine.schema.SqlSchemaManager; import org.apache.ignite.internal.sql.engine.schema.TableDescriptorImpl; import org.apache.ignite.internal.sql.engine.sql.ParsedResult; @@ -782,7 +780,9 @@ public class ExecutionServiceImplTest { MailboxRegistry mailboxRegistry, ExchangeService exchangeService, ResolvedDependencies deps) { - HashFunctionFactory<Object[]> funcFactory = new HashFunctionFactoryImpl<>(ctx.getRootSchema().unwrap(IgniteCatalogSchema.class), ctx.rowHandler()); + IgniteCatalogSchema schema = ctx.getRootSchema().unwrap(IgniteCatalogSchema.class); + + HashFunctionFactory<Object[]> funcFactory = new HashFunctionFactoryImpl<>(schema, ctx.rowHandler()); return new LogicalRelImplementor<>(ctx, funcFactory, mailboxRegistry, exchangeService, deps) { @Override diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/PredefinedSchemaManager.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/PredefinedSchemaManager.java index 637e77058e..612a7e2ff0 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/PredefinedSchemaManager.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/PredefinedSchemaManager.java @@ -71,8 +71,8 @@ public class PredefinedSchemaManager implements SqlSchemaManager { /** {@inheritDoc} */ @Override - public SchemaPlus schema(String name, int version) { - return schema(name); + public @Nullable SchemaPlus schema(@Nullable String name, int version) { + return getSchema(name); } /** {@inheritDoc} */ @@ -83,11 +83,11 @@ public class PredefinedSchemaManager implements SqlSchemaManager { /** {@inheritDoc} */ @Override - public SchemaPlus latestSchema(@Nullable String name) { - return schema(name); + public @Nullable SchemaPlus latestSchema(@Nullable String name) { + return getSchema(name); } - private SchemaPlus schema(@Nullable String schemaName) { + private @Nullable SchemaPlus getSchema(@Nullable String schemaName) { return root.getSubSchema(schemaName == null ? DEFAULT_SCHEMA_NAME : schemaName); } } diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java index 270da0b545..69f30e2673 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestBuilders.java @@ -33,6 +33,7 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; +import org.apache.calcite.rel.RelCollation; import org.apache.calcite.schema.Table; import org.apache.ignite.internal.schema.NativeType; import org.apache.ignite.internal.sql.engine.exec.ArrayRowHandler; @@ -47,10 +48,12 @@ import org.apache.ignite.internal.sql.engine.schema.ColumnDescriptorImpl; import org.apache.ignite.internal.sql.engine.schema.DefaultValueStrategy; import org.apache.ignite.internal.sql.engine.schema.IgniteCatalogSchema; import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Collation; -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type; +import org.apache.ignite.internal.sql.engine.schema.IgniteSchemaIndex; import org.apache.ignite.internal.sql.engine.schema.IgniteTable; +import org.apache.ignite.internal.sql.engine.schema.TableDescriptor; import org.apache.ignite.internal.sql.engine.schema.TableDescriptorImpl; import org.apache.ignite.internal.sql.engine.trait.IgniteDistribution; +import org.apache.ignite.internal.sql.engine.trait.TraitUtils; import org.apache.ignite.internal.sql.engine.util.BaseQueryContext; import org.apache.ignite.network.ClusterNode; import org.jetbrains.annotations.Nullable; @@ -424,16 +427,19 @@ public class TestBuilders { throw new IllegalArgumentException("Table must contain at least one column"); } - TestTable testTable = new TestTable( - new TableDescriptorImpl(columns, distribution), + TableDescriptorImpl tableDescriptor = new TableDescriptorImpl(columns, distribution); + + Map<String, IgniteSchemaIndex> indexMap = indexBuilders.stream() + .map(idx -> idx.build(tableDescriptor)) + .collect(Collectors.toMap(TestIndex::name, Function.identity())); + + return new TestTable( + tableDescriptor, Objects.requireNonNull(name), Map.of(), - size + size, + indexMap ); - - indexBuilders.stream().map(AbstractIndexBuilderImpl::build).forEach(testTable::addIndex); - - return testTable; } /** {@inheritDoc} */ @@ -477,11 +483,13 @@ public class TestBuilders { } private TestTable build() { - TestTable testTable = new TestTable(new TableDescriptorImpl(columns, distribution), name, dataProviders, size); + TableDescriptorImpl tableDescriptor = new TableDescriptorImpl(columns, distribution); - indexBuilders.forEach(idx -> testTable.addIndex(idx.build())); + Map<String, IgniteSchemaIndex> indexMap = indexBuilders.stream() + .map(idx -> idx.build(tableDescriptor)) + .collect(Collectors.toMap(TestIndex::name, Function.identity())); - return testTable; + return new TestTable(tableDescriptor, name, dataProviders, size, indexMap); } } @@ -509,7 +517,7 @@ public class TestBuilders { /** {@inheritDoc} */ @Override - public TestIndex build() { + public TestIndex build(TableDescriptor desc) { if (name == null) { throw new IllegalArgumentException("Name is not specified"); } @@ -522,7 +530,9 @@ public class TestBuilders { throw new IllegalArgumentException("Collation must be specified for each of columns."); } - return new TestIndex(name, Type.SORTED, columns, collations, dataProviders); + RelCollation collation = TraitUtils.createCollation(columns, collations, desc); + + return TestIndex.createSorted(name, desc.distribution(), collation, dataProviders); } } @@ -549,7 +559,7 @@ public class TestBuilders { /** {@inheritDoc} */ @Override - public TestIndex build() { + public TestIndex build(TableDescriptor desc) { if (name == null) { throw new IllegalArgumentException("Name is not specified"); } @@ -560,7 +570,9 @@ public class TestBuilders { assert collations == null : "Collation is not supported."; - return new TestIndex(name, Type.HASH, columns, null, dataProviders); + RelCollation collation = TraitUtils.createCollation(columns, collations, desc); + + return TestIndex.createHash(name, desc.distribution(), collation, dataProviders); } } @@ -587,10 +599,12 @@ public class TestBuilders { } @Override - TestIndex build() { + TestIndex build(TableDescriptor desc) { assert collations.size() == columns.size(); - return TestIndex.createSorted(name, columns, collations, dataProviders); + RelCollation collation = TraitUtils.createCollation(columns, collations, desc); + + return TestIndex.createSorted(name, desc.distribution(), collation, dataProviders); } } @@ -617,10 +631,12 @@ public class TestBuilders { } @Override - TestIndex build() { + TestIndex build(TableDescriptor desc) { assert collations == null; - return TestIndex.createHash(name, columns, dataProviders); + RelCollation collation = TraitUtils.createCollation(columns, collations, desc); + + return TestIndex.createHash(name, desc.distribution(), collation, dataProviders); } } @@ -723,7 +739,7 @@ public class TestBuilders { return self(); } - abstract TestIndex build(); + abstract TestIndex build(TableDescriptor desc); } private abstract static class AbstractDataSourceBuilderImpl<ChildT> { diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestIndex.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestIndex.java index dd8449e6bb..f7678459d3 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestIndex.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestIndex.java @@ -19,64 +19,50 @@ package org.apache.ignite.internal.sql.engine.framework; import static org.apache.ignite.lang.IgniteStringFormatter.format; -import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex; -import org.jetbrains.annotations.Nullable; +import org.apache.calcite.rel.RelCollation; +import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type; +import org.apache.ignite.internal.sql.engine.schema.IgniteSchemaIndex; +import org.apache.ignite.internal.sql.engine.trait.IgniteDistribution; /** * A test index that implements all the necessary for the optimizer methods to be used to prepare a query, as well as provides access to the * data to use this index in execution-related scenarios. */ -public class TestIndex extends IgniteIndex { +public class TestIndex extends IgniteSchemaIndex { private static final String DATA_PROVIDER_NOT_CONFIGURED_MESSAGE_TEMPLATE = "DataProvider is not configured [index={}, node={}]"; /** Factory method for creating hash-index. */ - static TestIndex createHash(String name, List<String> indexedColumns, Map<String, DataProvider<?>> dataProviders) { - return new TestIndex(name, Type.HASH, indexedColumns, null, dataProviders); + static TestIndex createHash(String name, IgniteDistribution distribution, RelCollation collation, + Map<String, DataProvider<?>> dataProviders) { + return new TestIndex(name, Type.HASH, distribution, collation, dataProviders); } /** Factory method for creating sorted-index. */ - static TestIndex createSorted(String name, List<String> columns, List<Collation> collations, + static TestIndex createSorted(String name, IgniteDistribution distribution, RelCollation collation, Map<String, DataProvider<?>> dataProviders) { - return new TestIndex(name, Type.SORTED, columns, collations, dataProviders); + return new TestIndex(name, Type.SORTED, distribution, collation, dataProviders); } private static final AtomicInteger ID = new AtomicInteger(); - private final int id = ID.incrementAndGet(); - private final String name; - private final Map<String, DataProvider<?>> dataProviders; /** Constructor. */ TestIndex( String name, Type type, - List<String> columns, - @Nullable List<Collation> collations, + IgniteDistribution distribution, + RelCollation collation, Map<String, DataProvider<?>> dataProviders ) { - super(type, columns, collations); + super(ID.incrementAndGet(), name, type, distribution, collation); - this.name = name; this.dataProviders = dataProviders; } - /** Returns an id of the index. */ - @Override - public int id() { - return id; - } - - /** {@inheritDoc} */ - @Override - public String name() { - return name; - } - /** * Returns the data provider for the given node. * diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java index 031f7a8ac3..440ca7ed6d 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestNode.java @@ -146,7 +146,7 @@ public class TestNode implements LifecycleAware { @Override public Node<Object[]> visit(IgniteIndexScan rel) { TestTable tbl = rel.getTable().unwrap(TestTable.class); - TestIndex idx = (TestIndex) tbl.getIndex(rel.indexName()); + TestIndex idx = (TestIndex) tbl.indexes().get(rel.indexName()); DataProvider<Object[]> dataProvider = idx.dataProvider(ctx.localNode().name()); diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestTable.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestTable.java index 4e860d7745..87ad26f24d 100644 --- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestTable.java +++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestTable.java @@ -20,7 +20,6 @@ package org.apache.ignite.internal.sql.engine.framework; import static org.apache.ignite.lang.IgniteStringFormatter.format; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -51,9 +50,8 @@ import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory; import org.jetbrains.annotations.Nullable; /** - * A test table that implements all the necessary for the optimizer methods to be used - * to prepare a query, as well as provides access to the data to use this table in - * execution-related scenarios. + * A test table that implements all the necessary for the optimizer methods to be used to prepare a query, as well as provides access to the + * data to use this table in execution-related scenarios. */ public class TestTable implements IgniteTable { private static final String DATA_PROVIDER_NOT_CONFIGURED_MESSAGE_TEMPLATE = @@ -62,7 +60,7 @@ public class TestTable implements IgniteTable { private static final AtomicInteger ID = new AtomicInteger(); private final int id = ID.incrementAndGet(); - private final Map<String, IgniteIndex> indexes = new HashMap<>(); + private final Map<String, IgniteSchemaIndex> indexes; private final String name; private final double rowCnt; @@ -83,6 +81,7 @@ public class TestTable implements IgniteTable { this.rowCnt = rowCnt; this.colocationGroup = colocationGroup; + indexes = Map.of(); dataProviders = Collections.emptyMap(); } @@ -91,12 +90,14 @@ public class TestTable implements IgniteTable { TableDescriptor descriptor, String name, Map<String, DataProvider<?>> dataProviders, - double rowCnt + double rowCnt, + Map<String, IgniteSchemaIndex> indexMap ) { this.descriptor = descriptor; this.name = name; this.rowCnt = rowCnt; this.dataProviders = dataProviders; + indexes = indexMap; this.colocationGroup = ColocationGroup.forNodes(List.copyOf(dataProviders.keySet())); } @@ -241,19 +242,19 @@ public class TestTable implements IgniteTable { /** {@inheritDoc} */ @Override public Map<String, IgniteSchemaIndex> indexes() { - throw new UnsupportedOperationException("Not implemented yet"); + return indexes; } /** {@inheritDoc} */ @Override public void addIndex(IgniteIndex idxTbl) { - indexes.put(idxTbl.name(), idxTbl); + throw new UnsupportedOperationException("Not implemented yet"); } /** {@inheritDoc} */ @Override public IgniteIndex getIndex(String idxName) { - return indexes.get(idxName); + throw new UnsupportedOperationException("Not implemented yet"); } /** {@inheritDoc} */
