LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

PostgreSQL 19 魔法字符将被抛弃

maoxiaoming
2025年8月27日 15:21 本文热度 55

PostgreSQL 19 preview - 协议扩展: 新增宏替代魔法字符

https://github.com/postgres/postgres/commit/9ea3b6f751abd7701f3f32d9df26d66410754c94

该提交(9ea3b6f751abd7701f3f32d9df26d66410754c94)的主要内容和意义如下:

变更解读

标题: Expand usage of macros for protocol characters
作者: Nathan Bossart
提交时间: 2025-08-06
链接: https://github.com/postgres/postgres/commit/9ea3b6f751abd7701f3f32d9df26d66410754c94

主要内容

  • 本次提交将协议消息中的“魔法字符(protocol characters)”硬编码,替换为了统一的宏定义(macro)。
  • 新增了多个宏,如 PqReplMsg_* 和 PqBackupMsg_*,分别用于复制、备份相关的特殊消息。
  • 在多处代码(如流复制、逻辑复制、BaseBackup、pg_basebackup工具等)用宏替换了原本的字符字面量,如 'w''k''r''m'等。
  • 在 src/include/libpq/protocol.h 头文件中集中定义了这些宏,提升了可维护性和可读性,降低了出错风险。

影响范围

  • 逻辑和物理复制协议
  • BaseBackup 相关备份协议
  • 客户端工具(如pg_basebackup、pg_recvlogical等)
  • 代码中所有涉及协议符号的地方均由宏定义统一

使用示例

以物理复制和 BaseBackup 协议为例:

1. 后端发送 WAL 数据

原代码(伪代码):

pq_sendbyte(ctx->out, 'w'); // 发送WAL数据  

新代码:

pq_sendbyte(ctx->out, PqReplMsg_WALData);  

2. 客户端接收消息类型

原代码:

if (copybuf[0] == 'k') { ... } // 保活消息  

新代码:

if (copybuf[0] == PqReplMsg_Keepalive) { ... }  

3. 备份流程中处理新归档文件

原代码:

switch (GetCopyDataByte(...)) {  
  case 'n'// 新归档  
    ...  
}  

新代码:

switch (GetCopyDataByte(...)) {  
  case PqBackupMsg_NewArchive:  
    ...  
}  

4. 定义宏(src/include/libpq/protocol.h)

#define PqReplMsg_Keepalive         'k'  
#define PqReplMsg_WALData           'w'  
#define PqReplMsg_StandbyStatusUpdate 'r'  
#define PqBackupMsg_NewArchive      'n'  
#define PqBackupMsg_ProgressReport  'p'  
#define PqBackupMsg_Manifest        'm'  

总结

此次提交将协议相关的关键字母全部用宏封装,便于后续协议拓展和维护,也减少了开发者“魔法字符”误用、出错的可能性。所有涉及协议通信的地方都推荐采用这些宏。


参考链接

  • 该提交详情
  • protocol.h 新增宏定义

如需进一步了解如何在自己的代码中应用这些宏,请告知具体使用场景。


该文章在 2025/8/27 15:21:34 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved