版本 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等
原提问者GitHub用户liangyongz
QLUtils.parseStatements 是阿里巴巴的 druid-sql 工具库提供的一个方法,用于将 SQL 语句解析为 SQL 语句列表。不过,这个方法可能无法解析某些特定数据库的语法,例如 ClickHouse 中的 GLOBAL 关键字和 JOIN 关键字组合成的 GLOBAL JOIN。
如果您需要解析 ClickHouse 中的 GLOBAL JOIN 语法,可以尝试使用 ClickHouse 官方提供的 JDBC 驱动和 SQL 语法解析器。ClickHouse 官方提供的 JDBC 驱动是支持 GLOBAL JOIN 语法解析的,
根据您提供的信息和链接,Druid 在 #3977 问题中确实提到了支持 GLOBAL IN,但没有提及支持 GLOBAL JOIN 或 GLOBAL LEFT JOIN。因此,根据当前版本的限制,您无法在 Druid 中使用 GLOBAL JOIN 或 GLOBAL LEFT JOIN 语法。
如果您需要执行此类全局联接操作,可能需要考虑使用其他的 SQL 查询引擎或库,或者手动编写支持全局联接的自定义查询逻辑。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。