Обсуждение: pg_get_functiondef and overloaded functions

Поиск
Список
Период
Сортировка

pg_get_functiondef and overloaded functions

От
Thomas Kellerer
Дата:
Hi,

I'm playing around with the new pg_get_functiondef() function but I can't get it to work when I need to specify the
argumentlist. 
 

select pg_get_functiondef('foo'::regproc)

works without problems. 

However if I have e.g. foo(int) and foo(int, int) I can't get this to work. 

I tried 

select pg_get_functiondef('foo(int)'::regproc)
select pg_get_functiondef('foo(int4)'::regproc)
select pg_get_functiondef('foo(integer)'::regproc)

but each time I get the error: function "foo(integer)" does not exist  

What am I missing?

Regards
Thomas



Re: pg_get_functiondef and overloaded functions

От
Tom Lane
Дата:
Thomas Kellerer <spam_eater@gmx.net> writes:
> I tried 
> select pg_get_functiondef('foo(int)'::regproc)
> select pg_get_functiondef('foo(int4)'::regproc)
> select pg_get_functiondef('foo(integer)'::regproc)
> but each time I get the error: function "foo(integer)" does not exist  
> What am I missing?

You need to use regprocedure.  regproc is mainly for bootstrap purposes
--- it accepts a function name only.
        regards, tom lane


Re: pg_get_functiondef and overloaded functions

От
Thomas Kellerer
Дата:
Tom Lane wrote on 30.10.2009 05:44:
>> select pg_get_functiondef('foo(int)'::regproc)
>> select pg_get_functiondef('foo(int4)'::regproc)
>> select pg_get_functiondef('foo(integer)'::regproc)
>> but each time I get the error: function "foo(integer)" does not exist  
>> What am I missing?
> 
> You need to use regprocedure.  regproc is mainly for bootstrap purposes
> --- it accepts a function name only.
> 

Thanks, works fine. 

Where would I find a documentation of all those types? 
The section about pg_get_functiondef (and others) doesn't mention this.

Regards
Thomas