文档

pg_proc

更新时间:

目录pg_proc存放有关函数、过程、聚集函数以及窗口函数(共称为例程)的信息。如果prokind显示该条目用于一个聚集函数,在pg_aggregate中应该有一个相匹配的行。

列名称

列类型

描述

oid

oid

行标识符。

proname

name

函数的名称。

pronamespace

oid

函数所属的名称空间的OID。

proowner

oid

函数的拥有者。

prolang

oid

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

procost

float4

估计的执行代价(以cpu_operator_cost为单位),如果proretset为真,这是每行返回的代价。

prorows

float4

估计的结果行数量(如果proretset为假,该值为0)。

provariadic

oid

可变数组参数的元素的数据类型,如果函数没有可变参数则为0。

prosupport

regproc

该函数可选的计划器支持函数。

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

返回值的数据类型。

proargtypes

oidvector

一个函数参数的数据类型的数组。这只包括输入参数(含INOUTVARIADIC参数),因此也表现了函数的调用特征。

proallargtypes

oid[]

一个函数参数的数据类型的数组。这包括所有参数(含OUTINOUT参数)。但是,如果所有参数都是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元素的列表,对应于最后Ninput参数(即最后Nproargtypes位置)。 如果没有一个参数具有默认值,这个域为空。

protrftypes

oid[]

要在其上应用转换的数据类型的OID。

prosrc

text

这个域告诉函数处理者如何调用该函数。它可能是针对解释型语言的真实源码、一个符号链接、一个文件名或任何其他东西,这取决于实现语言/调用规范。

probin

text

关于如何调用函数的附加信息。其解释是与语言相关的。

proconfig

text[]

函数对于运行时配置变量的本地设置值。

proacl

aclitem[]

访问权限。

  • 对于编译好的函数,包括内建的和动态载入的,prosrc包含了函数的 C 语言名字(链接符号)。

  • 对于所有其他已知的语言类型,prosrc包含函数的源码文本。

  • 对于动态载入的 C 函数,它给定了包含该函数的共享库文件的名称。