开发者社区> 问答> 正文

SQLUtils.parseStatements无法解析clickhouse语法GLOBAL JOI

版本 1.2.6

sql select id from tableA t1 GLOBAL join tableB t2 on t1.id=t2.id

报错 Exception in thread "main" com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'id from tableA t1 global join tableB t2 on t1.id, pos 31, line 1, column 26, token GLOBAL at com.alibaba.druid.sql.parser.SQLParser.printError(SQLParser.java:576) at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatementList(SQLStatementParser.java:602) at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:565) at com.alibaba.druid.sql.SQLUtils.parseStatements(SQLUtils.java:587) at io.terminus.dice.fdp.tagengine.utils.TsqlUtil.convertDruidChsql(TsqlUtil.java:112) at io.terminus.dice.fdp.tagengine.utils.TsqlUtil.main(TsqlUtil.java:124)

https://github.com/alibaba/druid/issues/3977显示1.2.2已解决,但是在1.2.6中还是无法解析clickhouse的global

我使用#3977 的sql测试 结果:只支持GLOBAL IN;不支持:GLOBAL JOIN/LEFT JOIN等

T16.png

原提问者GitHub用户liangyongz

展开
收起
山海行 2023-07-05 18:03:38 328 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    QLUtils.parseStatements 是阿里巴巴的 druid-sql 工具库提供的一个方法,用于将 SQL 语句解析为 SQL 语句列表。不过,这个方法可能无法解析某些特定数据库的语法,例如 ClickHouse 中的 GLOBAL 关键字和 JOIN 关键字组合成的 GLOBAL JOIN。

    如果您需要解析 ClickHouse 中的 GLOBAL JOIN 语法,可以尝试使用 ClickHouse 官方提供的 JDBC 驱动和 SQL 语法解析器。ClickHouse 官方提供的 JDBC 驱动是支持 GLOBAL JOIN 语法解析的,

    2023-07-30 20:45:25
    赞同 展开评论 打赏
  • 根据您提供的信息和链接,Druid 在 #3977 问题中确实提到了支持 GLOBAL IN,但没有提及支持 GLOBAL JOIN 或 GLOBAL LEFT JOIN。因此,根据当前版本的限制,您无法在 Druid 中使用 GLOBAL JOIN 或 GLOBAL LEFT JOIN 语法。

    如果您需要执行此类全局联接操作,可能需要考虑使用其他的 SQL 查询引擎或库,或者手动编写支持全局联接的自定义查询逻辑。

    2023-07-09 10:06:35
    赞同 展开评论 打赏
  • 1.2.8的版本已修复此问题

    原回答者GitHub用户damonyoungs

    2023-07-06 10:42:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像