Home Explore Blog CI



postgresql

1st chunk of `doc/src/sgml/ref/alter_function.sgml`
20c034ebbc5cc867fc61325bf5de8a0770ed6a63e1efed140000000100000fa1
<!--
doc/src/sgml/ref/alter_function.sgml
PostgreSQL documentation
-->

<refentry id="sql-alterfunction">
 <indexterm zone="sql-alterfunction">
  <primary>ALTER FUNCTION</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>ALTER FUNCTION</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>ALTER FUNCTION</refname>
  <refpurpose>change the definition of a function</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
    <replaceable class="parameter">action</replaceable> [ ... ] [ RESTRICT ]
ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
    RENAME TO <replaceable>new_name</replaceable>
ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
    SET SCHEMA <replaceable>new_schema</replaceable>
ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">argname</replaceable> ] <replaceable class="parameter">argtype</replaceable> [, ...] ] ) ]
    [ NO ] DEPENDS ON EXTENSION <replaceable>extension_name</replaceable>

<phrase>where <replaceable class="parameter">action</replaceable> is one of:</phrase>

    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    IMMUTABLE | STABLE | VOLATILE
    [ NOT ] LEAKPROOF
    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    PARALLEL { UNSAFE | RESTRICTED | SAFE }
    COST <replaceable class="parameter">execution_cost</replaceable>
    ROWS <replaceable class="parameter">result_rows</replaceable>
    SUPPORT <replaceable class="parameter">support_function</replaceable>
    SET <replaceable class="parameter">configuration_parameter</replaceable> { TO | = } { <replaceable class="parameter">value</replaceable> | DEFAULT }
    SET <replaceable class="parameter">configuration_parameter</replaceable> FROM CURRENT
    RESET <replaceable class="parameter">configuration_parameter</replaceable>
    RESET ALL
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>ALTER FUNCTION</command> changes the definition of a
   function.
  </para>

  <para>
   You must own the function to use <command>ALTER FUNCTION</command>.
   To change a function's schema, you must also have <literal>CREATE</literal>
   privilege on the new schema.  To alter the owner, you must be able to
   <literal>SET ROLE</literal> to the new owning role, and that role must
   have <literal>CREATE</literal> privilege on
   the function's schema.  (These restrictions enforce that altering the owner
   doesn't do anything you couldn't do by dropping and recreating the function.
   However, a superuser can alter ownership of any function anyway.)
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of an existing function.  If no
      argument list is specified, the name must be unique in its schema.
     </para>

Title: ALTER FUNCTION
Summary
The SQL command `ALTER FUNCTION` modifies the definition of an existing function. It allows for renaming, changing the owner, setting the schema, managing dependencies on extensions, and altering various function properties such as null input behavior, volatility, security, parallel execution, cost, row estimates, support functions, and configuration parameters. You must own the function to use ALTER FUNCTION.