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.