Re: pgsql: Add GET DIAGNOSTICS ... PG_CONTEXT in PL/PgSQL
От | Pavel Stehule |
---|---|
Тема | Re: pgsql: Add GET DIAGNOSTICS ... PG_CONTEXT in PL/PgSQL |
Дата | |
Msg-id | CAFj8pRBqC6OL09tBgDGYXJ0aJNq2Y+NCSrQqc+1B9xSb7Zwo-Q@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pgsql: Add GET DIAGNOSTICS ... PG_CONTEXT in PL/PgSQL (Stephen Frost <sfrost@snowman.net>) |
Список | pgsql-committers |
2013/7/25 Stephen Frost <sfrost@snowman.net>: > Pavel, > > First, please only quote the relevant parts of the email when > responding. > > * Pavel Stehule (pavel.stehule@gmail.com) wrote: >> I used a ErrorContext because I wasn't sure so errcontext and similar >> function can work in different context. Now I look there and there >> should be well initialized ErrorDataStack, due >> >> int >> set_errcontext_domain(const char *domain) >> { >> <------>ErrorData *edata = &errordata[errordata_stack_depth]; >> >> <------>/* we don't bother incrementing recursion_depth */ >> <------>CHECK_STACK_DEPTH(); >> >> <------>edata->context_domain = domain; >> >> <------>return 0; >> } >> >> but MemoryContext can be any - so probably some private context is ideal. > > While set_errcontext_domain() doesn't care about the MemoryContext, per > se, the errcontext() macro further calls errcontext_msg() which is > currently set up to explicitly use ErrorContext. Perhaps an elog.c > global to tell errcontext_msg() to not switch memory contexts, but what > happens if there's an error thrown by a callback function..? Probably then will be raised a panic due recursion call of error API Our PL doesn't raise a exception in callback function explicitly. Probably there is risk - "out of memory" - but same risk is when you call errcontext inside elog function. Pavel > > Thanks, > > Stephen
В списке pgsql-committers по дате отправления: