我目前正在撰写关于PostgreSQL的论文,但我找不到任何地方(包括他们的文档),这是用于查询处理和优化的中间语言。
答案 0 :(得分:4)
没有中间语言"就这样。
将SQL解析为Node*
的解析树。然后将其传递给查询重写器,然后由规划器/优化器转换为计划树。您可以使用(记录的)选项debug_print_parse
,debug_print_rewritten
和debug_print_plan
查看这些树。
请参阅源代码 - 特别是src/backend/parser/
,src/backend/rewrite
和src/backend/optimizer/
,以及src/include/nodes/nodes.h
,plannodes.h
,parsenodes.h
等。请注意,优化器和解析器源目录中都有README
个文件。