Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
catalog-pg-proc.html256 linesDownload Raw Back to html
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>53.39. pg_proc</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="catalog-pg-policy.html" title="53.38. pg_policy" /><link rel="next" href="catalog-pg-publication.html" title="53.40. pg_publication" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">53.39. <code class="structname">pg_proc</code></th></tr><tr><td width="10%" align="left"><a accesskey="p" href="catalog-pg-policy.html" title="53.38. pg_policy">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="catalogs.html" title="Chapter 53. System Catalogs">Up</a></td><th width="60%" align="center">Chapter 53. System Catalogs</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="catalog-pg-publication.html" title="53.40. pg_publication">Next</a></td></tr></table><hr /></div><div class="sect1" id="CATALOG-PG-PROC"><div class="titlepage"><div><div><h2 class="title" style="clear: both">53.39. <code class="structname">pg_proc</code> <a href="#CATALOG-PG-PROC" class="id_link">#</a></h2></div></div></div><a id="id-1.10.4.41.2" class="indexterm"></a><p>3   The catalog <code class="structname">pg_proc</code> stores information about4   functions, procedures, aggregate functions, and window functions5   (collectively also known as routines).  See <a class="xref" href="sql-createfunction.html" title="CREATE FUNCTION"><span class="refentrytitle">CREATE FUNCTION</span></a>, <a class="xref" href="sql-createprocedure.html" title="CREATE PROCEDURE"><span class="refentrytitle">CREATE PROCEDURE</span></a>, and6   <a class="xref" href="xfunc.html" title="38.3. User-Defined Functions">Section 38.3</a> for more information.7  </p><p>8   If <code class="structfield">prokind</code> indicates that the entry is for an9   aggregate function, there should be a matching row in10   <a class="link" href="catalog-pg-aggregate.html" title="53.2. pg_aggregate"><code class="structfield">pg_aggregate</code></a>.11  </p><div class="table" id="id-1.10.4.41.5"><p class="title"><strong>Table 53.39. <code class="structname">pg_proc</code> Columns</strong></p><div class="table-contents"><table class="table" summary="pg_proc Columns" border="1"><colgroup><col /></colgroup><thead><tr><th class="catalog_table_entry"><p class="column_definition">12       Column Type13      </p>14      <p>15       Description16      </p></th></tr></thead><tbody><tr><td class="catalog_table_entry"><p class="column_definition">17       <code class="structfield">oid</code> <code class="type">oid</code>18      </p>19      <p>20       Row identifier21      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">22       <code class="structfield">proname</code> <code class="type">name</code>23      </p>24      <p>25       Name of the function26      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">27       <code class="structfield">pronamespace</code> <code class="type">oid</code>28       (references <a class="link" href="catalog-pg-namespace.html" title="53.32. pg_namespace"><code class="structname">pg_namespace</code></a>.<code class="structfield">oid</code>)29      </p>30      <p>31       The OID of the namespace that contains this function32      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">33       <code class="structfield">proowner</code> <code class="type">oid</code>34       (references <a class="link" href="catalog-pg-authid.html" title="53.8. pg_authid"><code class="structname">pg_authid</code></a>.<code class="structfield">oid</code>)35      </p>36      <p>37       Owner of the function38      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">39       <code class="structfield">prolang</code> <code class="type">oid</code>40       (references <a class="link" href="catalog-pg-language.html" title="53.29. pg_language"><code class="structname">pg_language</code></a>.<code class="structfield">oid</code>)41      </p>42      <p>43       Implementation language or call interface of this function44      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">45       <code class="structfield">procost</code> <code class="type">float4</code>46      </p>47      <p>48       Estimated execution cost (in units of49       <a class="xref" href="runtime-config-query.html#GUC-CPU-OPERATOR-COST">cpu_operator_cost</a>); if <code class="structfield">proretset</code>,50       this is cost per row returned51      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">52       <code class="structfield">prorows</code> <code class="type">float4</code>53      </p>54      <p>55       Estimated number of result rows (zero if not <code class="structfield">proretset</code>)56      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">57       <code class="structfield">provariadic</code> <code class="type">oid</code>58       (references <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structname">pg_type</code></a>.<code class="structfield">oid</code>)59      </p>60      <p>61       Data type of the variadic array parameter's elements,62       or zero if the function does not have a variadic parameter63      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">64       <code class="structfield">prosupport</code> <code class="type">regproc</code>65       (references <a class="link" href="catalog-pg-proc.html" title="53.39. pg_proc"><code class="structname">pg_proc</code></a>.<code class="structfield">oid</code>)66      </p>67      <p>68       Planner support function for this function69       (see <a class="xref" href="xfunc-optimization.html" title="38.11. Function Optimization Information">Section 38.11</a>), or zero if none70      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">71       <code class="structfield">prokind</code> <code class="type">char</code>72      </p>73      <p>74       <code class="literal">f</code> for a normal function, <code class="literal">p</code>75       for a procedure, <code class="literal">a</code> for an aggregate function, or76       <code class="literal">w</code> for a window function77      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">78       <code class="structfield">prosecdef</code> <code class="type">bool</code>79      </p>80      <p>81       Function is a security definer (i.e., a <span class="quote">“<span class="quote">setuid</span>”</span>82       function)83      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">84       <code class="structfield">proleakproof</code> <code class="type">bool</code>85      </p>86      <p>87       The function has no side effects.  No information about the88       arguments is conveyed except via the return value.  Any function89       that might throw an error depending on the values of its arguments90       is not leak-proof.91      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">92       <code class="structfield">proisstrict</code> <code class="type">bool</code>93      </p>94      <p>95       Function returns null if any call argument is null.  In that96       case the function won't actually be called at all.  Functions97       that are not <span class="quote">“<span class="quote">strict</span>”</span> must be prepared to handle98       null inputs.99      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">100       <code class="structfield">proretset</code> <code class="type">bool</code>101      </p>102      <p>103       Function returns a set (i.e., multiple values of the specified104       data type)105      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">106       <code class="structfield">provolatile</code> <code class="type">char</code>107      </p>108      <p>109       <code class="structfield">provolatile</code> tells whether the function's110       result depends only on its input arguments, or is affected by outside111       factors.112       It is <code class="literal">i</code> for <span class="quote">“<span class="quote">immutable</span>”</span> functions,113       which always deliver the same result for the same inputs.114       It is <code class="literal">s</code> for <span class="quote">“<span class="quote">stable</span>”</span> functions,115       whose results (for fixed inputs) do not change within a scan.116       It is <code class="literal">v</code> for <span class="quote">“<span class="quote">volatile</span>”</span> functions,117       whose results might change at any time.  (Use <code class="literal">v</code> also118       for functions with side-effects, so that calls to them cannot get119       optimized away.)120      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">121       <code class="structfield">proparallel</code> <code class="type">char</code>122      </p>123      <p>124       <code class="structfield">proparallel</code> tells whether the function125       can be safely run in parallel mode.126       It is <code class="literal">s</code> for functions which are safe to run in127       parallel mode without restriction.128       It is <code class="literal">r</code> for functions which can be run in parallel129       mode, but their execution is restricted to the parallel group leader;130       parallel worker processes cannot invoke these functions.131       It is <code class="literal">u</code> for functions which are unsafe in parallel132       mode; the presence of such a function forces a serial execution plan.133      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">134       <code class="structfield">pronargs</code> <code class="type">int2</code>135      </p>136      <p>137       Number of input arguments138      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">139       <code class="structfield">pronargdefaults</code> <code class="type">int2</code>140      </p>141      <p>142       Number of arguments that have defaults143      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">144       <code class="structfield">prorettype</code> <code class="type">oid</code>145       (references <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structname">pg_type</code></a>.<code class="structfield">oid</code>)146      </p>147      <p>148       Data type of the return value149      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">150       <code class="structfield">proargtypes</code> <code class="type">oidvector</code>151       (references <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structname">pg_type</code></a>.<code class="structfield">oid</code>)152      </p>153      <p>154       An array of the data types of the function arguments.  This includes155       only input arguments (including <code class="literal">INOUT</code> and156       <code class="literal">VARIADIC</code> arguments), and thus represents157       the call signature of the function.158      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">159       <code class="structfield">proallargtypes</code> <code class="type">oid[]</code>160       (references <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structname">pg_type</code></a>.<code class="structfield">oid</code>)161      </p>162      <p>163       An array of the data types of the function arguments.  This includes164       all arguments (including <code class="literal">OUT</code> and165       <code class="literal">INOUT</code> arguments); however, if all the166       arguments are <code class="literal">IN</code> arguments, this field will be null.167       Note that subscripting is 1-based, whereas for historical reasons168       <code class="structfield">proargtypes</code> is subscripted from 0.169      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">170       <code class="structfield">proargmodes</code> <code class="type">char[]</code>171      </p>172      <p>173       An array of the modes of the function arguments, encoded as174       <code class="literal">i</code> for <code class="literal">IN</code> arguments,175       <code class="literal">o</code> for <code class="literal">OUT</code> arguments,176       <code class="literal">b</code> for <code class="literal">INOUT</code> arguments,177       <code class="literal">v</code> for <code class="literal">VARIADIC</code> arguments,178       <code class="literal">t</code> for <code class="literal">TABLE</code> arguments.179       If all the arguments are <code class="literal">IN</code> arguments,180       this field will be null.181       Note that subscripts correspond to positions of182       <code class="structfield">proallargtypes</code> not <code class="structfield">proargtypes</code>.183      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">184       <code class="structfield">proargnames</code> <code class="type">text[]</code>185      </p>186      <p>187       An array of the names of the function arguments.188       Arguments without a name are set to empty strings in the array.189       If none of the arguments have a name, this field will be null.190       Note that subscripts correspond to positions of191       <code class="structfield">proallargtypes</code> not <code class="structfield">proargtypes</code>.192      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">193       <code class="structfield">proargdefaults</code> <code class="type">pg_node_tree</code>194      </p>195      <p>196       Expression trees (in <code class="function">nodeToString()</code> representation)197       for default values.  This is a list with198       <code class="structfield">pronargdefaults</code> elements, corresponding to the last199       <em class="replaceable"><code>N</code></em> <span class="emphasis"><em>input</em></span> arguments (i.e., the last200       <em class="replaceable"><code>N</code></em> <code class="structfield">proargtypes</code> positions).201       If none of the arguments have defaults, this field will be null.202      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">203       <code class="structfield">protrftypes</code> <code class="type">oid[]</code>204       (references <a class="link" href="catalog-pg-type.html" title="53.64. pg_type"><code class="structname">pg_type</code></a>.<code class="structfield">oid</code>)205      </p>206      <p>207       An array of the argument/result data type(s) for which to apply208       transforms (from the function's <code class="literal">TRANSFORM</code>209       clause).  Null if none.210      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">211       <code class="structfield">prosrc</code> <code class="type">text</code>212      </p>213      <p>214       This tells the function handler how to invoke the function.  It215       might be the actual source code of the function for interpreted216       languages, a link symbol, a file name, or just about anything217       else, depending on the implementation language/call convention.218      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">219       <code class="structfield">probin</code> <code class="type">text</code>220      </p>221      <p>222       Additional information about how to invoke the function.223       Again, the interpretation is language-specific.224      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">225       <code class="structfield">prosqlbody</code> <code class="type">pg_node_tree</code>226      </p>227      <p>228       Pre-parsed SQL function body.  This is used for SQL-language229       functions when the body is given in SQL-standard notation230       rather than as a string literal.  It's null in other cases.231       </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">232       <code class="structfield">proconfig</code> <code class="type">text[]</code>233      </p>234      <p>235       Function's local settings for run-time configuration variables236      </p></td></tr><tr><td class="catalog_table_entry"><p class="column_definition">237       <code class="structfield">proacl</code> <code class="type">aclitem[]</code>238      </p>239      <p>240       Access privileges; see <a class="xref" href="ddl-priv.html" title="5.7. Privileges">Section 5.7</a> for details241      </p></td></tr></tbody></table></div></div><br class="table-break" /><p>242   For compiled functions, both built-in and dynamically loaded,243   <code class="structfield">prosrc</code> contains the function's C-language244   name (link symbol).245   For SQL-language functions, <code class="structfield">prosrc</code> contains246   the function's source text if that is specified as a string literal;247   but if the function body is specified in SQL-standard style,248   <code class="structfield">prosrc</code> is unused (typically it's an empty249   string) and <code class="structfield">prosqlbody</code> contains the250   pre-parsed definition.251   For all other currently-known language types,252   <code class="structfield">prosrc</code> contains the function's source253   text.  <code class="structfield">probin</code> is null except for254   dynamically-loaded C functions, for which it gives the name of the255   shared library file containing the function.256  </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="catalog-pg-policy.html" title="53.38. pg_policy">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="catalogs.html" title="Chapter 53. System Catalogs">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="catalog-pg-publication.html" title="53.40. pg_publication">Next</a></td></tr><tr><td width="40%" align="left" valign="top">53.38. <code class="structname">pg_policy</code> </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 53.40. <code class="structname">pg_publication</code></td></tr></table></div></body></html>
codekingpro/portable-devtools · Team Ai