目录pg_proc
存放有关函数、过程、聚集函数以及窗口函数(共称为例程)的信息。更多信息请参考CREATE FUNCTION、CREATE PROCEDURE和第 37.3 节。
如果prokind
显示该条目用于一个聚集函数,在pg_aggregate
中应该有一个相匹配的行。
表 51.38. pg_proc
Columns
列类型 描述 |
---|
oid oid
行标识符 |
proname name
函数的名字 |
pronamespace oid (references pg_namespace .oid )
函数所属的名字空间的OID |
proowner oid (references pg_authid .oid )
函数的拥有者 |
prolang oid (references pg_language .oid )
实现语言或该函数的调用接口 |
procost float4
估计的执行代价(以cpu_operator_cost为单位),如果proretset 为真,这是每行返回的代价 |
prorows float4
估计的结果行数量(如果proretset 为假,该值为0) |
provariadic oid (references pg_type .oid )
可变数组参数的元素的数据类型,如果函数没有可变参数则为0 |
prosupport regproc (references pg_proc .oid )
对于该函数可选的计划器支持函数(见第 37.11 节) |
prokind char
f 表示普通函数,p 表示过程,a 表示聚集函数,w 表示窗口函数
|
prosecdef bool
函数是一个安全性定义者(即,一个“setuid”函数) |
proleakproof bool
该函数没有副作用。除了通过返回值,没有关于参数的信息被传播。任何会抛出基于其参数值的错误信息的函数都不是泄露验证的。 |
proisstrict bool
当任意调用函数为空时,函数是否会返回空值。在那种情况下函数实际上根本不会被调用。非“strict”函数必须准备好处理空值输入。 |
proretset bool
函数是否返回一个集合(即,指定数据类型的多个值) |
provolatile char
provolatile 说明函数是仅仅只依赖于它的输入参数,还是会被外部因素影响。 值i 表示“不变的”函数,它对于相同的输入总是输出相同的结果。 值s 表示“稳定的”函数,它的结果(对于固定输入)在一次扫描内不会变化。 值v 表示“不稳定的”函数,它的结果在任何时候都可能变化(使用v 页表示函数具有副作用,所以对它们的调用无法得到优化)
|
proparallel char
proparallel 说明该函数在并行模式下是否能安全地运行。 对于能在并行模式下不受限制安全运行的函数,这列是s 。 对于可以在并行模式下运行但是只限于由并行分组的领导者执行的函数,这列是r 。 对于在并行模式中不安全的函数,这列是u ,这种函数的存在会强制一个顺序执行计划。
|
pronargs int2
输入参数的个数 |
pronargdefaults int2
具有默认值的参数个数 |
prorettype oid (references pg_type .oid )
返回值的数据类型 |
proargtypes oidvector (references pg_type .oid )
一个函数参数的数据类型的数组。这只包括输入参数(含INOUT 和VARIADIC 参数),因此也表现了函数的调用特征。 |
proallargtypes oid[] (references pg_type .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[]
访问权限,详见第 5.7 节 |
对于编译好的函数,包括内建的和动态载入的,prosrc
包含了函数的C语言名字(链接符号)。对于所有其他已知的语言类型,prosrc
包含函数的源码文本。除了对于动态载入的C函数之外,probin
是不被使用的。对于动态载入的C函数,它给定了包含该函数的共享库文件的名称。