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
.