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 dc5786ebe9eb4..93eed77f291ab 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 @@ private void splitAggregate( 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 70d6b951efbef..e26eab4386ac1 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; @@ -113,6 +114,31 @@ public void testGroupConcatSimple() { } } + /** + * + */ + @Test + public void testGroupConcatSeparator() { + IgniteCache c = ignite(CLIENT).cache(CACHE_NAME); + + List> 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> 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)); + } + /** * */ 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 7740342757104..ac43eb868e779 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; @@ -96,6 +97,30 @@ public void testGroupConcatSimple() { } } + /** + * + */ + @Test + public void testGroupConcatSeparator() { + IgniteCache c = ignite(CLIENT).cache(CACHE_NAME); + + List> res = c.query( + new SqlFieldsQuery("select grp, GROUP_CONCAT(str0 SEPARATOR '.') from Value group by grp")).getAll(); + + List> 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)); + } + /** * */