基本需求如下:
前提:
我在网上找的脚手架 druid parser ,apache calcite ,都是比较好的,但对于比较复杂的 sql 语句,可能就识别不出来了。而且这两个脚手架的开发 api 资料在网上也不足。
1
wangyiyi10 2022-09-30 09:43:24 +08:00
calcite 用过,应该不会出现 sql 识别不出来的情况吧?除非是 SQL 语法上不兼容。也就是 calcite 调用的语法标准和你执行引擎不一致。
还有就是 SQL 优化部分,calcite 也是有的,只是如果你只有 meta 信息,基本只能做简单的基于规则的优化。 |
2
qocja 2022-09-30 10:13:41 +08:00
1. 小米和美团我记得都有类似的工具, SQLAdvisor, 另一个叫啥忘了, 自己拿 antrl 写一个也行
|
3
qocja 2022-09-30 10:15:02 +08:00
antrl->antlr
|
4
qocja 2022-09-30 10:16:05 +08:00
2. 这个就是做低代码呗, 没啥好用的脚手架, 单表简单, 多表多一个生成 DAG, 自己写了就完事
|
5
route OP @wangyiyi10
我在测试 calcite 的时候,使用 mysql 数据库执行这条语句:"SELECT @rowNum:=@rowNum + 1 AS ‘行号’,a.* FROM class a,(SELECT @rowNum:=0) b“,报错了,词法分析分析不出 @这个,另外加上转义字符可能也是别不出。但是基于 mysql 是可以执行的。 |