ALTER AGGREGATE

ALTER AGGREGATE — cambiar la definición de una función de agregación

Synopsis

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
                OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema

donde aggregate_signature es:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

Descripción

ALTER AGGREGATE cambia la definición de una función de agregación.

Debes ser el propietario de la función de agregación para poder usar ALTER AGGREGATE. Para cambiar el esquema de una función de agregación, también debes tener el privilegio CREATE en el nuevo esquema. Para alterar el propietario, debes poder hacer SET ROLE al nuevo rol propietario, y ese rol debe tener el privilegio CREATE en el esquema de la función de agregación. (Estas restricciones garantizan que al cambiar el propietario no puedas hacer nada que no pudieras hacer eliminando y recreando la función de agregación. Sin embargo, un superusuario puede cambiar la propiedad de cualquier función de agregación de todos modos).

Parámetros

name

El nombre (opcionalmente calificado por esquema) de una función de agregación existente.

argmode

El modo de un argumento: IN o VARIADIC. Si se omite, el valor predeterminado es IN.

argname

El nombre de un argumento. Ten en cuenta que ALTER AGGREGATE no presta atención en realidad a los nombres de los argumentos, ya que solo se necesitan los tipos de datos de los argumentos para determinar la identidad de la función de agregación.

argtype

Un tipo de datos de entrada sobre el cual opera la función de agregación. Para hacer referencia a una función de agregación sin argumentos, escribe * en lugar de la lista de especificaciones de argumentos. Para hacer referencia a una función de agregación de conjunto ordenado (ordered-set), escribe ORDER BY entre las especificaciones de los argumentos directos y agregados.

new_name

El nuevo nombre de la función de agregación.

new_owner

El nuevo propietario de la función de agregación.

new_schema

El nuevo esquema para la función de agregación.

Notas

La sintaxis recomendada para hacer referencia a una agregación de conjunto ordenado es escribir ORDER BY entre las especificaciones de los argumentos directos y agregados, con el mismo estilo que en CREATE AGGREGATE. Sin embargo, también funcionará si se omite ORDER BY y simplemente se colocan las especificaciones de los argumentos directos y agregados en una sola lista. En esta forma abreviada, si se utilizó VARIADIC "any" tanto en la lista de argumentos directos como en la de agregados, escribe VARIADIC "any" solo una vez.

Ejemplos

Para renombrar la función de agregación myavg para el tipo integer a my_average:

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

Para cambiar el propietario de la función de agregación myavg para el tipo integer a joe:

ALTER AGGREGATE myavg(integer) OWNER TO joe;

Para mover la agregación de conjunto ordenado mypercentile con un argumento directo de tipo float8 y un argumento agregado de tipo integer al esquema myschema:

ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;

Esto también funcionará:

ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

Compatibilidad

No existe la sentencia ALTER AGGREGATE en el estándar SQL.

Véase también

CREATE AGGREGATE, DROP AGGREGATE