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();
+ }
}