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 2022/01/14 11:59:36 UTC

[ignite-3] 01/01: WIP.

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

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

commit 4a0c546958d360200ebbdac321716fc2e6350132
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Fri Jan 14 14:59:24 2022 +0300

    WIP.
---
 .../apache/ignite/internal/sql/engine/ItMetadataTest.java  |  2 --
 .../ignite/internal/sql/engine/prepare/Fragment.java       |  6 +++---
 .../ignite/internal/sql/engine/prepare/QueryTemplate.java  |  7 +++++--
 .../ignite/internal/sql/engine/util/BaseQueryContext.java  | 14 ++++++++++----
 .../apache/ignite/internal/sql/engine/util/Commons.java    |  4 ++++
 5 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
index 3060bca..c87a6a1 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
@@ -25,13 +25,11 @@ import org.apache.ignite.schema.SchemaBuilders;
 import org.apache.ignite.schema.definition.ColumnType;
 import org.apache.ignite.schema.definition.TableDefinition;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
  * Group of tests to verify the query metadata returned alongside the query result.
  */
-@Disabled("https://issues.apache.org/jira/browse/IGNITE-15655")
 public class ItMetadataTest extends AbstractBasicIntegrationTest {
     /**
      * Before all.
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/Fragment.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/Fragment.java
index fe1fed2..2df6073 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/Fragment.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/Fragment.java
@@ -22,6 +22,7 @@ import static org.apache.ignite.internal.sql.engine.externalize.RelJsonWriter.to
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Supplier;
+import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.ignite.internal.sql.engine.metadata.ColocationMappingException;
@@ -34,7 +35,6 @@ import org.apache.ignite.internal.sql.engine.rel.IgniteReceiver;
 import org.apache.ignite.internal.sql.engine.rel.IgniteRel;
 import org.apache.ignite.internal.sql.engine.rel.IgniteSender;
 import org.apache.ignite.internal.sql.engine.trait.IgniteDistributions;
-import org.apache.ignite.internal.sql.engine.util.Commons;
 import org.apache.ignite.internal.tostring.IgniteToStringExclude;
 import org.apache.ignite.internal.tostring.S;
 import org.jetbrains.annotations.NotNull;
@@ -141,8 +141,8 @@ public class Fragment {
         return !(root instanceof IgniteSender);
     }
 
-    public Fragment copy() {
-        return new Cloner(Commons.cluster()).go(this);
+    public Fragment copy(RelOptCluster cluster) {
+        return new Cloner(cluster).go(this);
     }
 
     /**
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
index b115855..e386861 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/QueryTemplate.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicReference;
+import org.apache.calcite.plan.RelOptCluster;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.ignite.internal.sql.engine.metadata.FragmentMappingException;
 import org.apache.ignite.internal.sql.engine.metadata.MappingService;
@@ -51,7 +52,7 @@ public class QueryTemplate {
 
         List<Fragment> frgs = new ArrayList<>(fragments.size());
         for (Fragment fragment : fragments) {
-            frgs.add(fragment.copy());
+            frgs.add(fragment.copy(Commons.cluster()));
         }
 
         this.fragments = List.copyOf(frgs);
@@ -67,7 +68,9 @@ public class QueryTemplate {
             return executionPlan;
         }
 
-        List<Fragment> fragments = Commons.transform(this.fragments, Fragment::copy);
+        final RelOptCluster cluster = Commons.createCluster();
+
+        List<Fragment> fragments = Commons.transform(this.fragments, fragment -> fragment.copy(cluster));
 
         Exception ex = null;
         RelMetadataQuery mq = first(fragments).root().getCluster().getMetadataQuery();
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/BaseQueryContext.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/BaseQueryContext.java
index f217765..d9ba4db 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/BaseQueryContext.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/BaseQueryContext.java
@@ -59,7 +59,7 @@ public final class BaseQueryContext extends AbstractQueryContext {
 
     public static final RelOptCluster CLUSTER;
 
-    public static final IgniteTypeFactory TYPE_FACTORY;
+    private static final IgniteTypeFactory TYPE_FACTORY;
 
     private static final IgniteCostFactory COST_FACTORY = new IgniteCostFactory();
 
@@ -90,10 +90,16 @@ public final class BaseQueryContext extends AbstractQueryContext {
 
         DFLT_REX_BUILDER = new RexBuilder(TYPE_FACTORY);
 
-        CLUSTER = RelOptCluster.create(EMPTY_PLANNER, DFLT_REX_BUILDER);
+        CLUSTER = createCluster();
+    }
+
+    public static RelOptCluster createCluster() {
+        RelOptCluster cluster = RelOptCluster.create(EMPTY_PLANNER, DFLT_REX_BUILDER);
+
+        cluster.setMetadataProvider(new CachingRelMetadataProvider(IgniteMetadata.METADATA_PROVIDER, EMPTY_PLANNER));
+        cluster.setMetadataQuerySupplier(RelMetadataQueryEx::create);
 
-        CLUSTER.setMetadataProvider(new CachingRelMetadataProvider(IgniteMetadata.METADATA_PROVIDER, EMPTY_PLANNER));
-        CLUSTER.setMetadataQuerySupplier(RelMetadataQueryEx::create);
+        return cluster;
     }
 
     private final FrameworkConfig cfg;
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
index 789f2c6..4b60ea9 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/util/Commons.java
@@ -830,4 +830,8 @@ public final class Commons {
     public static RelOptCluster cluster() {
         return CLUSTER;
     }
+
+    public static RelOptCluster createCluster() {
+        return BaseQueryContext.createCluster();
+    }
 }