<noframes id="bblxs"><output id="bblxs"><output id="bblxs"></output></output><dd id="bblxs"><font id="bblxs"><output id="bblxs"></output></font></dd>
<dd id="bblxs"></dd><font id="bblxs"></font>
<dd id="bblxs"></dd><font id="bblxs"></font><dd id="bblxs"></dd>
<output id="bblxs"><output id="bblxs"><dd id="bblxs"></dd></output></output>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"><output id="bblxs"></output></output></dd><font id="bblxs"></font><font id="bblxs"><font id="bblxs"><output id="bblxs"></output></font></font><dd id="bblxs"></dd><dd id="bblxs"><font id="bblxs"><tr id="bblxs"></tr></font></dd><font id="bblxs"></font>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"></output></dd><dd id="bblxs"><font id="bblxs"></font></dd>
<dd id="bblxs"></dd><font id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></font><font id="bblxs"></font>
<font id="bblxs"><output id="bblxs"><noframes id="bblxs"><dd id="bblxs"><output id="bblxs"></output></dd><font id="bblxs"></font><dd id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></dd><font id="bblxs"></font><dd id="bblxs"></dd> <dd id="bblxs"></dd><noframes id="bblxs"><font id="bblxs"></font><font id="bblxs"></font>
<font id="bblxs"></font>
<dd id="bblxs"><font id="bblxs"><tr id="bblxs"></tr></font></dd><font id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></font>
<font id="bblxs"></font>
<dd id="bblxs"></dd>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"></output></dd><dd id="bblxs"></dd>
您現在的位置: 通信界 >> 接入系統 >> 技術正文  
 
PostgreSQL中插件如何新增一個配置項
[ 通信界 / yzsDBA / www.findmyhalf.com / 2022/10/30 18:50:19 ]
 

PostgreSQL通過插件可以集成許多擴展,比如auth_delay。添加插件時,會引入一些guc配置變量,比如auth_delay的auth_delay.milliseconds。那么這些變量是如何隨著插件的安裝集成到server中呢?在系統中又是如何管理的呢?

我們先看下guc參數是如何管理的。

首先初始化GUC選項,將其設置為默認值;然后讀取命令行配置,最后讀取配置文件postgresql.conf中的配置項。

1 初始化默認值

有5類參數:ConfigureNamesBool、ConfigureNamesInt、ConfigureNamesReal、ConfigureNamesReal、ConfigureNamesEnum。

image.png

build_guc_variables完成空間申請:循環計算出所有變量個數,申請一個大空間config_generic *guc_vars[]數組,將所有變量值都放到這個數組里面,然后按字母順序排序。最終將全局變量guc_variables也指向guc_vars數組,變量個數num_guc_variables。guc_variables[]數組大小為當前參數總數的1.25倍,主要方便以后參數的擴充。例如:

InitializeOneGUCOption初始化默認值:循環調用該函數,將所有參數設置為默認值。

InitializeGUCOptionsFromEnvironment完成環境變量 值的獲。簭腜GPORT、PGDATESTYLE、PGCLIENTENCODING中獲取,不為空則調用SetConfigOption函數來設置這三個變量對于的參數值。最后檢查系統最大安全棧深度。如果這個深度大于100KB并且不超過2MB,則用它設置max_stack_depth參數。

2 命令行配置GUC參數

如果啟動PG進程時,通過命令行參數指定了一些GUC的參數值,那需要從命令行中將這些參數值解析出來并設置到相應GUC參數中。根據命令行配置主要調用函數getopt和SetConfigOption來配置,比如:

3 配置文件讀取

最后調用SelectConfigFiles讀取配置文件中值重新配置參數。需要注意,配置文件中設置的參數都不能修改之前通過命令行已經設置的參數,因其優先級沒有命令行優先級高。

至此,了解到配置項是如何管理的。接著看下auth_delay插件中如何新增一個變量。

4 auth_delay新增配置項

該插件在_PG_init函數中新增定義一個GUC變量。上圖所示,由函數DefineCustomIntVariable來完成,auth_delay新增的配置項是auth_delay.millisenconds,對應到程序中是auth_delay_milliseconds變量。

主要調用函數init_custom_variable和define_custom_variable。init_custom_variable函數主要申請一個config_generic空間,并初始化generic域。define_custom_variable函數完成新變量的定義與增加:

該函數會先從guc_variables數組中查詢,看有沒有已經加載,比如在postgresql.conf中配置了。未配置的的調用InitializeOneGUCOption和add_guc_variable新增一個變量。它也是先初始化為默認值,然后添加到guc_variables數組中,最后排序。若在postgresql.conf中配置,則將其值重新配置到變量中。

至此,插件中新定義的配置項及其值加載到了server中。

 

作者:yzsDBA 合作媒體:通信界 編輯:顧北

 

 

 
 熱點新聞
普通新聞 聚智成勢 協同向新|中信科智聯精彩亮相2023世界智能網聯汽車大會
普通新聞 三星Galaxy Z Fold5再次拉高行業標準 超閉合精工鉸鏈可折疊70萬次
普通新聞 中國信通院敖立:新時期工業互聯網將對產業鏈組織帶來新價值
普通新聞 揭秘開幕式數字點火!中國技術打造亞運經典時刻
普通新聞 華為:凝心聚力,加速AI的生態繁榮
普通新聞 中國移動榮獲TM Forum2023年度市場創新卓越獎
普通新聞 工信部:杭州亞運會首創5G超密組網方案 推進5G-A超寬帶技術應用
普通新聞 英特爾發布超能云終端3.0,攜手生態伙伴共謀數字化未來
普通新聞 中國信科:連接數字化美好未來
普通新聞 上PICO,沉浸式觀看亞運直播,參與跨國界游戲競技
普通新聞 新紫光集團強化產業協同,新華三向“深”生長
普通新聞 新訊重磅發布5G隨身wifi,真5G 打游戲!
普通新聞 OpenAI推出新版圖像生成器DALL-E 3,10月份開發
普通新聞 華為全面智能化!孟晚舟:打造中國算力底座 為世界構建第二選擇
普通新聞 水木分子發布生物醫藥行業千億參數大模型,推出藥研助手ChatDD
普通新聞 歐盟:距離對中國電動汽車征收新關稅“還很遙遠”
普通新聞 數據顯示8月底ChatGPT流量開始回升,主要是因為開學了
普通新聞 這顆小行星可能在159年后撞上地球?
普通新聞 華為正式發文:余承東升任車業務董事長 靳玉志接任CEO
普通新聞 道歉都整不明白的臥龍鳳雛,不止花西子一個.....
  版權與免責聲明: ① 凡本網注明“合作媒體:通信界”的所有作品,版權均屬于通信界,未經本網授權不得轉載、摘編或利用其它方式使用。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:通信界”。違反上述聲明者,本網將追究其相關法律責任。 ② 凡本網注明“合作媒體:XXX(非通信界)”的作品,均轉載自其它媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。 ③ 如因作品內容、版權和其它問題需要同本網聯系的,請在一月內進行。
通信視界
吳春波:華為如何突破美國6次打壓的逆境?
劉烈宏:以數字化網絡化智能化助力數字經濟與
普通對話 高通中國區董事長孟樸:5G與AI結合,助力提
普通對話 雷軍發布小米年度演講:堅持做高端,擁抱大
普通對話 聞庫:算網融合正值挑戰與機遇并存的關鍵階
普通對話 工信部副部長張云明:我國算力總規模已居世
普通對話 鄔賀銓:我國互聯網平臺企業發展的新一輪機
普通對話 張志成:繼續加強海外知識產權保護工作 為助
普通對話 吳春波:華為如何突破美國6次打壓的逆境?
普通對話 劉烈宏:以數字化網絡化智能化助力數字經濟
普通對話 消息稱微軟將把OpenAI人工智能技術整合至Of
普通對話 中國電信董事長柯瑞文:數字科技引領新消費
普通對話 中國移動董事長楊杰出席GSMA創新論壇并作主
普通對話 中國信科何書平:“一體兩翼”大力支撐數字
普通對話 中興徐子陽:泛在協同,筑“算網”坦途
普通對話 中國移動陳國:智慧中臺對外輸出數百項高價
普通對話 中興通訊總裁徐子陽:數貫東西,融達天下,
通信前瞻
亨通光電實踐數字化工廠,“5G+光纖”助力新一
鄔賀銓院士解讀ChatGPT等數字技術熱點
普通對話 亨通光電實踐數字化工廠,“5G+光纖”助力新
普通對話 中科院錢德沛:計算與網絡基礎設施的全面部
普通對話 工信部趙志國:我國算力總規模居全球第二 保
普通對話 鄔賀銓院士解讀ChatGPT等數字技術熱點
普通對話 我國北方海區運用北斗三號短報文通信服務開
普通對話 華為云Stack智能進化,三大舉措賦能政企深度
普通對話 孟晚舟:“三大聚力”迎接數字化、智能化、
普通對話 物聯網設備在智能工作場所技術中的作用
普通對話 軟銀研發出以無人機探測災害被埋者手機信號
普通對話 AI材料可自我學習并形成“肌肉記憶”
普通對話 北斗三號衛星低能離子能譜儀載荷研制成功
普通對話 為什么Wi-Fi6將成為未來物聯網的關鍵?
普通對話 馬斯克出現在推特總部 收購應該沒有懸念了
普通對話 臺積電澄清:未強迫員工休假或有任何無薪假
普通對話 新一代載人運載火箭發動機研制獲重大突破
亚洲中文字幕色大焦视频_野狼av午夜福利在线_激情开心_俺也去噜噜噜噜色
<noframes id="bblxs"><output id="bblxs"><output id="bblxs"></output></output><dd id="bblxs"><font id="bblxs"><output id="bblxs"></output></font></dd>
<dd id="bblxs"></dd><font id="bblxs"></font>
<dd id="bblxs"></dd><font id="bblxs"></font><dd id="bblxs"></dd>
<output id="bblxs"><output id="bblxs"><dd id="bblxs"></dd></output></output>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"><output id="bblxs"></output></output></dd><font id="bblxs"></font><font id="bblxs"><font id="bblxs"><output id="bblxs"></output></font></font><dd id="bblxs"></dd><dd id="bblxs"><font id="bblxs"><tr id="bblxs"></tr></font></dd><font id="bblxs"></font>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"></output></dd><dd id="bblxs"><font id="bblxs"></font></dd>
<dd id="bblxs"></dd><font id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></font><font id="bblxs"></font>
<font id="bblxs"><output id="bblxs"><noframes id="bblxs"><dd id="bblxs"><output id="bblxs"></output></dd><font id="bblxs"></font><dd id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></dd><font id="bblxs"></font><dd id="bblxs"></dd> <dd id="bblxs"></dd><noframes id="bblxs"><font id="bblxs"></font><font id="bblxs"></font>
<font id="bblxs"></font>
<dd id="bblxs"><font id="bblxs"><tr id="bblxs"></tr></font></dd><font id="bblxs"><output id="bblxs"><tr id="bblxs"></tr></output></font>
<font id="bblxs"></font>
<dd id="bblxs"></dd>
<dd id="bblxs"></dd>
<dd id="bblxs"><output id="bblxs"></output></dd><dd id="bblxs"></dd>