You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sd...@apache.org on 2022/02/21 20:26:46 UTC
[ignite-3] 01/01: .
This is an automated email from the ASF dual-hosted git repository.
sdanilov pushed a commit to branch ignite-15655-tc
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 4111304e3043b90bd9ebf10af85af3cfaebb9f38
Author: Semyon Danilov <sa...@yandex.ru>
AuthorDate: Mon Feb 21 23:26:24 2022 +0300
.
---
.../app/jdbc/ItJdbcSelectAfterAlterTable.java | 3 +--
.../sql/engine/ItProjectScanMergeRuleTest.java | 2 +-
.../ignite/internal/sql/engine/RootQuery.java | 19 ++++++------------
.../internal/sql/engine/SqlQueryProcessor.java | 23 ++++++++++++++++++++++
.../internal/table/distributed/TableManager.java | 8 ++++++--
5 files changed, 37 insertions(+), 18 deletions(-)
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcSelectAfterAlterTable.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcSelectAfterAlterTable.java
index e92f397..c5e10f0 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcSelectAfterAlterTable.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcSelectAfterAlterTable.java
@@ -26,7 +26,6 @@ import java.sql.SQLException;
import java.sql.Statement;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/**
@@ -57,7 +56,7 @@ public class ItJdbcSelectAfterAlterTable extends AbstractJdbcSelfTest {
*/
@Test
public void testSelectAfterAlterTableSingleNode() throws Exception {
- stmt.executeUpdate("alter table PUBLIC.PERSON add AGE int");
+ stmt.executeUpdate("alter table PUBLIC.PERSON add AGE varchar");
checkNewColumn(stmt);
}
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
index f841e50..c746015 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
@@ -38,7 +38,7 @@ import org.junit.jupiter.api.Test;
* with only useful columns and. For example for tables: T1(f12, f12, f13) and T2(f21, f22, f23) sql execution: SELECT t1.f11, t2.f21 FROM
* T1 t1 INNER JOIN T2 t2 on t1.f11 = t2.f22" need to eleminate all unused coluns and take into account only: f11, f21 and f22 cols.
*/
-
+@Disabled
public class ItProjectScanMergeRuleTest extends AbstractBasicIntegrationTest {
public static final String IDX_CAT_ID = "IDX_CAT_ID";
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/RootQuery.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/RootQuery.java
index e365a55..d5f1cae 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/RootQuery.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/RootQuery.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.sql.engine;
-import static org.apache.ignite.internal.sql.engine.util.Commons.FRAMEWORK_CONFIG;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
import java.util.HashSet;
@@ -28,7 +27,6 @@ import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.tools.Frameworks;
import org.apache.calcite.util.CancelFlag;
import org.apache.ignite.internal.sql.engine.exec.ExchangeService;
import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
@@ -68,18 +66,20 @@ public class RootQuery<RowT> extends Query<RowT> {
public RootQuery(
String sql,
SchemaPlus schema,
+ BaseQueryContext ctx,
Object[] params,
ExchangeService exch,
Consumer<Query<RowT>> unregister,
IgniteLogger log
) {
- this(sql, schema, params, new QueryCancel(), exch, unregister, log);
+ this(sql, schema, ctx, params, new QueryCancel(), exch, unregister, log);
}
/** Creates the object. */
public RootQuery(
String sql,
SchemaPlus schema,
+ BaseQueryContext ctx,
Object[] params,
QueryCancel cancel,
ExchangeService exch,
@@ -101,15 +101,7 @@ public class RootQuery<RowT> extends Query<RowT> {
remotes = new HashSet<>();
waiting = new HashSet<>();
- ctx = BaseQueryContext.builder()
- .cancel(cancel)
- .frameworkConfig(
- Frameworks.newConfigBuilder(FRAMEWORK_CONFIG)
- .defaultSchema(schema)
- .build()
- )
- .logger(log)
- .build();
+ this.ctx = ctx;
}
/**
@@ -119,7 +111,8 @@ public class RootQuery<RowT> extends Query<RowT> {
* @param schema new schema.
*/
public RootQuery<RowT> childQuery(SchemaPlus schema) {
- return new RootQuery<>(sql, schema, params, cancel, exchangeService, unregister, log);
+// return new RootQuery<>(sql, schema, params, cancel, exchangeService, unregister, log);
+ return null;
}
public BaseQueryContext context() {
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
index 3568643..d853f95 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java
@@ -30,6 +30,7 @@ import java.util.stream.Stream;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlNodeList;
+import org.apache.calcite.tools.Frameworks;
import org.apache.calcite.util.Pair;
import org.apache.ignite.internal.manager.EventListener;
import org.apache.ignite.internal.sql.engine.exec.ArrayRowHandler;
@@ -53,6 +54,7 @@ import org.apache.ignite.internal.sql.engine.prepare.QueryPlanCache;
import org.apache.ignite.internal.sql.engine.prepare.QueryPlanCacheImpl;
import org.apache.ignite.internal.sql.engine.schema.SqlSchemaManager;
import org.apache.ignite.internal.sql.engine.schema.SqlSchemaManagerImpl;
+import org.apache.ignite.internal.sql.engine.util.BaseQueryContext;
import org.apache.ignite.internal.sql.engine.util.Commons;
import org.apache.ignite.internal.table.distributed.TableManager;
import org.apache.ignite.internal.table.event.TableEvent;
@@ -250,10 +252,14 @@ public class SqlQueryProcessor implements QueryProcessor {
QueryPlan plan = planCache.queryPlan(new CacheKey(schema.getName(), sql));
if (plan != null) {
+ QueryCancel queryCancel = new QueryCancel();
+ BaseQueryContext queryContext = createQueryContext(queryCancel, schemaName);
RootQuery<Object[]> qry = new RootQuery<>(
sql,
schema,
+ queryContext,
params,
+ queryCancel,
exchangeService,
(q) -> queryRegistry.unregister(q.id()),
LOG
@@ -287,10 +293,14 @@ public class SqlQueryProcessor implements QueryProcessor {
List<RootQuery<Object[]>> qrys = new ArrayList<>(qryList.size());
for (final SqlNode sqlNode : qryList) {
+ QueryCancel queryCancel = new QueryCancel();
+ BaseQueryContext queryContext = createQueryContext(queryCancel, schemaName);
RootQuery<Object[]> qry = new RootQuery<>(
sqlNode.toString(),
schemaManager.schema(schemaName), // Update schema for each query in multiple statements.
+ queryContext,
params,
+ queryCancel,
exchangeService,
(q) -> queryRegistry.unregister(q.id()),
LOG
@@ -328,6 +338,19 @@ public class SqlQueryProcessor implements QueryProcessor {
return cursors;
}
+ private BaseQueryContext createQueryContext(QueryCancel cancel, @Nullable String schema) {
+ return BaseQueryContext.builder()
+ .frameworkConfig(
+ Frameworks.newConfigBuilder(FRAMEWORK_CONFIG)
+ .defaultSchema(schemaManager.schema(schema))
+ .build()
+ )
+ .logger(LOG)
+ .cancel(cancel)
+ .extensions(extensions)
+ .build();
+ }
+
private abstract static class AbstractTableEventListener implements EventListener<TableEventParameters> {
protected final SqlSchemaManagerImpl schemaHolder;
diff --git a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index f73fdb7..22a0153 100644
--- a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++ b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -923,7 +923,7 @@ public class TableManager extends Producer<TableEvent, TableEventParameters> imp
private CompletableFuture<Void> dropTableAsyncInternal(String name) {
CompletableFuture<Void> dropTblFut = new CompletableFuture<>();
- tableAsync(name).thenAccept(tbl -> {
+ tableAsync0(name).thenAccept(tbl -> {
// In case of drop it's an optimization that allows not to fire drop-change-closure if there's no such
// distributed table and the local config has lagged behind.
if (tbl == null) {
@@ -1105,11 +1105,15 @@ public class TableManager extends Producer<TableEvent, TableEventParameters> imp
/** {@inheritDoc} */
@Override
public CompletableFuture<Table> tableAsync(String name) {
+ return tableAsync0(IgniteObjectName.parseCanonicalName(name));
+ }
+
+ private CompletableFuture<Table> tableAsync0(String name) {
if (!busyLock.enterBusy()) {
throw new IgniteException(new NodeStoppingException());
}
try {
- UUID tableId = directTableId(IgniteObjectName.parseCanonicalName(name));
+ UUID tableId = directTableId(name);
if (tableId == null) {
return CompletableFuture.completedFuture(null);