You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2020/03/26 20:35:52 UTC

[ignite] branch master updated: IGNITE-12829: Custom GROUP_CONCAT separator is ignored. (#7574)

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

nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 458b452  IGNITE-12829: Custom GROUP_CONCAT separator is ignored. (#7574)
458b452 is described below

commit 458b452394dfc45e56c03a05d127777e56ef52cc
Author: Nikolay <ni...@apache.org>
AuthorDate: Thu Mar 26 23:35:28 2020 +0300

    IGNITE-12829: Custom GROUP_CONCAT separator is ignored. (#7574)
---
 .../query/h2/sql/GridSqlQuerySplitter.java         |  5 ++++-
 .../query/IgniteSqlGroupConcatCollocatedTest.java  | 26 ++++++++++++++++++++++
 .../IgniteSqlGroupConcatNotCollocatedTest.java     | 25 +++++++++++++++++++++
 3 files changed, 55 insertions(+), 1 deletion(-)

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 dc5786e..93eed77 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
@@ -1733,7 +1733,10 @@ public class GridSqlQuerySplitter {
                 if (hasDistinctAggregate)
                     mapAgg = agg.child();
                 else {
-                    mapAgg = SplitterUtils.aggregate(agg.distinct(), agg.type()).resultType(GridSqlType.STRING)
+                    mapAgg = SplitterUtils
+                        .aggregate(agg.distinct(), agg.type())
+                        .setGroupConcatSeparator(agg.getGroupConcatSeparator())
+                        .resultType(GridSqlType.STRING)
                         .addChild(agg.child());
                 }
 
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatCollocatedTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatCollocatedTest.java
index 70d6b95..e26eab4 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatCollocatedTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatCollocatedTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.query;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -117,6 +118,31 @@ public class IgniteSqlGroupConcatCollocatedTest extends AbstractIndexingCommonTe
      *
      */
     @Test
+    public void testGroupConcatSeparator() {
+        IgniteCache c = ignite(CLIENT).cache(CACHE_NAME);
+
+        List<List<Object>> res = c.query(
+            new SqlFieldsQuery("select grp, GROUP_CONCAT(str0 SEPARATOR '.') from Value WHERE id < ?  group by grp")
+                .setCollocated(true).setArgs(KEY_BASE_FOR_DUPLICATES)).getAll();
+
+        List<List<Object>> expRes = Arrays.asList(
+            Arrays.asList(1, "A"),
+            Arrays.asList(2, "C.B"),
+            Arrays.asList(3, "E.D.F"),
+            Arrays.asList(4, "J.G.I.H"),
+            Arrays.asList(5, "O.L.N.K.M"),
+            Arrays.asList(6, "Q.S.U.P.R.T"));
+
+        assertEquals(res.size(), expRes.size());
+
+        for (int i = 0; i < res.size(); i++)
+            assertEqualsCollections(expRes.get(i), res.get(i));
+    }
+
+    /**
+     *
+     */
+    @Test
     public void testGroupConcatOrderBy() {
         IgniteCache c = ignite(CLIENT).cache(CACHE_NAME);
 
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatNotCollocatedTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatNotCollocatedTest.java
index 7740342..ac43eb8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatNotCollocatedTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlGroupConcatNotCollocatedTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.query;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -100,6 +101,30 @@ public class IgniteSqlGroupConcatNotCollocatedTest extends AbstractIndexingCommo
      *
      */
     @Test
+    public void testGroupConcatSeparator() {
+        IgniteCache c = ignite(CLIENT).cache(CACHE_NAME);
+
+        List<List<Object>> res = c.query(
+            new SqlFieldsQuery("select grp, GROUP_CONCAT(str0 SEPARATOR '.') from Value group by grp")).getAll();
+
+        List<List<Object>> expRes = Arrays.asList(
+            Arrays.asList(1, "A"),
+            Arrays.asList(2, "C.B"),
+            Arrays.asList(3, "E.D.F"),
+            Arrays.asList(4, "J.G.I.H"),
+            Arrays.asList(5, "O.L.N.K.M"),
+            Arrays.asList(6, "Q.S.U.P.R.T"));
+
+        assertEquals(res.size(), expRes.size());
+
+        for (int i = 0; i < res.size(); i++)
+            assertEqualsCollections(expRes.get(i), res.get(i));
+    }
+
+    /**
+     *
+     */
+    @Test
     public void testGroupConcatCountDistinct() {
         IgniteCache c = ignite(CLIENT).cache(CACHE_NAME);