Home Explore Blog CI



postgresql

71th chunk of `doc/src/sgml/catalogs.sgml`
97c3c18946ba950dc18e5cb28920e05de5013a17351ab94e0000000100000fab
 <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>prosupport</structfield> <type>regproc</type>
       (references <link linkend="catalog-pg-proc"><structname>pg_proc</structname></link>.<structfield>oid</structfield>)
      </para>
      <para>
       Planner support function for this function
       (see <xref linkend="xfunc-optimization"/>), or zero if none
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>prokind</structfield> <type>char</type>
      </para>
      <para>
       <literal>f</literal> for a normal function, <literal>p</literal>
       for a procedure, <literal>a</literal> for an aggregate function, or
       <literal>w</literal> for a window function
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>prosecdef</structfield> <type>bool</type>
      </para>
      <para>
       Function is a security definer (i.e., a <quote>setuid</quote>
       function)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>proleakproof</structfield> <type>bool</type>
      </para>
      <para>
       The function has no side effects.  No information about the
       arguments is conveyed except via the return value.  Any function
       that might throw an error depending on the values of its arguments
       is not leakproof.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>proisstrict</structfield> <type>bool</type>
      </para>
      <para>
       Function returns null if any call argument is null.  In that
       case the function won't actually be called at all.  Functions
       that are not <quote>strict</quote> must be prepared to handle
       null inputs.
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>proretset</structfield> <type>bool</type>
      </para>
      <para>
       Function returns a set (i.e., multiple values of the specified
       data type)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>provolatile</structfield> <type>char</type>
      </para>
      <para>
       <structfield>provolatile</structfield> tells whether the function's
       result depends only on its input arguments, or is affected by outside
       factors.
       It is <literal>i</literal> for <quote>immutable</quote> functions,
       which always deliver the same result for the same inputs.
       It is <literal>s</literal> for <quote>stable</quote> functions,
       whose results (for fixed inputs) do not change within a scan.
       It is <literal>v</literal> for <quote>volatile</quote> functions,
       whose results might change at any time.  (Use <literal>v</literal> also
       for functions with side-effects, so that calls to them cannot get
       optimized away.)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>proparallel</structfield> <type>char</type>
      </para>
      <para>
       <structfield>proparallel</structfield> tells whether the function
       can be safely run in parallel mode.
       It is <literal>s</literal> for functions which are safe to run in
       parallel mode without restriction.
       It is <literal>r</literal> for functions which can be run in parallel
       mode, but their execution is restricted to the parallel group leader;
       parallel worker processes cannot invoke these functions.
       It is <literal>u</literal> for functions which are unsafe in parallel
       mode; the presence of such a function forces a serial execution plan.
      </para></entry>

Title: pg_proc Catalog Columns (Continued)
Summary
This section details more columns of the `pg_proc` catalog, describing function properties like `prosupport` (planner support function), `prokind` (function type), `prosecdef` (security definer), `proleakproof` (side-effect free), `proisstrict` (strict null handling), `proretset` (returns a set), `provolatile` (volatility), and `proparallel` (parallel safety).