Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

51.39 pg_proc #

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

如果 prokind 指示该条目用于聚合函数,则应在 pg_aggregate中找到匹配行。

表 51.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

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

prokind 字符

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

prosecdef 布尔

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

proleakproof 布尔

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

proisstrict 布尔

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

proretset 布尔

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

provolatile 字符

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

proparallel 字符

proparallel 告诉函数是否可以在并行模式下安全运行。对于在并行模式下安全运行而不受限制的函数,为 s。对于可以在并行模式下运行但其执行仅限于并行组领导者的函数,为 r;并行工作进程不能调用这些函数。对于在并行模式下不安全的函数,为 u;此类函数的存在迫使采用串行执行计划。

pronargs int2

输入参数的数量

pronargdefaults int2

具有默认值的参数数量

prorettype oid (引用 pg_type.oid)

返回值的数据类型

proargtypes oidvector (引用 pg_type.oid)

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

proallargtypes oid[](引用pg_type.oid

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

proargmodes char[]

函数参数的模式的阵列,编码为i(用于IN参数)、o(用于OUT参数)、b(用于INOUT参数)、v(用于VARIADIC参数)、t(用于TABLE参数)。如果所有参数都是IN参数,该字段将为 null。请注意,下标对应于proallargtypes的位置,而不是proargtypes的位置。

proargnames text[]

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

proargdefaults pg_node_tree

用于默认值的表达式树(nodeToString()表示)。这是一个列表,其中包含pronargdefaults元素,对应于最后N输入参数(即,最后Nproargtypes位置)。如果没有参数具有默认值,该字段将为 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.8 节 以了解详情


对于已编译功能,内置功能和动态加载功能,prosrc 包含功能的 C 语言名称(链接符号)。对于 SQL 语言功能,如果以字符串常量形式指定功能主体,则 prosrc 包含功能的源代码;但是,如果以 SQL 标准样式指定功能主体,则 prosrc 未使用(通常是空字符串),prosqlbody 包含预解析的定义。对于所有其他当前已知语言类型,prosrc 包含功能的源代码。除动态加载的 C 功能外,probin 为 null,因为动态加载的 C 功能提供了包含该功能的共享库文件的名称。