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

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

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

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

psql的源碼分為兩部分,一部分是psql的前臺處理代碼,代碼都放在/src/bin/psql下;另一部分就是后臺的查詢處理過程的代碼,代碼較多,過程也較為復(fù)雜。這部分代碼分布在/src/backend/目錄下的許多子目錄中。這篇博客是試水的文章,就先看看前臺的代碼吧。后臺的代碼放在后面的博客(如果有的話~)里再細(xì)細(xì)的說吧。

讓我們先打開/src/bin/psql目錄,這下面放的就是psql的前端程序代碼。基本所有的程序都有個main函數(shù),psql的main函數(shù)就放在startup.c里面。

我們先看兩個數(shù)據(jù)結(jié)構(gòu):

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; 
        		

延伸閱讀

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