Комментарии 6
А может кто-нибудь написать расширение, добавляющее функцию, выбрасывающую исключение? Постгресу явно нужны эксепшены на уровне базового языка чтобы не мучиться с обработкой ошибок
В pg уже есть механизм исключений, правда он не такой, как хотелось бы из за возможностей языка (PG_TRY, PG_CATCH...), это подходит для некоторых целей, но, напротив, мне кажется, не стоит ими спамить
Это другое
Моё предложение - дать доступную без дополнительных телодвижений функцию raise(), которую можно будет дёргать, например, из CASE WHEN THEN END. То есть, когда мы сможем непосредственно обнаружить какую-то нестыковку в данных, например, то сразу же можно будет всю обработку прервать и выкинуть исключение
можно без файлов sql, control, без create extension? достаточно ли просто загрузить библиотеку? можно ли загрузить командой load?
от sql, control, create extension, действительно, можно отказаться - это лишь обёртка для удобной установки (нужно собрать so и положить по пути: pg_config --pkglibdir и если потребуется: CREATE FUNCTION ... LANGUAGE C (в нашем случае не нужно))
далее нужно активировать: shared_preload_libraries - это правильно, если хук работает глобально и если использует shared memory.
session_preload_libraries - загрузка в начале каждой новой сессии
и с помощью LOAD - загрузить руками там, где требуется
Спасибо за Ваш комментарий, в случае с примером, действительно, не требуется загружать в shared_preload_libraries и делать CREATE EXTENSION

Как написать свое расширение postgres?