Repository: ignite
Updated Branches:
  refs/heads/master 23607216c -> 8bf8b8efc


IGNITE-10171: SQL: show original query in GridRunningQueryInfo. This closes 
#5349.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8bf8b8ef
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8bf8b8ef
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8bf8b8ef

Branch: refs/heads/master
Commit: 8bf8b8efc2f26abe5bc6be95b928d738fe834c65
Parents: 2360721
Author: Aleksey Plekhanov <plehanov.a...@gmail.com>
Authored: Tue Nov 13 16:59:56 2018 +0300
Committer: devozerov <voze...@gridgain.com>
Committed: Tue Nov 13 16:59:56 2018 +0300

----------------------------------------------------------------------
 .../query/h2/sql/GridSqlQuerySplitter.java      |  2 +-
 .../processors/query/RunningQueriesTest.java    | 93 ++++++++++++++++++++
 .../IgniteBinaryCacheQueryTestSuite.java        |  2 +
 3 files changed, 96 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8bf8b8ef/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index bbf10ff..84ada0f 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -198,7 +198,7 @@ public class GridSqlQuerySplitter {
         // subqueries because we do not have unique FROM aliases yet.
         GridSqlQuery qry = parse(prepared, false);
 
-        String originalSql = qry.getSQL();
+        String originalSql = prepared.getSQL();
 
 //        debug("ORIGINAL", originalSql);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8bf8b8ef/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/RunningQueriesTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/RunningQueriesTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/RunningQueriesTest.java
new file mode 100644
index 0000000..ae30552
--- /dev/null
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/RunningQueriesTest.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.concurrent.CyclicBarrier;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.cache.query.SqlQuery;
+import org.apache.ignite.cache.query.annotations.QuerySqlFunction;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ * Tests for running queries.
+ */
+public class RunningQueriesTest extends GridCommonAbstractTest {
+    /**
+     *
+     */
+    public void testQueriesOriginalText() throws Exception {
+        IgniteEx ignite = startGrid(0);
+
+        IgniteCache<Integer, Integer> cache = ignite.getOrCreateCache(new 
CacheConfiguration<Integer, Integer>()
+            .setName("cache")
+            .setQueryEntities(Collections.singletonList(new 
QueryEntity(Integer.class, Integer.class)))
+            .setSqlFunctionClasses(TestSQLFunctions.class)
+        );
+
+        cache.put(0, 0);
+
+        GridTestUtils.runAsync(() -> cache.query(new SqlFieldsQuery(
+            "SELECT * FROM /* comment */ Integer WHERE awaitBarrier() = 
0")).getAll());
+
+        GridTestUtils.runAsync(() -> cache.query(new SqlQuery<Integer, 
Integer>(Integer.class,
+            "FROM /* comment */ Integer WHERE awaitBarrier() = 0")).getAll());
+
+        TestSQLFunctions.barrier.await();
+
+        Collection<GridRunningQueryInfo> runningQueries = 
ignite.context().query().runningQueries(-1);
+
+        TestSQLFunctions.barrier.await();
+
+        assertEquals(2, runningQueries.size());
+
+        for (GridRunningQueryInfo info : runningQueries)
+            assertTrue("Failed to find comment in query: " + info.query(), 
info.query().contains("/* comment */"));
+    }
+
+    /**
+     * Utility class with custom SQL functions.
+     */
+    public static class TestSQLFunctions {
+        /** Barrier. */
+        static CyclicBarrier barrier = new CyclicBarrier(3);
+
+        /**
+         * Await cyclic barrier twice, first time to wait for enter method, 
second time to wait for collecting running
+         * queries.
+         */
+        @QuerySqlFunction
+        public static long awaitBarrier() {
+            try {
+                barrier.await();
+                barrier.await();
+            }
+            catch (Exception ignored) {
+                // No-op.
+            }
+
+            return 0;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/8bf8b8ef/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
index b070715..ddfeaef 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
@@ -192,6 +192,7 @@ import 
org.apache.ignite.internal.processors.query.IgniteSqlSkipReducerOnUpdateD
 import org.apache.ignite.internal.processors.query.IgniteSqlSplitterSelfTest;
 import org.apache.ignite.internal.processors.query.LazyQuerySelfTest;
 import 
org.apache.ignite.internal.processors.query.MultipleStatementsSqlQuerySelfTest;
+import org.apache.ignite.internal.processors.query.RunningQueriesTest;
 import org.apache.ignite.internal.processors.query.SqlIllegalSchemaSelfTest;
 import org.apache.ignite.internal.processors.query.SqlNestedQuerySelfTest;
 import org.apache.ignite.internal.processors.query.SqlPushDownFunctionTest;
@@ -248,6 +249,7 @@ public class IgniteBinaryCacheQueryTestSuite extends 
TestSuite {
         suite.addTestSuite(ComplexPrimaryKeyUnwrapSelfTest.class);
         suite.addTestSuite(SqlNestedQuerySelfTest.class);
         suite.addTestSuite(ExplainSelfTest.class);
+        suite.addTestSuite(RunningQueriesTest.class);
 
         suite.addTestSuite(PartitionedSqlTest.class);
         suite.addTestSuite(ReplicatedSqlTest.class);

Reply via email to