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