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:45 UTC

[ignite-3] branch ignite-15655-tc created (now 4111304)

This is an automated email from the ASF dual-hosted git repository.

sdanilov pushed a change to branch ignite-15655-tc
in repository https://gitbox.apache.org/repos/asf/ignite-3.git.


      at 4111304  .

This branch includes the following new commits:

     new 4111304  .

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: .

Posted by sd...@apache.org.
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);