trappable warnings, dynamic change of minimal level for PG_RE_THROW
От | Pavel Stehule |
---|---|
Тема | trappable warnings, dynamic change of minimal level for PG_RE_THROW |
Дата | |
Msg-id | BAY20-F17C55ABA357DBA09593521F9DE0@phx.gbl обсуждение исходный текст |
Ответы |
Re: trappable warnings, dynamic change of minimal level for PG_RE_THROW
|
Список | pgsql-hackers |
Hello SQL/PSM concept of condition's handlers suppouses so all signals (all levels of exception's) are trappable. Common construct is: begin declare finish boolean default false; declare continue handler for sqlwarning set finish = true; open cursor whilenot finish do fetch from cursor end while; close cursor; end; Every compound statement in sql/psm has default empty continue handler for success, warning and not found signal's. Current code in errfinish (elog.c) throw signal only when level is error. if (elevel == ERROR) { ... PG_RE_THROW(); } I have to dynamicly change this level for all sql/psm block. Can be solution using of global variable? Like error_context_stack? hypotetic code from pl/plpgsql/src/pl_exec.c static int exec_stmt_block(PLpgPSM_execstate *estate, PLpgPSM_stmt_block *block) { int current_min_level = error_min_level; /* global variable from elog.c */ min_level = INFO; .... PG_TRY() .... PG_CATCH() .... PG_END_TRY() error_min_level = current_min_level; } Is it safe? Any ideas? Regards Pavel Stehule _________________________________________________________________ Chcete sdilet sve obrazky a hudbu s prateli? http://messenger.msn.cz/
В списке pgsql-hackers по дате отправления: