ALTER AGGREGATE#

ALTER AGGREGATE

ALTER AGGREGATE

ALTER AGGREGATE — изменить определение агрегатной функции

Синтаксис

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

where aggregate_signature is:

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

Описание

ALTER AGGREGATE изменяет определение агрегатной функции.

Вы должны владеть агрегатной функцией, чтобы использовать ALTER AGGREGATE. Чтобы изменить схему агрегатной функции, вы также должны иметь привилегию CREATE на новую схему. Чтобы изменить владельца, вы должны иметь возможность использовать SET ROLE для новой роли владельца, и эта роль должна иметь привилегию CREATE на схему агрегатной функции. (Эти ограничения обеспечивают, что изменение владельца не делает ничего, чего вы не могли бы сделать, удалив и воссоздав агрегатную функцию. Однако суперпользователь может изменить владельца любой агрегатной функции в любом случае.)

Параметры

name

Имя (опционально с указанием схемы) существующей агрегатной функции.

argmode

Режим аргумента: IN или VARIADIC. Если не указан, используется значение по умолчанию - IN.

argname

Имя аргумента. Обратите внимание, что ALTER AGGREGATE на самом деле не обращает внимания на имена аргументов, поскольку для определения идентификатора агрегатной функции требуются только типы данных аргументов.

argtype

Тип входных данных, на которых работает агрегатная функция. Для ссылки на агрегатную функцию без аргументов используйте запись * вместо списка спецификаций аргументов. Для ссылки на агрегатную функцию с отсортированным набором данных используйте ORDER BY между прямыми и агрегированными аргументами.

new_name

Новое имя агрегатной функции.

new_owner

Новый владелец агрегатной функции.

new_schema

Новая схема для агрегатной функции.

Примечания

Советуемый синтаксис для ссылки на агрегат с отсортированным набором данных - написать ORDER BY между спецификациями прямого и агрегированного аргументов в том же стиле, что и в CREATE AGGREGATE. Однако, также можно опустить ORDER BY и просто объединить спецификации прямого и агрегированного аргументов в один список. В этой сокращенной форме, если в обоих списках аргументов использовалось VARIADIC "any", то напишите VARIADIC "any" только один раз.

Примеры

Для переименования агрегатной функции myavg для типа integer в my_average:

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

Чтобы изменить владельца агрегатной функции myavg для типа integer на joe:

ALTER AGGREGATE myavg(integer) OWNER TO joe;

Чтобы переместить агрегат с отсортированным набором mypercentile с прямым аргументом типа float8 и агрегированным аргументом типа integer в схему myschema:

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

Это тоже будет работать:

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

Совместимость

В стандарте SQL нет оператора ALTER AGGREGATE.