Home Explore Blog CI



postgresql

2nd chunk of `doc/src/sgml/ref/alter_function.sgml`
71aefccb112b77863d4991edc33c8e6c861c706afbbe0c680000000100000fa6
 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>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argmode</replaceable></term>

    <listitem>
     <para>
      The mode of an argument: <literal>IN</literal>, <literal>OUT</literal>,
      <literal>INOUT</literal>, or <literal>VARIADIC</literal>.
      If omitted, the default is <literal>IN</literal>.
      Note that <command>ALTER FUNCTION</command> does not actually pay
      any attention to <literal>OUT</literal> arguments, since only the input
      arguments are needed to determine the function's identity.
      So it is sufficient to list the <literal>IN</literal>, <literal>INOUT</literal>,
      and <literal>VARIADIC</literal> arguments.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argname</replaceable></term>

    <listitem>
     <para>
      The name of an argument.
      Note that <command>ALTER FUNCTION</command> does not actually pay
      any attention to argument names, since only the argument data
      types are needed to determine the function's identity.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">argtype</replaceable></term>

    <listitem>
     <para>
      The data type(s) of the function's arguments (optionally
      schema-qualified), if any.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_name</replaceable></term>
    <listitem>
     <para>
      The new name of the function.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_owner</replaceable></term>
    <listitem>
     <para>
      The new owner of the function.  Note that if the function is
      marked <literal>SECURITY DEFINER</literal>, it will subsequently
      execute as the new owner.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_schema</replaceable></term>
    <listitem>
     <para>
      The new schema for the function.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>DEPENDS ON EXTENSION <replaceable class="parameter">extension_name</replaceable></literal></term>
    <term><literal>NO DEPENDS ON EXTENSION <replaceable class="parameter">extension_name</replaceable></literal></term>
    <listitem>
     <para>
      This form marks the function as dependent on the extension, or no longer
      dependent on that extension if <literal>NO</literal> is specified.
      A function that's marked as dependent on an extension is dropped when the
      extension is dropped, even if <literal>CASCADE</literal> is not specified.
      A function can depend upon multiple extensions, and will be dropped when
      any one of those extensions is dropped.
     </para>
    </listitem>
   </varlistentry>

    <varlistentry>
     <term><literal>CALLED ON NULL INPUT</literal></term>

Title: ALTER FUNCTION - Parameters
Summary
This section details the parameters available for the `ALTER FUNCTION` command. It describes parameters such as the function's name, argument modes (IN, OUT, INOUT, VARIADIC), argument names and data types, the new name or owner for the function, the new schema, and the ability to set or remove dependencies on extensions. It also introduces parameters for defining how the function handles NULL inputs and whether it's safe to call.