↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.

1.4. 快速路径 #

Postgres 提供一个快速路径接口来向后端发送函数调用。这是通向系统内部的一个天窗,可能成为潜在的安全漏洞。大多数用户不需要此特性。

  • 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。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.