这个表存储关于函数(或过程)的信息. CREATE FUNCTION 和 程序员手册 包含一些域的更多信息.
该表包含聚集函数和普通函数的数据. 如果 proisagg 为真,那么在 pg_aggregate 里应该有一个匹配行.
Table 3-24. pg_proc 字段
名字 | 类型 | 引用 | 描述 |
---|---|---|---|
proname | name | 函数名字 | |
pronamespace | oid | pg_namespace.oid | 包含该函数名字空间的 OID. |
proowner | int4 | pg_shadow.usesysid | 函数所有者(创建者) |
prolang | oid | pg_language.oid | 这个函数的实现语言或调用接口 |
proisagg | bool | 函数是聚集函数 | |
prosecdef | bool | 函数是一个安全定义器(也就是说,一个"setuid"函数) | |
proisstrict | bool | 如果任何调用参数是空,那么函数返回空.这时函数实际上连调用都不调用. 不是"strict"的函数必须准备处理空输入. | |
proretset | bool | 函数返回一个集合(也就是说,指定数据类型的多个数值) | |
provolatile | char | provolatile 告诉我们该函数的结果是否 只倚赖于它的输入参数,或者还会被外接因素影响. 对于"不可变的(immutable)"函数它是i, 这样的函数对于相同的输入总是产生相同的结果. 对于"稳定(stable)"的函数它是 s, (对于固定输入)其结果在一次扫描里不变. 对于"易变(volatile)"函数它是 v, 其结果可能在任何时候变化.(v 也用于那些 有副作用的函数,因此调用它们无法得到优化.) | |
pronargs | int2 | 参数数目 | |
prorettype | oid | pg_type.oid | 返回值的数据类型 |
proargtypes | oidvector | pg_type.oid | 带数据类型的函数参数的向量 |
prosrc | text | 这个字段告诉函数句柄如何调用该函数.它实际上对于解释语言来说就是 函数的源程序,或者一个链接符号,一个文件名,或者是任何其他的东西, 具体取决于语言/调用习惯的实现. | |
probin | bytea | 关于如何调用该函数的附加信息.同样,其含义也是和语言相关的. | |
proacl | aclitem[] | 访问权限 |
目前,如果是编译函数的话,prosrc 包含函数的 C 语言名字(链接符号), 包括内建函数和动态装载的函数.对于所有其它语言类型,prosrc 包含该 函数的源文本.
目前,probin 除了用于动态装载的 C 函数之外没有其它用途, 这个时候它给出包含给函数的共享库的文件名.