跳到主要内容
版本:下一版

pg_proc

pg_proc 系统目录表存储了函数(包括过程)的信息,涵盖内置函数和通过 CREATE FUNCTION 定义的函数。该表包含普通函数、聚合函数和窗口函数的数据。如果 proisaggtrue,则对应的记录会出现在 pg_aggregate 表中。

对于已编译的函数(包括内置函数和动态加载的函数),prosrc 字段包含函数在 C 语言中的名称(即链接符号)。对于其他已知语言类型,prosrc 包含函数的源代码。probin 字段仅对动态加载的 C 语言函数有意义,用于表示包含该函数的共享库文件名称。

列名类型引用说明
oidoid行标识符(隐藏属性,需显式选择)。
pronamename函数名称。
pronamespaceoidpg_namespace.oid包含该函数的命名空间的 OID。
proowneroidpg_authid.oid函数的所有者。
prolangoidpg_language.oid实现该函数的语言或调用接口。
procostreal函数的估算执行开销(以 cpu_operator_cost 为单位)。如果 proretsettrue,则表示每返回一行的开销。
prorowsreal估算的结果行数(如果 proretsetfalse,则为 0)。
provariadicoidpg_type.oid可变参数数组元素的数据类型;如果函数无可变参数,则为 0。
prosupportregprocpg_proc.oid用于该函数的查询规划支持函数。
prokindchar函数类型:f 表示普通函数,p 表示过程,a 表示聚合函数,w 表示窗口函数。
prosecdefboolean该函数是否为 security definer(类似于 setuid 的函数)。
proleakproofboolean函数是否无副作用。仅通过返回值传递参数信息。如果函数可能因参数值而抛出错误,则不能被视为 leak-proof。
proisstrictboolean如果任一参数为 NULL,则函数返回 NULL,且不会真正调用函数。非 strict 函数必须能够处理 NULL 输入。
proretsetboolean函数是否返回集合(即多个值)。
provolatilechar函数结果是否仅依赖于输入参数,或会受外部因素影响:i 表示 immutable(输入相同,结果始终相同),s 表示 stable(在一次扫描中结果不变),v 表示 volatile(结果可能随时变化,或具有副作用)。
proparallelchar函数是否可以在并行执行环境中安全运行。
pronargssmallint参数个数。
pronargdefaultssmallint具有默认值的参数个数。
prorettypeoidpg_type.oid返回值的数据类型;如果是过程,则为 null。
proargtypesARRAYpg_type.oid函数参数类型数组,仅包括输入参数(包括 INOUTVARIADIC 参数),表示函数的调用签名。
proallargtypesARRAYpg_type.oid函数所有参数的数据类型数组,包括 OUTINOUT 参数;如果所有参数均为 IN 类型,则该字段为 null。注意该数组从下标 1 开始,而历史上的 proargtypes 从下标 0 开始。
proargmodesARRAY函数参数的模式数组:i = INo = OUTb = INOUTv = VARIADIC。如果所有参数均为 IN 类型,则该字段为 null。注意下标对应 proallargtypes 的位置,而非 proargtypes
proargnamesARRAY函数参数名称的数组。无名称的参数对应空字符串;如果所有参数均无名称,则该字段为 null。下标对应 proallargtypes 的位置。
proargdefaultspg_node_tree默认参数值的表达式树(nodeToString() 格式)。这是一个包含 pronargdefaults 个元素的列表,分别对应最后 N 个输入参数(即 proargtypes 的最后 N 项)。如果没有默认参数,则为 null。
protrftypesARRAY需要应用转换(transform)的数据类型列表。
prosrctext指示函数处理器如何调用该函数。可能是解释型语言的源代码、链接符号、文件名,或其他依语言实现而定的内容。
probintext补充的调用信息,含义依语言而异。
prosqlbodypg_node_tree如果 prolangsqlprokind 不为 a(即普通函数或过程),则此字段包含该函数或过程的预解析 SQL 语句体。主要用于数据库内部。如果是其他语言,则为 null。
proconfigARRAY该函数的本地运行时配置参数设置。
proaclARRAY函数的访问权限(由 GRANT/REVOKE 指定)。
prodataaccesschar函数的 SQL 数据访问模式:c = CONTAINS SQL,n = NO SQL,r = READS SQL DATA,m = MODIFIES SQL DATA。
proexeclocationchar函数执行时所在位置:m - 仅在协调节点执行,a - 任意计算节点执行,s - 所有计算节点同时执行,i - 在 initplan 阶段执行。