您现在的位置: 通信界 >> 接入系统 >> 技术正文  
 
PostgreSQL中插件如何新增一个配置项
[ 通信界 / yzsDBA / www.cntxj.net / 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完成环境变量 值的获取:从PGPORT、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 合作媒体:通信界 编辑:顾北

 

 

 
 热点技术
普通技术 网络认知对抗的中文学术研究历史演进研究
普通技术 境外认知战作战力量及技术装备综述
普通技术 我国当前面临的主要网络认知威胁分析
普通技术 提升工业和硬件安全!我国牵头提出的两项网安国际标准发布
普通技术 6G通信感知一体化网络的感知算法研究与优化
普通技术 多地址的时间型区块链隐蔽通信方法研究
普通技术 基于CHAN 的改进卡尔曼滤波室内定位算法
普通技术 基于吸收马尔可夫链攻击图的网络攻击分析方法研究
普通技术 短波通信接入网广域协作资源分配算法
普通技术 基于子载波补给索引调制的OFDM 传输方案
普通技术 基于随机Transformer 的多维时间序列异常检测模型
普通技术 面向高混响环境的欠定卷积盲源分离算法
普通技术 移动边缘计算网络下基于静态贝叶斯博弈的入侵响应策略研究
普通技术 基于IRS辅助的MIMO车联网系统联合波束成形设计
普通技术 基于IOC-CSMP 的OFDM 系统稀疏信道快速重构算法
普通技术 频控阵MIMO雷达的目标数与方位参数联合估计方法
普通技术 SPS 结构大规模S 盒设计与分析
普通技术 意图抽象与知识联合驱动的6G 内生智能网络架构
普通技术 软件定义网络抗拒绝服务攻击的流表溢出防护
普通技术 数据安全中台构筑企业数据生命线
  版权与免责声明: ① 凡本网注明“合作媒体:通信界”的所有作品,版权均属于通信界,未经本网授权不得转载、摘编或利用其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:通信界”。违反上述声明者,本网将追究其相关法律责任。 ② 凡本网注明“合作媒体:XXX(非通信界)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。 ③ 如因作品内容、版权和其它问题需要同本网联系的,请在一月内进行。
通信视界
吴春波:华为如何突破美国6次打压的逆境?
刘烈宏:以数字化网络化智能化助力数字经济与
普通对话 高通中国区董事长孟樸:5G与AI结合,助力提升
普通对话 雷军发布小米年度演讲:坚持做高端,拥抱大模
普通对话 闻库:算网融合正值挑战与机遇并存的关键阶段
普通对话 工信部副部长张云明:我国算力总规模已居世界
普通对话 邬贺铨:我国互联网平台企业发展的新一轮机遇
普通对话 张志成:继续加强海外知识产权保护工作 为助力
普通对话 吴春波:华为如何突破美国6次打压的逆境?
普通对话 刘烈宏:以数字化网络化智能化助力数字经济与
普通对话 消息称微软将把OpenAI人工智能技术整合至Offi
普通对话 中国电信董事长柯瑞文:数字科技引领新消费
普通对话 中国移动董事长杨杰出席GSMA创新论坛并作主旨
普通对话 中国信科何书平:“一体两翼”大力支撑数字政
普通对话 中兴徐子阳:泛在协同,筑“算网”坦途
普通对话 中国移动陈国:智慧中台对外输出数百项高价值
普通对话 中兴通讯总裁徐子阳:数贯东西,融达天下,共
通信前瞻
亨通光电实践数字化工厂,“5G+光纤”助力新一
邬贺铨院士解读ChatGPT等数字技术热点
普通对话 亨通光电实践数字化工厂,“5G+光纤”助力新一
普通对话 中科院钱德沛:计算与网络基础设施的全面部署
普通对话 工信部赵志国:我国算力总规模居全球第二 保持
普通对话 邬贺铨院士解读ChatGPT等数字技术热点
普通对话 我国北方海区运用北斗三号短报文通信服务开展
普通对话 华为云Stack智能进化,三大举措赋能政企深度用
普通对话 孟晚舟:“三大聚力”迎接数字化、智能化、低
普通对话 物联网设备在智能工作场所技术中的作用
普通对话 软银研发出以无人机探测灾害被埋者手机信号的
普通对话 AI材料可自我学习并形成“肌肉记忆”
普通对话 北斗三号卫星低能离子能谱仪载荷研制成功
普通对话 为什么Wi-Fi6将成为未来物联网的关键?
普通对话 马斯克出现在推特总部 收购应该没有悬念了
普通对话 台积电澄清:未强迫员工休假或有任何无薪假计
普通对话 新一代载人运载火箭发动机研制获重大突破