进公司以来做的都是postgresql相关的东西,每次都是测试、修改边边角角的东西,这样感觉只能留在表面,不能深入了解这个开源数据库的精髓,遂想着看看postgresql的源码,以加深对数据库的理解,也算是好好提高自己。
但是目标很性感,现实很残酷,postgesql的源码都已经百万级了。单单.c文件都有1000+。怎么办,硬着头皮看吧,所幸postgrsql的源码很规范,这应该会给我省不少事。给自己顶一个小目标:每天看一点源码,每天都更新做不到,每周都更新吧,每周至少一篇。希望看到我的博客的朋友们也和我一起学习,我有什么理解不对的地方,也希望大家提出意见~
大部分人初次接触postgresql一般都是接触psql这个命令行工具吧,那么我们今天就从psql程序的源码开始看吧。
对了,这里要说一下,我看的代码指的是postgresql9.5.4这个版本,不同版本的代码当然是有区别的~
psql的源码分为两部分,一部分是psql的前台处理代码,代码都放在/src/bin/psql下;另一部分就是后台的查询处理过程的代码,代码较多,过程也较为复杂。这部分代码分布在/src/backend/目录下的许多子目录中。这篇博客是试水的文章,就先看看前台的代码吧。后台的代码放在后面的博客(如果有的话~)里再细细的说吧。
让我们先打开/src/bin/psql目录,这下面放的就是psql的前端程序代码。基本所有的程序都有个main函数,psql的main函数就放在startup.c里面。
我们先看两个数据结构:
enum _actions
{
ACT_NOTHING = 0,
ACT_SINGLE_SLASH,
ACT_LIST_DB,
ACT_SINGLE_QUERY,
ACT_FILE
}; struct adhoc_opts
{ char *dbname; char *host; char *port; char *username; char *logfilename; enum _actions action; char *action_string;
网友评论

