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 7e9e71671cbba8f7516dca510f9f9a2dab0510e9
Author: amashenkov <[email protected]>
AuthorDate: Wed Aug 2 19:09:00 2023 +0300

    Fix table-by-name resolution.
---
 .../sql/engine/exec/ExecutableTableRegistry.java   |  4 ++++
 .../engine/exec/ExecutableTableRegistryImpl.java   |  6 ++++++
 .../exec/ExecutionDependencyResolverImpl.java      |  4 +++-
 .../sql/engine/schema/CatalogSqlSchemaManager.java | 16 +++++++--------
 .../internal/sql/engine/schema/IgniteSchema.java   | 13 +++++++-----
 .../sql/engine/schema/IgniteSchemaTable.java       |  6 ++++--
 .../sql/engine/exec/ExecutionServiceImplTest.java  |  4 ++--
 .../engine/exec/TestExecutableTableRegistry.java   |  5 +++++
 .../sql/engine/framework/TestBuilders.java         | 23 +++++++++++-----------
 .../internal/sql/engine/framework/TestTable.java   | 10 ++++++----
 .../sql/engine/planner/AbstractPlannerTest.java    |  6 +-----
 .../internal/sql/engine/util/StatementChecker.java | 11 ++++++-----
 12 files changed, 64 insertions(+), 44 deletions(-)

diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistry.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistry.java
index 36b8cb4eb6..d921d25381 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistry.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistry.java
@@ -33,4 +33,8 @@ public interface ExecutableTableRegistry {
      * @return An operation that returns executable table.
      */
     CompletableFuture<ExecutableTable> getTable(int tableId, TableDescriptor 
tableDescriptor);
+
+    // TODO IGNITE-19499 use tableId instead of name.
+    @Deprecated(forRemoval = true)
+    CompletableFuture<ExecutableTable> getTable(int tableId, String tableName, 
TableDescriptor tableDescriptor);
 }
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
index 64c6ffc52f..4b98793906 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
@@ -71,6 +71,12 @@ public class ExecutableTableRegistryImpl implements 
ExecutableTableRegistry, Sch
         return tableCache.computeIfAbsent(tableId, (k) -> loadTable(k, 
tableDescriptor));
     }
 
+    @Override
+    public CompletableFuture<ExecutableTable> getTable(int tableId, String 
tableName, TableDescriptor tableDescriptor) {
+        return tableManager.tableAsyncInternal(tableName.toUpperCase())
+                .thenCompose(tbl -> loadTable(tbl.tableId(), tableDescriptor));
+    }
+
     /** {@inheritDoc} */
     @Override
     public void onSchemaUpdated() {
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverImpl.java
index a225231077..44abad7e2f 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutionDependencyResolverImpl.java
@@ -81,8 +81,10 @@ public class ExecutionDependencyResolverImpl implements 
ExecutionDependencyResol
             private void resolveTable(IgniteTable igniteTable) {
                 int tableId = igniteTable.id();
                 TableDescriptor tableDescriptor = igniteTable.descriptor();
+                //TODO IGNITE-19499 Use id instead of name.
+                String tableName = igniteTable.name();
 
-                tableMap.computeIfAbsent(tableId, (id) -> 
registry.getTable(tableId, tableDescriptor));
+                tableMap.computeIfAbsent(tableId, (id) -> 
registry.getTable(tableId, tableName, tableDescriptor));
             }
         };
 
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 3afda9ff60..7a9204a535 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
@@ -20,9 +20,10 @@ package org.apache.ignite.internal.sql.engine.schema;
 import static 
org.apache.ignite.internal.catalog.CatalogService.DEFAULT_SCHEMA_NAME;
 
 import com.github.benmanes.caffeine.cache.Caffeine;
+import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
@@ -33,7 +34,6 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.function.Supplier;
 import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.schema.Table;
 import org.apache.calcite.tools.Frameworks;
 import org.apache.ignite.internal.catalog.CatalogManager;
 import org.apache.ignite.internal.catalog.CatalogService;
@@ -99,7 +99,7 @@ public class CatalogSqlSchemaManager implements 
SqlSchemaManager {
         String schemaName = descriptor.name();
 
         int numTables = descriptor.tables().length;
-        Map<String, Table> schemaTables = new HashMap<>(numTables);
+        List<IgniteTable> schemaTables = new ArrayList<>(numTables);
         Map<Integer, TableDescriptorImpl> tableDescriptorMap = new 
LinkedHashMap<>(numTables);
 
         // Assemble sql-engine.TableDescriptors as they are required by 
indexes.
@@ -108,7 +108,7 @@ public class CatalogSqlSchemaManager implements 
SqlSchemaManager {
             tableDescriptorMap.put(tableDescriptor.id(), descriptorImpl);
         }
 
-        Map<Integer, Map<String, IgniteSchemaIndex>> schemaTableIndexes = new 
HashMap<>(descriptor.indexes().length);
+        Int2ObjectMap<List<IgniteSchemaIndex>> schemaTableIndexes = new 
Int2ObjectArrayMap<>(descriptor.indexes().length);
 
         // Assemble indexes as they are required by tables.
         for (CatalogIndexDescriptor indexDescriptor : descriptor.indexes()) {
@@ -116,11 +116,11 @@ public class CatalogSqlSchemaManager implements 
SqlSchemaManager {
             TableDescriptorImpl tableDescriptorImpl = 
tableDescriptorMap.get(tableId);
             assert tableDescriptorImpl != null : "Table is not found in 
schema: " + tableId;
 
-            Map<String, IgniteSchemaIndex> tableIndexes = 
schemaTableIndexes.computeIfAbsent(tableId, id -> new LinkedHashMap<>());
+            List<IgniteSchemaIndex> tableIndexes = 
schemaTableIndexes.computeIfAbsent(tableId, id -> new ArrayList<>());
 
             IgniteSchemaIndex schemaIndex = createSchemaIndex(indexDescriptor, 
tableDescriptorImpl);
 
-            tableIndexes.put(schemaIndex.name(), schemaIndex);
+            tableIndexes.add(schemaIndex);
 
             schemaTableIndexes.put(tableId, tableIndexes);
         }
@@ -133,11 +133,11 @@ public class CatalogSqlSchemaManager implements 
SqlSchemaManager {
             assert descriptorImpl != null;
 
             IgniteStatistic statistic = new IgniteStatistic(() -> 0.0d, 
descriptorImpl.distribution());
-            Map<String, IgniteSchemaIndex> tableIndexMap = 
schemaTableIndexes.getOrDefault(tableId, Collections.emptyMap());
+            List<IgniteSchemaIndex> tableIndexMap = 
schemaTableIndexes.getOrDefault(tableId, Collections.emptyList());
 
             IgniteSchemaTable schemaTable = new IgniteSchemaTable(tableName, 
tableId, version, descriptorImpl, statistic, tableIndexMap);
 
-            schemaTables.put(tableName, schemaTable);
+            schemaTables.add(schemaTable);
         }
 
         // create root schema
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchema.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchema.java
index ef9e39f716..bc6b6b6d6f 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchema.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchema.java
@@ -17,8 +17,12 @@
 
 package org.apache.ignite.internal.sql.engine.schema;
 
+import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.schema.impl.AbstractSchema;
 import org.jetbrains.annotations.TestOnly;
@@ -32,19 +36,19 @@ public class IgniteSchema extends AbstractSchema {
 
     private final int version;
 
-    private final Map<String, Table> tableMap;
+    private final Map<String, IgniteTable> tableMap;
 
     /** Constructor. */
-    public IgniteSchema(String name, int version, Map<String, Table> tableMap) 
{
+    public IgniteSchema(String name, int version, Collection<IgniteTable> 
tables) {
         this.name = name;
         this.version = version;
-        this.tableMap = tableMap;
+        this.tableMap = tables.stream().collect(Collectors.toMap(t -> 
t.name().toUpperCase(), Function.identity()));
     }
 
     /** Constructor. */
     @TestOnly
     public IgniteSchema(String name) {
-        this(name, 0, Map.of());
+        this(name, 0, List.of());
     }
 
 
@@ -68,7 +72,6 @@ public class IgniteSchema extends AbstractSchema {
     public IgniteTable getTable(int tableId) {
         //TODO: optimize this
         return tableMap.values().stream()
-                .map(IgniteTable.class::cast)
                 .filter(t -> t.id() == tableId)
                 .findFirst()
                 .orElseThrow(() -> new AssertionError("No table found: 
tableId=" + tableId));
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaTable.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaTable.java
index 9ef7ac6a9a..f6744ccdd8 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaTable.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteSchemaTable.java
@@ -19,6 +19,8 @@ package org.apache.ignite.internal.sql.engine.schema;
 
 import java.util.List;
 import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelOptTable;
@@ -59,14 +61,14 @@ public final class IgniteSchemaTable extends AbstractTable 
implements IgniteTabl
 
     /** Constructor. */
     public IgniteSchemaTable(String name, int tableId, int version, 
TableDescriptor desc,
-            IgniteStatistic statistic, Map<String, IgniteSchemaIndex> 
indexMap) {
+            IgniteStatistic statistic, List<IgniteSchemaIndex> indexes) {
 
         this.id = tableId;
         this.name = name;
         this.desc = desc;
         this.version = version;
         this.statistic = statistic;
-        this.indexMap = indexMap;
+        this.indexMap = 
indexes.stream().collect(Collectors.toUnmodifiableMap(t -> 
t.name().toUpperCase(), Function.identity()));
     }
 
     /** {@inheritDoc} */
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 bd8a392b0e..629e208444 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
@@ -139,7 +139,7 @@ public class ExecutionServiceImplTest {
     private final TestTable table = createTable("TEST_TBL", 1_000_000, 
IgniteDistributions.random(),
             "ID", NativeTypes.INT32, "VAL", NativeTypes.INT32);
 
-    private final IgniteSchema schema = new IgniteSchema("PUBLIC", 
SCHEMA_VERSION, Map.of(table.name(), table));
+    private final IgniteSchema schema = new IgniteSchema("PUBLIC", 
SCHEMA_VERSION, List.of(table));
 
     private final List<CapturingMailboxRegistry> mailboxes = new ArrayList<>();
 
@@ -877,7 +877,7 @@ public class ExecutionServiceImplTest {
                 new TableDescriptorImpl(columns, distr),
                 name,
                 size,
-                Map.of()
+                List.of()
         ) {
 
         };
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TestExecutableTableRegistry.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TestExecutableTableRegistry.java
index 1dee68eaea..bf7e849dbe 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TestExecutableTableRegistry.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/TestExecutableTableRegistry.java
@@ -44,6 +44,11 @@ public final class TestExecutableTableRegistry implements 
ExecutableTableRegistr
         return CompletableFuture.completedFuture(new 
TestExecutableTable(tableId, colocationGroupProvider));
     }
 
+    @Override
+    public CompletableFuture<ExecutableTable> getTable(int tableId, String 
tableName, TableDescriptor tableDescriptor) {
+        return CompletableFuture.completedFuture(new 
TestExecutableTable(tableId, colocationGroupProvider));
+    }
+
     private static final class TestExecutableTable implements ExecutableTable {
 
         private final int tableId;
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 bcd1f078ce..67e5dddd5a 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
@@ -34,7 +34,6 @@ 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;
 import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
@@ -353,11 +352,11 @@ public class TestBuilders {
                 }
             }
 
-            Map<String, Table> tableMap = tableBuilders.stream()
+            Map<String, IgniteTable> tableMap = tableBuilders.stream()
                     .map(ClusterTableBuilderImpl::build)
                     .collect(Collectors.toMap(TestTable::name, 
Function.identity()));
 
-            var schemaManager = new PredefinedSchemaManager(new 
IgniteSchema("PUBLIC", SCHEMA_VERSION, tableMap));
+            var schemaManager = new PredefinedSchemaManager(new 
IgniteSchema("PUBLIC", SCHEMA_VERSION, tableMap.values()));
             var colocationGroupProvider = new 
TestColocationGroupProvider(tableBuilders, tableMap, nodeNames);
 
             Map<String, TestNode> nodes = nodeNames.stream()
@@ -429,9 +428,9 @@ public class TestBuilders {
 
             TableDescriptorImpl tableDescriptor = new 
TableDescriptorImpl(columns, distribution);
 
-            Map<String, IgniteSchemaIndex> indexMap = indexBuilders.stream()
+            List<IgniteSchemaIndex> indexMap = indexBuilders.stream()
                     .map(idx -> idx.build(tableDescriptor))
-                    .collect(Collectors.toMap(TestIndex::name, 
Function.identity()));
+                    .collect(Collectors.toList());
 
             return new TestTable(
                     tableDescriptor,
@@ -484,11 +483,11 @@ public class TestBuilders {
         private TestTable build() {
             TableDescriptorImpl tableDescriptor = new 
TableDescriptorImpl(columns, distribution);
 
-            Map<String, IgniteSchemaIndex> indexMap = indexBuilders.stream()
+            List<IgniteSchemaIndex> indexes = indexBuilders.stream()
                     .map(idx -> idx.build(tableDescriptor))
-                    .collect(Collectors.toMap(TestIndex::name, 
Function.identity()));
+                    .collect(Collectors.toList());
 
-            return new TestTable(tableDescriptor, name, size, indexMap, 
dataProviders);
+            return new TestTable(tableDescriptor, name, size, indexes, 
dataProviders);
         }
     }
 
@@ -877,11 +876,11 @@ public class TestBuilders {
 
         private final Map<Integer, CompletableFuture<ColocationGroup>> groups 
= new HashMap<>();
 
-        TestColocationGroupProvider(List<ClusterTableBuilderImpl> 
tableBuilders, Map<String, Table> tableMap, List<String> nodeNames) {
+        TestColocationGroupProvider(List<ClusterTableBuilderImpl> 
tableBuilders, Map<String, IgniteTable> tableMap,
+                List<String> nodeNames) {
 
             for (ClusterTableBuilderImpl tableBuilder : tableBuilders) {
-                Table table = tableMap.get(tableBuilder.name);
-                IgniteTable igniteTable = (IgniteTable) table;
+                IgniteTable table = tableMap.get(tableBuilder.name);
                 CompletableFuture<ColocationGroup> f;
 
                 if (!tableBuilder.dataProviders.isEmpty()) {
@@ -893,7 +892,7 @@ public class TestBuilders {
                     f = 
CompletableFuture.completedFuture(ColocationGroup.forNodes(nodeNames));
                 }
 
-                groups.put(igniteTable.id(), f);
+                groups.put(table.id(), f);
             }
         }
 
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 7354f59cca..05e7b3d5be 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
@@ -22,6 +22,8 @@ import static 
org.apache.ignite.lang.IgniteStringFormatter.format;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelOptTable;
@@ -68,9 +70,9 @@ public class TestTable implements IgniteTable {
             TableDescriptor descriptor,
             String name,
             double rowCnt,
-            Map<String, IgniteSchemaIndex> indexMap
+            List<IgniteSchemaIndex> indexes
     ) {
-        this(descriptor, name, rowCnt, indexMap, Map.of());
+        this(descriptor, name, rowCnt, indexes, Map.of());
     }
 
     /** Constructor. */
@@ -78,14 +80,14 @@ public class TestTable implements IgniteTable {
             TableDescriptor descriptor,
             String name,
             double rowCnt,
-            Map<String, IgniteSchemaIndex> indexMap,
+            List<IgniteSchemaIndex> indexList,
             Map<String, DataProvider<?>> dataProviders
     ) {
         this.descriptor = descriptor;
         this.name = name;
         this.rowCnt = rowCnt;
         this.dataProviders = dataProviders;
-        indexes = indexMap;
+        indexes = indexList.stream().collect(Collectors.toUnmodifiableMap(t -> 
t.name().toUpperCase(), Function.identity()));
     }
 
     /**
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/AbstractPlannerTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/AbstractPlannerTest.java
index 5256130ce2..01e11549f4 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/AbstractPlannerTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/AbstractPlannerTest.java
@@ -37,7 +37,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
@@ -69,7 +68,6 @@ import org.apache.calcite.rex.RexCall;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.schema.ColumnStrategy;
 import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.schema.Table;
 import org.apache.calcite.sql.SqlExplainLevel;
 import org.apache.calcite.sql.SqlFunction;
 import org.apache.calcite.sql.SqlNode;
@@ -630,9 +628,7 @@ public abstract class AbstractPlannerTest extends 
IgniteAbstractTest {
      * @return Schema with given name.
      */
     protected static IgniteSchema createSchema(String schemaName, 
IgniteTable... tbls) {
-        Map<String, Table> tableMap = 
Arrays.stream(tbls).collect(Collectors.toMap(IgniteTable::name, 
Function.identity()));
-
-        return new IgniteSchema(schemaName, 0, tableMap);
+        return new IgniteSchema(schemaName, 0, Arrays.asList(tbls));
     }
 
     protected void checkSplitAndSerialization(IgniteRel rel, IgniteSchema 
publicSchema) {
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/StatementChecker.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/StatementChecker.java
index 4257a768f4..fc1f31d2bd 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/StatementChecker.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/util/StatementChecker.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.sql.engine.util;
 import static org.apache.ignite.lang.IgniteStringFormatter.format;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -32,7 +33,6 @@ import java.util.function.Supplier;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.schema.Table;
 import org.apache.calcite.sql.SqlExplainFormat;
 import org.apache.calcite.sql.SqlExplainLevel;
 import org.apache.ignite.internal.schema.NativeType;
@@ -46,6 +46,7 @@ import 
org.apache.ignite.internal.sql.engine.rel.IgniteTableScan;
 import org.apache.ignite.internal.sql.engine.rel.IgniteValues;
 import 
org.apache.ignite.internal.sql.engine.rel.ProjectableFilterableTableScan;
 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.trait.IgniteDistributions;
 import org.hamcrest.CoreMatchers;
 import org.hamcrest.Description;
@@ -198,7 +199,7 @@ public class StatementChecker {
             String col3, NativeType type3) {
 
         testTables.put(tableName, table -> {
-            return table.name(tableName.toUpperCase(Locale.US))
+            return table.name(tableName)
                     .addColumn(col1.toUpperCase(Locale.US), type1)
                     .addColumn(col2.toUpperCase(Locale.US), type2)
                     .addColumn(col3.toUpperCase(Locale.US), type3)
@@ -351,17 +352,17 @@ public class StatementChecker {
     }
 
     private IgniteSchema createSchema() {
-        Map<String, Table> tableMap = new HashMap<>();
+        List<IgniteTable> tables = new ArrayList<>();
         for (Map.Entry<String, Function<TestBuilders.TableBuilder, TestTable>> 
entry : testTables.entrySet()) {
             String tableName = entry.getKey();
             Function<TableBuilder, TestTable> addTable = entry.getValue();
 
             TestTable table = 
addTable.apply(TestBuilders.table().name(tableName));
 
-            tableMap.put(tableName, table);
+            tables.add(table);
         }
 
-        return new IgniteSchema("PUBLIC", 0, tableMap);
+        return new IgniteSchema("PUBLIC", 0, tables);
     }
 
     private DynamicTest shouldPass(String name, Throwable exception, 
Consumer<IgniteRel> check) {

Reply via email to