pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
Postgres 提供一个快速路径接口来向后端发送函数调用。这是通向系统内部的一个天窗,可能成为潜在的安全漏洞。大多数用户不需要此特性。
PQfn 通过快速路径接口请求执行一个后端函数。
PGresult* PQfn(PGconn* conn,
int fnid,
int *result_buf,
int *result_len,
int result_is_int,
PQArgBlock *args,
int nargs);
fnid 参数是要执行的函数的对象标识符。 result_buf 是存放返回值的缓冲区。调用者必须已分配足够的空间来存储返回值(这里不做检查!)。实际结果长度将返回到 result_len 所指向的整数中。如果预期结果是 4 字节整数,将 result_is_int 设为 1;否则设为 0。(将 result_is_int 设为 1 会告诉 libpq 在必要时做字节序交换,使值以适合客户端机器的 int 值送达。当 result_is_int 为 0 时,后端发送的字节串原样返回。) args 和 nargs 指定要传给函数的参数。
typedef struct {
int len;
int isint;
union {
int *ptr;
int integer;
} u;
} PQArgBlock;
PQfn 总是返回有效的 PGresult*。使用结果前应检查 resultStatus。不再需要结果时,调用者负责用 PQclear 释放 PGresult。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。