SQLсервер в Linux -самостоятельное освоение пакета
4b61df3a

Перегрузка пользовательского оператора



Листинг 7.55. Перегрузка пользовательского оператора

booktown=# CREATE OPERATOR !# (PROCEDURE = is_zero.

booktown(# RIGHTARG = integer);

CREATE

booktown=# CREATE OPERATOR !# (PROCEDURE = is_zero,

booktown(# LEFTARG = integer,

booktown(# RIGHTARG = integer);

CREATE

В листинге 7.55 оператор !# перегружается с тем же именем функции is_zero(), поскольку сама функция была перегружена в листинге 7.50 (см. пункт «Создание функций на языке С» в подразделе «Создание новых функций» данного раздела). Наличие двух версий функции is_zero() (с одним и с двумя аргументами) позволяет перегрузить оператор !# в двух вариантах, с одним операндом (левым или правым) и с двумя операндами.

Лексический анализатор PostgreSQL правильно интерпретирует все перегруженные операторы в командах SQL. В листинге 7.56 продемонстрированы три варианта использования оператора !# с разными операндами. Все три варианта допустимы, так как оператор был перегружен в листинге 7.55.



Содержание раздела