Skip to content

53.39.pg_proc#

目录pg_proc存储有关函数、过程、聚合函数和窗口函数(统称为例程)的信息。有关详细信息,请参见CREATE FUNCTIONCREATE PROCEDURE第 38.3 节

如果prokind指示该条目是聚合函数,则应在pg_aggregate中有匹配的行。

表 53.39.pg_proc

列类型

说明

oid oid

行标识符

proname name

函数名称

pronamespace oid(引用 pg_namespace.oid

包含此函数的命名空间的 OID

proowner oid(引用 pg_authid.oid

函数所有者

prolang oid(引用 pg_language.oid

此函数的实现语言或调用接口

procost float4

估计执行成本(以 cpu_operator_cost 为单位);如果 proretset,这是每返回一行时的成本

prorows float4

估计结果行数(如果不是 proretset 则为零)

provariadic oid(引用 pg_type.oid

变参数组参数元素的数据类型,如果没有变参,则为零

prosupport regproc(引用 pg_proc.oid

此函数的规划器支持函数(参见 第 38.11 节),如果没有,则为零

prokind char

f 表示普通函数,p 表示过程,a 表示聚合函数,w 表示窗口函数

prosecdef bool

函数是安全定义器(即 setuid 函数)

proleakproof bool

函数没有副作用。除了通过返回值之外,不会传递有关参数的任何信息。任何可能根据其参数的值引发错误的函数都不是防泄漏的。

proisstrict bool

如果任何调用参数为 null,函数将返回 null。在这种情况下,函数实际上根本不会被调用。不是 严格 的函数必须准备好处理 null 输入。

proretset bool

函数返回一个集合(即指定数据类型的多个值)

provolatile char

provolatile 指示函数的结果是否仅取决于其输入参数,或受外部因素影响。对于始终针对相同输入提供相同结果的 不可变 函数,它是 i。对于其结果(对于固定输入)在扫描过程中不会改变的 稳定 函数,它是 s。对于其结果可能随时更改的 易变 函数,它是 v。(对于有副作用的函数也使用 v,以便无法优化对它们的调用。)

proparallel char

proparallel 指示函数是否可以在并行模式下安全运行。对于在并行模式下安全运行且不受限制的函数,它是 s。对于可以在并行模式下运行但其执行仅限于并行组领导者的函数,它是 r;并行工作进程无法调用这些函数。对于在并行模式下不安全的函数,它是 u;此类函数的存在会强制执行串行执行计划。

pronargs int2

输入参数的数量

pronargdefaults int2

具有默认值的 argument 数

prorettype oid(引用 pg_type.oid

返回值的数据类型

proargtypes oidvector(引用 pg_type.oid

函数 argument 的数据类型数组。这仅包括输入 argument(包括 INOUTVARIADIC argument),因此表示函数的调用签名。

proallargtypes oid[](引用 pg_type.oid

函数 argument 的数据类型数组。这包括所有 argument(包括 OUTINOUT argument);但是,如果所有 argument 都是 IN argument,则此字段将为 null。请注意,下标从 1 开始,而 proargtypes 出于历史原因从 0 开始。

proargmodes char[]

函数 argument 的模式数组,编码为 i 表示 IN argument,o 表示 OUT argument,b 表示 INOUT argument,v 表示 VARIADIC argument,t 表示 TABLE argument。如果所有 argument 都是 IN argument,则此字段将为 null。请注意,下标对应于 proallargtypes 的位置,而不是 proargtypes

proargnames text[]

函数参数名称的数组。没有名称的参数在数组中设置为一个空字符串。如果没有任何参数有名称,该字段将为 null。请注意,下标与 proallargtypes 的位置相对应,而不是 proargtypes

proargdefaults pg_node_tree

用于默认值的表达式树(以 nodeToString() 表示)。这是一个列表,包含 pronargdefaults 元素,对应于最后 N 输入 参数(即最后 N proargtypes 位置)。如果没有任何参数有默认值,该字段将为 null。

protrftypes oid[](引用 pg_type.oid

要应用转换的参数/结果数据类型的数组(来自函数的 TRANSFORM 子句)。如果没有,则为 null。

prosrc text

这告诉函数处理程序如何调用函数。对于解释型语言,它可能是函数的实际源代码、链接符号、文件名或其他任何内容,具体取决于实现语言/调用约定。

probin text

有关如何调用函数的其他信息。同样,解释是特定于语言的。

prosqlbody pg_node_tree

预解析的 SQL 函数体。当函数体以 SQL 标准符号而不是字符串文字给出时,这用于 SQL 语言函数。在其他情况下,它是 null。

proconfig text[]

函数的运行时配置变量的本地设置

proacl aclitem[]

访问权限;有关详细信息,请参见 第 5.7 节

对于编译函数(包括内置函数和动态加载的函数),prosrc包含函数的 C 语言名称(链接符号)。对于 SQL 语言函数,如果prosrc指定为字符串文字,则它包含函数的源文本;但如果函数体以 SQL 标准样式指定,则prosrc未使用(通常它是一个空字符串),并且prosqlbody包含预解析的定义。对于所有其他当前已知的语言类型,prosrc包含函数的源文本。除了动态加载的 C 函数之外,probin为 null,对于动态加载的 C 函数,它给出包含该函数的共享库文件的名称。