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/03/28 15:51:34 UTC
[ignite-3] branch ignite-19018 created (now b967b36b33)
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a change to branch ignite-19018
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
at b967b36b33 WIP.
This branch includes the following new commits:
new b967b36b33 WIP.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[ignite-3] 01/01: WIP.
Posted by am...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-19018
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit b967b36b331995a15167b3d4733b14039daee15f
Author: amashenkov <an...@gmail.com>
AuthorDate: Tue Mar 28 15:55:58 2023 +0300
WIP.
---
.../internal/sql/engine/ItCorrelatesTest.java | 1 -
.../internal/sql/engine/ItCreateTableDdlTest.java | 5 ++++-
.../internal/sql/engine/util/QueryChecker.java | 21 ++++++++++++++++++---
.../internal/sql/engine/exec/rel/ScanNode.java | 1 +
.../sql/engine/rule/ValuesConverterRule.java | 4 ++--
.../internal/sql/engine/planner/DmlPlannerTest.java | 3 ++-
6 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
index c9b9ceca1f..b007f8fb0e 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
@@ -83,7 +83,6 @@ public class ItCorrelatesTest extends ClusterPerClassIntegrationTest {
* Tests resolving of collisions in correlates with correlate variables in both, left and right hands.
*/
@Test
- @Disabled("https://issues.apache.org/jira/browse/IGNITE-19018")
public void testCorrelatesCollisionRight() throws InterruptedException {
sql("CREATE TABLE test1 (a INTEGER PRIMARY KEY, b INTEGER)");
sql("INSERT INTO test1 VALUES (11, 1), (12, 2), (13, 3)");
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
index e7a54f0552..0d4828d288 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
@@ -64,8 +64,11 @@ public class ItCreateTableDdlTest extends ClusterPerClassIntegrationTest {
}
@Test
- public void pkWithFunctionalDefault() {
+ public void pkWithFunctionalDefault() throws InterruptedException {
sql("create table t (id varchar default gen_random_uuid primary key, val int)");
+
+ waitForIndex("t_PK");
+
sql("insert into t (val) values (1), (2)");
var result = sql("select * from t");
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/util/QueryChecker.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/util/QueryChecker.java
index 9867b04311..0057259319 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/util/QueryChecker.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/util/QueryChecker.java
@@ -262,6 +262,8 @@ public abstract class QueryChecker {
private Transaction tx;
+ private boolean dumpPlan;
+
/**
* Constructor.
*
@@ -404,6 +406,17 @@ public abstract class QueryChecker {
return this;
}
+ /**
+ * Print query plan to System.out.
+ *
+ * @return This.
+ */
+ public QueryChecker dumpPlan() {
+ dumpPlan = true;
+
+ return this;
+ }
+
/**
* Run checks.
*/
@@ -424,9 +437,7 @@ public abstract class QueryChecker {
+ disabledRules.stream().collect(Collectors.joining("','", "/*+ DISABLE_RULE('", "') */")));
}
try {
-
- if (!CollectionUtils.nullOrEmpty(planMatchers) || exactPlan != null) {
-
+ if (!CollectionUtils.nullOrEmpty(planMatchers) || exactPlan != null || dumpPlan) {
CompletableFuture<AsyncSqlCursor<List<Object>>> explainCursors = qryProc.querySingleAsync(sessionId,
context, "EXPLAIN PLAN FOR " + qry, params);
AsyncSqlCursor<List<Object>> explainCursor = await(explainCursors);
@@ -434,6 +445,10 @@ public abstract class QueryChecker {
String actualPlan = (String) explainRes.get(0).get(0);
+ if (dumpPlan) {
+ System.out.println("Query: " + qry + "\nPlan: " + actualPlan);
+ }
+
if (!CollectionUtils.nullOrEmpty(planMatchers)) {
for (Matcher<String> matcher : planMatchers) {
assertThat("Invalid plan:\n" + actualPlan, actualPlan, matcher);
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/ScanNode.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/ScanNode.java
index 2fc8831073..59c8b607b3 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/ScanNode.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/rel/ScanNode.java
@@ -76,6 +76,7 @@ public class ScanNode<RowT> extends AbstractNode<RowT> implements SingleNode<Row
protected void rewindInternal() {
Commons.closeQuiet(it);
it = null;
+ requested = 0;
}
/** {@inheritDoc} */
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/ValuesConverterRule.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/ValuesConverterRule.java
index bcade330b9..6959ec13b9 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/ValuesConverterRule.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/rule/ValuesConverterRule.java
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.sql.engine.rule;
-import static org.apache.ignite.internal.sql.engine.trait.IgniteDistributions.single;
+import static org.apache.ignite.internal.sql.engine.trait.IgniteDistributions.broadcast;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptPlanner;
@@ -48,7 +48,7 @@ public class ValuesConverterRule extends AbstractIgniteConverterRule<LogicalValu
protected PhysicalNode convert(RelOptPlanner planner, RelMetadataQuery mq, LogicalValues rel) {
RelOptCluster cluster = rel.getCluster();
RelTraitSet traits = cluster.traitSetOf(IgniteConvention.INSTANCE)
- .replace(single());
+ .replace(broadcast());
return new IgniteValues(cluster, rel.getRowType(), rel.getTuples(), traits);
}
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/DmlPlannerTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/DmlPlannerTest.java
index 8613120468..41108b1850 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/DmlPlannerTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/DmlPlannerTest.java
@@ -25,6 +25,7 @@ import org.apache.ignite.internal.sql.engine.framework.TestBuilders;
import org.apache.ignite.internal.sql.engine.rel.IgniteExchange;
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.rel.IgniteTrimExchange;
import org.apache.ignite.internal.sql.engine.rel.IgniteValues;
import org.apache.ignite.internal.sql.engine.schema.IgniteSchema;
import org.apache.ignite.internal.sql.engine.schema.IgniteTable;
@@ -66,7 +67,7 @@ public class DmlPlannerTest extends AbstractPlannerTest {
nodeOrAnyChild(isInstanceOf(IgniteExchange.class)
.and(e -> e.distribution().equals(IgniteDistributions.single())))
.and(nodeOrAnyChild(isInstanceOf(IgniteTableModify.class))
- .and(hasChildThat(isInstanceOf(IgniteExchange.class).and(e -> distribution.equals(e.distribution())))))
+ .and(hasChildThat(isInstanceOf(IgniteTrimExchange.class).and(e -> distribution.equals(e.distribution())))))
);
}