阅读 Presto 源代码(二):SQL 解析

提交 SQL

Presto 客户端向 Presto Coordinator 提交 SQL。通过 StatementClient 发送 HTTP 请求 StatementResource 接口创建查询、获取查询结果。

提交 SQL

生成 AST

Presto 使用 ANTLR4 对 SQL 进行词法分析和语法分析生成抽象语法树(Abstract Syntax Tree,AST)。语法在 presto-parser 模块下 SqlBase.g4 文件中定义。

抽象语法树节点继承自 Node 抽象类,定义在 presto-parser 模块下 io.prestosql.sql.tree 包中。

生成 AST

语义分析

语义分析

生成逻辑计划

生成逻辑计划

生成分布式计划

生成分布式计划

参考