DTStack / dt-sql-parser

SQL Parsers for BigData, built with antlr4.
https://dtstack.github.io/monaco-sql-languages/
MIT License
300 stars 95 forks source link

请问目前支持的各 sql 分别是版本?可以自定义 grammar 内的文件来支持制定版本的 sql 吗? #240

Closed zhi-zhi-zhi closed 11 months ago

zhi-zhi-zhi commented 11 months ago

如题

HaydenOrz commented 11 months ago

对于不同版本的问题,我们也很头疼,目前采取的策略是,语法文件和对应的单元测试根据最新的官方文档编写,同时兼容部分低版本的语法,比如mysql的支持 8.x 语法,同时兼容了 5.x 的语法 。Flink 和 Trino 稍微特殊一点,Flink 支持的版本是 Flink 1.16 (目前此版本应用最广泛), Trino 支持的版本是 385。

需要兼容低版本的语法的情况并不太多,sql 很少会有对某种语法破坏性变更(破坏性变更包括废弃语法和修改原有语法)绝大多数情况下新版本相比于旧版本都是新增语法,另外,我们会有选择性的进行兼容,有一些只在很低版本支持的语法,我们也并没有做兼容。这样做是因为我们需要在维护成本和支持度上取得平衡。

如果你需要其他版本的支持,你可以fork本项目自行修改语法文件,并运行 npm run antlr4 命令重新编译语法文件。

zhi-zhi-zhi commented 11 months ago

谢谢解答! @HaydenOrz

PostgreSQL 看了一下里面的 comment,有提到 PostgreSQL 14,请问 PostgreSQL 支持的大版本是到 14 了吗?

HaydenOrz commented 11 months ago

PostgreSQL 看了一下里面的 comment,有提到 PostgreSQL 14,请问 PostgreSQL 支持的大版本是到 14 了吗?

pgsql 目前支持到 16.1 即最新版本, 你可以通过 postgresql 的官方文档查看到版本信息 https://www.postgresql.org/docs/

另外 dt-sql-parser 中 pgsql 的grammar文件也注释了文档链接

image