OceanBase源码解读:SQL改写阶段总入口 ob_transformer_impl
一条 SQL 从客户端进入 Observer 进程后,会先后经历「解析 → 改写 → 优化 → 代码生成」四个阶段。其中改写阶段(Rewrite)的核心目标是:在不改变 SQL 语义的前提下,把语句对象(ObDMLStmt)”重塑”成更易于优化器(CBO)处理的形态。本文聚焦 1247 行的 ob_transformer_impl.cpp——它把 30 余种改写规则(视图合并、子查询去关联、OR 展开、谓词下推、count 转 exists 等)收敛到一个统一的调度框架内,是改写阶段的总指挥。