PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC
BeginReportingGUCOptions函数利用ParameterStatus 消息向客户端启动对标记为 GUC_REPORT 的变量更改的自动报告。这是在后端启动完成时执行的。
void BeginReportingGUCOptions(void){int i;/* Don't do anything unless talking to an interactive frontend of protocol 3.0 or later. 除非与协议 3.0 或更高版本的交互式前端交谈,否则不要做任何事情。 */if (whereToSendOutput != DestRemote || PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)return;reporting_enabled = true;/* Transmit initial values of interesting variables */for (i = 0; i < num_guc_variables; i++) {struct config_generic *conf = guc_variables[i];if (conf->flags & GUC_REPORT) ReportGUCOption(conf);}
}
ReportGUCOption向客户端发送消息。
/* ReportGUCOption: if appropriate, transmit option value to frontend */
static void ReportGUCOption(struct config_generic *record) {if (reporting_enabled && (record->flags & GUC_REPORT)) {char *val = _ShowOption(record, false);StringInfoData msgbuf;pq_beginmessage(&msgbuf, 'S');pq_sendstring(&msgbuf, record->name);pq_sendstring(&msgbuf, val);pq_endmessage(&msgbuf);pfree(val);}
}
CommandDest 是一种识别所需目的地的简单方法。 总有一天,这可能需要改进。注意:只有值 DestNone、DestDebug、DestRemote 对于全局变量 whereToSendOutput 是合法的。 其他值可用作各个命令的目的地。
/* ----------------* CommandDest is a simplistic means of identifying the desired* destination. Someday this will probably need to be improved.** Note: only the values DestNone, DestDebug, DestRemote are legal for the* global variable whereToSendOutput. The other values may be used* as the destination for individual commands.* ----------------*/
typedef enum {DestNone, /* results are discarded */DestDebug, /* results go to debugging output */DestRemote, /* results sent to frontend process 结果发送给前端处理 */DestRemoteExecute, /* sent to frontend, in Execute command */DestRemoteSimple, /* sent to frontend, w/no catalog access */DestSPI, /* results sent to SPI manager 结果发送给SPI管理器 */DestTuplestore, /* results sent to Tuplestore 结果发送给Tuplestore */DestIntoRel, /* results sent to relation (SELECT INTO) 结果发送到relation表 */DestCopyOut, /* results sent to COPY TO code 结果发送到COPY TO */DestSQLFunction, /* results sent to SQL-language func mgr 结果发送到SQL-language func mgr */DestTransientRel, /* results sent to transient relation 结果发送到transient relation表 */DestTupleQueue /* results sent to tuple queue 结果发送给Tuple队列 */
} CommandDest;
PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC相关推荐
- PG系列6-PostgreSQL的体系架构
文章目录 前言 1.逻辑和物理存储结构 1.1 逻辑存储结构 1.2 物理存储结构 1.2.1 数据目录结构 1.2.2 数据文件布局 1.2.3 完整文件布局图 2.进程结构 2.1 守护进程与服务 ...
- postgresql源码学习(45)—— PostmasterMain(2) GUC参数简介及设置
一. GUC参数简介 1. 参数分类 GUC(Grand Unified Configuration)参数,其实指的就是pg中的各类参数.如果按生效时分类,主要有以下6类(guc.h文件): type ...
- (三)用docker-compose部署postgres+ postgis
因为postgres用docker镜像安装,所以host不需要安装pg,只需要安装客户端 sudo apt-get install -y postgresql-client postgres+post ...
- PG第五章-体系结构
文章目录 前言 5.1. 逻辑和物理存储结构 5.1.1.逻辑存储结构 5.1.2.物理存储结构 1. 数据目录结构 2. 数据文件布局 ( 1) OID 对象标识符 ( 2) 表空间 ( 3) 数据 ...
- Ceph中一些PG相关的状态说明和基本概念说明、故障模拟
Ceph中一些PG相关的状态说明和基本概念说明 最近公司有个Ceph集群出了点问题,于是也参与了修复的过程,过程中最让人头疼的就是一堆不明所以的状态了,所以看了看文档,也找了一些参考, 整理了一下Ce ...
- bt5更改mysql密码_修改PostgreSQL数据库的默认用户postgres的密码
有时候,忘记了postgresql 安装时默认用户postgres 的密码,怎么办呢? linux shell命令下面输入: sudo -u postgres psql (这样就可以直接登录进pos ...
- envoy实现_如何利用 Envoy 的 Postgres 过滤器实现网络可观察性
作者:Christoph Pakulski 自发布版本 1.15.0 起,Envoy 代理就开始支持 Postgres 信息解码用于统计目的了.该功能为网络中发生的 Postgres 事务提供聚合视图 ...
- pg、pgadmin安装指导
目录 pg安装 安装命令指导 执行安装命令 初始化pg 修改配置文件 修改pg用户密码 启动pg 安装pgadmin yum命令安装 网络配置 firewall设置 插件支持 安装postgis 创建 ...
- 分布式存储Ceph中的逻辑结构Pool和PG
Ceph中的逻辑对象有Object.Pool.PG,本文简单介绍相关的概念以及之间的关系,PG状态变化过程等. 1.Ceph集群中的逻辑结构 1.1 Object Object是Ceph的最小存储单元 ...
最新文章
- python多久学会自学-怎么自学python,大概要多久?
- java设置面板的颜色_java – 修改颜色选择器面板
- Qt Creator从Blender导出3D资产
- 掌握新手学车技巧对于新手来说是非常重要的
- 排序sort,统计wc
- Linux 入门常用命令
- 实时数据库中的二级压缩技术
- 手把手教你强化学习 (八) 强化学习中的值函数近似算法
- 运筹学牛顿法c语言源代码,运筹学与MATlab编程.doc
- mysql中desc
- Echarts 自定义、覆盖legend点击事件、禁用legend默认的点击行为的实现
- 计算机网络修复提示DNS服务器,dns被劫持或提示配置错误,该怎么解决
- 苹果又来割韭菜?一块擦屏布卖145元,这玩意到底是不是智商税?
- 模糊查询 like 多个条件
- 算术移位和逻辑移位详解
- Ubuntu18.04安装教程(很详细)
- 使用HTML制作会员注册界面
- 阿里的社区梦 能靠闲鱼完成吗?
- 正弦波,三角函数,波形
- vue+Element ui 实现照片墙
热门文章
- sql与nosql_NoSQL与SQL:选择数据管理解决方案
- MySQL启动失败,试图访问许可验证文件时出错,请重新安装SQL Server来更正次文件
- 想做数码管显示,单片机IO口资源不够?看看WTV890语音芯片能做些啥
- win7java浏览器崩溃_win7系统IE浏览器出现各种崩溃问题的解决方法
- Python中的取模运算
- SPP(Spatial Pyramid Pooling)解读
- MVVMLight Dialog
- 一个前端开发工程师的天猫精灵评测报告
- 精通spring4.x 非扫描_巫师财经退出b站的争议,怎样评论才能显得比较精通合同法...
- 片段中onCreate(),onCreateView()和onActivityCreated()的区别和用法