Обновить

Комментарии 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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации