Apache Calcite 是否提供添加自定义子句或语句的方法?

Does Apache Calcite provide a way to add custom clauses or statements?

我目前正在开展一个项目,以扩展 SQL 的功能以支持更多基于 Apache Flink 的流计算功能。

经过大量搜索,我发现 Calcite 是一个很好的工具,可以帮助我解析、验证和优化那些 SQL 查询,但是 Calcite 的流式支持还不成熟,所以我必须改进它适合我的需要。

因此,我想知道是否有办法添加像

这样的自定义子句
CREATE TABLE my_table (
    id   bigint,
    user varchar(20)
) PARAMS (
    connector 'kafka',
    topic     'my_topic'
)

它使用 PARAMS 定义如何从 Kafka 连接器接收数据并将其视为动态 table 作为 Flink 的数据源。

由于这方面的信息太少了,如果有人能提供一些提示,我将不胜感激。

谢谢:)

在最新版本(1.15.0,2017 年 12 月 11 日)之前,Apache Calcite 不支持 DDL 语句,例如 CREATE TABLEDROP TABLE。原因是

SELECT and DML are standardized, but DDL tends to be database-specific, so our policy is that you make DDL extensions outside of Calcite.

(参见 Calcite dev mailing list)。

对于 Calcite 1.15.0,社区添加了 basic support for DDL statements. The feature was implemented as an optional module and shows how to customize DDL statements (see documentation)。因此,仍然期望使用 Calcite 的系统根据需要自定义解析器和 DDL 语法。