Re: proposal 9.4 plpgsql: allows access to call stack from GET DIAGNOSTICS statement

From: Jim Nasby <jim(at)nasby(dot)net>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: proposal 9.4 plpgsql: allows access to call stack from GET DIAGNOSTICS statement
Date: 2013-03-07 00:54:31
Message-ID: 5137E547.40405@nasby.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2/2/13 3:23 AM, Pavel Stehule wrote:
> Hello
>
> I propose enhancing GET DIAGNOSTICS statement about new field
> PG_CONTEXT. It is similar to GET STACKED DIAGNOSTICS'
> PG_EXCEPTION_CONTEXT.
>
> Motivation for this proposal is possibility to get call stack for
> debugging without raising exception.
>
> This code is based on cleaned code from Orafce, where is used four
> years without any error reports.
>
> CREATE OR REPLACE FUNCTION public."inner"(integer)
> RETURNS integer
> LANGUAGE plpgsql
> AS $function$
> declare _context text;
> begin
> get diagnostics _context = pg_context;
> raise notice '***%***', _context;
> return 2 * $1;
> end;
> $function$
>
> postgres=# select outer_outer(10);
> NOTICE: ***PL/pgSQL function "inner"(integer) line 4 at GET DIAGNOSTICS
> PL/pgSQL function "outer"(integer) line 3 at RETURN
> PL/pgSQL function outer_outer(integer) line 3 at RETURN***
> CONTEXT: PL/pgSQL function "outer"(integer) line 3 at RETURN
> PL/pgSQL function outer_outer(integer) line 3 at RETURN

That could *really* stand for some indentation in the output instead of the *** business. But other than that, this definitely seems useful. I had no idea _context was even an option... :/

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2013-03-07 00:58:58 Re: Support for REINDEX CONCURRENTLY
Previous Message Jim Nasby 2013-03-07 00:51:36 Re: Using indexes for partial index builds