CREATE OPERATOR
Определение нового оператора в базе данных.
Синтаксис:
CREATE OPERATOR оператор (PROCEDURE = функция [, LEFTARG = тип1 ] [, RIGHTARG = тип2 ] [, COMMUTATOR = коммутатор ] [, NEGATOR = инвертор ] [, RESTRICT = функция_ограничения ] [, JOIN = функция_объединения ] [, HASHES ] [, SORT1 = левая_сортировка ] [. SORT2 = правая_сортировка ])
Параметры:
- оператор. Последовательность символов – идентификатор нового оператора. Список допустимых символов приведен ниже.
- функция. Функция, реализующая новый оператор.
- тип1. Тип левого аргумента. Не используется с унарными операторами, которые всегда располагаются слева от своего операнда.
- тип2. Тип правого аргумента. Не используется с унарными операторами, которые всегда располагаются справа от своего операнда.
- коммутатор. Оператор коммутации, связываемый с новым оператором. Коммутатором называется другой существующий оператор, который выполняет коммутацию в процедуре, определяемой для нового оператора (например, интерпретацию левого аргумента как правого или наоборот).
- инвертор. Оператор отрицания, связываемый с новым оператором. Инвертором называется другой существующий оператор, который выполняет логическую инверсию нового оператора. Инвертор определяется только в том случае, если результат применения ключевого слова NOT к новому оператору остается постоянным при одинаковых исходных данных.
- функция_ограничения. Имя оценочной функции размера. Функция должна существовать и возвращать вещественное значение, а тип данных ее аргументов должен соответствовать определению оператора.
- функция_объединения. Имя оценочной функции объединения. Функция должна существовать и возвращать вещественное значение, а тип данных ее аргументов должен соответствовать определению оператора.
- HASHES. Ключевое слово HASHES означает, что новый оператор поддерживает хэширующие объединения.
- левая_сортировка. Оператор левосторонней сортировки (если новый оператор поддерживает слияние).
- правая_сортировка. Оператор правосторонней сортировки (если новый оператор поддерживает слияние).
Результаты:
CREATE. Это сообщение выдается при успешном создании нового оператора.
Описание
Команда CREATE OPERATOR предназначена для определения новых операторов. Пользователь PostgreSQL, создавший оператор, становится владельцем этого оператора в случае успешного создания.
Оператор может содержать до 31 символа из следующего списка:
+ – * / < > = ~! (а # % – & | – ? $
Кроме того, для символов оператора устанавливается ряд дополнительных ограничений:
- знак доллара ($) может использоваться только в том случае, если оператор состоит из нескольких символов (оператор $ не разрешен);
- комбинации -- и /* не могут присутствовать в операторе, поскольку они интерпретируются как начало комментария;
- операторы, состоящие из нескольких символов, могут оканчиваться знаком + (плюс) или - (дефис) только в том случае, если содержат по крайней мере один из следующих символов:
-! @ # % π & |?? $
Благодаря наличию этих ограничений PostgreSQL может обрабатывать синтаксически правильные запросы, в которых лексемы не нужно разделять дополнительными пробелами.