/* 1s_zero.c
* Простейшие проверочные функции */
int is_zero(int);
int is_zero_two(int. int):
int is_zero(int incoming) {
/* Вернуть true, если аргумент равен 0. */
if (incoming == 0) return 1;
else return 0: }
int is_zero_two(int left, int right) {
/* Вернуть true, если хотя бы один из аргументов равен 0. */
if (left —0 || right == 0) return 1:
else return 0; }
ВНИМАНИЕ
В этот простейший пример не были включены заголовочные файлы PostgreSQL. В данном случае они не нужны из-за очевидного соответствия между типами данных С и SQL. Более реальные примеры с использованием внутреннего интерфейса API PostgreSQL и структур данных находятся во вложенном каталоге contrib исходного каталога PostgreSQL.
В листинге 7.49 файл is_zero.c компилируется с ключом -shared, а полученный общий модуль создается в файле is_zero.so. Путь к файлу передается в определении функции в команде CREATE FUNCTION; атрибут LANGUAGE сообщает, что функция написана на языке С.