代码生成是查询编译的最后一个步骤,其作用是把逻辑执行计划翻译成物理执行计划。查询优化器生成逻辑执行计划是对执行路径的逻辑表示,理论上已经具备可执行能力,但是这种逻辑表达带有过多的语义信息和优化器所需的冗余数据结构,对于执行引擎来说还是相对“偏重”。
为了提高计划的执行效率,OceanBase 通过代码生成器把逻辑计划树翻译成更适合查询执行引擎运行的树形结构,包括把逻辑算子翻译成物理运算符、中缀表达式翻译成后缀表达式、把语义信息翻译成执行所需的逻辑信息、去除不必要的冗余数据结构等等,最终得到一个可重入的物理执行计划。
物理执行计划的精简和可重入是 OceanBase 的 SQL 引擎的重要特征,是实现计划缓存的基础。