You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2023/07/28 15:17:25 UTC

[ignite-3] 01/01: Merge branch 'main' into ignite-18875

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

amashenkov pushed a commit to branch ignite-18875
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 493ef3c36da7036dec6b52d4b2e3467aa255c2f8
Merge: bbc1cc9a20 172b772470
Author: amashenkov <an...@gmail.com>
AuthorDate: Fri Jul 28 18:04:14 2023 +0300

    Merge branch 'main' into ignite-18875
    
    # Conflicts:
    #       modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverSelfTest.java
    #       modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/AbstractPlannerTest.java
    #       modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/IndexSearchBoundsPlannerTest.java
    #       modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java

 build.gradle                                       |   3 +-
 gradle/libs.versions.toml                          |   1 -
 .../internal/catalog/CatalogManagerSelfTest.java   |   3 +-
 .../internal/cli/commands/ProfileMixinTest.java    |   3 +-
 .../internal/cli/sql/SqlSchemaProviderTest.java    |   3 +-
 .../handler/JdbcQueryEventHandlerImplTest.java     |   3 +-
 modules/client/build.gradle                        |   2 -
 .../apache/ignite/client/AbstractClientTest.java   |   3 +-
 .../ignite/client/ClientAuthenticationTest.java    |   3 +-
 .../apache/ignite/client/ClientComputeTest.java    |   3 +-
 .../apache/ignite/client/ClientLoggingTest.java    |   3 +-
 .../apache/ignite/client/ClientMetricsTest.java    |   3 +-
 .../org/apache/ignite/client/HeartbeatTest.java    |   3 +-
 .../org/apache/ignite/client/MultiClusterTest.java |   3 +-
 .../org/apache/ignite/client/ReconnectTest.java    |   3 +-
 .../apache/ignite/client/RequestBalancingTest.java |   3 +-
 .../org/apache/ignite/client/RetryPolicyTest.java  |   3 +-
 .../org/apache/ignite/client/SchemaUpdateTest.java |   3 +-
 .../ignite/client/fakes/FakeInternalTable.java     |   4 +-
 .../RepeatedFinishClientTransactionTest.java       |   3 +-
 .../cluster/management/ItClusterManagerTest.java   |   2 +-
 .../cluster/management/ClusterInitializerTest.java |   3 +-
 .../management/raft/CmgRaftGroupListenerTest.java  |   3 +-
 .../topology/LogicalTopologyImplTest.java          |   3 +-
 .../topology/LogicalTopologyServiceImplTest.java   |   3 +-
 .../deployunit/DeploymentManagerImplTest.java      |   3 +-
 .../internal/compute/ComputeComponentImplTest.java |   3 +-
 .../internal/compute/IgniteComputeImplTest.java    |   3 +-
 .../compute/loader/JobContextManagerTest.java      |   3 +-
 .../ignite/internal/util/TransformingIterator.java |  12 +
 .../internal/util/RefCountedObjectPoolTest.java    |   3 -
 .../internal/marshaller/FieldAccessorTest.java     |   3 +-
 .../metastorage/impl/ItMetaStorageServiceTest.java |   3 +-
 .../metastorage/impl/CursorPublisherTest.java      |   3 +-
 .../metastorage/server/AndConditionTest.java       |   3 +-
 .../metastorage/server/WatchProcessorTest.java     |   3 +-
 .../internal/network/netty/ConnectionManager.java  |  46 ++-
 .../recovery/RecoveryClientHandshakeManager.java   |  50 ++-
 .../recovery/RecoveryServerHandshakeManager.java   |  50 ++-
 .../recovery/message/HandshakeRejectedMessage.java |   6 +
 .../scalecube/ScaleCubeClusterServiceFactory.java  |   2 +
 .../internal/network/netty/InboundDecoderTest.java |   3 +-
 .../internal/network/netty/NettyClientTest.java    |   3 +-
 .../internal/network/netty/NettyServerTest.java    |   3 +-
 .../network/netty/RecoveryHandshakeTest.java       |  20 +-
 .../network/DefaultMessagingServiceTest.java       |   3 +-
 modules/runner/build.gradle                        |  28 ++
 .../configuration/generator/DefaultsGenerator.java | 116 +++++++
 .../storage/ItRebalanceDistributedTest.java        |   3 +-
 .../marshaller/reflection/ColumnBindingTest.java   |   3 +-
 .../internal/sql/engine/exec/ExecutableTable.java  |   8 +
 .../engine/exec/ExecutableTableRegistryImpl.java   |  26 +-
 .../engine/exec/ExecutionDependencyResolver.java   |   5 +-
 .../exec/ExecutionDependencyResolverImpl.java      |   6 +-
 .../sql/engine/exec/ExecutionServiceImpl.java      |  55 +++-
 .../sql/engine/exec/ResolvedDependencies.java      |  15 +
 .../sql/engine/metadata/FragmentMapping.java       | 127 ++++++++
 .../sql/engine/metadata/IgniteFragmentMapping.java | 361 +++++++++++----------
 .../internal/sql/engine/metadata/NodeWithTerm.java |  27 ++
 .../sql/engine/prepare/AbstractMultiStepPlan.java  | 109 -------
 .../internal/sql/engine/prepare/ExecutionPlan.java |  36 --
 .../internal/sql/engine/prepare/Fragment.java      |  58 +---
 .../sql/engine/prepare/MappingQueryContext.java    |   2 +-
 .../sql/engine/prepare/MultiStepDmlPlan.java       |  54 ---
 .../internal/sql/engine/prepare/MultiStepPlan.java | 115 +++++--
 .../sql/engine/prepare/MultiStepQueryPlan.java     |  46 ---
 .../sql/engine/prepare/PrepareServiceImpl.java     |  15 +-
 .../internal/sql/engine/prepare/QueryTemplate.java | 132 --------
 .../sql/engine/schema/IgniteSchemaTable.java       |   8 -
 .../internal/sql/engine/schema/IgniteTable.java    |  10 -
 .../sql/engine/schema/IgniteTableImpl.java         |  33 +-
 .../sql/engine/schema/SqlSchemaManagerImpl.java    |   4 -
 .../internal/sql/engine/StopCalciteModuleTest.java |   2 +-
 .../sql/engine/exec/AsyncWrapperSelfTest.java      |   3 +-
 .../exec/ExecutionDependencyResolverSelfTest.java  |  72 +++-
 .../sql/engine/exec/ExecutionServiceImplTest.java  |  21 +-
 ...istry.java => TestExecutableTableRegistry.java} |  42 ++-
 .../engine/exec/exp/ExpressionFactoryImplTest.java |   3 +-
 .../engine/exec/schema/SqlSchemaManagerTest.java   |   3 +-
 .../sql/engine/framework/TestBuilders.java         |  43 ++-
 .../sql/engine/framework/TestClusterTest.java      |  10 +-
 .../internal/sql/engine/framework/TestNode.java    |  10 +-
 .../internal/sql/engine/framework/TestTable.java   |   6 +-
 .../internal/sql/engine/planner/PlannerTest.java   |  96 ++++--
 .../sql/engine/prepare/TypeCoercionTest.java       |   6 -
 .../sql/engine/util/StatementCheckerTest.java      |   3 +-
 .../ignite/internal/table/ItColocationTest.java    |   3 +-
 .../ignite/internal/table/InternalTable.java       |   2 +-
 .../distributed/storage/InternalTableImpl.java     |  25 +-
 .../internal/table/InteropOperationsTest.java      |   3 +-
 .../table/KeyValueBinaryViewOperationsTest.java    |   3 +-
 .../KeyValueViewOperationsSimpleSchemaTest.java    |   3 +-
 .../internal/table/KeyValueViewOperationsTest.java |   3 +-
 .../table/RecordBinaryViewOperationsTest.java      |   3 +-
 .../internal/table/RecordViewOperationsTest.java   |   3 +-
 .../internal/table/SchemaValidationTest.java       |   3 +-
 .../state/rocksdb/RocksDbTxStateStorageTest.java   |  25 +-
 .../storage/state/AbstractTxStateStorageTest.java  |   6 +-
 packaging/build.gradle                             |   4 +-
 packaging/db/build.gradle                          |  53 ++-
 100 files changed, 1274 insertions(+), 887 deletions(-)

diff --cc modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverSelfTest.java
index 0620046f9a,e93cb0b8d3..5a05bb9225
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverSelfTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverSelfTest.java
@@@ -28,22 -28,27 +28,28 @@@ import static org.mockito.Mockito.times
  import static org.mockito.Mockito.verify;
  import static org.mockito.Mockito.when;
  
+ import java.util.ArrayList;
  import java.util.HashMap;
+ import java.util.List;
  import java.util.Map;
 -import java.util.Objects;
  import java.util.concurrent.CompletableFuture;
  import java.util.concurrent.CompletionException;
 -import org.apache.calcite.rel.type.RelDataType;
 -import org.apache.calcite.rel.type.RelDataTypeFactory;
 -import org.apache.calcite.sql.type.SqlTypeName;
 +import java.util.function.UnaryOperator;
 +import org.apache.ignite.internal.schema.NativeTypes;
 +import org.apache.ignite.internal.sql.engine.framework.TestBuilders;
 +import org.apache.ignite.internal.sql.engine.framework.TestBuilders.TableBuilder;
 +import org.apache.ignite.internal.sql.engine.framework.TestTable;
+ import org.apache.ignite.internal.sql.engine.metadata.ColocationGroup;
  import org.apache.ignite.internal.sql.engine.planner.AbstractPlannerTest;
  import org.apache.ignite.internal.sql.engine.rel.IgniteRel;
 -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex;
  import org.apache.ignite.internal.sql.engine.schema.IgniteSchema;
  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.trait.IgniteDistributions;
+ import org.apache.ignite.internal.utils.PrimaryReplica;
+ import org.apache.ignite.network.ClusterNode;
+ import org.apache.ignite.network.NetworkAddress;
 +import org.jetbrains.annotations.Nullable;
  import org.junit.jupiter.api.Test;
  import org.junit.jupiter.api.extension.ExtendWith;
  import org.mockito.Mock;
@@@ -187,14 -205,72 +193,60 @@@ public class ExecutionDependencyResolve
          assertSame(err, wrapped.getCause());
      }
  
+     /** Fetch colocation group succeeds. */
+     @Test
+     public void testFetchColocationGroup() {
 -        Tester tester = new Tester();
++        TestTable table = createTestTable("TEST1");
++
++        int t1Id = table.id();
+ 
 -        RelDataType tableType = new RelDataTypeFactory.Builder(TYPE_FACTORY)
 -                .add("ID", SqlTypeName.INTEGER)
 -                .build();
++        Tester tester = new Tester(createSchema(table));
+ 
 -        int t1Id = tester.addTable("TEST1", tableType);
+         ColocationGroup g1 = ColocationGroup.forNodes(List.of("n1"));
+ 
+         tester.setColocationGroup(t1Id, CompletableFuture.completedFuture(g1));
+         tester.setDependencies(t1Id, table1, update1);
+ 
+         ResolvedDependencies deps = tester.resolveDependencies("SELECT * FROM test1").join();
+ 
+         ColocationGroup actual = deps.fetchColocationGroup(t1Id).join();
+         assertSame(g1, actual);
+     }
+ 
+     /** Fetch colocation group propagates an error. */
+     @Test
+     public void testFetchColocationGroupErrorIsReturned() {
 -        Tester tester = new Tester();
++        TestTable table = createTestTable("TEST1");
+ 
 -        RelDataType tableType = new RelDataTypeFactory.Builder(TYPE_FACTORY)
 -                .add("ID", SqlTypeName.INTEGER)
 -                .build();
++        int t1Id = table.id();
+ 
 -        int t1Id = tester.addTable("TEST1", tableType);
++        Tester tester = new Tester(createSchema(table));
+ 
+         ClusterNode node1 = new ClusterNode("1", "node1", new NetworkAddress("host", 1234));
+ 
+         List<PrimaryReplica> rs = new ArrayList<>();
+         rs.add(new PrimaryReplica(node1, 5));
+ 
+         IllegalStateException error = new IllegalStateException("Not available");
+         tester.setColocationGroup(t1Id, CompletableFuture.failedFuture(error));
+         tester.setDependencies(t1Id, table1, update1);
+ 
+         ResolvedDependencies deps = tester.resolveDependencies("SELECT * FROM test1").join();
+ 
+         CompletionException err = assertThrows(CompletionException.class, () -> deps.fetchColocationGroup(t1Id).join());
+         assertSame(error, err.getCause());
+     }
+ 
      private class Tester {
  
 -        final IgniteSchema igniteSchema = new IgniteSchema("PUBLIC");
 +        final IgniteSchema igniteSchema;
  
          final Map<Integer, TestExecutableTable> deps = new HashMap<>();
  
+         final Map<Integer, CompletableFuture<ColocationGroup>> colocationGroups = new HashMap<>();
+ 
 -        int addTable(String name, RelDataType rowType) {
 -            IgniteTable table = createTable(igniteSchema, name, rowType, IgniteDistributions.single());
 -            igniteSchema.addTable(table);
 -
 -            return table.id();
 -        }
 -
 -        void addIndex(String tableName, IgniteIndex index) {
 -            IgniteTable table = (IgniteTable) igniteSchema.getTable(tableName);
 -            Objects.requireNonNull(table, "No table");
 -            table.addIndex(index);
 +        Tester(IgniteSchema schema) {
 +            igniteSchema = schema;
          }
  
          void setDependencies(int tableId, ScannableTable table, UpdatableTable updates) {
@@@ -262,23 -347,9 +324,27 @@@
              return updates;
          }
  
+         @Override
+         public CompletableFuture<ColocationGroup> fetchColocationGroup() {
+             return colocationGroup;
+         }
      }
 +
 +    private static TestTable createTestTable(String tableName) {
 +        return createTestTable(tableName, null);
 +    }
 +
 +    private static TestTable createTestTable(String tableName, @Nullable UnaryOperator<TableBuilder> changer) {
 +        TableBuilder testTable = TestBuilders.table()
 +                .name(tableName)
 +                .addColumn("ID", NativeTypes.INT32)
 +                .addColumn("VAL", NativeTypes.STRING)
 +                .distribution(IgniteDistributions.single());
 +
 +        if (changer != null) {
 +            changer.apply(testTable);
 +        }
 +
 +        return testTable.build();
 +    }
  }
diff --cc modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/framework/TestTable.java
index 434a776ef1,ec46c53ae6..e267965264
--- 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
@@@ -187,12 -225,6 +186,11 @@@ public class TestTable implements Ignit
          throw new AssertionError();
      }
  
-     /** {@inheritDoc} */
-     @Override
-     public ColocationGroup colocationGroup(MappingQueryContext ctx) {
++    /** Returns colocation group for table. */
++    public ColocationGroup colocationGroup() {
 +        return colocationGroup;
 +    }
 +
      /** {@inheritDoc} */
      @Override
      public IgniteDistribution distribution() {
diff --cc modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
index 3dd217976e,774436963a..1ee9955516
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/PlannerTest.java
@@@ -26,22 -26,29 +26,28 @@@ import static org.junit.jupiter.api.Ass
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collections;
+ import java.util.HashMap;
  import java.util.List;
+ import java.util.Map;
 -import java.util.concurrent.atomic.AtomicInteger;
  import java.util.function.Predicate;
 +import java.util.function.UnaryOperator;
  import org.apache.calcite.plan.RelOptUtil;
  import org.apache.calcite.plan.RelTraitSet;
 -import org.apache.calcite.rel.RelCollations;
  import org.apache.calcite.rel.RelNode;
  import org.apache.calcite.rel.RelRoot;
 -import org.apache.calcite.rel.RelVisitor;
  import org.apache.calcite.rel.core.TableScan;
  import org.apache.calcite.rel.hint.HintStrategyTable;
 -import org.apache.calcite.rel.type.RelDataType;
 -import org.apache.calcite.rel.type.RelDataTypeFactory;
  import org.apache.calcite.schema.SchemaPlus;
  import org.apache.calcite.sql.SqlNode;
 -import org.apache.calcite.util.ImmutableIntList;
  import org.apache.calcite.util.Util;
 +import org.apache.ignite.internal.schema.NativeTypes;
+ import org.apache.ignite.internal.sql.api.ResultSetMetadataImpl;
+ import org.apache.ignite.internal.sql.engine.SqlQueryType;
 +import org.apache.ignite.internal.sql.engine.framework.TestBuilders;
 +import org.apache.ignite.internal.sql.engine.framework.TestBuilders.TableBuilder;
++import org.apache.ignite.internal.sql.engine.framework.TestTable;
  import org.apache.ignite.internal.sql.engine.metadata.ColocationGroup;
+ import org.apache.ignite.internal.sql.engine.metadata.FragmentMapping;
  import org.apache.ignite.internal.sql.engine.metadata.MappingService;
  import org.apache.ignite.internal.sql.engine.metadata.NodeWithTerm;
  import org.apache.ignite.internal.sql.engine.metadata.cost.IgniteCostFactory;
@@@ -54,9 -62,11 +61,10 @@@ import org.apache.ignite.internal.sql.e
  import org.apache.ignite.internal.sql.engine.prepare.Splitter;
  import org.apache.ignite.internal.sql.engine.rel.IgniteConvention;
  import org.apache.ignite.internal.sql.engine.rel.IgniteFilter;
+ import org.apache.ignite.internal.sql.engine.rel.IgniteIndexScan;
  import org.apache.ignite.internal.sql.engine.rel.IgniteRel;
+ import org.apache.ignite.internal.sql.engine.rel.IgniteTableModify;
  import org.apache.ignite.internal.sql.engine.rel.IgniteTableScan;
 -import org.apache.ignite.internal.sql.engine.schema.IgniteIndex;
  import org.apache.ignite.internal.sql.engine.schema.IgniteSchema;
  import org.apache.ignite.internal.sql.engine.trait.IgniteDistribution;
  import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
@@@ -556,57 -916,62 +553,92 @@@ public class PlannerTest extends Abstra
          return new MappingQueryContext(locNodeName, mappingService);
      }
  
 -    abstract static class TestTable extends AbstractPlannerTest.TestTable {
 -
 -        private ColocationGroup colocationGroup;
 -
 -        TestTable(RelDataType type, String name) {
 -            super(type, name);
 -        }
 -
 -        TestTable(String name, RelDataType type, double rowCnt) {
 -            super(name, type, rowCnt);
 -        }
 -
 -        public ColocationGroup colocationGroup() {
 -            throw new IllegalStateException("Colocation group has not been specified");
 -        }
 -
 -        ColocationGroup getColocationGroup() {
 -            if (colocationGroup == null) {
 -                this.colocationGroup = colocationGroup();
 -            }
 -            return colocationGroup;
 -        }
 -    }
 -
+     private static final class CollectColocationGroups extends IgniteRelShuttle {
+ 
+         private final Map<Integer, ColocationGroup> colocationGroups = new HashMap<>();
+ 
+         @Override
+         public IgniteRel visit(IgniteTableModify rel) {
+             TestTable testTable = rel.getTable().unwrapOrThrow(TestTable.class);
 -            ColocationGroup group = testTable.getColocationGroup();
++            ColocationGroup group = testTable.colocationGroup();
+ 
+             colocationGroups.put(testTable.id(), group);
+ 
+             return super.visit(rel);
+         }
+ 
+         @Override
+         public IgniteRel visit(IgniteIndexScan rel) {
+             TestTable testTable = rel.getTable().unwrapOrThrow(TestTable.class);
 -            ColocationGroup group = testTable.getColocationGroup();
++            ColocationGroup group = testTable.colocationGroup();
+ 
+             colocationGroups.put(testTable.id(), group);
+ 
+             return super.visit(rel);
+         }
+ 
+         @Override
+         public IgniteRel visit(IgniteTableScan rel) {
+             TestTable testTable = rel.getTable().unwrapOrThrow(TestTable.class);
 -            ColocationGroup group = testTable.getColocationGroup();
++            ColocationGroup group = testTable.colocationGroup();
+ 
+             colocationGroups.put(testTable.id(), group);
+ 
+             return super.visit(rel);
+         }
+     }
++
 +    private static PlanningContext plannerContext(SchemaPlus schema, String sql, Object... params) {
 +        return PlanningContext.builder()
 +                .parentContext(BaseQueryContext.builder()
 +                        .logger(log)
 +                        .parameters(params)
 +                        .frameworkConfig(newConfigBuilder(FRAMEWORK_CONFIG)
 +                                .defaultSchema(schema)
 +                                .build())
 +                        .build())
 +                .query(sql)
 +                .build();
 +    }
 +
 +    private static UnaryOperator<TableBuilder> employerTable(IgniteDistribution distribution) {
 +        return tableBuilder -> tableBuilder
 +                .name("EMP")
 +                .addColumn("ID", NativeTypes.INT32)
 +                .addColumn("NAME", NativeTypes.STRING)
 +                .addColumn("DEPTNO", NativeTypes.INT32)
 +                .size(100)
 +                .distribution(distribution);
 +    }
 +
 +    private static UnaryOperator<TableBuilder> departmentTable(IgniteDistribution distribution) {
 +        return tableBuilder -> tableBuilder
 +                .name("DEPT")
 +                .addColumn("DEPTNO", NativeTypes.INT32)
 +                .addColumn("NAME", NativeTypes.STRING)
 +                .size(100)
 +                .distribution(distribution);
 +    }
 +
 +    private static UnaryOperator<TableBuilder> developerTable(ColocationGroup colocationGroup, IgniteDistribution distribution) {
 +        return tableBuilder -> tableBuilder
 +                .name("DEVELOPER")
 +                .addColumn("ID", NativeTypes.INT32)
 +                .addColumn("NAME", NativeTypes.STRING)
 +                .addColumn("PROJECTID", NativeTypes.INT32)
 +                .size(100)
 +                .distribution(distribution)
 +                .colocationGroup(colocationGroup);
 +    }
 +
 +    private static UnaryOperator<TableBuilder> projectsTable(ColocationGroup colocationGroup, IgniteDistribution distribution) {
 +        return tableBuilder -> tableBuilder
 +                .name("PROJECT")
 +                .addColumn("ID", NativeTypes.INT32)
 +                .addColumn("NAME", NativeTypes.STRING)
 +                .addColumn("VER", NativeTypes.INT32)
 +                .size(100)
 +                .distribution(distribution)
 +                .colocationGroup(colocationGroup);
 +    }
  }
diff --cc modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/TypeCoercionTest.java
index b009376046,27dd399b4e..1d69733523
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/TypeCoercionTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/TypeCoercionTest.java
@@@ -55,17 -45,8 +55,16 @@@ import org.apache.calcite.sql.parser.Sq
  import org.apache.calcite.sql.parser.SqlParserPos;
  import org.apache.calcite.sql.type.SqlTypeName;
  import org.apache.calcite.sql.validate.SqlValidator;
 +import org.apache.calcite.util.ImmutableBitSet;
 +import org.apache.ignite.internal.sql.engine.framework.TestStatistic;
- import org.apache.ignite.internal.sql.engine.metadata.ColocationGroup;
  import org.apache.ignite.internal.sql.engine.planner.AbstractPlannerTest;
 +import org.apache.ignite.internal.sql.engine.rel.logical.IgniteLogicalIndexScan;
 +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.IgniteSchema;
 +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.trait.IgniteDistribution;
  import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
  import org.apache.ignite.internal.sql.engine.type.IgniteCustomType;
  import org.apache.ignite.internal.sql.engine.type.IgniteCustomTypeCoercionRules;
@@@ -582,135 -569,4 +581,130 @@@ public class TypeCoercionTest extends A
      private static RelDataType nullable(RelDataType relDataType) {
          return TYPE_FACTORY.createTypeWithNullability(relDataType, true);
      }
 +
 +    //TODO https://issues.apache.org/jira/browse/IGNITE-15200 Replace with TestTable from test framework.
 +    // This class allows to verify some negative type-coercion tests, and can be dropped when INTERVAL type will be supported natively.
 +
 +    /** Test table. */
 +    @Deprecated
 +    private static class TestTable implements IgniteTable {
 +        private final String name;
 +
 +        private final RelProtoDataType protoType;
 +
 +        private final int id = nextTableId();
 +        private final IgniteDistribution distribution;
 +
 +        /** Constructor. */
 +        private TestTable(String name, RelDataType type, IgniteDistribution distribution) {
 +            protoType = RelDataTypeImpl.proto(type);
 +            this.name = name;
 +            this.distribution = distribution;
 +        }
 +
 +        @Override
 +        public int id() {
 +            return id;
 +        }
 +
 +        @Override
 +        public int version() {
 +            return 0;
 +        }
 +
 +        @Override
 +        public IgniteLogicalTableScan toRel(
 +                RelOptCluster cluster,
 +                RelOptTable relOptTbl,
 +                List<RelHint> hints,
 +                @Nullable List<RexNode> proj,
 +                @Nullable RexNode cond,
 +                @Nullable ImmutableBitSet requiredColumns
 +        ) {
 +            return IgniteLogicalTableScan.create(cluster, cluster.traitSet(), hints, relOptTbl, proj, cond, requiredColumns);
 +        }
 +
 +        @Override
 +        public IgniteLogicalIndexScan toRel(
 +                RelOptCluster cluster,
 +                RelOptTable relOptTbl,
 +                String idxName,
 +                @Nullable List<RexNode> proj,
 +                @Nullable RexNode cond,
 +                @Nullable ImmutableBitSet requiredColumns
 +        ) {
 +            return IgniteLogicalIndexScan.create(cluster, cluster.traitSet(), relOptTbl, idxName, proj, cond, requiredColumns);
 +        }
 +
 +        /** {@inheritDoc} */
 +        @Override
 +        public RelDataType getRowType(RelDataTypeFactory typeFactory, ImmutableBitSet bitSet) {
 +            RelDataType rowType = protoType.apply(typeFactory);
 +
 +            if (bitSet != null) {
 +                RelDataTypeFactory.Builder b = new RelDataTypeFactory.Builder(typeFactory);
 +                for (int i = bitSet.nextSetBit(0); i != -1; i = bitSet.nextSetBit(i + 1)) {
 +                    b.add(rowType.getFieldList().get(i));
 +                }
 +                rowType = b.build();
 +            }
 +
 +            return rowType;
 +        }
 +
 +        @Override
 +        public Statistic getStatistic() {
 +            return new TestStatistic(100.0);
 +        }
 +
 +        @Override
 +        public Schema.TableType getJdbcTableType() {
 +            throw new AssertionError();
 +        }
 +
 +        @Override
 +        public boolean isRolledUp(String col) {
 +            return false;
 +        }
 +
 +        @Override
 +        public boolean rolledUpColumnValidInsideAgg(String column, SqlCall call, SqlNode parent, CalciteConnectionConfig config) {
 +            throw new AssertionError();
 +        }
 +
-         @Override
-         public ColocationGroup colocationGroup(MappingQueryContext ctx) {
-             throw new AssertionError();
-         }
- 
 +        @Override
 +        public IgniteDistribution distribution() {
 +            return distribution;
 +        }
 +
 +        @Override
 +        public TableDescriptor descriptor() {
 +            throw new AssertionError();
 +        }
 +
 +        @Override
 +        public Map<String, IgniteIndex> indexes() {
 +            return Map.of();
 +        }
 +
 +        @Override
 +        public void addIndex(IgniteIndex idxTbl) {
 +            throw new AssertionError();
 +        }
 +
 +        @Override
 +        public IgniteIndex getIndex(String idxName) {
 +            throw new AssertionError();
 +        }
 +
 +        @Override
 +        public void removeIndex(String idxName) {
 +            throw new AssertionError();
 +        }
 +
 +        @Override
 +        public String name() {
 +            return name;
 +        }
 +    }
  }