文档详情

PostgreSQL学习笔记搭建了Postgres在Windows上的编译调试环境.doc

发布:2017-12-01约2.61万字共24页下载文档
文本预览下载声明
PostgreSQL学习笔记YY 搭建了Postgres在Windows上的编译调试环境 分析Postgresql源代码 2011-07-01 15:58:41| 分类: IT-POSTGRESQL | 标签: |字号大 中 小 订阅 分析Postgresql源代码(01) 向前走,你就会产生勇气。现在,让我们一起来踏上postgresql源代码分析的艰辛之路吧。欲善其事,必利其器,我将在这第一篇文章中向你介绍如何做准备工作。 1)准备用于分析的源代码 首先,到去下载源代码,最好是下载那个全部打包在一起,8MB多的文件,然后,在linux下编译安装,最后将成功编译后的源代码打包拷回windows环境,因为我推荐的源代码分析工具都是windows环境下的 2)准备用于分析源代码的工具 可以在两个方案中选择: SourceInsight, Microsoft visual c++(可以再加上visual assistant) 我推荐SourceInsight 3)准备参考书籍 关于数据库系统理论的书籍,下面二选一: 数据库系统概论(第三版),萨师煊、王珊,高等教育出版社 数据库系统概念(第四版影印版),Abraham Silberschatz等,高等教育出版社 关于数据库系统实现的书籍,下面二选一: 数据库系统实现(中文版),杨冬青等译,机械工业出版社 数据库系统实现(英文版),Hector Garcia-Molina等,机械工业出版社 关于Unix编程 Unix环境高级编程, 尤晋元等译,机械工业出版社 4)准备向别人求教 我个人以为,postgresql源代码分析是需要相当长一段时间的。在这漫长的时间和庞大的代码量面前,我觉得进行分析的人目前的水平如何倒不是很重要的了,重要的是耐心和毅力。我特别希望这里能够成为切磋讨论的地方,所以有问题,就可以优先考虑到这里来发问。 发表于 2009-9-24 23:55 | 只看该作者 分析Postgresql源代码(02) 这一篇短文中,将介绍postgresql源代码的组成。先感谢鼓励我做源代码分析的兄弟,呵呵,你们的鼓励也许将我推上了一条不归路。 从Linux下拷回通过编译的源代码后,在硬盘上展开,例如我展开后将所有的源代码放到D:\Postgresql\source目录下。然后建立一个目录D:\Postgresql\insight,打开sourceinsight后在这个目录下创建一个project,将D:\Postgresql\source\backend目录下的所有文件加入该项目 然后找到D:\Postgresql\source\doc\postgres.tar.gz,将它解开到D:\Posgresql\doc目录下,再用浏览器打开D:\Postgresql\doc\html\index.html并按ctrl+d加入收藏夹,有时间的话,最好先读完这份文档(这份文档有laser的中文翻译版)。另外再用浏览器打开D:\Postgresql\source\src\tools\backend\index.html,将它也加入收藏夹,这份文档的名称是How PostgreSQL Processes a Query,随便点击文档中的图上任一框即转到postgresql源代码组成介绍,大致意思翻译如下: PostgreSQL的Backend目录 作者:Bruce Momjian 点击小节的标题即可见到该节的源代码 bootstrap - 通过initdb创建最初的数据库模板 几乎PostgreSQL的每一个操作都需要存取系统表,那么如何创建这些系统表呢?不能以通常的方式创建这些系统表并向其中插入数据,因为表的创建和插入要求系统表已经存在。这一部分代码的目的就是使用一种仅仅在bootstrap过程中使用的特殊方法来直接建立系统表 main - 将控制转到postmaster或postgres 检查进程名(argv[0])和各种标志, 然后将控制转到postmaster或postgres postmaster - 控制postgres服务器启动/终止 创建共享内存,然后进入一个循环等待连接请求。当一个连接请求到达时,启动一个postgres后台服务进程,将连接转给它 libpq - 后台服务器libpq库函数 处理与客户进程间的通讯 tcop - 将请求分派到合适的模块 这是postgres后台服务进程的主要处理部分, 它调用parser, optimizer, executor, 和commands中的函数 parser - 将SQL查询转化为查询树 将来自libpq的SQL查询转换为命令形式的结构供
显示全部
相似文档