You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2018/10/30 06:09:13 UTC
[22/28] ignite git commit: IGNITE-9342: SQL: fixed execution of
multu-statement non-colocated queries. This closes #4709.
IGNITE-9342: SQL: fixed execution of multu-statement non-colocated queries. This closes #4709.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/92af5389
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/92af5389
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/92af5389
Branch: refs/heads/ignite-627
Commit: 92af53895a0f617858b7149e6ccc4396e2e04675
Parents: ac093b9
Author: tledkov-gridgain <tl...@gridgain.com>
Authored: Mon Oct 29 16:49:46 2018 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Mon Oct 29 16:49:46 2018 +0300
----------------------------------------------------------------------
.../processors/query/h2/IgniteH2Indexing.java | 3 +-
.../MultipleStatementsSqlQuerySelfTest.java | 40 ++++++++++++++++----
2 files changed, 34 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/92af5389/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 866ae99..5bd6f7b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -2192,8 +2192,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
res.addAll(doRunPrepared(schemaName, prepared, newQry, twoStepQry, meta, keepBinary, startTx, tracker,
cancel));
+ // We cannot cache two-step query for multiple statements query except the last statement
if (parseRes.twoStepQuery() != null && parseRes.twoStepQueryKey() != null &&
- !parseRes.twoStepQuery().explain())
+ !parseRes.twoStepQuery().explain() && remainingSql == null)
twoStepCache.putIfAbsent(parseRes.twoStepQueryKey(), new H2TwoStepCachedQuery(meta,
twoStepQry.copy()));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/92af5389/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
index becd586..65b9795 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
@@ -47,10 +47,8 @@ public class MultipleStatementsSqlQuerySelfTest extends GridCommonAbstractTest {
/**
* Test query without caches.
- *
- * @throws Exception If failed.
*/
- public void testQuery() throws Exception {
+ public void testQuery() {
GridQueryProcessor qryProc = node.context().query();
SqlFieldsQuery qry = new SqlFieldsQuery(
@@ -92,10 +90,8 @@ public class MultipleStatementsSqlQuerySelfTest extends GridCommonAbstractTest {
/**
* Test query without caches.
- *
- * @throws Exception If failed.
*/
- public void testQueryWithParameters() throws Exception {
+ public void testQueryWithParameters() {
GridQueryProcessor qryProc = node.context().query();
SqlFieldsQuery qry = new SqlFieldsQuery(
@@ -137,9 +133,8 @@ public class MultipleStatementsSqlQuerySelfTest extends GridCommonAbstractTest {
}
/**
- * @throws Exception If failed.
*/
- public void testQueryMultipleStatementsFailed() throws Exception {
+ public void testQueryMultipleStatementsFailed() {
final SqlFieldsQuery qry = new SqlFieldsQuery("select 1; select 1;").setSchema("PUBLIC");
GridTestUtils.assertThrows(log,
@@ -151,4 +146,33 @@ public class MultipleStatementsSqlQuerySelfTest extends GridCommonAbstractTest {
}
}, IgniteSQLException.class, "Multiple statements queries are not supported");
}
+
+ /**
+ * Check cached two-steps query.
+ */
+ public void testCachedTwoSteps() {
+ List<FieldsQueryCursor<List<?>>> curs = sql("SELECT 1; SELECT 2");
+
+ assertEquals(2, curs.size());
+ assertEquals(1, curs.get(0).getAll().get(0).get(0));
+ assertEquals(2, curs.get(1).getAll().get(0).get(0));
+
+ curs = sql("SELECT 1; SELECT 2");
+
+ assertEquals(2, curs.size());
+ assertEquals(1, curs.get(0).getAll().get(0).get(0));
+ assertEquals(2, curs.get(1).getAll().get(0).get(0));
+ }
+
+ /**
+ * @param sql SQL query.
+ * @return Results.
+ */
+ private List<FieldsQueryCursor<List<?>>> sql(String sql) {
+ GridQueryProcessor qryProc = node.context().query();
+
+ SqlFieldsQuery qry = new SqlFieldsQuery(sql).setSchema("PUBLIC");
+
+ return qryProc.querySqlFields(qry, true, false);
+ }
}