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.