Захотел попробовать создать свой range тип в PostgreSQL, использующий альтернативную схему нормализации (canonicalization) диапазона (по умолчанию все range типы приводятся к форме [x, y) ). Главной проблемой становится объявление соответствующей функции, которая должна принимать в качестве аргумента ещё не созданный тип. В документации даже имеется специальная инструкция для разрешения данного конфликта.
В реальности, к сожалению, всё обстоит плачевнее - инструкция просто-напросто не работает. Оказывается, единственным способом создания собственной функции нормализации является написание модуля на С, который затем должен быть подключён как расширение PostgreSQL. Спасительным оказался модуль inetrange, в котором удалось найти пример такой функции, ещё и с Makefile.
Если вам когда-нибудь потребуется написать небольшое расширение для PostgreSQL, репозиторий данного модуля может стать хорошей точкой старта, поскольку в большинстве своём документация крайне скудна на детали.
>>Click here to continue<<
