Да, това е известен проблем.
PL/pgSQL (като всяка друга функция, с изключение на SQL
) е „черна кутия“ за PostgreSQL, поради което всъщност не е възможно да се открият грешки освен по време на изпълнение.
Можете да направите няколко неща:
- обвийте вашата функция, извикваща
SQL
заявки къмBEGIN
/COMMIT
изявления, за да имате по-добър контрол върху грешките; - добавете
EXCEPTION
блокове към вашия код, за да улавяте и проследявате грешки. Обърнете внимание обаче, че това ще повлияе на работата на функцията; - използвайте
plpgsql_check
разширение , разработен от Pavel Stěhule, който е един от основните участници в разработката на PL/pgSQL. Предполагам, че в крайна сметка това разширение ще влезе в ядрото на PostgreSQL, но ще отнеме известно време (сега сме в състояние 9.4beta3); - Може също да разгледате този свързан въпрос:проверка на синтаксиса на postgresql без изпълнение на заявката
И наистина изглежда, че имате огромна нужда от рамка за тестване на единици.