$PostgreSQL: pgsql/src/backend/parser/README,v 1.11 2009/10/31 01:41:31 tgl Exp $
分析器
======
这个目录中的程序不仅仅是对SQL查询进行词法分析和语法分析.它们还会为各种各样的复杂查询创建查询结构体,然后将这些结构体传给优化器,然后是执行器.
parser.c 所有的操作从这里开始
scan.l 对查询进行词法分析
scansup.c 处理输入字符串中的转义字符(escapes)
kwlookup.c 将关键字转换为特定的符号(tokens)
keywords.c 标准关键字表(传给kwlookup.c)
gram.y 对词法分析输出的字符进行语法分析,并且产生一个"原生"("raw")的语法分析树
analyze.c 优化查询的最高层级的语法分析
parse_agg.c 处理聚集函数,例如SUM(col1), AVG(col2), ...
parse_clause.c 处理查询子句(clauses),例如WHERE, ORDER BY, GROUP BY, ...
parse_coerce.c 处理表达式中不同数据类型的强制转换
parse_cte.c 处理通常的表的表达式(Common Table Expressions), (WITH子句)
parse_expr.c 处理表达式,例如 col, col + 3, x = 3 or x = 4
parse_func.c 处理函数, table.column and column 的标识符
parse_node.c 创建不同结构体的node
parse_oper.c 处理表达式中的运算符
parse_param.c 处理参数(对于在后台进程中使用的情况)
parse_relation.c 表和列处理的支持例程
parse_target.c 处理查询的结果列表
parse_type.c 数据类型处理的支持例程
parse_utilcmd.c 命令的分析处理(在执行期完成)