TLightSky / 为SQL添加CTE(WITH)支持
Created 2019-05-20 Modifyed 2019-05-20

317 Words

SQL Withfy

改造方案遇到困难

尝试对python parser和tidb parser改造,

遇到了困难,

  • python parser是基于generator的,想要机遇ast进行修改替换内容相对比较困难
  • tidb的parser是严格兼容Mysql语法的,想要做一套一并兼容mysql和clickhouse的方案比较困难

正好碰到另外一个自写parser的解决方案

于是决定还是使用自写parser这种方案

自写parser方案

目前想到的是可以使用goyacc来解析大的SELECT组件,

然后对于subquery也使用这样的进行解析。

得到这样的一个粗略的抽象语法树之后,

对所有的table部分进行替换

2020更新

最近基于 @亚洲 的一套标准查询模板基本解决了多层嵌套的问题,