ALTER OPERATOR#

ALTER OPERATOR

ALTER OPERATOR

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

Указывает, что этот оператор может поддерживать слияние соединений. Может быть только включен и не может быть отключен.

Примечания

См. Раздел 34.13 и Раздел 34.14 для получения дополнительной информации.

Поскольку коммутаторы образуют пары, которые являются коммутаторами друг друга, 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.