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/