环境Centos 6.5 GNOME 2.28.2
1.安装git
#mkdir /home/src
#cd src
#yum install git
2.eclipse搭建
#yum install eclipse
#yum install eclipse-cdt
#yum install readline-devel
3.安装编译postgresql
#su – postgres
//使用git下载postgresql源代码
#git clone git://git.postgresql.org/git/postgresql.git
//切换到一个发布版本
#cd postgresql
#git checkout REL9_3_4
#cd ..
//重新copy一个目录,确保服务器上拉下来的代码不受影响
#cp -rf postgresql/ pgsql
#yum install bison
#yum install flex
#cd pgsql
#./configure –enable-depend –enable-cassert –enable-debug
系统默认安装至/usr/local/pgsql,我们可以使用下面命令安装至其他目录
#./configure –prefix=/usr/local/pgsqldev –enable-depend –enable-cassert –enable-debug
#make
#make all
4.使用eclipse调试
4.1 import源码包
//我们postgres用户名打开eclipse,选择workspace
选择”C/C++ » Existing Code as Makefile Project”
点击Next
选择Linux GCC
这样我们就建立了一个postgres源码的项目。
4.2调试Initdb
//建立data目录
#mkdir /home/data
#chown postgres:postgres -R /home/data
选择initdb右键,debug as,在C/C++ Application下选择新建,Arguments输入-D /home/data
点击Apply按钮,然后点击Debug按钮。在这里我们可以设置断点,启动调试。
4.3调试postgres
首选启动postgres
#/usr/local/pgsql/bin/pg_ctl -D /home/data -l /home/data/logfile start
#/usr/local/pgsql/bin/psql
在eclipse选择postgre debug as,在Attach下新建debug
我们看到进程5787,5788就是刚才我们运行的psql,双击5788进程,设置断点。
命令行输入SQL语句select current_time;
断点处我们看到刚才输入的SQL语句
4.4 postgres测试框架
测试框架包含在postgres源码目录中src/test
主要用例都放在regress目录下,有data、expected、input、output、sql等目录和parallel_schedule、serial_schedule、standby_schedule等设置测试用例并行、串行执行的文件,如下图:
postgres的regress test的流程为:逐个执行sql/目录下的sql脚本,将执行的结果重定向到results/目录下。而expected/目录下则是预期的执行结果。将results目录下的文件逐个与expected中文件进行diff。若文件不一致,则判定为对应的sql脚本执行结果为失败,反之为成功。