You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ko...@apache.org on 2021/11/15 18:33:18 UTC

[ignite-3] branch main updated: IGNITE-15846 Provide Interface for external table (#443)

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

korlov 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 ff077ba  IGNITE-15846 Provide Interface for external table (#443)
ff077ba is described below

commit ff077ba37e97d70caebe8a1dd0309d08feab3bdd
Author: Vladimir Ermakov <85...@users.noreply.github.com>
AuthorDate: Tue Nov 16 00:01:03 2021 +0530

    IGNITE-15846 Provide Interface for external table (#443)
---
 .../query/calcite/exec/PlannerHelper.java          |   7 +-
 .../calcite/metadata/IgniteMdFragmentMapping.java  |   6 +-
 .../query/calcite/prepare/PlannerHelper.java       |   7 +-
 .../rel/logical/IgniteLogicalIndexScan.java        |   4 +-
 .../calcite/rule/logical/ExposeIndexRule.java      |   6 +-
 .../query/calcite/schema/IgniteIndex.java          |   6 +-
 .../query/calcite/schema/IgniteSchema.java         |   4 +-
 .../query/calcite/schema/IgniteTable.java          | 117 ++++++++++-----------
 .../query/calcite/schema/IgniteTableImpl.java      |   2 +-
 .../{IgniteTable.java => InternalIgniteTable.java} |  52 +--------
 .../query/calcite/planner/AbstractPlannerTest.java |   4 +-
 11 files changed, 82 insertions(+), 133 deletions(-)

diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/PlannerHelper.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/PlannerHelper.java
index 1fbde54..5db6c2c 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/PlannerHelper.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/PlannerHelper.java
@@ -43,7 +43,7 @@ import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableModify
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableScan;
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableSpool;
 import org.apache.ignite.internal.processors.query.calcite.schema.ColumnDescriptor;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
 import org.apache.ignite.internal.processors.query.calcite.util.Commons;
 import org.apache.ignite.internal.processors.query.calcite.util.HintUtils;
@@ -201,9 +201,10 @@ public class PlannerHelper {
          * @return The input rel.
          */
         private IgniteRel processScan(TableScan scan) {
-            IgniteTable tbl = modifyNode != null ? modifyNode.getTable().unwrap(IgniteTable.class) : null;
+            InternalIgniteTable tbl = modifyNode != null ? modifyNode.getTable().unwrap(
+                    InternalIgniteTable.class) : null;
 
-            if (tbl == null || scan.getTable().unwrap(IgniteTable.class) != tbl) {
+            if (tbl == null || scan.getTable().unwrap(InternalIgniteTable.class) != tbl) {
                 return (IgniteRel) scan;
             }
 
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/IgniteMdFragmentMapping.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/IgniteMdFragmentMapping.java
index dc7e383..a9ccf8d 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/IgniteMdFragmentMapping.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/metadata/IgniteMdFragmentMapping.java
@@ -38,7 +38,7 @@ import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableFuncti
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableScan;
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTrimExchange;
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteValues;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
 import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
 import org.apache.ignite.internal.processors.query.calcite.util.Commons;
@@ -186,7 +186,7 @@ public class IgniteMdFragmentMapping implements MetadataHandler<FragmentMappingM
      */
     public FragmentMapping fragmentMapping(IgniteIndexScan rel, RelMetadataQuery mq) {
         return FragmentMapping.create(rel.sourceId(),
-                rel.getTable().unwrap(IgniteTable.class).colocationGroup(Commons.context(rel)));
+                rel.getTable().unwrap(InternalIgniteTable.class).colocationGroup(Commons.context(rel)));
     }
 
     /**
@@ -194,7 +194,7 @@ public class IgniteMdFragmentMapping implements MetadataHandler<FragmentMappingM
      */
     public FragmentMapping fragmentMapping(IgniteTableScan rel, RelMetadataQuery mq) {
         return FragmentMapping.create(rel.sourceId(),
-                rel.getTable().unwrap(IgniteTable.class).colocationGroup(Commons.context(rel)));
+                rel.getTable().unwrap(InternalIgniteTable.class).colocationGroup(Commons.context(rel)));
     }
 
     /**
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
index fb52adf..1629597 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
@@ -40,7 +40,7 @@ import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableModify
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableScan;
 import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableSpool;
 import org.apache.ignite.internal.processors.query.calcite.schema.ColumnDescriptor;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
 import org.apache.ignite.internal.processors.query.calcite.util.Commons;
 import org.apache.ignite.internal.processors.query.calcite.util.HintUtils;
@@ -202,9 +202,10 @@ public class PlannerHelper {
          * @return The input rel.
          */
         private IgniteRel processScan(TableScan scan) {
-            IgniteTable tbl = modifyNode != null ? modifyNode.getTable().unwrap(IgniteTable.class) : null;
+            InternalIgniteTable tbl = modifyNode != null ? modifyNode.getTable().unwrap(
+                    InternalIgniteTable.class) : null;
 
-            if (tbl == null || scan.getTable().unwrap(IgniteTable.class) != tbl) {
+            if (tbl == null || scan.getTable().unwrap(InternalIgniteTable.class) != tbl) {
                 return (IgniteRel) scan;
             }
 
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalIndexScan.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalIndexScan.java
index 189f309..d2981ff 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalIndexScan.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/logical/IgniteLogicalIndexScan.java
@@ -27,7 +27,7 @@ import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.calcite.util.mapping.Mappings;
 import org.apache.ignite.internal.processors.query.calcite.rel.AbstractIndexScan;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 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;
@@ -50,7 +50,7 @@ public class IgniteLogicalIndexScan extends AbstractIndexScan {
             @Nullable RexNode cond,
             @Nullable ImmutableBitSet requiredColumns
     ) {
-        IgniteTable tbl = table.unwrap(IgniteTable.class);
+        InternalIgniteTable tbl = table.unwrap(InternalIgniteTable.class);
         IgniteTypeFactory typeFactory = Commons.typeFactory(cluster);
         RelDataType rowType = tbl.getRowType(typeFactory, requiredColumns);
         RelCollation collation = tbl.getIndex(idxName).collation();
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/ExposeIndexRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/ExposeIndexRule.java
index bc29a1e..b7a534c 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/ExposeIndexRule.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/ExposeIndexRule.java
@@ -28,7 +28,7 @@ import org.apache.calcite.plan.RelOptTable;
 import org.apache.calcite.rel.RelNode;
 import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalIndexScan;
 import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalTableScan;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 
 /**
  * ExposeIndexRule.
@@ -43,7 +43,7 @@ public class ExposeIndexRule extends RelOptRule {
 
     private static boolean preMatch(IgniteLogicalTableScan scan) {
         return scan.simple() // was not modified by ProjectScanMergeRule or FilterScanMergeRule
-                && !scan.getTable().unwrap(IgniteTable.class).indexes().isEmpty(); // has indexes to expose
+                && !scan.getTable().unwrap(InternalIgniteTable.class).indexes().isEmpty(); // has indexes to expose
     }
 
     /** {@inheritDoc} */
@@ -53,7 +53,7 @@ public class ExposeIndexRule extends RelOptRule {
         RelOptCluster cluster = scan.getCluster();
 
         RelOptTable optTable = scan.getTable();
-        IgniteTable igniteTable = optTable.unwrap(IgniteTable.class);
+        InternalIgniteTable igniteTable = optTable.unwrap(InternalIgniteTable.class);
 
         List<IgniteLogicalIndexScan> indexes = igniteTable.indexes().keySet().stream()
                 .map(idxName -> igniteTable.toRel(cluster, optTable, idxName))
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteIndex.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteIndex.java
index 46edba9..805ad62 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteIndex.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteIndex.java
@@ -28,13 +28,13 @@ public class IgniteIndex {
     private final String idxName;
 
     //    private final GridIndex<H2Row> idx;
-    private final IgniteTable tbl;
+    private final InternalIgniteTable tbl;
 
     /**
      * Constructor.
      * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
      */
-    public IgniteIndex(RelCollation collation, String name, IgniteTable tbl) {
+    public IgniteIndex(RelCollation collation, String name, InternalIgniteTable tbl) {
         this.collation = collation;
         idxName = name;
         this.tbl = tbl;
@@ -48,7 +48,7 @@ public class IgniteIndex {
         return idxName;
     }
 
-    public IgniteTable table() {
+    public InternalIgniteTable table() {
         return tbl;
     }
 }
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
index af3e9b0..68dbc80 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java
@@ -29,7 +29,7 @@ import org.apache.calcite.schema.impl.AbstractSchema;
 public class IgniteSchema extends AbstractSchema {
     private final String schemaName;
 
-    private final Map<String, IgniteTable> tblMap = new ConcurrentHashMap<>();
+    private final Map<String, InternalIgniteTable> tblMap = new ConcurrentHashMap<>();
 
     /**
      * Creates a Schema.
@@ -61,7 +61,7 @@ public class IgniteSchema extends AbstractSchema {
      * @param tblName Table name.
      * @param tbl Table.
      */
-    public void addTable(String tblName, IgniteTable tbl) {
+    public void addTable(String tblName, InternalIgniteTable tbl) {
         tblMap.put(tblName, tbl);
     }
 
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
index f2958b5..f5daf02 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
@@ -17,49 +17,55 @@
 
 package org.apache.ignite.internal.processors.query.calcite.schema;
 
-import java.util.Map;
+import java.util.List;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.schema.Schema;
+import org.apache.calcite.schema.Statistic;
 import org.apache.calcite.schema.TranslatableTable;
+import org.apache.calcite.schema.Wrapper;
+import org.apache.calcite.sql.SqlCall;
+import org.apache.calcite.sql.SqlNode;
 import org.apache.calcite.util.ImmutableBitSet;
-import org.apache.ignite.internal.processors.query.calcite.metadata.ColocationGroup;
-import org.apache.ignite.internal.processors.query.calcite.prepare.PlanningContext;
-import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalIndexScan;
-import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalTableScan;
 import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistribution;
+import org.checkerframework.checker.nullness.qual.Nullable;
 
 /**
  * Ignite table.
  */
-public interface IgniteTable extends TranslatableTable {
+public interface IgniteTable extends TranslatableTable, Wrapper {
     /**
-     * Get table description.
+     * Get table descriptor.
+     *
+     * @return Table descriptor.
      */
     TableDescriptor descriptor();
-
+    
     /** {@inheritDoc} */
     @Override
     default RelDataType getRowType(RelDataTypeFactory typeFactory) {
         return getRowType(typeFactory, null);
     }
-
+    
     /**
-     * Returns new type according {@code usedClumns} param.
+     * Returns new type according {@code requiredColumns} param.
      *
      * @param typeFactory     Factory.
      * @param requiredColumns Used columns enumeration.
      */
     RelDataType getRowType(RelDataTypeFactory typeFactory, ImmutableBitSet requiredColumns);
-
+    
     /** {@inheritDoc} */
     @Override
     default TableScan toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) {
         return toRel(context.getCluster(), relOptTable);
     }
-
+    
     /**
      * Converts table into relational expression.
      *
@@ -67,59 +73,48 @@ public interface IgniteTable extends TranslatableTable {
      * @param relOptTbl Table.
      * @return Table relational expression.
      */
-    IgniteLogicalTableScan toRel(RelOptCluster cluster, RelOptTable relOptTbl);
-
-    /**
-     * Converts table into relational expression.
-     *
-     * @param cluster   Custer.
-     * @param relOptTbl Table.
-     * @param idxName   Index name.
-     * @return Table relational expression.
-     */
-    IgniteLogicalIndexScan toRel(RelOptCluster cluster, RelOptTable relOptTbl, String idxName);
-
-    /**
-     * Returns nodes mapping.
-     *
-     * @param ctx Planning context.
-     * @return Nodes mapping.
-     */
-    ColocationGroup colocationGroup(PlanningContext ctx);
-
+    TableScan toRel(RelOptCluster cluster, RelOptTable relOptTbl);
+    
     /**
      * Returns table distribution.
      *
      * @return Table distribution.
      */
     IgniteDistribution distribution();
-
-    /**
-     * Returns all table indexes.
-     *
-     * @return Indexes for the current table.
-     */
-    Map<String, IgniteIndex> indexes();
-
-    /**
-     * Adds index to table.
-     *
-     * @param idxTbl Index table.
-     */
-    void addIndex(IgniteIndex idxTbl);
-
-    /**
-     * Returns index by its name.
-     *
-     * @param idxName Index name.
-     * @return Index.
-     */
-    IgniteIndex getIndex(String idxName);
-
-    /**
-     * Returns index name.
-     *
-     * @param idxName Index name.
-     */
-    void removeIndex(String idxName);
+    
+    /** {@inheritDoc} */
+    default Schema.TableType getJdbcTableType() {
+        return Schema.TableType.TABLE;
+    }
+    
+    /** {@inheritDoc} */
+    default boolean isRolledUp(String column) {
+        return false;
+    }
+    
+    /** {@inheritDoc} */
+    default boolean rolledUpColumnValidInsideAgg(String column, SqlCall call,
+            @Nullable SqlNode parent,
+            @Nullable CalciteConnectionConfig config) {
+        return false;
+    }
+    
+    /** {@inheritDoc} */
+    default Statistic getStatistic() {
+        return new Statistic() {
+            @Override
+            public List<RelCollation> getCollations() {
+                return List.of();
+            }
+        };
+    }
+    
+    /** {@inheritDoc} */
+    @Override
+    default <C> @Nullable C unwrap(Class<C> cls) {
+        if (cls.isInstance(this)) {
+            return cls.cast(this);
+        }
+        return null;
+    }
 }
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTableImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTableImpl.java
index 2198bc9..be66f59 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTableImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTableImpl.java
@@ -43,7 +43,7 @@ import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactor
 /**
  * Ignite table implementation.
  */
-public class IgniteTableImpl extends AbstractTable implements IgniteTable {
+public class IgniteTableImpl extends AbstractTable implements InternalIgniteTable {
     private final TableDescriptor desc;
 
     private final Statistic statistic;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/InternalIgniteTable.java
similarity index 58%
copy from modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
copy to modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/InternalIgniteTable.java
index f2958b5..3145285 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteTable.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/InternalIgniteTable.java
@@ -20,55 +20,14 @@ package org.apache.ignite.internal.processors.query.calcite.schema;
 import java.util.Map;
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelOptTable;
-import org.apache.calcite.rel.core.TableScan;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.schema.TranslatableTable;
-import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.ignite.internal.processors.query.calcite.metadata.ColocationGroup;
 import org.apache.ignite.internal.processors.query.calcite.prepare.PlanningContext;
 import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalIndexScan;
-import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLogicalTableScan;
-import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistribution;
 
 /**
- * Ignite table.
+ * Ignite internal table.
  */
-public interface IgniteTable extends TranslatableTable {
-    /**
-     * Get table description.
-     */
-    TableDescriptor descriptor();
-
-    /** {@inheritDoc} */
-    @Override
-    default RelDataType getRowType(RelDataTypeFactory typeFactory) {
-        return getRowType(typeFactory, null);
-    }
-
-    /**
-     * Returns new type according {@code usedClumns} param.
-     *
-     * @param typeFactory     Factory.
-     * @param requiredColumns Used columns enumeration.
-     */
-    RelDataType getRowType(RelDataTypeFactory typeFactory, ImmutableBitSet requiredColumns);
-
-    /** {@inheritDoc} */
-    @Override
-    default TableScan toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) {
-        return toRel(context.getCluster(), relOptTable);
-    }
-
-    /**
-     * Converts table into relational expression.
-     *
-     * @param cluster   Custer.
-     * @param relOptTbl Table.
-     * @return Table relational expression.
-     */
-    IgniteLogicalTableScan toRel(RelOptCluster cluster, RelOptTable relOptTbl);
-
+public interface InternalIgniteTable extends IgniteTable {
     /**
      * Converts table into relational expression.
      *
@@ -88,13 +47,6 @@ public interface IgniteTable extends TranslatableTable {
     ColocationGroup colocationGroup(PlanningContext ctx);
 
     /**
-     * Returns table distribution.
-     *
-     * @return Table distribution.
-     */
-    IgniteDistribution distribution();
-
-    /**
      * Returns all table indexes.
      *
      * @return Indexes for the current table.
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java
index 3a9b268..e49b61c 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java
@@ -90,7 +90,7 @@ import org.apache.ignite.internal.processors.query.calcite.rel.logical.IgniteLog
 import org.apache.ignite.internal.processors.query.calcite.schema.ColumnDescriptor;
 import org.apache.ignite.internal.processors.query.calcite.schema.IgniteIndex;
 import org.apache.ignite.internal.processors.query.calcite.schema.IgniteSchema;
-import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
+import org.apache.ignite.internal.processors.query.calcite.schema.InternalIgniteTable;
 import org.apache.ignite.internal.processors.query.calcite.schema.TableDescriptor;
 import org.apache.ignite.internal.processors.query.calcite.trait.CorrelationTraitDef;
 import org.apache.ignite.internal.processors.query.calcite.trait.DistributionTraitDef;
@@ -531,7 +531,7 @@ public abstract class AbstractPlannerTest extends IgniteAbstractTest {
         rel.getInputs().forEach(this::clearTraits);
     }
 
-    abstract static class TestTable implements IgniteTable {
+    abstract static class TestTable implements InternalIgniteTable {
         private final String name;
 
         private final RelProtoDataType protoType;