diff options
Diffstat (limited to 'doc/src/sgml/ref/alter_aggregate.sgml')
-rw-r--r-- | doc/src/sgml/ref/alter_aggregate.sgml | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/alter_aggregate.sgml b/doc/src/sgml/ref/alter_aggregate.sgml new file mode 100644 index 0000000..aee10a5 --- /dev/null +++ b/doc/src/sgml/ref/alter_aggregate.sgml @@ -0,0 +1,202 @@ +<!-- +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 also be a direct or indirect member of 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. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">argtype</replaceable></term> + <listitem> + <para> + An input data type on which the aggregate function operates. + To reference a zero-argument aggregate function, write <literal>*</literal> + in place of the list of argument specifications. + To reference an ordered-set aggregate function, write + <literal>ORDER BY</literal> between the direct and aggregated argument + specifications. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">new_name</replaceable></term> + <listitem> + <para> + The new name of the aggregate function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">new_owner</replaceable></term> + <listitem> + <para> + The new owner of the aggregate function. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><replaceable class="parameter">new_schema</replaceable></term> + <listitem> + <para> + The new schema for the aggregate function. + </para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Notes</title> + + <para> + The recommended syntax for referencing an ordered-set aggregate + is to write <literal>ORDER BY</literal> between the direct and aggregated + argument specifications, in the same style as in + <link linkend="sql-createaggregate"><command>CREATE AGGREGATE</command></link>. However, it will also work to + omit <literal>ORDER BY</literal> and just run the direct and aggregated + argument specifications into a single list. In this abbreviated form, + if <literal>VARIADIC "any"</literal> was used in both the direct and + aggregated argument lists, write <literal>VARIADIC "any"</literal> only once. + </para> + </refsect1> + + <refsect1> + <title>Examples</title> + + <para> + To rename the aggregate function <literal>myavg</literal> for type + <type>integer</type> to <literal>my_average</literal>: +<programlisting> +ALTER AGGREGATE myavg(integer) RENAME TO my_average; +</programlisting> + </para> + + <para> + To change the owner of the aggregate function <literal>myavg</literal> for type + <type>integer</type> to <literal>joe</literal>: +<programlisting> +ALTER AGGREGATE myavg(integer) OWNER TO joe; +</programlisting> + </para> + + <para> + To move the ordered-set aggregate <literal>mypercentile</literal> with + direct argument of type <type>float8</type> and aggregated argument + of type <type>integer</type> into schema <literal>myschema</literal>: +<programlisting> +ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema; +</programlisting> + This will work too: +<programlisting> +ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema; +</programlisting></para> + </refsect1> + + <refsect1> + <title>Compatibility</title> + + <para> + There is no <command>ALTER AGGREGATE</command> statement in the SQL + standard. + </para> + </refsect1> + + <refsect1> + <title>See Also</title> + + <simplelist type="inline"> + <member><xref linkend="sql-createaggregate"/></member> + <member><xref linkend="sql-dropaggregate"/></member> + </simplelist> + </refsect1> +</refentry> |