стек вызова функции?
задача такова:
Есть функция check_permissions(username text);
Есть простые функции: f1, f2, f3, f4.....
check_permissions должна проверять, имеет ли право пользователь выполнять функцию ( и, если выполнять, то какими привилегиями )
Вместо того, чтобы делать check_permissions(username text, func_name text); хочется взять и из стека посмотреть, что вызывало её
т.е. выглядеть должно так:
f1('user_admin')
{
check_permissions('user_admin');
........
}
Внутри check_permissions('user_admin');
Выполняется просмотр стека и находим функцию уровнем выше ... и для неё проверку делаем
Если функции на pl/pgSQL, можете сделать как-то так: DECLARE v_context text; BEGIN begin assert false; exception when assertion_error then get stacked diagnostics v_context := pg_exception_context; end; --далее разбираем v_context ...
Обсуждают сегодня