Is there a special variable returning the name of a PostgreSQL function similar to special variable TG_NAME
for triggers?
Asked
Active
Viewed 786 times
1

Rainer
- 1,067
- 2
- 14
- 29
1 Answers
0
as of 9.4 I believe we have PG_CONTEXT
:
https://www.postgresql.org/docs/current/static/plpgsql-control-structures.html
CREATE OR REPLACE FUNCTION inner_func() RETURNS integer AS $$
DECLARE
stack text;
BEGIN
GET DIAGNOSTICS stack = PG_CONTEXT;
RAISE NOTICE E'--- Call Stack ---\n%', stack;
RETURN 1;
END;
$$ LANGUAGE plpgsql;
for parsing the context for function name, use substring(stack from 'function (.*?) line')
as in
https://stackoverflow.com/a/32016935/5315974

Vao Tsun
- 47,234
- 13
- 100
- 132
-
Ok, it's a good workaround. Of course I can put this into a separate function, return second line, maybe parse out the function name before. And maybe sometimes there is a FC_NAME variable in PostgreSQL. – Rainer Jan 11 '18 at 20:08
-
this is the only way nowaday (btw quite recent - before the only solution was writing C function yourself) if you don't believe me - believe Erwin Brandstetter and Pavel Stehule (on the linked answer) :) First is a huge authority on SO, and the other is even recognised contributor https://www.postgresql.org/community/contributors/ – Vao Tsun Jan 11 '18 at 20:26