一文走进SQL编译-语义解析
一、概述
检查数据库或表是否存在 检查语句所需的特定权限 对语句中的表达式进行语义解析 检查 DDL 语句所请求的 schema change 的有效性
二、语义解析
检查查询是否为 SQL 语言中的有效语句 解析名称,例如表名或变量名的值 消除不必要的中间计算,例如用 1.0 替换 0.6 + 0.4,这也被称为常数折叠 确定用于中间结果的数据类型
Source and target analysis (目标解析) Permission check (权限校验) Semantic decomposition & validation (表达式拆分及其语义解析)
用 parser.IndexedVar 实例替换列名 用 parser.FuncDef 引用替换函数名
常数折叠 类型推断 类型检查 在 ComparisonExpr 节点上记忆比较器函数 用其类型来注释表达式和占位符
(a+1) < 3 is transformed to a < 2 -(a - b) is transformed to (b - a) a between c and d is transformed to a >= c and a <= d
往期推荐
有奖问答 | 如何快速编写出高质量的Go应用程序?
PHP程序员薪资竟然垫底、PG取代MySQL成为最流行数据库
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章