sql - 如何在 Babel 解析器中添加诸如 “lateral view explode” 之类的关键字

标签 sql apache-calcite

我想将 SQL 语句(ANSI SQL 或 HiveQL)解析为等效的 AST。当我尝试解析其中包含“lateral view explode”关键字(这是一种有效的 HiveQL 语法)的语句时,Babel 失败并出现 ParseException。将这些作为关键字添加到 Babel 的默认关键字列表中也无济于事。谁能给我指出一个类似的例子。

最佳答案

方解石确实支持横向关键字,但不支持“view explode”关键字。: https://github.com/apache/calcite/blob/master/core/src/main/codegen/templates/Parser.jj#L2083

您可以扩展解析器,并且可以使用自由标记支持来跳过不受支持的关键字(我自己还没有尝试过): https://calcite.apache.org/docs/adapter.html#extending-the-parser

但是,如果需要通过相应的SqlNode实现访问,则需要修改核心模块,需要贡献。

关于 parser.jj 的更多信息: https://stackoverflow.com/a/44467850/1332098

关于sql - 如何在 Babel 解析器中添加诸如 “lateral view explode” 之类的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58438357/

相关文章:

sql - Postgresql计算计算总数的平均值

java.lang.NumberFormatException : null - cannot read input type

sql - 将所有 Controller 操作包装在 Rails 中的事务中

java - Apache Calcite 在 SQL 字符串中查找选定的列

将 Apache Calcite 作为库嵌入到我的应用程序中

sql - 为什么此查询要求参数值?

sql - 表上的额外列与磁盘上的大小

java - 如何在方解石中将项目、过滤器、聚合下推到 TableScan

sql - Apache Calcite - 使用 SQL 访问 RESTFul 服务

java - 如何在 Apache Calcite 中格式化日期字段?