Bind
Bind 是前端协议消息,表示 Bind 命令。
当前查看 PostgreSQL 18.6。
说明
Bind 是前端协议消息,表示 Bind 命令。
- 方向
- 前端 → 后端
- 首个线上协议字段
- Byte1('B')
- 字段条目
- 11
- 手册中的交互阶段
- 扩展查询;函数调用
用法
Bind (F)消息边界与重复字段
下方完整定义保留重复项、计数与条件字段。表格行号表示文档中的字段定义,并非固定字节偏移量。整数编码与交互流程以同版本协议章节为准。
按手册顺序排列的线上协议字段
| 位置 | 格式 | 含义 |
|---|---|---|
| 1 | Byte1('B') | 将该消息标识为 Bind 命令。 |
| 2 | Int32 | 消息内容的长度(以字节为单位),包括其自身。 |
| 3 | 字符串 | 目标 portal 的名称(空字符串选择未命名的 portal)。 |
| 4 | 字符串 | 源预备语句的名称(空字符串选择未命名的预备语句)。 |
| 5 | Int16 | 后续参数格式代码的数量(下文以 C 表示)。可以为零,表示没有参数,或者所有参数都使用默认格式(文本);也可以为一,此时指定的格式代码应用于所有参数;还可以等于实际参数数量。 |
| 6 | Int16[ C ] | 参数格式代码。目前每个格式代码必须为零(文本)或一(二进制)。 |
| 7 | Int16 | 后续参数值的数量(可以为零)。必须与查询所需的参数数量一致。 |
| 8 | Int32 | 参数值的长度,以字节为单位(不包括此长度字段本身)。可以为零。特殊值 -1 表示 NULL 参数值。为 NULL 时,后面不再有值的字节。 |
| 9 | Byte n | 参数值,格式由对应的格式代码指明。 n 为上述长度。 |
| 10 | Int16 | 后续结果列格式代码的数量(下文以 R 表示)。可以为零,表示没有结果列,或者所有结果列都应使用默认格式(文本);也可以为一,此时指定的格式代码应用于所有结果列(如果有);还可以等于查询实际的结果列数量。 |
| 11 | Int16[ R ] | 结果列格式代码。目前每个格式代码必须为零(文本)或一(二进制)。 |
手册定义
-
- Byte1('B')
-
将该消息标识为 Bind 命令。
- Int32
-
消息内容的长度(以字节为单位),包括其自身。
- 字符串
-
目标 portal 的名称(空字符串选择未命名的 portal)。
- 字符串
-
源预备语句的名称(空字符串选择未命名的预备语句)。
- Int16
-
后续参数格式代码的数量(下文以
C表示)。可以为零,表示没有参数,或者所有参数都使用默认格式(文本);也可以为一,此时指定的格式代码应用于所有参数;还可以等于实际参数数量。 - Int16[
C] -
参数格式代码。目前每个格式代码必须为零(文本)或一(二进制)。
- Int16
-
后续参数值的数量(可以为零)。必须与查询所需的参数数量一致。
接下来,每个参数都有以下一对字段:
- Int32
-
参数值的长度,以字节为单位(不包括此长度字段本身)。可以为零。特殊值 -1 表示 NULL 参数值。为 NULL 时,后面不再有值的字节。
- Byte n
-
参数值,格式由对应的格式代码指明。
n为上述长度。
最后一个参数之后是以下字段:
- Int16
-
后续结果列格式代码的数量(下文以
R表示)。可以为零,表示没有结果列,或者所有结果列都应使用默认格式(文本);也可以为一,此时指定的格式代码应用于所有结果列(如果有);还可以等于查询实际的结果列数量。 - Int16[
R] -
结果列格式代码。目前每个格式代码必须为零(文本)或一(二进制)。
相关条目
文档与源码
来源构建
- 版本
- 18.6
- 构建
- https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 17 → 18: 无变化。
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
相关条目
导出 JSON · 返回协议消息 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。