Jim Nasby wrote:
> Prior to default parameters on functions, GRANT and COMMENT accepted full parameter syntax. IE:
>
> GRANT EXECUTE ON test(t text) TO public
>
> as opposed to regprocedure, which only accepts the data types ( test(text), not test(t text) ).
>
> They do not accept DEFAULT though:
>
> GRANT EXECUTE ON FUNCTION test(t text DEFAULT '') to public;
> ERROR: syntax error at or near "DEFAULT"
> LINE 1: GRANT EXECUTE ON FUNCTION test(t text DEFAULT '') to public;
>
> Presumably this is just an oversight?
I have to say that accepting DEFAULT there seems pretty odd to me. What
if you specify the wrong default? Do you get a "no such function"
error? That would be pretty unhelpful. But then accepting it ignoring
the fact that the default is wrong would be rather strange.
> Related to that, is it intentional that the regprocedure cast
> disallows *any* decorators to the function, other than type? If
> regprocedure at least accepted the full function parameter definition
> you could use it to get a definitive reference to a function.
Does pg_identify_object() give you what you want?
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services