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相关推荐

  1. PG系列6-PostgreSQL的体系架构

    文章目录 前言 1.逻辑和物理存储结构 1.1 逻辑存储结构 1.2 物理存储结构 1.2.1 数据目录结构 1.2.2 数据文件布局 1.2.3 完整文件布局图 2.进程结构 2.1 守护进程与服务 ...

  2. postgresql源码学习(45)—— PostmasterMain(2) GUC参数简介及设置

    一. GUC参数简介 1. 参数分类 GUC(Grand Unified Configuration)参数,其实指的就是pg中的各类参数.如果按生效时分类,主要有以下6类(guc.h文件): type ...

  3. (三)用docker-compose部署postgres+ postgis

    因为postgres用docker镜像安装,所以host不需要安装pg,只需要安装客户端 sudo apt-get install -y postgresql-client postgres+post ...

  4. PG第五章-体系结构

    文章目录 前言 5.1. 逻辑和物理存储结构 5.1.1.逻辑存储结构 5.1.2.物理存储结构 1. 数据目录结构 2. 数据文件布局 ( 1) OID 对象标识符 ( 2) 表空间 ( 3) 数据 ...

  5. Ceph中一些PG相关的状态说明和基本概念说明、故障模拟

    Ceph中一些PG相关的状态说明和基本概念说明 最近公司有个Ceph集群出了点问题,于是也参与了修复的过程,过程中最让人头疼的就是一堆不明所以的状态了,所以看了看文档,也找了一些参考, 整理了一下Ce ...

  6. bt5更改mysql密码_修改PostgreSQL数据库的默认用户postgres的密码

    有时候,忘记了postgresql 安装时默认用户postgres 的密码,怎么办呢? linux shell命令下面输入: sudo -u postgres psql  (这样就可以直接登录进pos ...

  7. envoy实现_如何利用 Envoy 的 Postgres 过滤器实现网络可观察性

    作者:Christoph Pakulski 自发布版本 1.15.0 起,Envoy 代理就开始支持 Postgres 信息解码用于统计目的了.该功能为网络中发生的 Postgres 事务提供聚合视图 ...

  8. pg、pgadmin安装指导

    目录 pg安装 安装命令指导 执行安装命令 初始化pg 修改配置文件 修改pg用户密码 启动pg 安装pgadmin yum命令安装 网络配置 firewall设置 插件支持 安装postgis 创建 ...

  9. 分布式存储Ceph中的逻辑结构Pool和PG

    Ceph中的逻辑对象有Object.Pool.PG,本文简单介绍相关的概念以及之间的关系,PG状态变化过程等. 1.Ceph集群中的逻辑结构 1.1 Object Object是Ceph的最小存储单元 ...

最新文章

  1. python多久学会自学-怎么自学python,大概要多久?
  2. java设置面板的颜色_java – 修改颜色选择器面板
  3. Qt Creator从Blender导出3D资产
  4. 掌握新手学车技巧对于新手来说是非常重要的
  5. 排序sort,统计wc
  6. Linux 入门常用命令
  7. 实时数据库中的二级压缩技术
  8. 手把手教你强化学习 (八) 强化学习中的值函数近似算法
  9. 运筹学牛顿法c语言源代码,运筹学与MATlab编程.doc
  10. mysql中desc
  11. Echarts 自定义、覆盖legend点击事件、禁用legend默认的点击行为的实现
  12. 计算机网络修复提示DNS服务器,dns被劫持或提示配置错误,该怎么解决
  13. 苹果又来割韭菜?一块擦屏布卖145元,这玩意到底是不是智商税?
  14. 模糊查询 like 多个条件
  15. 算术移位和逻辑移位详解
  16. Ubuntu18.04安装教程(很详细)
  17. 使用HTML制作会员注册界面
  18. 阿里的社区梦 能靠闲鱼完成吗?
  19. 正弦波,三角函数,波形
  20. vue+Element ui 实现照片墙

热门文章

  1. sql与nosql_NoSQL与SQL:选择数据管理解决方案
  2. MySQL启动失败,试图访问许可验证文件时出错,请重新安装SQL Server来更正次文件
  3. 想做数码管显示,单片机IO口资源不够?看看WTV890语音芯片能做些啥
  4. win7java浏览器崩溃_win7系统IE浏览器出现各种崩溃问题的解决方法
  5. Python中的取模运算
  6. SPP(Spatial Pyramid Pooling)解读
  7. MVVMLight Dialog
  8. 一个前端开发工程师的天猫精灵评测报告
  9. 精通spring4.x 非扫描_巫师财经退出b站的争议,怎样评论才能显得比较精通合同法...
  10. 片段中onCreate(),onCreateView()和onActivityCreated()的区别和用法