【发布时间】:2016-11-25 11:44:12
【问题描述】:
我目前正在处理一个项目,我想在其中解析 SQL 查询并为其创建关系表达式树。 主要目标是识别查询中的加入伙伴。 所以我想将连接表达式向下推到树的叶子上。 为此,我决定使用 Apache Calcite。 我的代码目前大致是这样的:
Planner planner = Frameworks.getPlanner(Frameworks.newConfigBuilder().defaultSchema(Frameworks.createRootSchema(false)).build());
SqlNode parsed = planner.parse("SELECT s.dnasamplename, e.Total_expression_level, e.Soluble_expression_level, s.id " +
"FROM table1 e" +
"JOIN table2 s on s.constructname = e.Clone_name" +
"WHERE e.Total_expression_level like '0:%'");
planner.validate(parsed);
RelRoot relRoot = planner.rel(parsed);
如果我尝试直接执行Planner 的rel-Method,我会收到必须先验证查询的错误。这就是我面临麻烦的地方。我没有有效的架构。我只想将查询转换为关系查询计划。有没有办法跳过验证过程?
【问题讨论】:
标签: java validation parsing tree apache-calcite