pg_proc #目录pg_proc存放有关函数、过程、聚合函数以及窗口函数(共称为例程)的信息。更多信息请参考CREATE FUNCTION、CREATE PROCEDURE和Section 38.3。
如果prokind显示该条目用于一个聚合函数,在pg_aggregate中应该有一个相匹配的行。
Table 52.39. pg_proc 列
| Name | 类型 | 引用 | 描述 |
|---|---|---|---|
oid |
oid |
行标识符(隐藏属性,必须显式选择) | |
proname |
name |
函数的名字 | |
pronamespace |
oid |
|
函数所属的名字空间的OID |
proowner |
oid |
|
函数的拥有者 |
prolang |
oid |
|
实现语言或该函数的调用接口 |
procost |
float4 |
估计的执行代价(以cpu_operator_cost为单位),如果proretset为真,这是每行返回的代价 |
|
prorows |
float4 |
估计的结果行数量(如果proretset为假,该值为0) |
|
provariadic |
oid |
|
可变数组参数的元素的数据类型,如果函数没有可变参数则为0 |
protransform |
regproc |
|
对该函数的调用可以由此处的另一个函数简化(参见Section 38.10.10) |
prokind |
char |
f表示普通函数,p表示过程,a表示聚合函数,w表示窗口函数 |
|
prosecdef |
bool |
函数是一个安全性定义者(即,一个“setuid”函数) | |
proleakproof |
bool |
该函数没有副作用。除返回值外,不会泄露任何关于参数的信息。任何可能因参数值而报错的函数都不是 leakproof。 | |
proisstrict |
bool |
当任一调用参数为 NULL 时,函数是否返回空值。在这种情况下,函数实际上根本不会被调用。非“strict”函数必须准备好处理空值输入。 | |
proretset |
bool |
函数是否返回一个集合(即,指定数据类型的多个值) | |
provolatile |
char |
provolatile说明函数是仅仅只依赖于它的输入参数,还是会被外部因素影响。 值i表示“不变的”函数,它对于相同的输入总是输出相同的结果。 值s表示“稳定的”函数,它的结果(对于固定输入)在一次扫描内不会变化。 值v表示“不稳定的”函数,它的结果在任何时候都可能变化(使用v也表示函数具有副作用,因此对它们的调用无法得到优化) |
|
proparallel |
char |
proparallel说明该函数在并行模式下是否能安全地运行。 对于能在并行模式下不受限制安全运行的函数,这列是s。 对于可以在并行模式下运行但是只限于由并行分组的领导者执行的函数,这列是r。 对于在并行模式中不安全的函数,这列是u,这种函数的存在会强制一个顺序执行计划。 |
|
pronargs |
int2 |
输入参数的个数 | |
pronargdefaults |
int2 |
具有默认值的参数个数 | |
prorettype |
oid |
|
返回值的数据类型 |
proargtypes |
oidvector |
|
一个函数参数的数据类型的数组。 这只包括输入参数(含INOUT和VARIADIC参数),因此也表现了函数的调用签名。 |
proallargtypes |
oid[] |
|
一个函数参数的数据类型的数组。 这包括所有参数(含OUT和INOUT参数)。 但是,如果所有参数都是IN参数,这个域将为空。 注意下标是从1开始 ,然而由于历史原因proargtypes的下标是从0开始。 |
proargmodes |
char[] |
一个函数参数的模式的数组。这里包括: i表示IN参数 , o表示OUT参数, b表示INOUT参数, v表示VARIADIC参数, t表示TABLE参数。 如果所有的参数都是IN参数,这个域为空。 注意这里的下标对应着proallargtypes而不是proargtypes中的位置。 |
|
proargnames |
text[] |
一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字,这个域为空。 注意这里的下标对应着proallargtypes而不是proargtypes中的位置。 |
|
proargdefaults |
pg_node_tree |
默认值的表达式树(按照nodeToString()的表现方式)。 这是一个pronargdefaults元素的列表,对应于最后N个input参数(即最后N个proargtypes位置)。 如果没有一个参数具有默认值,这个域为空。 |
|
protrftypes |
oid[] |
要应用转换的数据类型 OID。 | |
prosrc |
text |
这个字段告诉函数处理器如何调用该函数。它可能是针对解释型语言的真实源码、一个链接符号、一个文件名,或任何其他取决于实现语言/调用约定的内容。 | |
probin |
text |
关于如何调用函数的附加信息。其解释是与语言相关的。 | |
proconfig |
text[] |
函数对于运行时配置变量的本地设置值 | |
proacl |
aclitem[] |
访问权限,详见GRANT和REVOKE |
对于编译好的函数,包括内置函数和动态装载函数,prosrc包含函数的 C 语言名字(链接符号)。 所有其他已知的语言类型,prosrc包含函数的源码文本。 除了对于动态载入的C函数之外,probin不使用,对于动态载入的C函数,它给定了包含该函数的共享库文件的名称。