Proc (Proc) _PG_PROC,这是什么意思,以及它如何影响我们的系统?

1、表结构

Proc (Proc) _PG_PROC,这是什么意思,以及它如何影响我们的系统?插图1

oid:行标识符,必须显式选择。

proname:函数的名字。

pronamespace:函数所属的名字空间的OID。

proowner:函数的拥有者。

prolang:实现语言或调用接口。

procost:估计的执行代价,以cpu_operator_cost为单位。

prorows:估计的结果行数,如果为假则为0。

provariadic:可变参数的元素的数据类型。

protransform:调用该函数时可以通过此列指定的函数来简化。

proisagg:函数是否为聚集函数。

proiswindow:函数是否为窗口函数。

prosecdef:函数是一个安全性定义者(即一个“setuid”函数)。

proleakproof:函数没有副作用,除了通过返回值,没有关于参数的信息会被传播,任何会抛出基于其参数值的错误信息的函数都不是防泄漏的。

proisstrict:当任意调用函数为空时,函数是否会返回空值,在那种情况下函数实际上根本不会被调用,非“严格”函数必须准备好处理空值输入。

proretset:函数是否返回一个集合(即,指定数据类型的多个值)。

provolatile:函数说明是仅仅依赖于它的输入参数,还是会被外部因素影响,i表示“不变的”函数,对于相同的输入总是输出相同的结果,s表示“稳定的”函数,(对于固定输入)其结果在一次扫描内不会变化,v表示“易变的”函数,其结果可能在任何时候都会变化(使用v页表示函数具有副作用,所以对它们的调用无法得到优化)。

proparallel:此列说明函数是否能在并行模式下安全地运行,对于能在并行模式下不受限制安全运行的函数,这列是s,对于可以在并行模式下运行但只限于由并行分组的领导者执行的,这列是r,这列是u的函数,在并行模式中不安全,强制存在一个顺序执行计划。

pronargs:输入参数的个数。

pronargdefaults:具有默认值的参数个数。

prorettype:返回值的数据类型。

proargtypes:一个函数参数的数据类型的数组(只包括输入参数,也表现了函数的调用特征)。

proallargtypes:一个函数参数的数据类型的数组(包括所有参数,但不包括OUT和INOUT参数),如果所有参数都是IN参数,这个域将为空,注意下标是从1开始的 ,然而由于历史原因proargtypes的下标从0开始。

proargmodes:一个函数参数的模式的数组,编码如下:i表示IN参数,o表示OUT参数,b表示INOUT参数,v表示VARIADIC参数, t表示TABLE参数,如果所有参数都是IN参数,这个域将为空,注意下标对应着proallargtypes而不是proargtypes的位置。

proargnames:一个函数参数的名字的数组,没有名字的参数在数组中设置为空字符串,如果没有参数有名字,这个域将为空,注意下标对应着proallargtypes而不是proargtypes的位置。

proargdefaults:默认值的表达式树(按照nodeToString()的表现方式),如果没有参数具有默认值,这个域将为空,如果一个参数没有默认值,那么在这个域中的相应位置将为null。

prosrc:这个域告诉处理者如何调用这个函数,对于解释型语言来说这可能是真实的源码,或者一个链接符号,一个文件名,或者其他任何东西,对于所有已知的语言类型,其他已知的语言类型的源码文本,对于编译好的函数,包括内建的函数,这个域给出了函数的C语言名字(链接符号),对于动态加载的C函数来说,它给出了包含该函数的共享库文件的名称,这个域是二进制的,取决于解释语言与实现。

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

Proc (Proc) _PG_PROC,这是什么意思,以及它如何影响我们的系统?插图3

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

proacl:访问权限,详见GRANT和REVOKE。

prodefaultargpos:具有默认值的入参的位置。

fencedmode:函数的执行模式,表示函数是在fence还是unfence模式下执行,t(true):fence模式,函数的执行会在重新fork的进程中执行,f(false):unfence模式,函数的执行不会重新fork进程。

proshippable:表示该函数是否可以下推到DN上执行,默认值为false,对于IMMUTABLE类型的函数,函数始终可以下推到DN上执行,对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数才可以下推到DN上执行。

propackage:表示该函数是否支持重载,默认值为false,t(true):表示支持,f(false):表示不支持。

prokind:表示该对象为函数还是存储过程。'f':表示该对象为函数。'p':表示该对象为存储过程。

proargsrc:描述兼容ORA语法定义的函数或存储过程的参数输入字符串,包括参数注释,默认值为NULL。

proargtypesext:当函数参数较多时,用来存放函数参数的数据类型的数组(只包括输入参数,也表现了函数的调用签名)。

prodefaultargposext:当函数参数较多时,用来存放具有默认值的入参的位置的数组。

allargtypes:用来存放存储过程参数的数据类型的数组(包括所有参数)。

allargtypesext:当函数参数较多时,用来存放存储过程参数的数据类型的数组(包括所有参数)。

2、字段解释

oid:行标识符(隐藏属性,必须显式选择)。

proname:函数的名字。

pronamespace:函数所属的名字空间的OID。

proowner:函数的拥有者。

prolang:实现语言或调用接口。

procost:估计的执行代价,以cpu_operator_cost为单位。

prorows:估计的结果行数,如果为假则为0。

provariadic:可变参数的元素的数据类型。

protransform:调用该函数时可以通过此列指定的函数来简化。

proisagg:函数是否为聚集函数。

proiswindow:函数是否为窗口函数。

prosecdef:函数是一个安全性定义者(即一个“setuid”函数)。

proleakproof:函数没有副作用,除了通过返回值,没有关于参数的信息会被传播,任何会抛出基于其参数值的错误信息的函数都不是防泄漏的。

proisstrict:当任意调用函数为空时,函数是否会返回空值,在那种情况下函数实际上根本不会被调用,非“严格”函数必须准备好处理空值输入。

Proc (Proc) _PG_PROC,这是什么意思,以及它如何影响我们的系统?插图5

proretset:函数是否返回一个集合(即,指定数据类型的多个值)。

provolatile:函数说明是仅仅依赖于它的输入参数,还是会被外部因素影响,i表示“不变的”函数,对于相同的输入总是输出相同的结果,s表示“稳定的”函数,(对于固定输入)其结果在一次扫描内不会变化,v表示“易变的”函数,其结果可能在任何时候都会变化(使用v页表示函数具有副作用,所以对它们的调用无法得到优化)。

proparallel:此列说明函数是否能在并行模式下安全地运行,对于能在并行模式下不受限制安全运行的函数,这列是s,对于可以在并行模式下运行但只限于由并行分组的领导者执行的,这列是r,这列是u的函数,在并行模式中不安全,强制存在一个顺序执行计划。

pronargs:输入参数的个数。

pronargdefaults:具有默认值的参数个数。

prorettype:返回值的数据类型。

proargtypes:一个函数参数的数据类型的数组(只包括输入参数,也表现了函数的调用签名)。

proallargtypes:一个函数参数的数据类型的数组(包括所有参数,但不包括OUT和INOUT参数),如果所有参数都是IN参数,这个域将为空,注意下标是从1开始的 ,然而由于历史原因proargtypes的下标从0开始。

proargmodes:一个函数参数的模式的数组,编码如下:i表示IN参数,o表示OUT参数,b表示INOUT参数,v表示VARIADIC参数, t表示TABLE参数,如果所有参数都是IN参数,这个域将为空,注意下标对应着proallargtypes而不是proargtypes的位置。

proargnames:一个函数参数的名字的数组,没有名字的参数在数组中设置为空字符串,如果没有参数有名字,这个域将为空,注意下标对应着proallargtypes而不是proargtypes的位置。

proargdefaults:默认值的表达式树(按照nodeToString()的表现方式),如果没有参数具有默认值,这个域将为空,如果一个参数没有默认值,那么在这个域中的相应位置将为null。

prosrc:这个域告诉处理者如何调用这个函数,对于解释型语言来说这可能是真实的源码,或者一个链接符号,一个文件名,或者其他任何东西,对于所有已知的语言类型,其他已知的语言类型的源码文本,对于编译好的函数,包括内建的函数,这个域给出了函数的C语言名字(链接符号),对于动态加载的C函数来说,它给出了包含该函数的共享库文件的名称,这个域是二进制的,取决于解释语言与实现。

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

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

proacl:访问权限,详见GRANT和REVOKE。

prodefaultargpos:具有默认值的入参的位置。

fencedmode:函数的执行模式,表示函数是在fence还是unfence模式下执行,t(true):fence模式,函数的执行会在重新fork的进程中执行,f(false):unfence模式,函数的执行不会重新fork进程。

proshippable:表示该函数是否可以下推到DN上执行,默认值为false,对于IMMUTABLE类型的函数,函数始终可以下推到DN上执行,对于STABLE/VOLATILE类型的函数,仅当函数的属性是SHIPPABLE的时候,函数才可以下推到DN上执行。

propackage:表示该函数是否支持重载,默认值为false,t(true):表示支持,f(false):表示不支持。

prokind:表示该对象为函数还是存储过程。'f':表示该对象为函数。'p':表示该对象为存储过程。

proargsrc:描述兼容ORA语法定义的函数或存储过程的参数输入字符串,包括参数注释,默认值为NULL。

proargtypesext:当函数参数较多时,用来存放函数参数的数据类型的数组(只包括输入参数,也表现了函数的调用签名)。

prodefaultargposext:当函数参数较多时,用来存放具有默认值的入参的位置的数组。

allargtypes:用来存放存储过程参数的数据类型的数组(包括所有参数)。

allargtypesext:当函数参数较多时,用来存放存储过程参数的数据类型的数组(包括所有参数)。

以上就是关于“Proc (Proc) _PG_PROC”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/87300.html

小末小末
上一篇 2024年10月30日 22:56
下一篇 2024年10月30日 23:27