pg_repack window編譯安裝

一、編譯準(zhǔn)備

1.1 pg_repack下載

pg_repack下載位置:https://pgxn.org/dist/pg_repack/1.4.6/

目前最新版本為4.6版本

1.2 postgres版本選擇

編譯時(shí)需要在編譯機(jī)器上安裝postgre默责,官網(wǎng)可以下載到的版本是9.6.21闽撤,經(jīng)測(cè)試9.6.21可以使用

二根穷、編譯pg_repack

注:已經(jīng)做完以下所有配置和修改的代碼打包為pg_repack-1.4.6_modify.zip,使用vs2013打開(kāi)解壓之后其中的msvc文件夾下的pg_repack.sln即可編譯。

2.1使用vs2013打開(kāi)pg_repack

pg_repack-1.4.6.zip解壓得到pg_repack-1.4.6目錄,進(jìn)入pg_repack-1.4.6\msvc可以看到2010的sln文件,經(jīng)測(cè)試vs2013版本也可以正常編譯喻鳄,使用vs2013打開(kāi)pg_repack.sln并升級(jí),可以看到bin和lib兩個(gè)項(xiàng)目

2.2添加并選擇pg_repack 64位編譯配置

鼠標(biāo)右鍵點(diǎn)擊解決方案pg_repack确封,選擇配置屬性->配置除呵,可以看到bin和lib兩個(gè)項(xiàng)目都是32位平臺(tái)下的配置,如下圖所示:

image.png

我們需要x64位平臺(tái)配置爪喘,點(diǎn)擊右上角配置管理器竿奏,點(diǎn)擊如下圖紅框所標(biāo)示的下拉按鈕位置,并選擇新建

image.png

新平臺(tái)選擇x64腥放,并選擇從Win32復(fù)制泛啸,如下圖

image.png

新建完成之后返回到配置屬性->配置,選擇剛剛新建的x64平臺(tái)秃症,選擇完成如下圖:

image.png

2.3禁用將警告視為錯(cuò)誤

bin和lib兩個(gè)項(xiàng)目都要禁用將警告視為錯(cuò)誤候址,以下以bin項(xiàng)目為例,lib項(xiàng)目同理种柑。

bin項(xiàng)目禁用將警告視為錯(cuò)誤:選中bin項(xiàng)目岗仑,點(diǎn)擊鼠標(biāo)右鍵,選擇配置屬性->C/C++->常規(guī)聚请,將警告視為錯(cuò)誤選擇否荠雕,如下圖:

image.png

lib項(xiàng)目進(jìn)行同樣的操作稳其。

2.4注冊(cè)PostgreSQL的目錄

bin和lib兩個(gè)項(xiàng)目都要注冊(cè)PostgreSQL的包含目錄和庫(kù)目錄,以下以bin項(xiàng)目為例炸卑,lib項(xiàng)目同理既鞠。

bin項(xiàng)目添加包含目錄:選中bin項(xiàng)目,點(diǎn)擊鼠標(biāo)右鍵盖文,選擇配置屬性->VC++目錄嘱蛋,選擇如下圖所示的下拉位置并點(diǎn)擊編輯

image.png

添加PostgreSQL的頭文件目錄(根據(jù)實(shí)際PostgreSQL安裝目錄決定):

C:\Program Files\PostgreSQL\9.6\include

C:\Program Files\PostgreSQL\9.6\include\internal

C:\Program Files\PostgreSQL\9.6\include\server

C:\Program Files\PostgreSQL\9.6\include\server\port\win32

C:\Program Files\PostgreSQL\9.6\include\server\port\win32_msvc

添加完成后如下圖所示:

image.png

bin項(xiàng)目添加庫(kù)目錄:選中bin項(xiàng)目,點(diǎn)擊鼠標(biāo)右鍵五续,選擇配置屬性->VC++目錄洒敏,選擇庫(kù)目錄位置,如下圖疙驾,

image.png

添加PostgreSQL的庫(kù)文件目錄(根據(jù)實(shí)際PostgreSQL安裝目錄決定):

C:\Program Files\PostgreSQL\9.6\bin

C:\Program Files\PostgreSQL\9.6\lib

添加完成后如下圖所示:

image.png

lib項(xiàng)目同樣的操作凶伙,注冊(cè)PostgreSQL的包含目錄和庫(kù)目錄。

2.5刪除lib項(xiàng)目不存在的源文件

lib項(xiàng)目src路徑下有一個(gè)不存在的文件pgut-be.c它碎,選中并delete即可函荣。刪除之后如下圖

image.png

2.6 bin項(xiàng)目修改鏈接庫(kù)

選中bin項(xiàng)目,點(diǎn)擊鼠標(biāo)右鍵链韭,選擇配置屬性->鏈接器->輸入偏竟,選擇附加依賴(lài)項(xiàng)并展開(kāi)選擇編輯

image.png

1煮落、libintl-8.lib修改為libintl.lib

2敞峭、添加postgres.lib

修改完成之后如下圖所示

image.png

2.7打入版本號(hào)

bin和lib兩個(gè)項(xiàng)目在編譯時(shí)無(wú)法打入版本號(hào),所以對(duì)源代碼repack.c和pg_repack.c文件進(jìn)行了修改蝉仇,修改之后如下

image.png

bin項(xiàng)目為例旋讹,點(diǎn)擊鼠標(biāo)右鍵,選擇配置屬性->C/C++->命令行轿衔,在其它選項(xiàng)框中填入/D "WIN_BUILD"沉迹,如下圖:

image.png

lib項(xiàng)目需要做同樣的配置

2.8編譯項(xiàng)目

分別選中bin和lib兩個(gè)項(xiàng)目(不分先后),鼠標(biāo)右鍵選擇生成害驹。

生成的文件在pg_repack-1.4.6\msvc\x64\Release相對(duì)路徑下鞭呕,有pg_repack.dll和pg_repack.exe兩個(gè)文件

三、插件文件匯總

注:已經(jīng)做完編譯和修改的文件在壓縮包中可以看到

3.1 pg_repack二進(jìn)制文件

上邊編譯好的pg_repack.dll和pg_repack.exe兩個(gè)文件

3.2 pg_repack擴(kuò)展安裝輔助文件

在pg_repack-1.4.6\lib相對(duì)路徑下有pg_repack.sql.in和pg_repack.control.in兩個(gè)文件宛官,分別拷貝為pg_repack.sql和pg_repack.control

打開(kāi)pg_repack.sql文件葫松,將REPACK_VERSION替換為版本號(hào)1.4.6

image.png

修改之后為

image.png

打開(kāi)pg_repack.control文件

將REPACK_VERSION替換為版本號(hào)1.4.6;替換module_pathname的值為實(shí)際的插件安裝DLL文件的路徑(插件安裝在后續(xù)介紹)

image.png

修改之后

image.png

四底洗、插件安裝

4.1放入插件相關(guān)文件

以下描述使用相對(duì)路徑腋么,均為pStor中PostgreSQL的路徑

1、pg_repack--1.4.6.sql和pg_repack.control放入到PostgreSQL\share\extension\中

2亥揖、pg_repack.dll和pg_repack.exe放入到PostgreSQL\bin\中

注意pg_repack.control中module_pathname的值與pg_repack.dll路徑位置一致

4.2登錄到數(shù)據(jù)庫(kù)并添加插件

1珊擂、登錄到想要使用插件的數(shù)據(jù)庫(kù)(cmd中PostgreSQL\bin\路徑下運(yùn)行,注:使用管理員用戶(hù),否則權(quán)限不夠無(wú)法添加)

psql.exe -h hostname -p port -d database_name -U super_user

2摧扇、 安裝插件(在登錄之后的提示命令中執(zhí)行)圣贸,

執(zhí)行命令:create extension pg_repack;

使用\dx列出插件看是否安裝成功

image.png

注:卸載插件命令(drop extension pg_repack;)

3、 檢查是否安裝成功(在cmd中PostgreSQL\bin\路徑下運(yùn)行扳剿,應(yīng)該輸出pg_repack版本號(hào))

pg_repack --version

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旁趟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子庇绽,更是在濱河造成了極大的恐慌锡搜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞧掺,死亡現(xiàn)場(chǎng)離奇詭異耕餐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辟狈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)肠缔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人哼转,你說(shuō)我怎么就攤上這事明未。” “怎么了壹蔓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵趟妥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我佣蓉,道長(zhǎng)披摄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任勇凭,我火速辦了婚禮疚膊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虾标。我一直安慰自己寓盗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布璧函。 她就那樣靜靜地躺著傀蚌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪柳譬。 梳的紋絲不亂的頭發(fā)上喳张,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音美澳,去河邊找鬼销部。 笑死摸航,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舅桩。 我是一名探鬼主播酱虎,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼擂涛!你這毒婦竟也來(lái)了读串?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤撒妈,失蹤者是張志新(化名)和其女友劉穎恢暖,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體狰右,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杰捂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棋蚌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫁佳。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谷暮,靈堂內(nèi)的尸體忽然破棺而出蒿往,到底是詐尸還是另有隱情,我是刑警寧澤湿弦,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布瓤漏,位于F島的核電站,受9級(jí)特大地震影響省撑,放射性物質(zhì)發(fā)生泄漏赌蔑。R本人自食惡果不足惜俯在,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一竟秫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跷乐,春花似錦肥败、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至浅侨,卻和暖如春纽谒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背如输。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工鼓黔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留央勒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓澳化,卻偏偏與公主長(zhǎng)得像崔步,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缎谷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容