如何在RelNode中实现STRING_AGG?

How to achive STRING_AGG in RelNode?

我有一个查询,我想用分隔符 , 连接所有行。我可以使用 STRING_AGG 在 sql 中轻松实现此目的。如何为以下查询创建 relNode?

SELECT STRING_AGG(CONCAT(col1, col2, col3), ',')
FROM table;

是否有一个 SqlStdOperator 可以做到这一点?

如果不是,builder.call(..., RexNode... rexNodes) 中的 SqlStdOperator(s) 的哪些组合可用于实现此目的?

STRING_AGG 等价于 SqlStdOperator.LISTAGG

builder
.scan("table")
.project(
    builder.call(SqlStdOperatorTable.LISTAGG,
        builder.call(SqlStdOperatorTable.CONCAT,
            builder.field("col1"),
            builder.call(SqlStdOperatorTable.CONCAT,
                builder.field("col2"),
                builder.field("col3")
            )
        ),
        builder.literal(",")
    )
)
.build()