Перейти к основному содержимому

ALTER OPERATOR

примечание

Эта страница переведена при помощи нейросети GigaChat.

ALTER OPERATOR — изменение определения оператора.

Синтаксис

ALTER OPERATOR name ( { left_type | NONE } , right_type )
OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

ALTER OPERATOR name ( { left_type | NONE } , right_type )
SET SCHEMA new_schema

ALTER OPERATOR name ( { left_type | NONE } , right_type )
SET ( { RESTRICT = { res_proc | NONE }
| JOIN = { join_proc | NONE }
| COMMUTATOR = com_op
| NEGATOR = neg_op
| HASHES
| MERGES
} [, ... ] )

Описание

ALTER OPERATOR изменяет определение оператора.

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

Параметры

name
Имя существующего оператора, при необходимости дополненное схемой, который должен быть изменен.
left_type
Тип данных левого операнда оператора. Если у оператора нет левого операнда, укажите NONE.
right_type
Тип данных правого операнда оператора.
new_owner
Имя нового владельца оператора.
new_schema
Новая схема оператора.
res_proc
Функция оценки селективности для условий ограничения. Укажите NONE, чтобы удалить текущую функцию оценки.
join_proc
Функция оценки селективности для условий соединения. Укажите NONE, чтобы удалить текущую функцию оценки.
com_op
Коммутатор данного оператора. Может быть изменен только в том случае, если оператор не имеет существующего коммутатора.
neg_op
Отрицатель данного оператора. Может быть изменен только в том случае, если оператор не имеет существующего отрицателя.
HASHES
Указывает, что этот оператор поддерживает объединение хешей. Можно включить, но нельзя отключить.
MERGES
Указывает, что данный оператор поддерживает слияние объединений. Можно включить, но нельзя отключить.
Примечание

Поскольку коммутаторы идут парами, являющимися коммутаторами друг друга, ALTER OPERATOR SET COMMUTATOR также установит коммутатором com_op целевой оператор. Аналогично, ALTER OPERATOR SET NEGATOR также установит отрицателем neg_op целевой оператор. Таким образом, нужно владеть операторами-коммутаторами или отрицателями, а также целевым оператором.

Примеры

Изменить владельца пользовательского оператора a @@ b для типа text:

ALTER OPERATOR @@ (text, text) OWNER TO joe;

Изменение функций оценки селективности ограничений и объединений пользовательского оператора a && b для типа int[]:

ALTER OPERATOR && (int[], int[]) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);

Пометить оператор && как собственный коммутатор:

ALTER OPERATOR && (int[], int[]) SET (COMMUTATOR = &&);

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

В стандарте SQL нет команды ALTER OPERATOR.

Смотрите также

CREATE OPERATOR, DROP OPERATOR