PostgreSQL pg_proc

2021-09-14 11:35 更新

目錄pg_proc存放有關(guān)函數(shù)、過程、聚集函數(shù)以及窗口函數(shù)(共稱為例程)的信息。更多信息請參考CREATE FUNCTION、CREATE PROCEDURE第 37.3 節(jié)

如果prokind顯示該條目用于一個(gè)聚集函數(shù),在pg_aggregate中應(yīng)該有一個(gè)相匹配的行。

表 51.38. pg_proc Columns

列類型

描述

oid oid

行標(biāo)識符

proname name

函數(shù)的名字

pronamespace oid (references pg_namespace.oid)

函數(shù)所屬的名字空間的OID

proowner oid (references pg_authid.oid)

函數(shù)的擁有者

prolang oid (references pg_language.oid)

實(shí)現(xiàn)語言或該函數(shù)的調(diào)用接口

procost float4

估計(jì)的執(zhí)行代價(jià)(以cpu_operator_cost為單位),如果proretset為真,這是每行返回的代價(jià)

prorows float4

估計(jì)的結(jié)果行數(shù)量(如果proretset為假,該值為0)

provariadic oid (references pg_type.oid)

可變數(shù)組參數(shù)的元素的數(shù)據(jù)類型,如果函數(shù)沒有可變參數(shù)則為0

prosupport regproc (references pg_proc.oid)

對于該函數(shù)可選的計(jì)劃器支持函數(shù)(見第 37.11 節(jié)

prokind char

f表示普通函數(shù),p表示過程,a表示聚集函數(shù),w表示窗口函數(shù)

prosecdef bool

函數(shù)是一個(gè)安全性定義者(即,一個(gè)setuid函數(shù))

proleakproof bool

該函數(shù)沒有副作用。除了通過返回值,沒有關(guān)于參數(shù)的信息被傳播。任何會(huì)拋出基于其參數(shù)值的錯(cuò)誤信息的函數(shù)都不是泄露驗(yàn)證的。

proisstrict bool

當(dāng)任意調(diào)用函數(shù)為空時(shí),函數(shù)是否會(huì)返回空值。在那種情況下函數(shù)實(shí)際上根本不會(huì)被調(diào)用。非strict函數(shù)必須準(zhǔn)備好處理空值輸入。

proretset bool

函數(shù)是否返回一個(gè)集合(即,指定數(shù)據(jù)類型的多個(gè)值)

provolatile char

provolatile說明函數(shù)是僅僅只依賴于它的輸入?yún)?shù),還是會(huì)被外部因素影響。 值i表示不變的函數(shù),它對于相同的輸入總是輸出相同的結(jié)果。 值s表示穩(wěn)定的函數(shù),它的結(jié)果(對于固定輸入)在一次掃描內(nèi)不會(huì)變化。 值v表示不穩(wěn)定的函數(shù),它的結(jié)果在任何時(shí)候都可能變化(使用v頁表示函數(shù)具有副作用,所以對它們的調(diào)用無法得到優(yōu)化)

proparallel char

proparallel說明該函數(shù)在并行模式下是否能安全地運(yùn)行。 對于能在并行模式下不受限制安全運(yùn)行的函數(shù),這列是s。 對于可以在并行模式下運(yùn)行但是只限于由并行分組的領(lǐng)導(dǎo)者執(zhí)行的函數(shù),這列是r。 對于在并行模式中不安全的函數(shù),這列是u,這種函數(shù)的存在會(huì)強(qiáng)制一個(gè)順序執(zhí)行計(jì)劃。

pronargs int2

輸入?yún)?shù)的個(gè)數(shù)

pronargdefaults int2

具有默認(rèn)值的參數(shù)個(gè)數(shù)

prorettype oid (references pg_type.oid)

返回值的數(shù)據(jù)類型

proargtypes oidvector (references pg_type.oid)

一個(gè)函數(shù)參數(shù)的數(shù)據(jù)類型的數(shù)組。這只包括輸入?yún)?shù)(含INOUTVARIADIC參數(shù)),因此也表現(xiàn)了函數(shù)的調(diào)用特征。

proallargtypes oid[] (references pg_type.oid)

一個(gè)函數(shù)參數(shù)的數(shù)據(jù)類型的數(shù)組。這包括所有參數(shù)(含OUTINOUT參數(shù))。但是,如果所有參數(shù)都是IN參數(shù),這個(gè)域?qū)榭铡?注意下標(biāo)是從1開始 ,然而由于歷史原因proargtypes的下標(biāo)是從0開始。

proargmodes char[]

一個(gè)函數(shù)參數(shù)的模式的數(shù)組。編碼為: i表示IN參數(shù) , o表示OUT參數(shù), b表示INOUT參數(shù), v表示 VARIADIC參數(shù), t表示TABLE參數(shù)。 如果所有的參數(shù)都是IN參數(shù),這個(gè)域?yàn)榭?。注意這里的下標(biāo)對應(yīng)著proallargtypes而不是proargtypes中的位置。

proargnames text[]

一個(gè)函數(shù)參數(shù)的名字的數(shù)組。沒有名字的參數(shù)在數(shù)組中設(shè)置為空字符串。如果沒有一個(gè)參數(shù)有名字,這個(gè)域?yàn)榭铡?注意這里的下標(biāo)對應(yīng)著proallargtypes而不是proargtypes中的位置。

proargdefaults pg_node_tree

默認(rèn)值的表達(dá)式樹(按照nodeToString()的表現(xiàn)方式)。 這是一個(gè)pronargdefaults元素的列表,對應(yīng)于最后N個(gè)input參數(shù)(即最后N個(gè) proargtypes位置)。 如果沒有一個(gè)參數(shù)具有默認(rèn)值,這個(gè)域?yàn)榭铡?/p>

protrftypes oid[]

要在其上應(yīng)用轉(zhuǎn)換的數(shù)據(jù)類型的 OID。

prosrc text

這個(gè)域告訴函數(shù)處理者如何調(diào)用該函數(shù)。它可能是針對解釋型語言的真實(shí)源碼、一個(gè)符號鏈接、一個(gè)文件名或任何其他東西,這取決于實(shí)現(xiàn)語言/調(diào)用規(guī)范。

probin text

關(guān)于如何調(diào)用函數(shù)的附加信息。其解釋是與語言相關(guān)的。

proconfig text[]

函數(shù)對于運(yùn)行時(shí)配置變量的本地設(shè)置值

proacl aclitem[]

訪問權(quán)限,詳見第 5.7 節(jié)


對于編譯好的函數(shù),包括內(nèi)建的和動(dòng)態(tài)載入的,prosrc包含了函數(shù)的C語言名字(鏈接符號)。對于所有其他已知的語言類型,prosrc包含函數(shù)的源碼文本。除了對于動(dòng)態(tài)載入的C函數(shù)之外,probin是不被使用的。對于動(dòng)態(tài)載入的C函數(shù),它給定了包含該函數(shù)的共享庫文件的名稱。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號