首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

PostgreSQL服务进程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree

2013-11-08 
PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree话说查询“selectcname, com

PostgreSQL服务过程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree

话说查询“selectcname, comp from test1, test2 where test1.id=test2.id;” 发送到服务器端,走查询分支exec_simple_query,先调用start_xact_command初始化了事务管理相关对象和资源,接着调用pg_parse_query,通过Lex和Yacc对传入SQL语句进行词法语法解析,生成解析树。

下面是解析SQL语句的调用序列图。



PostgreSQL服务进程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree

Postgres服务进程简查之开始事务调用序列图

通过Lex和Yacc对传入SQL语句进行词法语法解析,主要是把SQL语句里的目前字段、DISTINCT子句、FROM子句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句等解析到各自对应的结构中,组织成各自的数据结构,最后组成解析树parsetree。分析完后对应SQL语句“selectcname, comp from test1, test2 where test1.id=test2.id;”的解析树结构如下图:


PostgreSQL服务进程中的那些事二:Pg服务进程处理简单查询二:SQL解析为parsetree

例子中SQL语句对应的解析树结构

?Lex and YACC primer/HOWTO http://tldp.org/HOWTO/Lex-YACC-HOWTO.html ,短短20页,足够让你建立自信,一个上午足够了吧。

  • A Compact Guide to Lex & Yacc http://epaperpress.com/lexandyacc/ ,修行再提高一步,一个下午搞定。
  • 创始人写的书你得看看吧,Lex and yacc, By John R. Levine, Tony Mason, Doug Brown ,不能下载,没关系,这里有:http://www.filefront.com/16046001/lex--yacc.pdf/ ,第五章Parsing SQL你不看一看?晚上吃完饭在教室里摆开架势三个小时敲定这短短30页的第5章,一气呵成,搞定。


    ?

    ?

    ------------
    转载请注明出处,来自博客:
    blog.csdn.net/beiigang
    beigang.iteye.com

  • 热点排行