catalog-pg-proc.md 6.3 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
## 52.38.`pg_proc`

[](<>)

目录`pg_proc`存储有关函数、过程、聚合函数和窗口函数(统称为例程)的信息。看[创建函数](sql-createfunction.html),[创建过程](sql-createprocedure.html), 和[第 38.3 节](xfunc.html)了解更多信息。

如果`亲善`表示该条目是针对聚合函数的,应该有匹配的行[`pg_aggregate`](catalog-pg-aggregate.html).

**表 52.38.`pg_proc`列**

| 列类型<br/><br/>描述 |
| --------------- |
| `样的` `样的`<br/><br/>行标识符 |
| `名字` `姓名`<br/><br/>函数名称 |
| `前命名空间` `样的`(参考[`pg_namespace`](catalog-pg-namespace.html).`样的`)<br/><br/>包含此函数的命名空间的 OID |
| `亲主` `样的`(参考[`pg_authid`](catalog-pg-authid.html).`样的`)<br/><br/>函数所有者 |
| `普朗` `样的`(参考[`pg_language`](catalog-pg-language.html).`样的`)<br/><br/>该函数的实现语言或调用接口 |
| `成本` `浮动4`<br/><br/>估计执行成本(以[中央处理器\_操作员\_成本](runtime-config-query.html#GUC-CPU-OPERATOR-COST));如果`预置`,这是每行返回的成本 |
| `踮起脚尖` `浮动4`<br/><br/>估计的结果行数(如果不是,则为零`预置`) |
| `杂乱无章的` `样的`(参考[`pg_type`](catalog-pg-type.html).`样的`)<br/><br/>可变参数数组参数元素的数据类型,如果函数没有可变参数,则为零 |
| `支持` `正则程序`(参考[`pg_proc`](catalog-pg-proc.html).`样的`)<br/><br/>此功能的规划器支持功能(请参阅[第 38.11 节](xfunc-optimization.html)),如果没有则为零 |
| `亲善` `字符`<br/><br/>`f`对于正常功能,`p`对于一个程序,`一种`对于聚合函数,或`w`对于窗函数 |
| `程序定义` `布尔`<br/><br/>函数是一个安全定义器(即“setuid”函数) |
| `防漏` `布尔`<br/><br/>该功能没有副作用。除了通过返回值外,没有传递有关参数的信息。任何可能根据其参数值引发错误的函数都不是防泄漏的。 |
| `严格的` `布尔`<br/><br/>如果任何调用参数为 null,则函数返回 null。在这种情况下,该函数实际上根本不会被调用。非“严格”的函数必须准备好处理空输入。 |
| `预置` `布尔`<br/><br/>函数返回一个集合(即指定数据类型的多个值) |
| `易挥发的` `字符`<br/><br/>`易挥发的`告诉函数的结果是仅取决于其输入参数,还是受外部因素的影响。它是`一世`对于“不可变”函数,它们总是为相同的输入提供相同的结果。它是`s`对于“稳定”函数,其结果(对于固定输入)在扫描内不会改变。它是`v`对于“易失性”函数,其结果可能随时更改。(采用`v`也适用于具有副作用的函数,因此对它们的调用无法得到优化。) |
| `平行` `字符`<br/><br/>`平行`告诉函数是否可以在并行模式下安全运行。它是`s`用于在并行模式下安全运行且不受限制的功能。它是`r`对于可以在并行模式下运行的函数,但它们的执行仅限于并行组长;并行工作进程无法调用这些函数。它是`你`对于在并行模式下不安全的功能;这种函数的存在会强制执行串行执行计划。 |
| `前锋` `整数2`<br/><br/>输入参数的数量 |
| `pronargdefaults` `整数2`<br/><br/>具有默认值的参数数量 |
| `预置型` `样的`(参考[`pg_type`](catalog-pg-type.html).`样的`)<br/><br/>返回值的数据类型 |
| `参数类型` `类向量`(参考[`pg_type`](catalog-pg-type.html).`样的`)<br/><br/>函数参数的数据类型数组。这仅包括输入参数(包括`进出``杂音`arguments),因此表示函数的调用签名。 |
| `前体类型` `类[]`(参考[`pg_type`](catalog-pg-type.html).`样的`)<br/><br/>函数参数的数据类型数组。这包括所有论点(包括`出去``进出`论据);然而,如果所有的论点都是`在`参数,该字段将为空。请注意,下标是从 1 开始的,而出于历史原因`参数类型`从 0 开始下标。 |
| `参数模式` `字符[]`<br/><br/>函数参数的模式数组,编码为`一世`为了`在`论据,`○`为了`出去`论据,`b`为了`进出`论据,`v`为了`杂音`论据,`吨`为了`桌子`论据。如果所有的论点都是`在`参数,该字段将为空。请注意,下标对应于`前体类型`不是`参数类型`. |
| `参数名称` `文本[]`<br/><br/>函数参数名称的数组。没有名称的参数被设置为数组中的空字符串。如果所有参数都没有名称,则此字段将为空。请注意,下标对应于`前体类型`不是`参数类型`. |
| `proargdefaults` `pg_node_tree`<br/><br/>表达式树(在`节点字符串()`表示)为默认值。这是一个列表`pronargdefaults`元素,对应于最后一个*`ñ`* *输入*论点(即,最后*`ñ`* `参数类型`职位)。如果所有参数都没有默认值,则该字段将为空。 |
| `原型类型` `类[]`(参考[`pg_type`](catalog-pg-type.html).`样的`)<br/><br/>要应用转换的参数/结果数据类型的数组(来自函数的`转换`条款)。如果没有,则为空。 |
| `prorc` `文本`<br/><br/>这告诉函数处理程序如何调用函数。它可能是解释语言的函数的实际源代码、链接符号、文件名或其他任何东西,具体取决于实现语言/调用约定。 |
| `探针` `文本`<br/><br/>有关如何调用函数的附加信息。同样,解释是特定于语言的。 |
| `前体` `pg_node_tree`<br/><br/>预解析的 SQL 函数体。当主体以 SQL 标准表示法而不是字符串文字给出时,这用于 SQL 语言函数。在其他情况下为空。 |
| `配置` `文本[]`<br/><br/>运行时配置变量的函数本地设置 |
| `程序` `访问[]`<br/><br/>访问权限;看[第 5.7 节](ddl-priv.html)详情 |

对于已编译的函数,无论是内置的还是动态加载的,`prorc`包含函数的 C 语言名称(链接符号)。对于 SQL 语言函数,`prorc`如果指定为字符串文字,则包含函数的源文本;但如果函数体以 SQL 标准样式指定,`prorc`未使用(通常是空字符串)并且`前体`包含预解析的定义。对于所有其他当前已知的语言类型,`prorc`包含函数的源文本。`探针`为空,但动态加载的 C 函数除外,它给出了包含该函数的共享库文件的名称。