2015-04-02 9:13 GMT+02:00 David G. Johnston <david.g.johns...@gmail.com>:
> Adding "raw" content present on Nabble that gets filtered by the mailing > list. > > On Wednesday, April 1, 2015, Taytay <tay...@youneedabudget.com> wrote: > >> We make heavy use of `GET STACKED DIAGNOSTICS` to determine where errors >> happened. >> However, I am trying to use RAISE EXCEPTION to report errors, and have >> discovered that RAISE is specifically prevented from adding to the error >> context: > > > ---- > static void > plpgsql_exec_error_callback(void *arg) > { > PLpgSQL_execstate *estate = (PLpgSQL_execstate *) arg; > > /* if we are doing RAISE, don't report its location */ > if (estate->err_text == raise_skip_msg) > return; > ---- > We talked more time about a change of this behave - the discus finished without end http://www.postgresql.org/message-id/cafj8prdfhqv7ckxp-k+ubzw6627hytt7bct4zxdbselxc1r...@mail.gmail.com I am thinking, so current design is too simple and should be changed, and if will be a agreement I can add this patch to next commitfest. Regards Pavel > > >> >> So that means that this doesn't work: >> >> >> > RAISE EXCEPTION 'This exception will not get a stack trace'; > > EXCEPTION WHEN others THEN > > -- If the exception we're catching is one that Postgres threw, > -- like a divide by zero error, then this will get the full > -- stack trace of the place where the exception was thrown. > -- However, since we are catching an exception we raised manually > -- using RAISE EXCEPTION, there is no context/stack trace! > GET STACKED DIAGNOSTICS v_error_stack = PG_EXCEPTION_CONTEXT; > > >> I've posted more details here: >> >> http://dba.stackexchange.com/questions/96743/postgres-how-to-get-stack-trace-for-a-manually-raised-exception >> >> That context would be awfully useful for us, even for manually generated >> exceptions. >> Can anyone shed some light on A) why this is, and B) if it's still >> desired, >> and C) if so, are there any workarounds? Is there an exception I can trick >> Postgres into throwing that will include my user-generated string? >> >> Many thanks for any help you can offer. >> >> > >