要理解规则系统的工作原理,首先需要明确其调用的时机以及它的输入与输出。 规则系统位于语法解析器(Parser)与查询规划器(Planner)之间。它接收解析器输出的原始查询树(Query Tree),结合用户预先定义的重写规则,计算输出零个或多个经过修改重构的新查询树。
什么是查询树?查询树是 SQL 语句在数据库内核内部的结构化抽象表示。查询树的核心构成部分包括:
指示生成该查询树的基础命令类型(如 SELECT、INSERT、UPDATE、DELETE)。
查询中引用的所有关系表或视图的内部编号索引清单(即 FROM 子句涉及的全部实体)。
对于写入型语句,指向待写入数据的目标表在范围表中的对应条目编号。
输出列投影表达式清单(即选择列表内容)。
布尔过滤表达式(即 WHERE 子句内容)。