Hi,
Attached is a patch to implement a feature to get the current function
name by GET DIAGNOSTICS in PL/pgSQL function.
Currentyly, we can get call stack by GET DIAGNOSTICS PG_CONTEXT, but
we cannot get the function name directly. One of our clients wanted
this feature for debugging, and this was realized by creating a
function that extracts the function name string from call stack.
However, the overhead of function calls was not small, and it
caused performance regression.
I found that there are other needs for this feature[1], so I have
implemented this.
[1]
https://stackoverflow.com/questions/12611596/getting-name-of-the-current-function-inside-of-the-function-with-plpgsql
Example:
postgres=# CREATE FUNCTION test() RETURNS void
LANGUAGE plpgsql AS $$
DECLARE t text;
BEGIN
GET DIAGNOSTICS t = FUNCTION_NAME;
RAISE INFO 'function name: %', t;
END;
$$;
CREATE FUNCTION
postgres=# select test();
INFO: function name: test()
test
------
(1 row)
Regards,
--
Yugo Nagata <nagata@sraoss.co.jp>