1. 前言
pg内核完成原始解析树(raw parsetree)相关功能入口是exec_simple_query()
函数中的pg_analyze_and_rewrite()
,该函数位于postgres.c
(src/backend/cop )。该函数内部有几个非常重要的函数调用处理:
- (1)pg_parse_query()
对一个或多个查询(原始字符串,如:SELECT *FROM pg_class;)进行基本解析(即使我们处于事务中止状态,这也应该是安全的) - (2)循环处理(foreach(parsetree_item, parsetree_list))
该循环函数功能是:运行原始解析树并处理其中每个解析树。 【本文重点 ✔】 - (3) 待分析完成(2)内容后,再继续补充 【TODO】
2. 处理 raw parsetree
foreach()
是PG内核中封装的一个解析List的循环函数。这在