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