Home Explore Blog CI



postgresql

1st chunk of `doc/src/sgml/ref/alter_aggregate.sgml`
22b4c14d739250e3081112030a7cceefe8a4d115c68effbb0000000100000cee
<!--
doc/src/sgml/ref/alter_aggregate.sgml
PostgreSQL documentation
-->

<refentry id="sql-alteraggregate">
 <indexterm zone="sql-alteraggregate">
  <primary>ALTER AGGREGATE</primary>
 </indexterm>

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

 <refnamediv>
  <refname>ALTER AGGREGATE</refname>
  <refpurpose>change the definition of an aggregate function</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
ALTER AGGREGATE <replaceable>name</replaceable> ( <replaceable>aggregate_signature</replaceable> ) RENAME TO <replaceable>new_name</replaceable>
ALTER AGGREGATE <replaceable>name</replaceable> ( <replaceable>aggregate_signature</replaceable> )
                OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE <replaceable>name</replaceable> ( <replaceable>aggregate_signature</replaceable> ) SET SCHEMA <replaceable>new_schema</replaceable>

<phrase>where <replaceable>aggregate_signature</replaceable> is:</phrase>

* |
[ <replaceable>argmode</replaceable> ] [ <replaceable>argname</replaceable> ] <replaceable>argtype</replaceable> [ , ... ] |
[ [ <replaceable>argmode</replaceable> ] [ <replaceable>argname</replaceable> ] <replaceable>argtype</replaceable> [ , ... ] ] ORDER BY [ <replaceable>argmode</replaceable> ] [ <replaceable>argname</replaceable> ] <replaceable>argtype</replaceable> [ , ... ]
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>ALTER AGGREGATE</command> changes the definition of an
   aggregate function.
  </para>

  <para>
   You must own the aggregate function to use <command>ALTER AGGREGATE</command>.
   To change the schema of an aggregate function, 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 aggregate function's schema.
   (These restrictions enforce that altering
   the owner doesn't do anything you couldn't do by dropping and recreating
   the aggregate function.  However, a superuser can alter ownership of any
   aggregate 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 aggregate function.
     </para>
    </listitem>
   </varlistentry>

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

    <listitem>
     <para>
      The mode of an argument: <literal>IN</literal> or <literal>VARIADIC</literal>.
      If omitted, the default is <literal>IN</literal>.
     </para>
    </listitem>
   </varlistentry>

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

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

Title: ALTER AGGREGATE: Changing Aggregate Function Definitions
Summary
The SQL command ALTER AGGREGATE modifies the definition of an aggregate function. It allows renaming, changing the owner, or setting a new schema for the aggregate. You must own the aggregate to alter it, and changing the schema requires CREATE privilege on the new schema. Altering the owner requires being able to SET ROLE to the new owner and having CREATE privilege on the aggregate's schema. Superusers can alter ownership of any aggregate function. The syntax includes specifying the aggregate's name and signature, as well as the new name, owner, or schema. Argument modes (IN, VARIADIC) and names can be specified, although ALTER AGGREGATE primarily uses argument data types for identification.