52.39. pg_proc

目录pg_proc存储有关函数,过程,聚合函数和窗口函数(统称为例程)的信息。有关更多信息,请参见CREATE FUNCTIONCREATE PROCEDURESection 38.3

如果prokind表示该条目用于聚合函数,则pg_aggregate中应该有匹配的行。

表 52.39. pg_proc

NameTypeReferencesDescription
oidoid 行标识符(隐藏属性;必须显式选择)
pronamename 功能名称
pronamespaceoidpg_namespace.oid包含此功能的名称空间的 OID
proowneroidpg_authid.oid该功能的所有者
prolangoidpg_language.oid此功能的实现语言或调用接口
procostfloat4 估算执行成本(以cpu_operator_cost为单位);如果proretset,这是返回的每行成本
prorowsfloat4 估计的结果行数(如果不是proretset则为零)
provariadicoidpg_type.oid可变参数数组参数的元素的数据类型;如果函数没有可变参数,则为零
protransformregprocpg_proc.oid可以通过其他函数简化对此函数的调用(请参见Section 38.10.10)
prokindchar f表示常规功能,p表示过程,a表示聚合功能,w表示窗口功能
prosecdefbool 函数是安全性定义程序(即“ setuid”函数)
proleakproofbool 该功能没有副作用。除了通过返回值以外,没有传递有关自变量的任何信息。根据其参数值可能引发错误的任何函数都不是防泄漏的。
proisstrictbool 如果任何调用参数为 null,则函数返回 null。在这种情况下,实际上根本不会调用该函数。非“严格”函数必须准备处理空 Importing。
proretsetbool 函数返回一个集合(即指定数据类型的多个值)
provolatilechar provolatile告诉函数的结果是仅取决于其 Importing 自变量,还是受外部因素影响。 “不可变”功能为i,它们对于相同的 Importing 总是提供相同的结果。对于“稳定”功能,它为s,其结果(对于固定 Importing)在扫描中不会改变。 “易失”功能为v,其结果可能随时更改。 (也将v用于具有副作用的函数,这样就无法优化对它们的调用.)
proparallelchar proparallel告知该功能是否可以在并行模式下安全运行。对于可以不受限制地在并行模式下安全运行的功能,它是s。可以在并行模式下运行的函数为r,但是它们的执行仅限于并行组领导者;并行工作进程无法调用这些功能。在并行模式下不安全的功能为u;这种功能的存在会强制执行串行执行计划。
pronargsint2 Importing 参数数
pronargdefaultsint2 具有默认值的参数数量
prorettypeoidpg_type.oid返回值的数据类型
proargtypesoidvectorpg_type.oid具有函数参数的数据类型的数组。这仅包括 Importing 自变量(包括INOUTVARIADIC自变量),因此代表函数的调用签名。
proallargtypesoid[]pg_type.oid具有函数参数的数据类型的数组。这包括所有参数(包括OUTINOUT参数);但是,如果所有参数均为IN参数,则此字段为 null。请注意,下标是基于 1 的,而由于历史原因,proargtypes是从 0 下标的。
proargmodeschar[] 具有函数参数模式的数组,编码为i表示IN参数,o表示OUT参数,b表示INOUT参数,v表示VARIADIC参数,t表示TABLE参数。如果所有参数均为IN参数,则此字段为 null。注意,下标对应于proallargtypes而不是proargtypes的位置。
proargnamestext[] 具有函数参数名称的数组。没有名称的参数在数组中设置为空字符串。如果所有参数都没有名称,则此字段为 null。请注意,下标对应于proallargtypes而不是proargtypes的位置。
proargdefaultspg_node_tree 表达式树(以nodeToString()表示)为默认值。这是一个具有pronargdefaults个元素的列表,对应于最后* N * * input 个参数(即最后 N * proargtypes个位置)。如果所有参数都没有默认值,则此字段为 null。
protrftypesoid[] 要应用转换的数据类型 OID。
prosrctext 这告诉函数处理程序如何调用函数。根据实现语言/调用约定,它可能是解释语言功能的实际源代码,链接符号,文件名或几乎所有其他内容。
probintext 有关如何调用该函数的其他信息。同样,解释是针对特定语言的。
proconfigtext[] 运行时配置变量的函数的本地设置
proaclaclitem[] 访问权限;有关详情,请参见GRANTREVOKE

对于内置和动态加载的已编译函数,prosrc包含函数的 C 语言名称(链接符号)。对于所有其他当前已知的语言类型,prosrc包含函数的源文本。 probin除了动态加载的 C 函数外没有使用,它为包含该函数的共享库文件提供了名称。