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