check_function_bodies 是一个 配置参数,用于决定在执行 CREATE FUNCTION 时是否验证函数体字符串。
check_function_bodies 在 PostgreSQL 7.4 中被添加。
默认值
check_function_bodies 的默认值为:on。
按 PostgreSQL 版本详细信息
check_function_bodies (PostgreSQL 19)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 18)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 17)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 16)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 15)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 14)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 和 CREATE PROCEDURE 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 13)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 12)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 11)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 10)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.6)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.5)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
| 需要重启 |
false |
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.4)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.3)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.2)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.1)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 9.0)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 8.4)
| 设置 |
开启 |
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
| 枚举值 |
|
| 启动值 |
开启 |
| 重置值 |
开启 |
| 源文件 |
|
| 源行 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 8.3)
| 设置 |
|
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
文档:check_function_bodies
check_function_bodies (PostgreSQL 8.2)
| 设置 |
|
| 单位 |
|
| 类别 |
客户端连接默认值 / 语句行为 |
| 简短描述 |
在 CREATE FUNCTION 时检查函数体。 |
| 扩展描述 |
|
| 上下文 |
user |
| 变量类型 |
bool |
| 来源 |
默认 |
| 最小值 |
|
| 最大值 |
|
文档:check_function_bodies
变更历史
示例
通常,在创建函数时会验证其函数体。
postgres=# CREATE FUNCTION foo()
RETURNS INT
LANGUAGE SQL
AS 'SELECT * FROM bar()';
ERROR: function bar() does not exist
LINE 4: AS 'SELECT * FROM bar()';
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
然而,如果将 check_function_bodies 设置为 off,则可以在不引发 ERROR 的情况下创建函数。
postgres=# SHOW check_function_bodies;
check_function_bodies
-----------------------
off
(1 row)
postgres=# \df
List of functions
Schema | Name | Result data type | Argument data types | Type
--------+------+------------------+---------------------+------
(0 rows)
postgres=# CREATE FUNCTION foo()
RETURNS INT
LANGUAGE SQL
AS 'SELECT * FROM bar()';
CREATE FUNCTION
当然,只要被引用的函数不存在,函数就会以 ERROR 失败。
postgres=# SELECT * FROM foo();
ERROR: function bar() does not exist
LINE 1: SELECT * FROM bar()
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT * FROM bar()
CONTEXT: SQL function "foo" during inlining