[ 
https://issues.apache.org/jira/browse/IGNITE-22023?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Pereslegin updated IGNITE-22023:
--------------------------------------
    Description: 
JSON aggregate functions ({{json_objectagg}} and {{json_arrayagg}}) are 
supported in calcite, but they fail in Ignite 3 with "Illegal aggregate 
function" exception.

{code:java}
// CREATE TABLE t(id INT PRIMARY KEY, val INT);
// INSERT INTO t VALUES (1, 1);

assertQuery("SELECT JSON_OBJECTAGG(id: val) FROM t")
        .returns("{\"1\":1}")
        .check();
{code}


{noformat}
Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, 
column 8 to line 1, column 30: Illegal aggregate function. 
JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:948)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:933)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5517)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateFunction(IgniteSqlValidator.java:823)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateParams(IgniteSqlValidator.java:537)
        at 
org.apache.calcite.sql.SqlAggFunction.validateCall(SqlAggFunction.java:137)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateCall(SqlValidatorImpl.java:6232)
        at org.apache.calcite.sql.SqlCall.validate(SqlCall.java:143)
        at org.apache.calcite.sql.SqlNode.validateExpr(SqlNode.java:275)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateExpr(SqlValidatorImpl.java:4714)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4679)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3840)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateSelect(IgniteSqlValidator.java:466)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:61)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:88)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1154)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1125)
        at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:282)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1091)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:797)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validate(IgniteSqlValidator.java:179)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.validateAndGetTypeMetadata(IgnitePlanner.java:283)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$3(PrepareServiceImpl.java:315)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
        ... 3 more
Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Illegal 
aggregate function. JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
        at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:601)
        ... 27 more


{noformat}

  was:
JSON aggregate functions ({{json_objectagg}} and {{json_arrayagg}}) are 
supported in calcite, but they fail in Ignite 3 with "Illegal aggregate 
function" exception.

{code:java}
assertQuery("SELECT JSON_OBJECTAGG(id: val) FROM t")
        .returns("{\"1\":1}")
        .check();
{code}


{noformat}
Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, 
column 8 to line 1, column 30: Illegal aggregate function. 
JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:948)
        at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:933)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5517)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateFunction(IgniteSqlValidator.java:823)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateParams(IgniteSqlValidator.java:537)
        at 
org.apache.calcite.sql.SqlAggFunction.validateCall(SqlAggFunction.java:137)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateCall(SqlValidatorImpl.java:6232)
        at org.apache.calcite.sql.SqlCall.validate(SqlCall.java:143)
        at org.apache.calcite.sql.SqlNode.validateExpr(SqlNode.java:275)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateExpr(SqlValidatorImpl.java:4714)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4679)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3840)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateSelect(IgniteSqlValidator.java:466)
        at 
org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:61)
        at 
org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:88)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1154)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1125)
        at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:282)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1091)
        at 
org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:797)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validate(IgniteSqlValidator.java:179)
        at 
org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.validateAndGetTypeMetadata(IgnitePlanner.java:283)
        at 
org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$3(PrepareServiceImpl.java:315)
        at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
        ... 3 more
Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Illegal 
aggregate function. JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
        at 
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at 
org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
        at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:601)
        ... 27 more


{noformat}


> Sql. Support Json aggregate functions
> -------------------------------------
>
>                 Key: IGNITE-22023
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22023
>             Project: Ignite
>          Issue Type: Improvement
>          Components: sql
>            Reporter: Pavel Pereslegin
>            Priority: Major
>              Labels: ignite-3
>
> JSON aggregate functions ({{json_objectagg}} and {{json_arrayagg}}) are 
> supported in calcite, but they fail in Ignite 3 with "Illegal aggregate 
> function" exception.
> {code:java}
> // CREATE TABLE t(id INT PRIMARY KEY, val INT);
> // INSERT INTO t VALUES (1, 1);
> assertQuery("SELECT JSON_OBJECTAGG(id: val) FROM t")
>         .returns("{\"1\":1}")
>         .check();
> {code}
> {noformat}
> Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, 
> column 8 to line 1, column 30: Illegal aggregate function. 
> JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
>       at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
>       at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
>       at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:948)
>       at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:933)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:5517)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateFunction(IgniteSqlValidator.java:823)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateAggregateParams(IgniteSqlValidator.java:537)
>       at 
> org.apache.calcite.sql.SqlAggFunction.validateCall(SqlAggFunction.java:137)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateCall(SqlValidatorImpl.java:6232)
>       at org.apache.calcite.sql.SqlCall.validate(SqlCall.java:143)
>       at org.apache.calcite.sql.SqlNode.validateExpr(SqlNode.java:275)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateExpr(SqlValidatorImpl.java:4714)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelectList(SqlValidatorImpl.java:4679)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3840)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validateSelect(IgniteSqlValidator.java:466)
>       at 
> org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:61)
>       at 
> org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:88)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1154)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1125)
>       at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:282)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1091)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:797)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.validate(IgniteSqlValidator.java:179)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgnitePlanner.validateAndGetTypeMetadata(IgnitePlanner.java:283)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$3(PrepareServiceImpl.java:315)
>       at 
> java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
>       ... 3 more
> Caused by: org.apache.calcite.sql.validate.SqlValidatorException: Illegal 
> aggregate function. JSON_OBJECTAGG_NULL_ON_NULL is unsupported at the moment
>       at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
>       at 
> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:507)
>       at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:601)
>       ... 27 more
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to