52.39. pg_proc #
目录 pg_proc 存放有关函数、过程、聚合函数以及窗口函数(统称为例程)的信息。更多信息请参考 CREATE FUNCTION、CREATE PROCEDURE 和第 36.3 节。
如果 prokind 显示该条目用于一个聚合函数,在 pg_aggregate 中应该有一个相匹配的行。
表 52.39. pg_proc 列
列类型 描述 |
|---|
行标识符 |
函数的名字 |
函数所属的名字空间的 OID |
函数的拥有者 |
此函数的实现语言或调用接口 |
估计的执行代价(以 cpu_operator_cost 为单位),如果 |
估计的结果行数量(如果 |
可变参数数组的元素类型;如果函数没有可变参数,则为零 |
该函数的规划器支持函数(参见第 36.11 节),如果没有则为零 |
|
函数是否为安全定义者函数(即“setuid”函数) |
该函数没有副作用。除返回值外,不会泄露任何关于参数的信息。任何可能因参数值而报错的函数都不是 leakproof。 |
任一调用实参为 NULL 时,函数返回 NULL。在这种情况下,实际上根本不会调用该函数。非“严格”函数必须能够处理 NULL 输入。 |
函数是否返回一个集合(即,指定数据类型的多个值) |
|
|
输入参数的个数 |
具有默认值的参数个数 |
返回值的数据类型 |
一个函数参数的数据类型的数组。这只包括输入参数(含 |
一个函数参数的数据类型的数组。这包括所有参数(含 |
一个函数参数的模式的数组。这里包括: |
一个函数参数的名字的数组。没有名字的参数在数组中设置为空字符串。如果没有一个参数有名字,此字段为 NULL。注意这里的下标对应着 |
默认值的表达式树(以 |
需要应用转换的参数/结果数据类型数组(来自函数的 |
此字段告诉函数处理器如何调用该函数。它可以是解释型语言函数的实际源代码、链接符号、文件名或其他内容,具体取决于实现语言和调用约定。 |
关于如何调用函数的附加信息。其解释是与语言相关的。 |
预解析的 SQL 函数体。当 SQL 语言函数的函数体采用 SQL 标准表示法给出,而非字符串字面量时,使用此字段。其他情况下为 NULL。 |
函数对于运行时配置变量的本地设置值 |
访问权限,详见第 5.9 节 |
对于编译型函数,无论是内置函数还是动态加载的函数,prosrc 都包含函数的 C 语言名称(链接符号)。对于 SQL 语言函数,如果函数体以字符串字面量指定,prosrc 包含函数的源文本;如果函数体以 SQL 标准形式指定,则不使用 prosrc(通常为空字符串),而由 prosqlbody 保存预解析的定义。对于目前已知的所有其他语言类型,prosrc 包含函数的源文本。probin 为 NULL,但动态加载的 C 函数除外:此时它给出包含该函数的共享库文件名。