<literal>IN</literal> arguments, this field will be null.
Note that subscripting is 1-based, whereas for historical reasons
<structfield>proargtypes</structfield> is subscripted from 0.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>proargmodes</structfield> <type>char[]</type>
</para>
<para>
An array of the modes of the function arguments, encoded as
<literal>i</literal> for <literal>IN</literal> arguments,
<literal>o</literal> for <literal>OUT</literal> arguments,
<literal>b</literal> for <literal>INOUT</literal> arguments,
<literal>v</literal> for <literal>VARIADIC</literal> arguments,
<literal>t</literal> for <literal>TABLE</literal> arguments.
If all the arguments are <literal>IN</literal> arguments,
this field will be null.
Note that subscripts correspond to positions of
<structfield>proallargtypes</structfield> not <structfield>proargtypes</structfield>.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>proargnames</structfield> <type>text[]</type>
</para>
<para>
An array of the names of the function arguments.
Arguments without a name are set to empty strings in the array.
If none of the arguments have a name, this field will be null.
Note that subscripts correspond to positions of
<structfield>proallargtypes</structfield> not <structfield>proargtypes</structfield>.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>proargdefaults</structfield> <type>pg_node_tree</type>
</para>
<para>
Expression trees (in <function>nodeToString()</function> representation)
for default values. This is a list with
<structfield>pronargdefaults</structfield> elements, corresponding to the last
<replaceable>N</replaceable> <emphasis>input</emphasis> arguments (i.e., the last
<replaceable>N</replaceable> <structfield>proargtypes</structfield> positions).
If none of the arguments have defaults, this field will be null.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>protrftypes</structfield> <type>oid[]</type>
(references <link linkend="catalog-pg-type"><structname>pg_type</structname></link>.<structfield>oid</structfield>)
</para>
<para>
An array of the argument/result data type(s) for which to apply
transforms (from the function's <literal>TRANSFORM</literal>
clause). Null if none.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>prosrc</structfield> <type>text</type>
</para>
<para>
This tells the function handler how to invoke the function. It
might be the actual source code of the function for interpreted
languages, a link symbol, a file name, or just about anything
else, depending on the implementation language/call convention.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>probin</structfield> <type>text</type>
</para>
<para>
Additional information about how to invoke the function.
Again, the interpretation is language-specific.
</para></entry>
</row>
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>prosqlbody</structfield> <type>pg_node_tree</type>
</para>
<para>
Pre-parsed SQL function body. This is used for SQL-language
functions when the body is given in SQL-standard notation
rather than as a string literal.