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

lincoln lee updated FLINK-32456:
--------------------------------
    Fix Version/s: 1.18.0
                   1.17.2

> JSON_OBJECTAGG & JSON_ARRAYAGG cannot be used with other aggregate functions
> ----------------------------------------------------------------------------
>
>                 Key: FLINK-32456
>                 URL: https://issues.apache.org/jira/browse/FLINK-32456
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / API
>    Affects Versions: 1.15.4, 1.16.2, 1.17.1
>            Reporter: lincoln lee
>            Assignee: lincoln lee
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.18.0, 1.17.2
>
>         Attachments: image-2023-06-28-11-32-49-862.png
>
>
> FLINK-16205 &  FLINK-16206 added the support for the new aggregate functions: 
> JSON_OBJECTAGG & JSON_ARRAYAGG, but has a limitation (which is not documented 
> yet) that cannot be used with other aggregate functions, e.g.,
> {code}
> SELECT f0, count(f1), sum(f2), JSON_OBJECTAGG(f1 VALUE f0) FROM T GROUP BY f0
> {code}
> will raise an internal AssertionError
> {code}
> java.lang.AssertionError: Cannot add expression of different type to set:
> set type is RecordType(INTEGER f0, BIGINT NOT NULL EXPR$1, INTEGER EXPR$2, 
> VARCHAR(2000) CHARACTER SET "UTF-16LE" NOT NULL EXPR$3) NOT NULL
> expression type is RecordType(INTEGER f0, BIGINT NOT NULL EXPR$1) NOT NULL
> set is rel#25:LogicalAggregate.NONE.any.None: 
> 0.[NONE].[NONE](input=HepRelVertex#24,group={0},EXPR$1=COUNT($1),EXPR$2=SUM($2),EXPR$3=JSON_OBJECTAGG_NULL_ON_NULL($1,
>  $0))
> expression is LogicalAggregate(group=[{0}], EXPR$1=[COUNT($3)])
>   LogicalProject(f0=[$0], f1=[$1], f2=[$2], $f3=[JSON_STRING($1)])
>     LogicalTableScan(table=[[default_catalog, default_database, T]])
> {code} 
> because the implementation rule only supports single json agg function
> an example case runnning on postgresql:
> {code}
> select b, json_object_agg(a, c), count(*), sum(a) from t1 group by b;
> {code}
>  !image-2023-06-28-11-32-49-862.png! 
> The following improvements include two parts:
> 1. update current documentation to clarify the limitation
> 2. expand the implementation to support mixed use with other aggregate 
> functions 



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

Reply via email to