SQL-网格不支持聚合函数

SQL-Grid not support AggregationFunction

我有以下 sql 句子:

select a.age,floor(a.score) score,count(1) cnt,group_concat(a.id) ids from test_table a group by a.age,floor(a.score) having count(a.id)>10 order by a.age asc,floor(a.score) asc

它可以在 IGNITE_H2_DEBUG_CONSOLE 中执行,但使用 SqlFieldsQuery 时出现以下异常:

Exception in thread "main" javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: null
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1823)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:795)
    at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:765)
    at com.xxx.ignite.test2.TestBinaryQuery.query(TestBinaryQuery.java:194)
    at com.xxx.ignite.test2.TestBinaryQuery.main(TestBinaryQuery.java:78)
Caused by: class org.apache.ignite.IgniteCheckedException: null
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2316)
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1820)
    ... 4 more
Caused by: java.lang.UnsupportedOperationException
    at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAggregateFunction.getSQL(GridSqlAggregateFunction.java:84)
    at org.apache.ignite.internal.processors.query.h2.sql.GridSqlAlias.getSQL(GridSqlAlias.java:80)
    at org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.getSQL(GridSqlSelect.java:141)
    at org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter.split(GridSqlQuerySplitter.java:199)
    at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryDistributedSqlFields(IgniteH2Indexing.java:1307)
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1815)
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.applyx(GridQueryProcessor.java:1813)
    at org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
    at org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2293)
    ... 5 more

我试了一下,发现不支持的操作是group_concat。 Custom-SQL-Functions 也不支持像 Spark 中的 UDAF 这样的聚合。未来版本支持吗?

当前版本不支持自定义聚合函数,但计划在未来支持它们。 这是一张票: https://issues.apache.org/jira/browse/IGNITE-2177