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);