上一篇:【0253】深入分析Query Execution(一)
1. 转换(Transformation)
在下一阶段,可以对查询进行转换(重写, rewritten
)。
PostgreSQL核心使用转换有几个目的。其中之一是将解析树中的视图名称替换为与该视图的基本查询相对应的子树。
使用转换的另一种情况是行级安全实现。递归查询的SEARCH和CYCLE子句。在这个阶段也会发生变化。
在上面的例子中,pg_tables是一个视图;如果我们将其定义放入查询文本中,它看起来如下:
SELECT schemaname, tablename
FROM (
-- pg_tables
SELECT n.nspname AS schemaname,
c