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

经过大量搜索之后,我发现Calcite是帮助我解析,验证和优化这些SQL查询的好工具,但是Calcite的流支持仍然不成熟,因此我必须对其进行改进以满足自己的需求。

因此,我想知道是否有添加自定义子句的方法

CREATE TABLE my_table (
    id   bigint,
    user varchar(20)
) PARAMS (
    connector 'kafka',
    topic     'my_topic'
)


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

由于此方面的信息很少,如果你们中的某人可以提供一些提示,我将不胜感激。

谢谢 : )

最佳答案

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


SELECT和DML是标准化的,但DDL倾向于
特定于数据库的,因此我们的政策是您进行DDL扩展
方解石之外。


(请参见Calcite dev mailing list)。

在Calcite 1.15.0中,社区添加了basic support for DDL statements。该功能已作为可选模块实现,并显示了如何自定义DDL语句(请参见documentation)。因此,仍然期望使用Calcite的系统可以根据需要自定义解析器和DDL语法。

09-25 17:44