postgreSQL函数调用包

postgreSQL function call packet

正如 postgreSQL 文档所说的那样,它的数据包 here 函数调用必须向服务器发送带有 'F' 标识符的数据包。

所以我定义了一个简单的函数并用 select 语句调用它,在使用 wireshark 监视我的连接端口后,我没有看到 'F' 识别的数据包,只有多个简单的查询数据包( 'Q' 确定)。

我是不是漏掉了什么?

这是误会。

SELECT 语句中调用的函数是 Query(标识符 Q)或 [=24] 语句文本的一部分=]解析(标识符P)消息。

您所指的文档部分描述了 fast-path interface. This is a leftover from the time before the frontend-backend protocol had support for prepared statements and was used to execute a simple function call without the overhead of having to parse an SQL statement. It is mostly obsolete now, but still used in a few places like the large object API 的消息。

如果你想用 Wireshark 查看 F 数据包,你必须编写 C 代码并使用 PQfn 函数。