历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.
1.5. 快速路径接口 #
PostgreSQL 提供一个快速路径接口来向后端发送函数调用。这是通向系统内部的一个天窗,可能成为潜在的安全漏洞。大多数用户不需要此特性。
PQfn通过快速路径接口请求执行一个后端函数。PGresult* PQfn(PGconn* conn, int fnid, int *result_buf, int *result_len, int result_is_int, const 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*。使用结果前应检查其状态。不再需要时,调用者负责用PQclear释放PGresult。