進公司以來做的都是postgresql相關的東西,每次都是測試、修改邊邊角角的東西,這樣感覺只能留在表面,不能深入了解這個開源數據庫的精髓,遂想著看看postgresql的源碼,以加深對數據庫的理解,也算是好好提高自己。

但是目標很性感,現實很殘酷,postgesql的源碼都已經百萬級了。單單.c文件都有1000+。怎么辦,硬著頭皮看吧,所幸postgrsql的源碼很規(guī)范,這應該會給我省不少事。給自己頂一個小目標:每天看一點源碼,每天都更新做不到,每周都更新吧,每周至少一篇。希望看到我的博客的朋友們也和我一起學習,我有什么理解不對的地方,也希望大家提出意見~

大部分人初次接觸postgresql一般都是接觸psql這個命令行工具吧,那么我們今天就從psql程序的源碼開始看吧。

對了,這里要說一下,我看的代碼指的是postgresql9.5.4這個版本,不同版本的代碼當然是有區(qū)別的~

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; 
        		

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式